【问题标题】:Tensorflow: How to use a trained model in a application?Tensorflow:如何在应用程序中使用经过训练的模型?
【发布时间】:2017-01-22 22:43:27
【问题描述】:

我已经训练了一个 Tensorflow 模型,现在我想导出“函数”以在我的 python 程序中使用它。这可能吗?如果可以,怎么做?任何帮助都会很好,在文档中找不到太多。 (我不想保存会话!)

我现在已经按照您的建议存储了会话。我现在是这样加载的:

f = open('batches/batch_9.pkl', 'rb')
input = pickle.load(f)
f.close()
sess = tf.Session()

saver = tf.train.Saver()
saver.restore(sess, 'trained_network.ckpt')
y_pred = []

sess.run(y_pred, feed_dict={x: input})

print(y_pred)

但是,当我尝试初始化保护程序时,我收到错误“没有要保存的变量”。

我想做的是:我正在为棋盘游戏编写一个机器人,输入是格式化为张量的棋盘上的情况。现在我想返回一个张量,它给了我下一个播放的最佳位置,即一个处处为 0 且在一个位置处为 1 的张量。

【问题讨论】:

  • 你可以只存储所有变量
  • 为什么不想保存会话?
  • 我想使用网络进行预测,但我看不出它在会话中是如何工作的
  • 你能告诉我们你的代码吗?您应该能够恢复会话,然后使用 session.run() 评估所需的张量

标签: python tensorflow


【解决方案1】:

我不知道是否有其他方法可以做到这一点,但您可以通过保存会话在另一个 Python 程序中使用您的模型:

您的训练代码:

# build your model

sess = tf.Session()
# train your model
saver = tf.train.Saver()
saver.save(sess, 'model/model.ckpt')

在您的应用程序中:

# build your model (same as training)
sess = tf.Session()
saver = tf.train.Saver()
saver.restore(sess, 'model/model.ckpt')

然后您可以使用 feed_dict 评估模型中的任何张量。这显然取决于您的型号。例如:

#evaluate tensor
sess.run(y_pred, feed_dict={x: input_data})

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多