Keras Conv1d层上的输入_形状有问题
我正在尝试使用CNN进行情绪分类。错误似乎与输入的形状参数有关 x数据由使用tokenizer.text\u到\u序列创建的整数数组组成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]
? 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),但我不确定这是否会改变结果。