我有一个带文字的工作cnn 我的X_train的形状是(39971,10000),y_train:(39971,4)
max_words = 10000
model = Sequential()
model.add(Dense(512, input_shape=(max_words,), activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(256, activation='sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(4, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
到目前为止,这是有效的。
而这就是我试图制作RNN的方式:
model = Sequential()
model.add(Embedding(max_words, 128))
model.add(LSTM(64, return_sequences=True, dropout=0.5, recurrent_dropout=0.5))
model.add(Dense(4, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
我可以编译模型但是当我尝试使用我的训练数据运行model.fit
时,我收到一个错误:
ValueError:检查目标时出错:期望dense_42有3个维度,但是有阵列形状(39971,4)
这是什么意思?我怎么能解决这个问题?
正如this建议我可能需要添加input_shape
,但我不确定具有什么值。
答案 0 :(得分:2)
LSTM层当前正在返回完整序列,因此网络的输出具有形状Realm
。我认为你只想使用最后一个LSTM输出。如果是这种情况,请设置(batch_size, nb_timesteps, 4)
。