TensorFlow笔记三

TensorFlow笔记三

[email protected]:LF
@Date:2017-12-27++

昨天学习了tensorflow的数据结构和计算形式,以及实例了解了张量是什么,并且进一步搭好了ubuntu下Pycharm使用TensorFlow框架。今天则从前向传播算法学起。

一、前向传播算法

之前在参加半天的培训的时候已经初步了解过了神经网络中的正向传播和负向传播。根据记忆,正向传播进行计算得到输出,负向传播可以用以调整参数。这里的参数今天有了进一步的认识,即是图中边的权值。前向传播顾名思义,则是从输入到输出一直往前,一个神经元可以有多个输出和一个输出,一个神经元的输出也可以作为后面神经元的输入。
下面用一个最简单的全连接网络结构的前向传播算法举例:
TensorFlow笔记三
如图所示,这是一个简单的全连接神经网络,即每两层之间的所有节点都两两相连(感觉和有向完全图差不多)。输入层X1、X2,为每个边都配了相应的权值Wij,现定义所有节点的计算方式为输入值的加权和。则可以容易看出【TensorFlow笔记三】与【TensorFlow笔记三】相乘得到【TensorFlow笔记三】,再与【TensorFlow笔记三】相乘得到Y即输出结果。则这个神经网络可以用两个矩阵的乘法进行描述。
那么,TensorFlow中对矩阵的乘法提供了很好的支持。使用matmul(,)即可。那么上图神经网络的前向传播过程用TensorFlow实现的代码则如下:
TensorFlow笔记三
Variable是tensorflow的变量,tensorflow中所有变量的声明函数都是tf.Variable。变量声明后无法使用除非附初始值。即所有计算之前必须将变量初始化。初始化方法是initializer。如图中W1.initializer。当然当变量增多后,在Session.run之前初始化则会是一件非常麻烦的事情,可以使用tf.initialize_all_variables函数实现初始化所有变量的过程。
tf.random_normal([2,3],sddev=2)是会产生一个2*3的随机矩阵,矩阵中元素的均值是0,标准差为2。关于TensorFlow的随机生成函数在此不多提,有很多种随机函数,可以参考官方文档。
变量是一种特殊的张量,变量的声明即是声明一个运算,这个运算的输出结果就是一个张量。