cyb*_*oth 5 python keras tensorflow
我正在使用tensorflow版本“2.0.0”和keras版本“2.3.0”来开发模型。这是我保存模型的方法:
seed = 1234
random.seed(seed)
np.random.seed(seed)
tf.compat.v1.random.set_random_seed(seed)
Run Code Online (Sandbox Code Playgroud)
然后,我按照此处的说明保存整个模型:
model.save('some_model_name.h5')
Run Code Online (Sandbox Code Playgroud)
我在训练期间获得了大约 95% 的准确率。当我从不同的 python 会话加载模型时,例如:
# Recreate the exact same model
new_model = load_model('some_model_name.h5', custom_objects={'SeqSelfAttention': SeqSelfAttention})
score = new_model.evaluate([x_img_train, x_txt_train], y_train, verbose=2)
print("%s: %.2f%%" % (new_model.metrics_names[1], score[1]*100))
Run Code Online (Sandbox Code Playgroud)
现在的准确率约为4%。请注意,我有批量归一化层和丢失层。如何使模型的预测在不同会话中保持一致?
首先,由于2.0.0的稳定性问题,我将TensorFlow版本降级到1.13.1。
其次,在达到一定程度的可重复性之前,我必须确保一些事情:
无论有没有 dropout 或 Batchnorm,结果都没有变化。
请注意,遵循这些步骤给了我一定程度的一致性,尽管它不是 100% 可重复的。如果您面临类似的问题,也许这些见解会有所帮助。
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |