我正在使用keras 2.0.2为分类任务创建一个lstm网络.网络拓扑如下:
from numpy.random import seed
seed(42)
from tensorflow import set_random_seed
set_random_seed(42)
import os
#os.environ['PYTHONHASHSEED'] = '0'
model = Sequential()
model.add(embedding_layer)
model.add(LSTM(units=100)) #line A
model.add(Dropout(0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
在同一数据集上,使用当前行A,我得到一个结果:
precision recall f1 support
0 0.68 0.58 0.63 305
2 0.92 0.95 0.93 1520
avg 0.8 0.76 0.78 1825
Run Code Online (Sandbox Code Playgroud)
,其中0,2表示类标签
但是当A行改为
model.add(LSTM(100))
Run Code Online (Sandbox Code Playgroud)
我得到了不同的结果:
precision recall f1 support
0 0.66 0.58 0.62 305
2 0.92 0.94 0.93 1520
avg 0.79 0.76 0.77 1825
Run Code Online (Sandbox Code Playgroud)
根据keras文档https://keras.io/layers/recurrent/#lstm,这对我没有意义,我认为两行应该相同?我误解了什么吗?