我的输入形状应该是100x100 . 它代表一句话 . 每个单词都是100维的向量,句子中最多有100个单词 .
我向CNN提供八个句子 . 我不确定这是否意味着我的输入形状应该是100x100x8 .
然后是以下几行
Convolution2D(10, 3, 3, border_mode='same',
input_shape=(100, 100))
抱怨:
输入0与图层卷积2d_1不兼容:预期ndim = 4,发现ndim = 3
这对我来说没有意义,因为我的输入维度是2.我可以通过将input_shape更改为(100,100,8)来完成它 . 但是“预期的ndim = 4”位对我来说没有意义 .
我也看不出为什么带有10个滤波器的3x3卷积层不接受100x100的输入 .
即使我通过抱怨“预期的ndim = 4” . 我的激活层遇到了问题 . 有抱怨:
无法将softmax应用于非2D或3D的张量 . 这里,ndim = 4
任何人都可以解释这里发生了什么以及如何解决它?非常感谢 .
2 回答
我有同样的问题,我解决了它为
channel
添加一个维度input_shape
参数 .我建议以下解决方案:
2D卷积层的缺失维度是“通道”维度 .
对于图像数据,灰度图像的通道尺寸为1,彩色图像的通道尺寸为3 .
在您的情况下,为了确保Keras不会抱怨,您可以使用1个通道的2D卷积,或100个通道的1D卷积 .
参考:http://keras.io/layers/convolutional/#convolution2d