关于卷积网络,我还是一个新手。我正在尝试在Keras中实现多个Conv1D层。不幸的是,在第一层之后,任何随后的层都会引发以下错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError: Negative dimension size caused by subtracting 8 from 1 for 'conv1d_2/convolution/Conv2D' (op: 'Conv2D') with input shapes: [?,1,1,32], [1,8,32,32].
我本来以为这可能与步幅的减小有关,但是在为两条Conv1D行设置strides=1
之后,它仍然不起作用。这是我的代码。如果for循环运行,则会引发错误。
#State branch
x = Conv1D(layerSize,8,strides=1)(inputState)
x = Activation("relu")(x)
for l in range(conv1Layer-1):
x = Conv1D(layerSize,8,strides=1)(x)
x = Activation("relu")(x)
x = MaxPooling1D(pool_size=1)(x)
x = Flatten()(x)
x = Model(inputs=inputState, outputs=x)
任何帮助或建议将不胜感激。谢谢!
答案 0 :(得分:0)
如果您不希望在卷积之后更改长度,请考虑在padding='same'
的构造函数中指定Conv1d
。
有关更多信息,请参见docs。
答案 1 :(得分:0)
第一层之后,kernel_size必须更改为1。
编辑:否则必须将填充设置为相同!谢谢。