Python 当我建立一个CNN时,我收到了来自Keras的抱怨,这些抱怨对我来说毫无意义。
我的输入形状应该是100x100。它代表一个句子。每个单词是100维的向量,一个句子中最多有100个单词 我给CNN输入了八个句子。我不确定这是否意味着我的输入形状应该是100x100x8 然后是下面几行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 这对我来说没有意义,因为我的输入维度
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要求?