[吃药深度学习随笔] 前向传播:即如何在图中输入数据向前推进从而得到计算结果...
2020-06-27 04:57
267 查看
w = tf.Variable(tf.random_normal([2,3], stddev=2,mean=0, seed=1))
其中
tf.random_normal是正太分布
除了这个 还有tf.truncated_normal:去掉过大偏离点(大于2个标准差)的正态分布
tf.random_uniform:平均分布
[2,3]是生成2x3的矩阵
stddev是标准差
mean是均值
seed是随机数种子
构造其余量的方法:
#tf.zeros 全0数组 tf.zeros([3,2], int32) #生成 [[0,0], [0,0], [0,0]] #tf.ones 全1数组 tf.ones([3,2],int32) #生成 [[1,1], [1,1], [1,1]] #tf.fill 全定值数组 tf.fill([3,2],8) #生成 [[8,8], [8,8], [8,8]] #tf.constant 直接给值 tf.constant([3,2,1]) #生成[3,2,1]
在数组中[x,y]中 x即为有x个输入特征 y即为有y个输出特征
即如图 输入层有2个输入特征 而在隐藏层中有3个特征
所以数组为2x3
而最后隐藏层中 输出y 只有1个
所以隐藏层到输出层的权w即为3x1的数组
总结 即为
输入层X与2x3的权矩阵W1 相乘得到隐藏层a数据
隐藏层a数据与 3x1的权矩阵W2 相乘得到输出层y数据
代码过程:
import tensorflow as tf #定义输入和参数 x = tf.constant([[0.7, 0.5]]) w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1)) w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1)) #定义前向传播过程 a = tf.matmul(x, w1) y = tf.matmul(a, w2) #用会话计算结果 with tf.Session() as sess: #初始化所有节点变量 init_op = tf.global_variables_initializer() sess.run(init_op) print ("y is: ", sess.run(y))
得到结果:y is: [[3.0904665]]
使用placeholder添加数据:
import tensorflow as tf #定义输入和参数 #定义了一个数据类型为32位浮点,形状为1行2列的数组 x = tf.placeholder(tf.float32, shape=(1, 2)) w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1)) w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1)) #定义前向传播过程 a = tf.matmul(x, w1) y = tf.matmul(a, w2) #用会话计算结果 with tf.Session() as sess: #初始化所有节点变量 init_op = tf.global_variables_initializer() sess.run(init_op) print ("y is: ", sess.run(y, feed_dict={x: [[0.7, 0.5]]}))
添加多组数据:
import tensorflow as tf #定义输入和参数 #定义了一个数据类型为32位浮点,形状为1行2列的数组 x = tf.placeholder(tf.float32, shape=(None, 2)) w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1)) w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1)) #定义前向传播过程 a = tf.matmul(x, w1) y = tf.matmul(a, w2) #用会话计算结果 with tf.Session() as sess: #初始化所有节点变量 init_op = tf.global_variables_initializer() sess.run(init_op) print ("y is: ", sess.run(y, feed_dict={x: [[0.7, 0.5], [0.2,0.3], [0.3,0.4], [0.4,0.5]]})) print ("w1:", sess.run(w1)) print ("w2:", sess.run(w2))
得到结果:
y is: [[3.0904665]
[1.2236414]
[1.7270732]
[2.2305048]]
w1: [[-0.8113182 1.4845988 0.06532937]
[-2.4427042 0.0992484 0.5912243 ]]
w2: [[-0.8113182 ]
[ 1.4845988 ]
[ 0.06532937]]
转载于:https://www.cnblogs.com/EatMedicine/p/9029287.html
相关文章推荐
- 深度学习中如何计算图片数据的均值
- 如何根据宽度来计算字体的大小(就像Iphone拨号时,输入的数据越多,字就会越来越小)
- 【C语言学习】scanf输入a,b计算结果
- 如何在spark中读写cassandra数据 ---- 分布式计算框架spark学习之六
- 深度学习中对输入数据进行归一化操作
- Linux下写一个程序,包含两个进程,在子进程输入参与计算的数据a、b的值,在父进程中计算a+b的值并输出计算结果;要求输出子进程和父进程的进程ID.
- 【神经网络与深度学习】如何将别人训练好的model用到自己的数据上
- 『科学计算』深度学习框架_模拟数据拟合
- 【专访英特尔高级首席工程师戴金权】普通数据工程师,如何玩转深度学习?
- 深度学习,如何用去噪自编码器预测原始数据?
- 深度学习FPGA实现数据计算
- (c++)设圆半径r,圆柱高h 求圆周长C1、圆面积Sa、圆球表面积Sb、圆球体积Va、圆柱体积Vb。 用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 PI=3
- 百度DMLC分布式深度机器学习开源项目(简称“深盟”)上线了如xgboost(速度快效果好的Boosting模型)、CXXNET(极致的C++深度学习库)、Minerva(高效灵活的并行深度学习引擎)以及Parameter Server(一小时训练600T数据)等产品,在语音识别、OCR识别、人脸识别以及计算效率提升上发布了多个成熟产品。
- Git学习-->如何通过Shell脚本实现 监控Gitlab备份整个过程并且通过邮件通知得到备份结果?
- 机器学习如何选择模型 & 机器学习与数据挖掘区别 & 深度学习科普
- C++学习笔记一:cout如何判断输入数据类型
- 云计算需要学什么课程?新手小白如何学习云计算大数据
- 深度学习:如何使用多块 GPU 计算?
- 【第6周学习笔记】如何在各类控件中输入\输出数据
- [吃药深度学习随笔] 练习:训练二次方程的参数