Python 当我建立一个CNN时,我收到了来自Keras的抱怨,这些抱怨对我来说毫无意义。

Python 当我建立一个CNN时,我收到了来自Keras的抱怨,这些抱怨对我来说毫无意义。,python,neural-network,keras,Python,Neural Network,Keras,我的输入形状应该是100x100。它代表一个句子。每个单词是100维的向量,一个句子中最多有100个单词 我给CNN输入了八个句子。我不确定这是否意味着我的输入形状应该是100x100x8 然后是下面几行 Convolution2D(10, 3, 3, border_mode='same', input_shape=(100, 100)) 投诉: 输入0与层卷积2D_1不兼容:预期ndim=4,发现ndim=3 这对我来说没有意义,因为我的输入维度

我的输入形状应该是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更改为(100100,8)来完成它。但“预期ndim=4”位对我来说毫无意义

我也不明白为什么一个3x3的卷积层和10个滤波器不接受100x100的输入

即使是我也能理解关于“预期ndim=4”的抱怨。我在激活层遇到问题。它在那里抱怨:

无法将softmax应用于非二维或三维张量。这里,ndim=4


有人能解释一下这里发生了什么以及如何修复它吗?非常感谢

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

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

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


Ref:

我遇到了同样的问题,我解决了它,为
通道
添加了一个维度到
输入形状
参数

我建议采取以下解决办法:

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

Keras的卷积层采用4维数组,所以您需要对输入进行结构调整,以适应这种方式。尺寸由
组成(批量尺寸、x尺寸、y尺寸、通道)
。这在图像的情况下很有意义,CNN是最常用的,但是对于你的情况,它变得有点棘手


但是,
batch\u size
对数据集是不变的,因此您需要在第一个维度中堆叠8个句子,以获得
(8100100)
。通道可以保持为1,您需要以keras将接受数据的方式写入,因此将数据扩展到
(8100100,1)
将是您需要的输入形状。

这对我不起作用。您可以建议为什么需要通道吗?这是因为Keras/Tensorflow要求?