Conv1d 层上的 input_shape 有问题
Having a problem with input_shape on Conv1d Layer
我正在尝试使用 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 数据包含一个用于分类的热编码值。
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 采用二维输入(我不知道为什么会这样)。由于您的输入仅为一维,因此您的尺寸不匹配。恐怕您可能不得不坚持使用其他 keras 图层类型,或者重塑您的数据,使其成为 (4460, 20, 1),从而允许您在其上传递 conv1D。
我正在尝试使用 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 数据包含一个用于分类的热编码值。
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 采用二维输入(我不知道为什么会这样)。由于您的输入仅为一维,因此您的尺寸不匹配。恐怕您可能不得不坚持使用其他 keras 图层类型,或者重塑您的数据,使其成为 (4460, 20, 1),从而允许您在其上传递 conv1D。