Проблема двоичной классификации: я хочу иметь один входной слой (необязательно), один слой Conv1D, а затем выходной слой из 1 нейрона, предсказывающий либо 1, либо 0.
Вот моя модель:
x_train = np.expand_dims(x_train,axis=1)
x_valid = np.expand_dims(x_valid,axis=1)
#x_train = x_train.reshape(x_train.shape[0], 1, x_train.shape[1])
#x_valid = x_train.reshape(x_valid.shape[0], 1, x_train.shape[1])
model = Sequential()
#hidden layer
model.add(Convolution1D(filters = 1, kernel_size = (3),input_shape=(1,x_train.shape[2])))
#output layer
model.add(Flatten())
model.add(Dense(1, activation = 'softmax'))
sgd = SGD(lr=0.01, nesterov=True, decay=1e-6, momentum=0.9)
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
print('model compiled successfully')
model.fit(x_train, y_train, nb_epoch = nb_epochs, validation_data=(x_valid,y_valid), batch_size=100)
Форма ввода : x_train.shape = (5,1,133906), то есть (партия, шаги, каналы) соответственно. Шаги добавлены через expand_dims. Фактический размер (5 133 906), представляющий собой 5 выборок данных временного ряда длиной 133 906, отобранных случайным образом, иногда через 2 мс, а иногда и через 5 мс.
Сообщение об ошибке : ValueError: Отрицательный размер измерения, вызванный вычитанием 3 из 1 для 'conv1d_1 / convolution / Conv2D' (op: 'Conv2D') с входными формами: [?, 1,1,133906 ], [1,3,133906,1].
Как мне решить эту проблему? Каким должен быть размер x_train и аргумент input_size, передаваемый в Conv1D?