Как отформатировать данные одномерного массива для одномерного CNN - PullRequest
1 голос
/ 14 июля 2020

Мне интересно, как я могу преобразовать свои данные, список из 1000 c функций в форму, которую примет моя 1D CNN. Вот изображение моего набора данных (это в формате dataframe - 1000 столбцов, 9923 строки), и мой первый уровень моей CNN будет примерно таким:

model.add(Conv1D(64,3, activation ='relu', input_shape= (1000, 1)))

Ответы [ 2 ]

2 голосов
/ 14 июля 2020

Входная форма слоя (1000,1). Это означает, что слой принимает любые входные данные формы (*, 1). Таким образом, последнее измерение ввода должно быть 1. Вы можете изменить свои данные, как показано ниже.

import tensorflow as tf
import numpy as np

data=tf.Variable(np.random.random((9923,1000)),dtype=tf.float32) #your data has shape (9923,1000)
#print(data)
data=tf.reshape(data,(9923,1000,1)) #reshape data
#print(data)
conv1d=tf.keras.layers.Conv1D(64,3, activation ='relu', input_shape= (1000, 1)) # the layer accpets any input with shape (*,1). 
# That means the last dimention should be 1
cnn_data=conv1d(data) # output cnn_data has shape  (9923,998,64)
1 голос
/ 14 июля 2020

Все, что вам нужно, это трехмерная фигура (9923, 1000, 1)

Посмотрите мое репо. Я также использую 1D-CNN, но для задач временных рядов. https://github.com/chasebk/EO_CNN

...