搭建神经网络2

亡梦爱人 提交于 2020-03-08 09:37:32

两层简单神经网络-----前向传播

1、前向传播就是搭建模型的计算过程,让模型具有推理能力,可以针对一组输入给出相应的输出。

2、推导

神经网络共有几层(或当前是第几层网络)都是指的计算层,输入不是计算层,所以a为第一层网络,a是一个一行三列矩阵。

我们把每层输入乘以线上的权重w,这样用矩阵可以计算出y了。

a=tf.matmul(X,W1)
y=tf.matmul(a,W2)

3、实现

由于需要计算结果,就要用with结构实现,所有变量初始化过程、计算过程都要放到sess.run函数中。对于变量初始化,我们在sess.run中写入tf.global_variable_initializer实现对所有变量初始化,也就是赋初值。对于计算图中的运算,我们直接把运算节点填入sess.run即可,比如要计算y,直接写sess.run(y)即可。

在实际应用中,我们可以一次喂入一组或多组输入,让神经网络计算输出y,可以先用tf.placeholder给输入占位。如果一次喂一组数据,shape的第一维位置写1,第二维位置要看有几个输入特征;如果一次喂多组数据,shape的第一维位置可以写None表示先空着,第二维位置写有几个输入特征。这样在feed_dict中可以喂入若干组体积重量了。

4、举例

这是一个实现神经网络前向传输过程,网络可以自动推理出输出y的值。

1)用placeholder实现输入定义(sess.run中未入一组数据)的情况,第一组喂体积0.7、重量0.5

import tensorflow as tf#引入模块
#定义输入
x = tf.placeholder(tf.float32,shape=(1,2))#shape=(1,2)表示一组数据,2个特征
#定义随机生成参数(变量)
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=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)#变量初始化,在sess.run函数中汇总所有待优化变量
    print("y:",sess.run(y,feed_dict={x:[[0.7,0.5]]}))#x的值是一个1行2列的二维矩阵

运行结果

2)用placeholder实现输入定义(sess.run中喂入多组数据)的情况

各组体积、重量分别为[0.7,0.5]、[0.2,0.3]、[0.3,0.4]、[0.4,0.5]

import tensorflow as tf#引入模块
#定义输入
x = tf.placeholder(tf.float32,shape=(None,2))#shape=(None,2)表示多少组数据不知道,有2个特征
#定义随机生成参数(变量)
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=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)#变量初始化,在sess.run函数中汇总所有待优化变量
    print("y:",sess.run(y,feed_dict={x:[[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]}))#x的值是一个4行2列的二维矩阵
    print("w1:",sess.run(w1))#查看随机生成的参数
    print("w2",sess.run(w2))

运行结果:

 

续:https://blog.csdn.net/qq_38549584/article/details/104584269

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!