我尝试了解LSTM以及如何使用Keras构建它们.我发现,主要有4种运行RNN的模式(图中右边4种)
图片来源:Andrej Karpathy
现在我想知道他们每个人的简约代码片段在Keras中会是什么样子.所以像
model = Sequential()
model.add(LSTM(128, input_shape=(timesteps, data_dim)))
model.add(Dense(1))
Run Code Online (Sandbox Code Playgroud)
对于4个任务中的每个任务,可能只需要一点点解释.
machine-learning neural-network deep-learning keras recurrent-neural-network
我有这个代码适用于二进制分类.我已经为keras imdb数据集测试了它.
model = Sequential()
model.add(Embedding(5000, 32, input_length=500))
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, epochs=3, batch_size=64)
# Final evaluation of the model
scores = model.evaluate(X_test, y_test, verbose=0)
Run Code Online (Sandbox Code Playgroud)
我需要将上面的代码转换为多类别分类,总共有7个类别.在阅读了几篇文章以转换上面的代码之后,我理解了什么,我必须改变
model.add(Dense(7, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
显然,改变两行以上是行不通的.我还需要做些什么来使代码适用于多类分类.另外我认为我必须将类更改为一个热编码但不知道如何在keras中.