TensorFlow 1D模型,MaxPooling的输入形状错误

时间:2018-11-14 11:50:42

标签: python tensorflow conv-neural-network

我正在使用TensorFlow建立一个1D模型以进行音频处理,但是在模型的第二个MaxPool1D期间输入形状有问题。

问题在此汇集之后就在这里:

x = Convolution1D(32, 3, activation=relu, padding='valid')(x)
x = MaxPool1D(4)(x)

我收到此错误:

ValueError:输入尺寸为[?,1,1,32]的'max_pooling1d_5 / MaxPool'(op:'MaxPool')从1中减去4引起的负尺寸大小。 >

我试图重塑 x (这是一个张量),但我认为我的方法不正确。

在同一模型中,在此之前,我有几个卷积层和一个maxpooling可以正常工作。

有人有建议吗? 谢谢

1 个答案:

答案 0 :(得分:0)

MaxPool1D层的输入中的步数小于池大小。

在错误中,它表示为...input shapes: [?,1,1,32],这意味着Convolution1D层的输出具有形状[1,32]。至少需要4个步骤才能用作MaxPool1D(4)层的输入,因此最小大小为[4,32]

您可以继续向前走。例如,Convolution1D层将使步长减小kernel_size-1 = 2。这意味着Convolution1D层的输入至少需要4 + 2 = 6步,这意味着形状至少为[6,?]。继续进行到输入层,您会发现输入大小太小。

您需要更改体系结构以允许输入大小,或者(如果适用)更改输入大小。