前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习(五)--常量与变量

深度学习(五)--常量与变量

作者头像
Python进击者
发布2019-09-17 15:27:04
4340
发布2019-09-17 15:27:04
举报
文章被收录于专栏:JAVAandPython君JAVAandPython君

1 常量

概念:

  • 在运行过程中值不会改变的单元,在Tensorflow中不需要进行初始化操作

定义常量:

代码语言:javascript
复制
constant_name = tf.constant(value)

常量的运算代码示例:

代码语言:javascript
复制
import tensorflow as tf

# 一个简单的计算图
node1 = tf.constant(3.0, tf.float32, name="node1")
node2 = tf.constant(4.0, tf.float32, name="node1")
node3 = tf.add(node1, node2)

# 可以通过创建会话session来执行数据操作
sess = tf.Session()

print("node3的值:",sess.run(node3)

在这里进行的就是两个常量(node1, node2)的加法运算。

常量很简单,接下来看看变量!

2 变量

  • 在运行中,值会改变的单元,在tensorflow中需要初始化操作

定义变量:

代码语言:javascript
复制
# 注意下面的Varible是大写开头
name_ariable = tf.Variable(value, name)

个别变量的初始化:

代码语言:javascript
复制
init_op = name_variable.initializer()

所有变量的初始化:

代码语言:javascript
复制
init_op = tf.global_variables_initializer()

变量的运算代码:

代码语言:javascript
复制
import tensorflow as tf

node1 = tf.Variable(3.0, tf.float32, name='node1')
node2 = tf.Variable(4.0, tf.float32, name='node2')
result = tf.add(node1, node2, name='result')

sess = tf.Session()

init = tf.global_variables_initializer()

sess.run(init)

print(sess.run(result))

sess.close()

在这里的 init 是初始化所有的变量,它自己本身也是一个节点,所以我们也要通过session的run()方法对它进行初始化,如果我们注释掉sess.run(init),程序会报错!

3 变量的赋值

  • 与传统的编程语言不同,tensorflow中的变量定义之后,一般无需对变量进行人工赋值,系统会根据算法模型,训练优化过程中自动调整变量对应的数值
代码语言:javascript
复制
epoch = tf.Variable(0, name='epoch',trainable=False)

上面的代码把trainable参数设置为False,即取消了系统的自动赋值而是变为人工赋值

• 特殊情况需要人工更新的,可用变量赋值语句 变量更新语句:

代码语言:javascript
复制
update_op = tf.assign(variable_to_be_updated, new_value)

说了这么多,我们来写个小案例:

代码语言:javascript
复制
import tensorflow as tf

node1 = tf.constant(1)

node2 = tf.Variable(0, name='node2')
# 实现加法操作

value = tf.add(node1, node2, name='value')

update_value = tf.assign(node2, value)

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for _ in range(10):
        sess.run(update_value)
        print(sess.run(node2))

分析一下这个小案例:首先我们定义了一个常量node1,然后我们定义一个变量node2, 然后我们将两者进行加法运算得到value,然后我们调用了tensorflow中的assign(),也就是变量更新的方法,我们将经过加法得到的结果赋给之前的变量node2,也就是实现了+1的操作。下一句就是初始化所有的变量,然后通过上下文的方法创建session,然后我们来初始化init,并且一个for循环,可以看出我们循环了10次,在这10次循环里,我们每次去运行了update_value,当我们去运行它时,就会牵涉到value,node2这些节点从而去运行这些节点,最后我们每次打印出变量node2的值。

运行输出后的结果:

代码语言:javascript
复制
1
2
3
4
5
6
7
8
9
10

4 关于变量的一个小练习

最后给大家一个小练习:

如何通过tensorflow的变量赋值计算:1+2+3…+10?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档