【发布时间】:2018-08-01 20:51:39
【问题描述】:
我正在尝试使用功能 API 重写顺序模型,但是当我这样做时,使用功能 API 创建的模型在 fit() 阶段的准确度非常低,并且在纪元周期之间的准确性。
在对提供类似结果的开发模型进行了一些阅读后,我将种子值设置如下,但仍然没有运气;
import numpy as np
np.random.seed(2017)
from tensorflow import set_random_seed
set_random_seed(2017)
import random as rn
rn.seed(2017)
使用功能API定义的模型代码如下;
length=257
inputs = Input(shape=(length,))
embedding = Embedding(vocab_size, 100, weights=[embedding_matrix], input_length=257, trainable=False)(inputs)
bilstm = Bidirectional(LSTM(10, return_sequences=True))(embedding)
dense1 = Dense(10, activation='sigmoid')(bilstm)
bilstm2 = Bidirectional(LSTM(10))(dense1)
dense2 = Dense(1)(bilstm2)
output = Activation('relu')(dense2)
new_model = Model(inputs=inputs, outputs=output)
使用顺序模型创建的模型如下;
model = Sequential()
e = Embedding(vocab_size, 100, weights=[embedding_matrix], input_length=257, trainable=False)
model.add(e)
model.add(Bidirectional(LSTM(10, return_sequences=True)))
model.add(Dense(10, activation='sigmoid'))
model.add(Bidirectional(LSTM(10)))
model.add(Dense(1))
model.add(Activation('relu'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics = ['accuracy'])
在这两种情况下,我都在fit() 函数中设置了shuffle=False。
model.summary() 返回相同的输出,除了输入层。在fit() 过程中,序列模型的准确性在每个时期都有所提高,但使用功能 API 创建的模型仍处于较低值,并且在周期内没有提高。
我知道这两个模型不会返回相同的准确度,但我想知道为什么一个模型的准确度提高了,而另一个模型在周期内没有提高。请注意,x_train 和 y_train 也是相同的。
我在这里错过了什么,
【问题讨论】:
标签: python tensorflow keras