当input_shape指定为3-d时,Keras SimpleRNN出现错误



我正在尝试从Keras上的SimpleRNN上的文本进行训练。

在Keras中,我为SimpleRNN指定了一个非常简单的参数,如下所示:

model = Sequential()
model.add(SimpleRNN(output_dim=1, input_shape=(1,1,1))

我理解input_shape应该是(nb_samples, timesteps, input_dim),与我的train_x.shape相同

所以我很惊讶地收到了以下错误:

Traceback (most recent call last):
  File "C:/Users/xxx/xxxx/xxx/xxx.py", line 262, in <module>
    model.add(SimpleRNN(output_dim=vocab_size, input_shape=train_x.shape))
  File "C:Anaconda3envspy34libsite-packageskerasmodels.py", line 275, in add
    layer.create_input_layer(batch_input_shape, input_dtype)
  File "C:Anaconda3envspy34libsite-packageskerasenginetopology.py", line 367, in create_input_layer
    self(x)
  File "C:Anaconda3envspy34libsite-packageskerasenginetopology.py", line 467, in __call__
    self.assert_input_compatibility(x)
  File "C:Anaconda3envspy34libsite-packageskerasenginetopology.py", line 408, in assert_input_compatibility
    str(K.ndim(x)))
Exception: Input 0 is incompatible with layer simplernn_1: expected ndim=3, found ndim=4

不知道为什么keras "found ndim=4",而只指定了3 !

为清楚起见,我的

train_x。Shape = (73,84,400)

vocab_size = 400

。只要输入input_shape为3d或以上,就会产生错误。

任何帮助将非常感激!!:))

您不应该在模型的输入形状中包含n_samples。所以你必须指定一个大小为2的元组来输入你的图层的形状(或者将形状的第一个元素设置为None)。在这里,Keras自动将None添加到您的输入形状,从而产生ndim=4。更多信息可以在这里找到。

似乎你的input_dim=400(假设你在词汇表中使用一个热编码表示)和你的训练数据由73文本(相当小)组成,每个文本的长度为84。所以你应该设置input_shape=(84,400).

相关内容

  • 没有找到相关文章

最新更新