【TensorFlow】神经网络参数与变量(四)
2017-12-12 00:20
393 查看
在TensorFlow中,变量(tf.Variable)的作用就是保存和更新神经网络的参数。在神经网络中,给变量赋予随机数最为常见,所以一般使用随机数给TensorFlow的变量初始化。
1、tf.random_normal 正态分布随机数
2、tf.truncated_normal 正态分布,但如果随机出来的值偏离值超过2个标准差,那么这个数将会被重新随机
3、tf.random_uniform 均匀分布
4、tf.random_gamma Gamma 分布
TensorFlow也支持常数来初始化一个变量。
1、tf.constant 产生一个给定值的常量
2、tf.zeros(shape,dtype) 产生全为0的数组
3、tf.ones 产生全为1的数组
4、tf.fill 产生一个全部为给定数值的数组
在神经网路中,偏执项(bias)通常会使用常数来设置初始值。
前向传播过程
维度变量是一个重要的属性,和类型不大一样,维度在运行中是可能改变的,但是需要设定参数validate_shape =False
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)#可以调整
相关文章推荐
- 神经网络参数和tensorflow变量
- Tensorflow变量表示神经网络参数
- 通过变量实现神经网络的参数并实现前向传播的过程
- tensorflow的基本用法(十)——保存神经网络参数和加载神经网络参数
- TensorFlow中对训练后的神经网络参数(权重、偏置)提取
- TensorFlow的 数据和参数的输入 及变量存储
- tensorflow1.1/构建神经网络分类
- TensorFlow利用普通神经网络识别MNIST以及tensorboard可视化
- 使用tensorflow:LSTM神经网络预测股票(一)
- Tensorflow入门-实现神经网络
- 79、tensorflow计算一个五层神经网络的正则化损失系数、防止网络过拟合、正则化的思想就是在损失函数中加入刻画模型复杂程度的指标
- Tensorflow实现神经网络
- Tensorflow实战学习(十一)【多层神经网络】
- tensorflow1.1/循环神经网络手写数字啊识别
- 深度学习-传统神经网络使用TensorFlow框架实现MNIST手写数字识别
- tensorflow入门之训练简单的神经网络
- 小白学Tensorflow之多层神经网络
- TensorFlow:实战Google深度学习框架(二)实现简单神经网络
- [Deep Learning] ResNets、HighwayNets、DenseNets:用 TensorFlow 实现超深度神经网络
- 深度学习笔记——深度学习框架TensorFlow之DNN深度神经网络的实现(十四)