Tensorflow实战-前向传播算法

本文介绍最简单的全连接网络结构的前向传播算法

之所以称之为全连接神经网络,是因为相邻两层之间任意两个节点之间都有连接

以一个简单的判断零件是否合格的三层全连接神经网络作为例子

记x=[x1,x2],w1=\begin{bmatrix} W{11}^{1} &W{12}^{1} &W{13}^{1} \\ W{21}^{1}&W{22}^{1} &{W{23}}^{1} \end{bmatrix}\begin{matrix} \end{matrix},w2=\begin{bmatrix} W{11}^{2}\\ W{21}^{2}\\ W{31}^{2} \end{bmatrix}

通过矩阵乘法表示如下:

a = tf.matmul(x,w1)
y = tf.matmul(a,w2)

详细Python代码如下:

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

#声明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()
#这里不能直接通过sess.run(y)来获取y的取值,
#因为w1和w2都还没有运行初始化过程,以下两行分别初始化了w1和w2两个变量。
sess.run(w1.initializer)
sess.run(w2.initializer)
#输出[[3.95757794]]
print(sess.run(y))
sess.close()

 神经网络整个训练流程图如下:

猜你喜欢

转载自blog.csdn.net/s11092114/article/details/83870303
今日推荐