【发布时间】:2020-04-02 07:45:41
【问题描述】:
我有一个应用了 dropout 的预训练模型,我想从 java 程序中恢复它。
对于我的应用程序,在推理步骤中,我需要打开 dropout 并多次重复向模型输入输入并获得一系列预测。
我做了什么:
- 加载模型并初始化会话
model = SavedModelBundle.load ("path_to_model", "serve");
sess = model.session();
- 向模型馈送(重复多次,例如 3 次)
for (i = 0; i < 3; i++)
t_pred = sess.runner().feed("x", x).fetch("y").run().get(0);
假设:
- 第一次:获取数组 A1 = [y1, y2, y3]
- 第二次:获取数组A2 =[z1, z2, z3]
...
我想要相同的推理,但 A2 与 A1 不同。 我知道辍学面具会随着时间的推移而改变。 我想我需要“种子”变量,就像我们在 python API 中所拥有的那样。但我找不到任何参考资料。
我尝试了什么: 要获得相同的预测列表,我需要加载模型并多次初始化会话。
for (i = 0; i < 3; i++)
model = SavedModelBundle.load ("path_to_model", "serve");
sess = model.session();
t_pred = sess.runner().feed("x", x).fetch("y").run().get(0);
但这不是最优的,因为加载模型需要时间并且可能导致与内存相关的问题。
我该如何解决这个问题?
提前谢谢你!
【问题讨论】:
标签: java tensorflow seed dropout