Форма ввода для 1D CNN (Керас) - PullRequest
0 голосов
/ 26 ноября 2018

Я строю CNN, используя Keras, со следующим Conv1D в качестве моего первого слоя:

cnn.add(Conv1D(
    filters=512,
    kernel_size=3,
    strides=2,
    activation=hyperparameters["activation_fn"],
    kernel_regularizer=getattr(regularizers, hyperparameters["regularization"])(hyperparameters["regularization_rate"]),
    input_shape=(1000, 1),
))

Я тренируюсь с функцией:

cnn.fit(
    x=train_df["payload"].tolist(),
    y=train_df["label"].tolist(),
    batch_size=hyperparameters["batch_size"],
    epochs=hyperparameters["epochs"],
)

В которой train_dfэто кадр данных pandas из двух столбцов, где для каждой строки метка представляет собой целое число (0 или 1), а полезная нагрузка представляет собой массив с плавающей точкой, дополненный нулями / усеченный до длины 1000. Общее количество обучающих примеров в train_df составляет 15641.

Модель компилируется, но во время обучения я получаю эту ошибку:

ValueError: Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 15641 arrays: [array([[0.09019608],
   [0.01176471],
   [0.01176471],
   [0.        ],
   [0.30196078],
   [0.        ],
   [0.        ],
   [0.        ],
   [0.        ],
   [0....

Я просмотрел этот пост и попытался изменить свой ввод на ndarray 1000-сплавные списки, но в итоге появилась другая ошибка:

ValueError: Error when checking input: expected conv1d_1_input to have 3 dimensions, but got array with shape (15641, 1000)

Есть идеи?

1 Ответ

0 голосов
/ 27 ноября 2018

Итак, я установил input_shape в (1000, 1)

Я также преобразовал вход, который подается в fit (), в один ndarray из n ndarrays (каждый ndarray - это вектор из 1000 float, n этообщее количество образцов / векторов) и преобразовал каждый из этих ndarrays в (1, 1000, 1) во время предварительной обработки после чтения это объяснение входных данных и формы ввода

Окончательная форма моеговходные данные были (15641, 1000, 1)

** Все это должно относиться и к данным проверки (если указано) **

РЕДАКТИРОВАТЬ: Извините, я не утверждал, ноэто исправило мою проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...