【发布时间】:2018-10-26 17:19:11
【问题描述】:
二元分类问题:我想要一个输入层(可选),一个 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) 分别是(batch,steps,channels)。通过 expand_dims 添加的步骤。实际大小 (5,133906),即 5 个长度为 133906 的时间序列数据样本,有时在 2 ms 时随机采样,有时在 5 ms 时随机采样。
错误消息:ValueError:由输入形状的“conv1d_1/convolution/Conv2D”(操作:“Conv2D”)从 1 中减去 3 引起的负维度大小:[ ?,1,1,133906], [1,3,133906,1]。
我该如何解决这个问题? x_train 的大小和在 Conv1D 中传递的 input_size 参数应该是多少?
【问题讨论】:
标签: python-3.x keras conv-neural-network convolution keras-layer