【问题标题】:Error while training CNN for text classification in keras "ValueError: Input 0 is incompatible with layer"在 keras 中训练 CNN 进行文本分类时出错“ValueError:输入 0 与层不兼容”
【发布时间】:2020-09-16 19:18:23
【问题描述】:

我正在使用 Keras 提供的 conv1d 层构建序列数据的预测模型。我就是这样做的

input_layer = Input(shape=(500,)) 
layer = Conv1D(128,5,activation="relu")(input_layer)
layer = MaxPooling1D(pool_size=2)(layer)
layer = Flatten()(layer)
layer = Dense(128, activation='relu')(layer)
output_layer = Dense(10, activation='softmax')(layer)
classifier = Model(input_layer, output_layer)
classifier.summary()
classifier.compile(optimizer=optimizers.Adam(), loss='sparse_categorical_crossentropy', metrics=['accuracy'])
return classifier

但是,我面临以下错误:

Traceback (most recent call last):
File "train.py", line 71, in <module>
classifier = create_cnn_model()
File "train.py", line 60, in create_cnn_model
layer = Conv1D(128,5, activation="relu")(input_layer)
File "C:\Python368\lib\site-packages\keras\backend\tensorflow_backend.py", line 75, in symbolic_fn
_wrapper
return func(*args, **kwargs)
File "C:\Python368\lib\site-packages\keras\engine\base_layer.py", line 446, in __call__
self.assert_input_compatibility(inputs)
File "C:\Python368\lib\site-packages\keras\engine\base_layer.py", line 342, in assert_input_compat
ibility
str(K.ndim(x)))
ValueError: Input 0 is incompatible with layer conv1d_1: expected ndim=3, found ndim=2

我认为第一层的 input_shape 设置不正确。如何设置?

【问题讨论】:

    标签: python keras conv-neural-network


    【解决方案1】:

    没错,卷积层需要 3 维输入。 我假设您有一个包含 500 个样本的单变量时间序列。 您需要编写一个函数来将时间序列拆分为多个步骤。 例如:

         x             y
    [t-n,...,t-2,t-1]  t
    

    因此,您基本上是使用最后 n 个值来预测系列中的下一个值。 那么你的输入形状将是 [len(x), n, 1]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 2021-07-04
      • 2020-11-28
      • 2021-05-31
      • 2021-09-13
      • 1970-01-01
      相关资源
      最近更新 更多