【TensorFlow】神经网络参数与变量(四)

来源:互联网 发布:淘宝客鹊桥是什么意思 编辑:程序博客网 时间:2024/05/29 19:52

在TensorFlow中,变量(tf.Variable)的作用就是保存和更新神经网络的参数。在神经网络中,给变量赋予随机数最为常见,所以一般使用随机数给TensorFlow的变量初始化。

import tensorflow as tf#定义矩阵变量weights,2X3的矩阵,矩阵中元素的均值为0,标准差为2。weights = tf.Variable(tf.random_normal([2,3],stddev=2))sess = tf.Session()#Tensorflow中,所有变量都必须初始化才能使用init = tf.global_variables_initializer()sess.run(init)print(sess.run(weights))

1、tf.random_normal 正态分布随机数
2、tf.truncated_normal 正态分布,但如果随机出来的值偏离值超过2个标准差,那么这个数将会被重新随机
3、tf.random_uniform 均匀分布
4、tf.random_gamma Gamma 分布

weights = tf.Variable(tf.random_normal([2,3],stddev =2))weights1 = tf.Variable(tf.truncated_normal([2,3],stddev =2))weights2 = tf.Variable(tf.random_uniform([2,3]))weights3 = tf.Variable(tf.random_gamma([2,3],alpha =[0.5, 1.5] ))sess = tf.Session()'''运行sess.run()前要记得初始化所有的变量:对于constant定义的变量可以不初始化,但是Variable的变量一定要初始化'''init_ = tf.global_variables_initializer() sess.run(init_)print(sess.run(weights))print(sess.run(weights1))print(sess.run(weights2))print(sess.run(weights3))

TensorFlow也支持常数来初始化一个变量。

1、tf.constant 产生一个给定值的常量
2、tf.zeros(shape,dtype) 产生全为0的数组
3、tf.ones 产生全为1的数组
4、tf.fill 产生一个全部为给定数值的数组

bb1= tf.constant([1])bb2 = tf.zeros([2,2])bb3 = tf.ones([2,2])bb4 = tf.fill([2,2],5)print(weights)sess = tf.Session()'''运行sess.run()前要记得初始化所有的变量:对于constant定义的变量可以不初始化,但是Variable的变量一定要初始化'''init_ = tf.global_variables_initializer() sess.run(init_)print(sess.run(bb1))print(sess.run(bb2))print(sess.run(bb3))print(sess.run(bb4))

在神经网路中,偏执项(bias)通常会使用常数来设置初始值。

init_ = tf.global_variables_initializer() sess.run(init_)biases = tf.Variable(tf.zeros([2,2]))sess.run(biases )

前向传播过程

import tensorflow as tf#声明w1,w2两个变量,这里还通过seed固定随机种子,保证每次运行的结果一样w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed =1))w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed =1))#暂时将输入的特征向量定义为一个常量。X是一个1*2的矩阵x = tf.constant([[0.7,0.9]])a = tf.matmul(x,w1)y = tf.matmul(a,w2)sess = tf.Session()init = tf.global_variables_initializer()sess.run(init)print(sess.run(y))sess.close()

维度变量是一个重要的属性,和类型不大一样,维度在运行中是可能改变的,但是需要设定参数validate_shape =False

w11 = tf.Variable(tf.random_normal([2,3],stddev=1,seed =1))w22 = tf.Variable(tf.random_normal([3,1],stddev=1,seed =1))#tf.assign(w11,w22)会报错,shape不匹配tf.assign(w11,w22,validate_shape =False)#可以调整
原创粉丝点击