Python Keras{ValueError}:输入0与层conv2d_2不兼容

Python Keras{ValueError}:输入0与层conv2d_2不兼容,python,keras,Python,Keras,我是keras的新手,我正在尝试对一个文档进行一次卷积。每个文档由一个形状为[40*4000]的矩阵表示(每个文档有40个句子,每个句子有20个单词,因此单词嵌入维度为200) 我想对3个字进行卷积,这是我的代码(不完全相同,但您可以在您的机器上运行此代码): 导入keras 从keras.layers导入输入、嵌入、密集、合并、二维 从keras.layers.core导入重塑 令牌\u input=input(name='input',shape=(40,20),dtype='int32')

我是keras的新手,我正在尝试对一个文档进行一次卷积。每个文档由一个形状为[40*4000]的矩阵表示(每个文档有40个句子,每个句子有20个单词,因此单词嵌入维度为200)

我想对3个字进行卷积,这是我的代码(不完全相同,但您可以在您的机器上运行此代码):

导入keras
从keras.layers导入输入、嵌入、密集、合并、二维
从keras.layers.core导入重塑
令牌\u input=input(name='input',shape=(40,20),dtype='int32')
x=嵌入(25000+1200,name=“嵌入”)(令牌\u输入)
x=重塑((40,-1),
name=“重塑”)(x)
cur_conv=Conv2D(20,内核大小=(3*200,1),
步幅=(200,1),填充='valid',激活='relu')(x)

但我收到了以下错误消息:输入0与层conv2d_1不兼容:预期ndim=4,发现ndim=3

conv2d层的输入应具有形状(采样、通道、宽度、高度),并且嵌入的输出为3D,而不是4D。您应该定义如何将嵌入输出解释为图像,也许您应该添加通道维度并将其设置为1。

Conv2D层的输入应该具有形状(采样、通道、宽度、高度),并且嵌入的输出是3D,而不是4D。您应该定义如何将嵌入输出解释为图像,也许您应该添加通道维度并将其设置为1。

谢谢,我解决了这个问题,但我阅读了Conv2D的keras文档,它说参数kernel_size指定2D卷积窗口的宽度和高度(),实际上,我认为指定高度和宽度的内核大小,换句话说,行和列,对吗?@Joey输入形状中指定的宽度和高度对应于输入数据,而不是卷积滤波器。你可以得到一个比卷积滤波器大得多的图像。也许我没说清楚。我是指Conv2D kernel_size的参数,文档说它指定了过滤器的宽度和高度,但我发现它指定了过滤器的高度和宽度,换句话说,过滤器的行和列。谢谢,我解决了这个问题,但是我读了Conv2D的keras文档,它说参数kernel_size指定了2D卷积窗口的宽度和高度(),实际上,我认为kernel_size指定了高度和宽度,换句话说,行和列,对吗?@Joey输入形状中指定的宽度和高度对应于输入数据,而不是卷积滤波器。你可以得到一个比卷积滤波器大得多的图像。也许我没说清楚。我指的是Conv2D kernel_size的参数,文档说它指定了过滤器的宽度和高度,但我发现它指定了过滤器的高度和宽度,换句话说,过滤器的行和列。