首页 文章

当 Build CNN时,我收到了来自Keras的抱怨,这对我来说没有意义 .

提问于
浏览
11

我的输入形状应该是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 回答

  • 8

    我有同样的问题,我解决了它为 channel 添加一个维度 input_shape 参数 .

    我建议以下解决方案:

    Convolution2D(10, 3, 3, border_mode='same', input_shape=(100, 100, 1))
    
  • 9

    2D卷积层的缺失维度是“通道”维度 .

    对于图像数据,灰度图像的通道尺寸为1,彩色图像的通道尺寸为3 .

    在您的情况下,为了确保Keras不会抱怨,您可以使用1个通道的2D卷积,或100个通道的1D卷积 .

    参考:http://keras.io/layers/convolutional/#convolution2d

相关问题