tensorflow变量

  • 梦影无痕丶
  • 4 Minutes
  • June 28, 2018

变量(tf.Variable)

变量的作用是保存和更新神经网络的参数。和其他编程语言相同,tensorflow中的变量需要预先声明和指定初始值,变量通过 tf.Variable 类进行操作,通过运算可以改变变量的值。tf.Variable 存在于单个session.run调用的上下文中,

变量的创建

w = tf.Variable(<initial-value>, name=<optional-name>)

例如,创建一个2*3矩阵变量:

w=tf.Variable(tf.random_normal([2,3],stddev=2)

tf.random_normal 表示数据的类型是正态分布,stddev=2 表示标准差为 2。

设置初始值为随机数:

|:——-|—————-|
|函数|随机数分布|
|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)|正态分布,平均值大于2个标准差的值将被丢弃并重新挑选|
|tf.random_uniform(shape,minval=0,maxval=None,
dtype=tf.float32,seed=None,name=None)|生成的值遵循范围[minval, maxval)内的均匀分布|
|tf.random_gamma(shape,alpha,beta=None,
dtype=tf.float32,seed=None,name=None)|Gamma分布|

设置初始值为常量:

|:——-|:———–:|——|
|函数|功能|样例|
|tf.zeros(shape,dtype=tf.float32,name=None)|全 0 数组|tf.zeros([2,3],int32)=>[[0,0,0][0,0,0]]|
|tf.ones(shape,dtype=tf.float32,name=None)|全 1 数组|tf.ones([2, 3], tf.int32)=>[[1, 1, 1], [1, 1, 1]]|
|tf.fill(dims,value,name=None)|给定数字的数组|fill([2, 3], 9)=> [[9, 9, 9][9, 9, 9]]|
|tf.constant(value,dtype=None,shape=None,
name=’Const’,verify_shape=False)|全 1 数组|tf.constant([1, 2, 3, 4, 5, 6, 7]) => [1 2 3 4 5 6 7]|

例如,创建一个初始值为0,长度为3的变量:

b=tf.Variable(tf.zeros([3])

变量初始化

变量必须先初始化后才可使用。大多数高级框架如 tf.contrib.slim、tf.estimator.Estimator 和 Keras 在训练模型钱会自动初始化。

初始化单个变量 w :

sess =tf.Session()
sess.run(w.initializer)

调用 tf.global_variables_initializer() 一次性初始化所有可训练变量:

session.run(tf.global_variables_initializer())

使用变量:

在 TensorFlow 图中使用 tf.Variable 的值,只需将其视为普通 tf.Tensor。

算术运算

|—–|—–|
|操作|描述|
|tf.add(x, y, name=None)|求和
|tf.sub(x, y, name=None) |减法
|tf.mul(x, y, name=None)| 乘法
|tf.div(x, y, name=None)| 除法
|tf.mod(x, y, name=None)| 取模
|tf.abs(x, name=None)| 求绝对值
|tf.neg(x, name=None)| 取负 (y = -x).
|tf.sign(x, name=None)| 返回符号 y = sign(x) = -1 if x < 0; 0 if x == 0; 1 if x > 0.
|tf.inv(x, name=None)| 取反
|tf.square(x, name=None)| 计算平方 (y = x * x = x^2).
|tf.round(x, name=None)| 舍入最接近的整数
|tf.sqrt(x, name=None)| 开根号 (y = \sqrt{x} = x^{1/2}).
|tf.pow(x, y, name=None)| 幂次方
|tf.exp(x, name=None)| 计算e的次方
|tf.log(x, name=None)| 计算log,一个输入计算e的ln,两输入以第二输入为底
|tf.maximum(x, y, name=None)| 返回最大值 (x > y ? x : y)
|tf.minimum(x, y, name=None)| 返回最小值 (x < y ? x : y)
|tf.cos(x, name=None)| 三角函数cosine
|tf.sin(x, name=None)| 三角函数sine
|tf.tan(x, name=None)| 三角函数tan
|tf.atan(x, name=None)| 三角函数ctan

张量操作

|—|—-|
|操作 描述
|tf.string_to_number(string_tensor, out_type=None, name=None)| 字符串转为数字
|tf.to_double(x, name=’ToDouble’)| 转为64位浮点类型–float64
|tf.to_float(x, name=’ToFloat’)| 转为32位浮点类型–float32
|tf.to_int32(x, name=’ToInt32’)| 转为32位整型–int32
|tf.to_int64(x, name=’ToInt64’)| 转为64位整型–int64
|tf.cast(x, dtype, name=None)| 将x或者x.values转换为dtype(向下取整)