训练好的模型,换服务器发布,还用重新训练吗?
来源: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())
00
相似问题