训练好的模型,换服务器发布,还用重新训练吗?

来源:5-7 编写整个神经网络模型

麦芽小程序

2018-10-03

老师,我不太懂经过训练的神经网络,在计算机内部究竟改变了什么,试该模型越来越精准的,代码还是原来的代码,训练前后为什么执行结果就不同了呢,如果经过训练改变了模型的内部算法,那换服务器重新发布代码,是不是还要重新训练呢?

写回答

1回答

Oscar

2018-10-03

你要保存模型(参数)文件,之后就可以直接 restore 了。TensorFlow 官网有实例。

保存模型

# 创建变量.
v1 = tf.get_variable("v1", shape=[3], initializer = tf.zeros_initializer)
v2 = tf.get_variable("v2", shape=[5], initializer = tf.zeros_initializer)

inc_v1 = v1.assign(v1+1)
dec_v2 = v2.assign(v2-1)

# 初始化变量的操作.
init_op = tf.global_variables_initializer()

# 用于保存和恢复模型的类.
saver = tf.train.Saver()

# Later, launch the model, initialize the variables, do some work, and save the
# variables to disk.
# 运行模型,初始化变量,做些事情,保存模型的变量的参数文件到本地硬盘
with tf.Session() as sess:
  sess.run(init_op)
  # 用模型做些事情.
  inc_v1.op.run()
  dec_v2.op.run()
  # 保存模型的变量的参数文件.
  save_path = saver.save(sess, "/tmp/model.ckpt")
  print("Model saved in path: %s" % save_path)

恢复模型来使用

tf.reset_default_graph()

# 创建变量.
v1 = tf.get_variable("v1", shape=[3])
v2 = tf.get_variable("v2", shape=[5])

# 用于保存和恢复模型的类.
saver = tf.train.Saver()

# Later, launch the model, use the saver to restore variables from disk, and
# do some work with the model.
# 运行模型,使用 saver 来恢复模型参数,再打印变量值
with tf.Session() as sess:
  # 恢复之前保存在硬盘上的模型参数文件里的变量来使用.
  saver.restore(sess, "/tmp/model.ckpt")
  print("Model restored.")
  # 查看变量的值
  print("v1 : %s" % v1.eval())
  print("v2 : %s" % v2.eval())
0
0

基于Python玩转人工智能最火框架 TensorFlow应用实践

机器学习入门,打牢TensorFlow框架应用是关键!

2214 学习 · 688 问题

查看课程