tensorflow变量

tensorflow变量的创建,赋值,运算

Posted by 梦影无痕 on 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(向下取整)