Поскольку я новичок в области глубокого обучения, я столкнулся со странной проблемой, касающейся формы ввода моей сверточной сети (1D). Входные данные - это нормализованные значения 13 функций, всего доступно 7866 образцов.
x_train_shape (7866, 13)
Целевое значение 0 или 1 для каждой функции.
y_train.shape (7866, 13)
Я использую следующую простую сеть 1D conv, чтобы посмотреть, как она работает.
from keras.models import Sequential
model = Sequential()
model.add(Conv1D(filters=64, kernel_size=1,
activation='relu', input_shape=(13,1)))
model.add(Conv1D(filters=64, kernel_size=1, activation='relu'))
model.add(Dropout(0.5))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(13, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
history = model.fit(x_train, y_train, epochs=20, verbose=0)
Это показывает сводка сети, но также вызывает эту ошибку:
Ошибка при проверке ввода: ожидалось, что conv1d_1_input будет иметь 3 измерения, но получил массив с формой (7866, 13)
Пытался реализовать разные решения из здесь и здесь . Поэтому, когда используется
input_shape = (13,)
, возникает другая ошибка, например:
Вход 0 несовместим со слоем conv1d_1: ожидалось ndim = 3, найдено ndim = 2
Кто-нибудь, пожалуйста, просветите меня, какова правильная input_shape для этой сети и почему? NB x_train и y_train находятся в формате кадра данных pandas. Это вызывает какие-то проблемы, нужно ли мне конвертировать его в другой формат?