三层前向传播网络

  要实现三层前向传播网络,那么我们首先就三层网络的结构图进行分析。

图一

  关于图一所示的感知机究竟是2层感知机还是3层感知机,在Freddyfang的帖子中写到:“严格意义上讲,权重的设置只存在于0-1层之间和1-2层之间,应该叫做2层感知机。”因此,我们在这里认为该图所示为2层感知机,即2层网络。
  设定三层网络的结构如图二所示,

图二
  输入层到第一层:

   x 1 , x 2 x_1, x_2 x1,x2 是输入信号, b b b 是偏置, W 1 = [ w 11 ( 1 ) w 21 ( 1 ) w 31 ( 1 ) w 12 ( 1 ) w 22 ( 1 ) w 32 ( 1 ) ] \mathbf{W_1}=\begin{bmatrix}w_{11}^{(1)} & w_{21}^{(1)} & w_{31}^{(1)} \\ w_{12}^{(1)} & w_{22}^{(1)} & w_{32}^{(1)}\end{bmatrix} W1=[w11(1)w12(1)w21(1)w22(1)w31(1)w32(1)] 是权重矩阵。有数学表达式: a = w 1 x 1 + w 2 x 2 + b a=w_1x_1+w_2x_2+b a=w1x1+w2x2+b y = h ( a ) y=h(a) y=h(a),得到 a 1 ( 1 ) = w 11 ( 1 ) x 1 + w 12 ( 1 ) x 2 + b 1 ( 1 ) a_1^{(1)} = w_{11}^{(1)}x_1 + w_{12}^{(1)}x_2 + b_1^{(1)} a1(1)=w11(1)x1+w12(1)x2+b1(1) z 1 ( 1 ) = h ( a 1 ( 1 ) ) z_1^{(1)} = h(a_1^{(1)}) z1(1)=h(a1(1))。以上输入信号通过激活函数 h ( x ) h(x) h(x) 转化为输出信号。

  在三层网络中,以上步骤需经过3次,即输入层到第一层、第一层到第二层、第二层到输出层。由于每层都是一样的转化过程,因此不再赘述。
  在最后一层,我们是预测 y y y 的值,是一个实数值,在此我们使用恒等函数作为激活函数,这与前两层所使用的激活函数是不一样的,在前面两层我们可以使用 sigmoid 函数作为激活函数。代码如下,

import numpy as np
def sigmoid(x):
    return 1/(1+np.exp(-x))
#输入层到第1层
X=np.array([1,2])
W1=np.array([[0.2,0.5,0.4], [0.1,0.5,0.6]])
B1=np.array([0.2,0.4,0.3])
A1=np.matmul(X,W1)+B1
Z1=sigmoid(A1)
#第1层到第2层
W2=np.array([[0.1,0.5], [0.3,0.5], [0.3,0.7]])
B2=np.array([0.3,0.2])
A2=np.matmul(Z1,W2)+B2
Z2=sigmoid(A2)
#第2层到输出层
def identity_function(x):
    return x
W3=np.array([[0.2],[0.2]])
B3=np.array([0.2])
A3=np.matmul(Z2,W3)+B3
Y=identity_function(A3)
print(Y)

  输出结果如下,
在这里插入图片描述


若有错误,欢迎批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值