应用框架及资源版本:
bert4keras; tensorflow-gpu==1.14
问题描述:
训练模型时每个epoch后的测试准确度都正常.但是加载模型单独跑测试集的时候发现准确率极低,像是模型并没有加载成功
查看加载路径发现没有问题,模型也没有问题,github上也没什么解决方法,后来发现模型的最后两层name没有指定,训练和预测时候网络层name不一样,导致加载失败
def get_model():
model = build_transformer_model(
self.config_path,
None if is_predict else self.checkpoint_path,
keep_tokens=keep_tokens, # 只保留keep_tokens中的字,精简原字表
return_keras_model=False
)
output = model.output
output = keras.layers.Bidirectional(keras.layers.GRU(256, return_sequences=True), name='Out-RNN')(output)
output = keras.layers.Dense(10, name='Out-Dense-Logit')(output)
output = Lambda(lambda x: x[:, 0, :],name='lambda-dense')(output)
output = Dense(10, activation="softmax", kernel_initializer=model.initializer,name='softmax-dense')(output)
model = Model(model.input, output)
return model