问题描述
我正在尝试使用CNN进行情感分类。该错误似乎与input_shape参数有关。
x数据由使用tokenizer.texts_to_sequences创建的整数数组组成。
? 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_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)
“输入0与conv1d_1层不兼容:预期ndim = 3,找到的ndim = 2”
我不知道我在做什么错。任何帮助将不胜感激。
解决方法
Conv1D需要2D输入(我不知道为什么会这样)。由于您的输入仅为一维,因此尺寸不匹配。恐怕您可能不得不坚持使用其他keras图层类型,或者重新调整数据的形状以使其为(4460,20,1),从而允许在其上传递conv1D。