前向传播就是搭建模型的计算过程,让模型具有推理能力,可以针对一组输入给出相应的输出。
我的理解:相当于自控中的前向通道,就是输入x和输出y中对应的计算过程;
如上图所示:
输入层:输入X为体积和重量,那么对应的数学可以认为X为1行2列的矩阵;
隐藏层:a;a为一个1行3列的矩阵;故对应的W1可以看出是个2行3列的矩阵;对应前面两个节点(x1,x2)X和后面三个节点(a11,a12,a13)a
输出层y;一个1行1列的数;故对应的w2是一个3行1列的矩阵;对应对应前面三个节点(a11,a12,a13)a和后面1个节点y;
前向传播的tensorflow结构;python代码;
这是一个实现神经网络前向传播过程,网络可以自动推理出输出 y 的值。 ①用 placeholder 实现输入定义(sess.run 中喂入一组数据)的情况 第一组喂体积 0.7、重量 0.5 #coding:utf-8 import tensorflow as tf #定义输入和参数 x=tf.placeholder(tf.float32,shape=(1,2)) #用 tf.placeholder 占位,在 sess.run 函数中用 feed_dict 喂数据 w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1)) #表示生成正态分布随机数,形状两行三列,标准差是 2,均值是 0,随机种子是 1。
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1)) #定义前向传播过程 a=tf.matmul(x,w1) #x*w1 y=tf.matmul(a,w2) #a*w2 #用会话计算结果 with tf.Session() as sess: init_op=tf.global_variables_initializer() #变量初始化 sess.run(init_op) print ”y in tf3_3.py is: ”,sess.run(y,feed_dict={x:[[0.7,0.5]]}) ②用 placeholder 实现输入定义(sess.run 中喂入多组数据)的情况 第一组喂体积 0.7、重量 0.5,第二组喂体积 0.2、重量 0.3,第三组喂体积 0.3 、 重量 0.4,第四组喂体积 0.4、重量 0.5. #coding:utf-8 import tensorflow as tf #定义输入和参数 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 in tf3_4.py is: ”,sess.run(y,feed_dict={x:[[0.7,0.5], [0.2,0.3],[0.3,0.4],[0.4,0.5]]})
学习内容来自:慕课APP中人工智能实践-Tensorflow笔记;北京大学曹健老师的课程