我正在使用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可以正常工作。 有人有建议吗?
谢谢
答案 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,?]
。继续进行到输入层,您会发现输入大小太小。
您需要更改体系结构以允许输入大小,或者(如果适用)更改输入大小。