神经网络的基础-前向传播

前向传播就是搭建模型的计算过程,让模型具有推理能力,可以针对一组输入给出相应的输出。
我的理解:相当于自控中的前向通道,就是输入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:\n”,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:\n”,sess.run(y,feed_dict={x:[[0.7,0.5], 
[0.2,0.3],[0.3,0.4],[0.4,0.5]]})
学习内容来自:慕课APP中人工智能实践-Tensorflow笔记;北京大学曹健老师的课程

 

posted @ 2019-05-27 09:25  浮沉沉浮  阅读(890)  评论(0编辑  收藏  举报