【问题标题】:Error when checking input: expected lstm_29_input to have shape (None, None, 2) but got array with shape (51, 1, 10)检查输入时出错:预期 lstm_29_input 的形状为 (None, None, 2) 但得到的数组的形状为 (51, 1, 10)
【发布时间】:2019-02-15 06:32:07
【问题描述】:

我的代码如下:

tfidf_matrix=dataset[:0,10]

model = Sequential()

input_shape = tfidf_matrix.shape

model.add(LSTM(32, input_dim=2, return_sequences=True, input_shape=input_shape))

model.add(LSTM(64, input_dim=2, input_shape=input_shape, return_sequences=True))

model.add(Dropout(0.5))

model.add(Dense(1))

model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='rmsprop')

model.fit(X_train, Y_train, batch_size=20, nb_epoch=11)

score = model.evaluate(X_test, Y_test, batch_size=20)

我的数据集的一个sn-p如下(用于二进制分类):

197.2468966,210.0796552,0.579310345,899.0698276,721.1689655,95.52396817,90.59689707,2.620225801,80.53794681,152.6919308,0

200.7320616,213.6853999,0.653851798,856.1059428,841.3118122,97.48691388,92.08916212,2.753934571,100.4151651,161.5956683,1

225.5475209,250.124516,0.735856126,878.6098414,924.2562758,110.4606583,101.748855,2.885445826,77.50833011,109.0694556,0

我不断收到类似这样的错误:"Error when checking input: expected lstm_9_input to have 3 dimensions, but got array with shape (51, 10)" in model.fit() 请帮忙

【问题讨论】:

    标签: python tensorflow keras deep-learning lstm


    【解决方案1】:

    首先,你应该只在模型的第一层使用参数input_shape。其余层将自动计算其输入形状。

    其次,你应该只在你的第一个 LSTM 层中使用 input_diminput_shape 中的一个参数。参数input_dim 指定序列的每个时间步有多少维度,而input_shape 指定序列长度和维度。您应该在输入形状中包含批量大小。所以,如果你的训练数据的形状是(batch_size, seq_length, dim),那么你第一层的输入形状应该是(seq_length, dim)

    在您的情况下,您的数据看起来有 10 个时间步长且只有 1 个维度(即每个时间步长一个数字)。所以,你的训练数据应该是(batch_size, 10, 1) 的形状,而你在第一层的input_shape 应该是(10, 1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 2020-01-07
      相关资源
      最近更新 更多