//***********警告:本文只是个人试验,不是官方教程**************
实验1:用Saver保存参数
代码:
import tensorflow as tf
initial = tf.zeros([3,3])
var1= tf.Variable(initial)
saver=tf.train.Saver()
sess=tf.Session()
sess.run(tf.initialize_all_variables())
var1_initial=sess.run(var1)
# --- Save:
saver.save(sess,"saved\SaverTest")
print('Run OK')
在程序所在文件夹会自动创建一个"saved"文件夹,里面会创建保存的参数。
实验2:
直接用Saver恢复参数,是否可行?
代码:
import tensorflow as tf
saver=tf.train.Saver()
sess=tf.Session()
saver.restore(sess,"saved\SaverTest")
print('Run OK')
运行结果:
File "C:\Users\uidt8491\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\training\saver.py", line 869, in _build
raise ValueError("No variables to save")
ValueError: No variables to save
代码没有运行到print('Run OK')那步,直接提示“没有变量需要被保存”,说明Saver“出现”之前,就需要有variables被定义,然后才能load变量。
结论:在定义一个Saver之前,要首先有variables被定义,而且结构需要和被保存的“变量们”结构一样
实验3:
将定义变量的那段代码添加后的改进代码:
import tensorflow as tf
initial = tf.zeros([3,3])
var1= tf.Variable(initial)
saver=tf.train.Saver()
sess=tf.Session()
saver.restore(sess,"saved\SaverTest")
print('Run OK')
运行结果:
runfile('D:/Develop/APB/test/test.py', wdir='D:/Develop/APB/test')
WARNING:tensorflow:From C:\Users\uidt8491\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\framework\op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From C:\Users\uidt8491\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\training\saver.py:1266: checkpoint_exists (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.
Instructions for updating:
Use standard file APIs to check for files with this prefix.
INFO:tensorflow:Restoring parameters from saved\SaverTest
Run OK
成功。
总结:
在定义一个saver之前,要首先将要保存的变量定义