二分类问题:我想要一个输入层(可选),一个Conv1D层,然后输出一个神经元的层,预测为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),表示分别为(batch,steps,channels)。步骤通过expand_dims添加。实际尺寸为(5,133906),其中有5个长度为133906的时间序列数据样本,有时在2毫秒处采样,有时在5毫秒处采样。错误信息: ValueError: 由于从1中减去3导致负维度大小,因此'conv1d_1/convolution/Conv2D'(操作:'Conv2D')的输入形状为[?,1,1,133906],[1,3,133906,1]。
如何解决这个问题?x_train的大小和传递给Conv1D内的input_size参数应该是多少?