如何在以下keras架构中添加更多图层?

时间:2018-05-12 20:42:52

标签: tensorflow keras lstm

我正在研究使用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的初学者,所以我想欣赏修改它的建议。我想添加更多图层和辍学因素以获得更好的结果,我的帖子的主要想法是接收建议。

1 个答案:

答案 0 :(得分:1)

了解向Keras模型添加图层的最佳方法是运行和研究Keras仓库中提供的various examples

上面分享的型号代码看起来有点随机,说实话。但是如果你有一个很好的工作模型,并希望让它更好地工作,一般来说最好调整你已经拥有的层,而不是添加新层。简单比复杂更好。不犯错误。而不是在网络结构方面增加更多复杂性,尝试使您已经更好地工作。你可以:

  • 将输出激活设置为'sigmoid'
  • 将您的优化器更改为除SGD之外的其他内容
  • 尝试不同数量的嵌入input_dims
  • 更改优化程序的学习率

除此之外,LSTM层有大约20个参数,请查看docstring以查看其中的内容。

如果您必须添加更多图层,则可以先尝试Dense图层。类似的东西:

model.add(Dense(no_of_neurons))
model.add(Dropout(dropout_rate))

此外,我认为没有理由像现在这样两次调用model.summary()。

我认为关键是尽可能保持简单。凯拉斯是那么神奇;使用看起来没什么的代码可以获得很好的结果。如果您对学习Keras很感兴趣,我强烈建议您阅读Francois的Deep Learning with Python,他是Keras背后的人。