tensorflow学习笔记(2):常量(tf.constant)与变量(tf.Varialbe)
来源:互联网 发布:小学考试软件下载 编辑:程序博客网 时间:2024/05/22 13:29
1. 生成tensor的一些方法
1.1 生成constant(常量)
- 生成全0数组
# 语法:tf.zeros(shape, dtype, name)# 样例:tf.zeros([2, 3], int32) # ==> [[0, 0, 0], [0, 0, 0]]
- 生成一个与给定tensor类型、形状一致的常量,其所有元素为0
# 语法:tf.zeros_like(tensor, dtype, name)# 样例a = tf.constant([[1, 2, 3], [4, 5, 6]] )tf.zeros_like(a) # ==> [[0, 0, 0], [0, 0, 0]]
- 生成全1数组
# 语法:tf.ones(shape, dtype, name)# 样例:tf.ones([2, 3], int32) # ==> [[1, 1, 1], [1, 1, 1]]
- 生成一个与给定tensor类型、形状一致的常量,其所有元素为1
# 语法:tf.ones_like(tensor, dtype, name)# 样例:a = tf.constant([[1, 2, 3], [4, 5, 6]])tf.ones_like(a) # ==> [[1, 1, 1], [1, 1, 1]]
- 生成一个给定值的常量
# 语法:tf.constant(value, dtype, shape, name)# 样例:a = tf.constant([[1, 2, 3], [4, 5, 6]], int32) # ==> [[1, 2, 3], [4, 5, 6]]
- 生成一个全部为给定数字的数组
# 语法:tf.fill(dims, value, name)# 样例:a = tf.fill([2, 3], 9) # ==> [[9, 9, 9], [9, 9, 9]]
1.2 生成sequence(序列)
tf.range(start, limit, delta=1, name='range')tf.linspace(start, stop, num, name=None)
1.3 生成random number(随机数)
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)tf.random_uniform(shape, minval=0.0, maxval=1.0, dtype=tf.float32, seed=None, name=None)tf.random_shuffle(value, seed=None, name=None)tf.random_crop(value, size, seed=None, name=None) tf.multinomial(logits, num_samples, seed=None, name=None) tf.random_gamma(shape, alpha, beta=None, dtype=tf.float32, seed=None, name=None)
2. 变量
在TensorFlow中,变量(tf.Variable)用于保存,更新神经网络的参数张量。
2.1 变量常见的属性与方法
tf.constant是一个op(算子),而tf.Variable是一个类,用于实例化对象,然后用对象初始化多个op。变量常见的属性与方法:
x = tf.Variable()x.initializer # 初始化单个变量x.value() # 读取opx.assign() # 写入opx.assign_add() # 更多opx.eval() # 输出变量内容
2.2 为变量设置初始值
我们需要为TensorFlow中的变量设置初始值。
2.2.1 通过随机数设置初始值
在神经网络中,给参数设置随机初始值最常见。
weights = tf.Variable(tf.random_normal([2, 3], stddev = 2, seed = 1))
上例会生成一个形状为2*3,元素均值为0,标准差为2的矩阵。参数seed设定随机种子,保证每次运行的结果一致。我们可以通过参数mean,指定生成矩阵的元素均值。在没有mean参数时,元素均值默认为0。
weights = tf.Variable(tf.random_normal([2, 3], mean = 1, stddev = 2))
下表列出了TensorFlow支持的随机数生成器。可参考1.3
2.2.2 通过常数设置初始值
在神经网络中,通常使用常数来设置偏置项(bias)初始值。
biases = tf.Variable(tf.zeros([3]))
上例生成长度为3,值为0的变量。
2.2.3 通过其他变量设置初始值
w2 = tf.Variable(weights.initialized_value())w3 = tf.Variable(weights.initialized_value() * 2)
w2的初始值与变量weights相同;w3的初始值是变量weights的两倍。
2.3 变量初始化
虽然在定义变量时,我们给出了变量初始化的方法,但这个方法并没有被真正运行。一个变量的值在被使用之前,这个变量的初始化过程需要被明确地调用。
2.3.1初始化全部变量
这个方法最简单。通过tf.global_variables_initializer函数,我们就不需要将变量一个一个初始化了。
init = tf.global_variables_initializer() with tf.Session() as sess: sess.run(init)
2.3.2 初始化一个变量子集
变量子集是全部变量的一个子集,由一些变量组成的list。
init_ab = tf.variables_initializer([a, b], name = "init_ab")with tf.Session() as sess: sess.run(init_ab)
2.3.3 初始化单个变量
初始化单独一个变量。
W = tf.Variable(tf.zeros([784, 10])) with tf.Session() as sess: sess.run(W.initializer)
参考文章
《TensorFlow—实战Geogle深度学习框架》
阅读全文
0 0
- tensorflow学习笔记(2):常量(tf.constant)与变量(tf.Varialbe)
- tensorflow学习笔记(三十):tf.gradients 与 tf.stop_gradient()
- TensorFlow学习笔记(十六)tf.random_normal
- tensorflow学习笔记(九):tf.shape()与tensor.get_shape()
- tensorflow学习之路(2-2):tf.variable_scope(),tf.name_scope(),tf.get_variable()的认识(补充)
- TensorFlow 学习(一)—— tf.get_variable() vs tf.Variable(),tf.name_scope() vs tf.variable_scope()
- tensorflow之变量初始化(tf.Variable)
- 【TensorFlow】变量管理tf.get_variables/tf.Variable/tf.variable_scope的应用(七)
- tensorflow学习笔记(3)——基础(三)——TF训练和变量
- tensorflow之变量(Variable)与常量(constant)体会
- TensorFlow学习笔记(5)----TF生成数据的方法
- tensorflow学习笔记(二十六):构建TF代码
- TensorFlow学习笔记(5)----TF生成数据的方法
- TensorFlow学习笔记(五):tf.reshape用法
- tensorflow学习笔记(六):TF.contrib.learn大杂烩
- TensorFlow学习笔记(九)tf搭建神经网络基本流程
- TensorFlow学习笔记(十)tf搭建神经网络可视化结果
- TensorFlow学习笔记(十七)tf.nn.conv2d
- 欢迎使用CSDN-markdown编辑器
- HBase 数据及物理模型 架构及工作原理
- python3常见编码转换
- butterknife总结(一)
- 简单介绍当前Windows支持的各种Socket I/O模型
- tensorflow学习笔记(2):常量(tf.constant)与变量(tf.Varialbe)
- springboot从零开始[2] gradle+mybatis xml
- 【剑指offer】面试题66:构建乘积数组
- mysql如何解决中文编码问题
- Java设计模式之创建型模式-建造者模式(Builder)
- Django笔记1——安装配置(Linux环境)
- 判断两条线段是否相交
- 机器学习基础-学习笔记 概率论
- JavaScript创建对象