在TensorFlow中,变量(tf.Variable
)的作用就是保存和更新神经网络中的参数。TensorFlow中变量的初始值可以设置成随机数、常数或者是通过其他变量的初始值计算得到的。
- 随机数生成器
TensorFlow随机数生成函数
函数名称 | 随机数分布 | 主要参数 |
---|---|---|
tf.random_normal | 正态分布 | 平均值、标准差、取值类型 |
tf.truncated_normal | 正态分布,但如果随机出来的值偏离平均值超过2个标准差,那么这个数将会被重新随机 | 平均值、标准差、取值类型 |
tf.random_uniform | 均匀分布 | 最小、最大取值,取值类型 |
tf.random_gamma | Gamma分布 | 形状参数alpha、尺度参数beta、取值类型 |
- 常数
TensorFlow常数生成函数
函数名称 | 功能 | 样例 |
---|---|---|
tf.zeros | 产生全0的数组 | tf.zeros([2, 3], int32) -> [[0, 0, 0], [0, 0, 0]] |
tf.ones | 产生全1的数组 | tf.ones([2, 3], int32) -> [[1, 1, 1], [1, 1, 1]] |
tf.fill | 产生一个全部为给定数字的数组 | tf.fill([2, 3], 9) -> [[9, 9, 9], [9, 9, 9]] |
tf.constant | 产生一个给定值的常量 | tf.constant([1, 2, 3]) -> [1, 2, 3] |
在神经网络中,偏置项bias通常会使用常数来设置初始值。
- 其他变量的初始值
weights = tf.Variable(tf.random_normal([2, 3], stddev = 2))
w = tf.Variable(weights.initializer_value() * 2.0)
在TensorFlow中,一个变量的值在被使用之前,这个变量的初始值过程需要被明确地调用。
TensorFlow提供了一种便捷的方式来完成变量初始化的过程,即通过tf.global_variables_initializer函数
实现初始化所有变量的过程。
init_op = tf.global_variables_initializer()
sess.run(init_op)
变量与张量的关系:在TensorFlow中,变量的声明函数tf.Variable
是一个运算。这个运算的输出结果就是一个张量,这个张量也就是变量。所以变量只是一种特殊的张量。
变量最重要的两个属性:维度shape和类型type。(变量的类型是不可改变的,维度在程序运行中是有可能改变的,通过设置参数validate_shape=False。tf.assign函数
实现两个变量之间的赋值操作。)
(最近更新:2019年04月12日)