我正在研究使用tensorflow作为后端的keras模型:
model = Sequential()
model.add(Embedding(40, 64, dropout=0.2))
model.add(LSTM(33, dropout_W=0.2, dropout_U=0.2))
model.summary()
model.add(Dense(2))
model.add(Activation('relu'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['binary_accuracy'])
print('sumary model')
model.summary()
事实上,这种架构作为句子的二元分类器非常有效,但是我想改进它,因为它有点简单。我是使用keras的初学者,所以我想欣赏修改它的建议。我想添加更多图层和辍学因素以获得更好的结果,我的帖子的主要想法是接收建议。
答案 0 :(得分:1)
了解向Keras模型添加图层的最佳方法是运行和研究Keras仓库中提供的various examples。
上面分享的型号代码看起来有点随机,说实话。但是如果你有一个很好的工作模型,并希望让它更好地工作,一般来说最好调整你已经拥有的层,而不是添加新层。简单比复杂更好。不犯错误。而不是在网络结构方面增加更多复杂性,尝试使您已经更好地工作。你可以:
除此之外,LSTM层有大约20个参数,请查看docstring以查看其中的内容。
如果您必须添加更多图层,则可以先尝试Dense图层。类似的东西:
model.add(Dense(no_of_neurons))
model.add(Dropout(dropout_rate))
此外,我认为没有理由像现在这样两次调用model.summary()。
我认为关键是尽可能保持简单。凯拉斯是那么神奇;使用看起来没什么的代码可以获得很好的结果。如果您对学习Keras很感兴趣,我强烈建议您阅读Francois的Deep Learning with Python,他是Keras背后的人。