变量(Variable):
当训练模型时,用变量来存储和更新参数。变量包含张量(Tensor)存放于内存的缓存区,建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量可以在之后的模型训练和分析时被加载
# 创建一个变量,形状为784*200,标准差0.35,随机正态分布的
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),name='weights')
biases = tf.Variable(tf.zeros([200]),name='biases')
# 实际上就是对tf.Variable类的实例化
一次性全部初始化:
sess = tf.Session()
sess.run(tf.initialize_all_variables)
# 1.0版本后的是:
sess.run(tf.global_variables_initializer())
保存变量:
v1 = tf.Variable(..., name='v1')
v2 = tf.Variable(..., name='v2')
tf.train.Saver()
with tf.Session() as sess:
sess.run(tf.initialize_all_variables)
'''
操作
'''
save_path = saver.save(sess,'/temp/model.ckpt') # checkpoint检查点文件
恢复变量
# 先定义
v1 = tf.Variable(..., name='v1')
v2 = tf.Variable(..., name='v2')
tf.train.Saver()
with tf.Session() as sess:
# 没有变量的初始化
saver.restore(sess,'/temp/model.ckpt') # 读取检查点文件并恢复到对应的变量中
'''
后续操作
'''
存储和恢复指定的变量
v1 = tf.Variable(..., name='v1')
v2 = tf.Variable(..., name='v2')
saver1 = tf.train.Saver({'my_v1':v1}) #只保存v1变量
saver2 = tf.train.Saver({'my_v2':v2})
with tf.Session() as sess:
'''
后续操作
'''