1、变量的初始化、保存和恢复、会话创建和运行-tensorflow

一、计算图的构造流程

1、inference() -尽可能的构造图表,满足促使神经网络向前反馈并作出预测的要求。

2、loss() -往inference 图表中添加生成损失(loss)所需要的操作(ops)

3、training() -往损失图表中添加计算并应用梯度所需的操作。

 

二、计算操作的相关知识点

1、tensorflow 内建的运算操作

2、变量(Variable):

当训练模型时,用变量来存储和更新参数。变量包含张量(Tensor)存放于内存的缓冲区。

建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量的值可以在之后模型训练和分析时被加载。

创建:使用构造函数Variable(),变量通常为常量或随机数

Weights = tf.Variable(tf.eandom_normal([784,200],stddev = 0.35),name = “weights”)

biases = tf.Variable(tf.zeros([200]),name = “biases”)

 

2.1、变量(Variable):初始化

a、一次性全部初始化:

变量的初始化必须在模型的其他操作运行之前先明确地完成。

#初始化变量(init 是一个节点)

init = tf.initialize_all_variables()

#启动图(graph)

sess =tf.Session()

sess.run(init)

b、由另一个变量初始化

weights=tf.Variable(tf.random_normal([784,200],stddev = 0.35),name =”weights”)

w2 = tf.Variable(weights.initialized_value(),name=”w2”)

w_twice = tf.Variable(weights.initialized_value()*0.2,name = “w_twice”)

 

2.2、变量(Variable):保存和恢复

a、保存变量

在图中对每个变量建一个saver节点

v1 = tf.Variable(…,name=”v1”)

v2= tf.Variable(…,name=”v2”)

#添加初始化操作初始前面所有变量

init_op =tf.initialize_all_variables()

#添加Saver操作对变量进行保存和恢复

saver = tf.train.Saver()

#启动会话

with tf.Session() as sess:

#运行初始化节点

sess.run(init_op)

#将变量的值保存到硬盘里

save_path=saver.save(sess,”/tmp/model.ckpt”)

print “Model saved in file:”,save_path

b、恢复变量

用同一个saver对象来恢复变量。注意,当你从文件中恢复变量时,不需要事先对他们做初始化

#创建变量

v1 = tf.Variable(…,name = “v1”)

v2 = tf.Variable(…,name=”v2”)

#添加Saver 操作对变量进行恢复

saver = tf.train.Saver()

#启动会话

with tf.Session() as sess:

#从硬盘中读取检查点文件并恢复到对应变量中

saver.restore(sess,”/tmp/model.ckpt”)

print “Model restored”

#在已经恢复的模型上继续工作

c、存储恢复哪些变量(python 字典)

通过tf.train.Saver()构造函数传入Python字典,很容易地定义需要保持的变量及对应名称:建对应使用德名称,值对应被管理的变量

#创建变量

v1 = tf.Variable(…,name = “v1”)

v2 = tf.Variable(…,name=”v2”)

#初始化

init_op =tf.initialize_all_variables()

#只保存‘v2’,使用另外的名字“my_v2”

saver = tf.train.Saver({“my_v2”:v2})

 

 

3、会话(Session):创建和运行

完成全部构建准备、生成全部所需的操作之后,可以构建一个tf.Session,用于运行图表。

Sess = tf.Session()

另外,也可以利用with 代码块生成Session,限制作用域:

with tf.Session() as sess:

生成会话之后,所有tf.Variable 实例都会立即通过调用各自初始化操作中的sess.run()函数进行运行

#初始化变量

init= tf.initialize_all_variables()

#创建计算图(graph)

sess= tf.Session()

#执行初始化节点

sess.run(init)

Sess.run()方法将会运行图表中与作为参数传入的操作相对应的完整子集train训练集。

在初次调用时,init 操作只包含了变量初始化程序tf.group.图表的其他部分不会在这里,而是在下面的训练循环运行。

完成会话中的变量初始化之后,开始训练。

训练德每一步都是通过用户代码控制,而能实现有效训练的最简单循环就是

For step in xrange(0,201); #循环201次

sess.run(train) #运行计算图

if step % 20 ==0:

printf step, sess.run(w),sess.run(b) #输出权值,偏执

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值