一、实现推理过程
手写数字分类问题
· x表示有8x8的64像素强度数据,由x作为输入层,分别经过两个隐藏层传递到输出层,并输出该画面上的数字是1或0的概率:
· 具体在代码实现中,先取x作为向量数据,再定义好神经网络层,并设置每个层对应的神经元数量、预测模型所采用的预测函数。
二、搭建神经网络
1. 连接隐藏层
· 不需要手动获取数据和激活值来作为下一个隐藏层的输入;
· 直接借助TensorFlow里已有的函数来将两个层串联再一起;
· Sequential([])函数表示将两个隐藏层串联起来,前一个的输出作为后继一个的输入,以此构建一个神经网络模型,并返回;
· model.compile()表示调用一些带有参数的模型点编译的函数;
· model.dot fit(x,y)表示采用这个通过按顺序将第一层和第二层串在一起创建的神经网络,并在数据x和数据y上(作为第0层的初始数据)进行训练;
2. 单个网络层的前向传播
· 具体的代码实现过程如图:
· 前向传播简单实现:
· 定义dense()函数,这个函数将上一层的激活值和对应模型的参数值作为输入;
· dense()输出当前层的激活值,以供下一层使用或输出;
· 定义units作为该层神经单元数;
· 将a设置为与单元数一样多的0数组;
· 循环遍历每一个神经单元:
每次拿出w的一列,用作w_n;
用通常的公式计算z,等于参数w和激活值的点积,再加上b;
· 最后输出本层激活值a_out
· 将多个层的计算结果连续赋值到a里,最后的输出值a即是前向传播神经网络的输出。