Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Keras Conv1d层上的输入_形状有问题_Keras_Conv Neural Network_Keras Layer - Fatal编程技术网

Keras Conv1d层上的输入_形状有问题

Keras Conv1d层上的输入_形状有问题,keras,conv-neural-network,keras-layer,Keras,Conv Neural Network,Keras Layer,我正在尝试使用CNN进行情绪分类。错误似乎与输入的形状参数有关 x数据由使用tokenizer.text\u到\u序列创建的整数数组组成 ? x_train.shape (4460, 20) ? x_trains.shape[0] array([ 49, 472, 4436, 843, 756, 659, 64, 8, 1328, 87, 123, 352, 1329, 148, 2996, 1330, 67, 58, 4437, 144]

我正在尝试使用CNN进行情绪分类。错误似乎与输入的形状参数有关

x数据由使用tokenizer.text\u到\u序列创建的整数数组组成

? x_train.shape 
(4460, 20)
? x_trains.shape[0]
array([  49,  472, 4436,  843,  756,  659,   64,    8, 1328,   87,  123,
        352, 1329,  148, 2996, 1330,   67,   58, 4437,  144])
y数据由一个用于分类的热编码值组成

y_train.shape
(4460, 2)
y_train[0]
array([1., 0.], dtype=float32)
模型如下:

model.add(layers.Conv1D(filters=256, kernel_size=3, activation='relu', input_shape=(max_seqlen,)))
model.add(layers.SpatialDropout1D(0.2))
model.add(layers.GlobalMaxPooling1D())
model.add(layers.Dense(100, activation='relu'))
model.add(layers.Dense(num_classes, activation="softmax"))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
    
history = model.fit(x_train, y_train, epochs=3, batch_size=512, 
                    validation_data=(x_val, y_val), class_weight=label_weights)
添加Conv1D层时引发错误。信息是:

输入0与层conv1d_1不兼容:预期ndim=3,发现ndim=2


我不知道我做错了什么。非常感谢您的帮助。

Conv1D需要2D输入(我不知道为什么会出现这种情况)。由于您的输入仅为1D,因此您的维度不匹配。我担心您可能必须坚持使用其他keras图层类型,或者将数据重塑为(4460、20、1),以便将conv1D传递给它。

谢谢,我似乎需要在conv1D图层前面添加一个嵌入层。我不知道是否有办法直接进入Conv1D层。在将数据作为输入传递之前,您可能可以直接重塑数据,将其更改为(4460,20,1),但我不确定这是否会改变结果。