前向传播 从输入层到输出层 用于求得初始状态下 实际输出和期望输出之间的总误差Δ
import torch
import numpy as np
from matplotlib import pyplot as plt
#sigmoid函数实现
def sigmoid(x):
return 1 / (1 np.exp(-x))
#恒等函数
def identity_function(x):
return x
#进行权重和偏置的初始化
def init_network():
#使用字典存储网络初始化数据
network {}
#第一层
network[ W1 ] np.array([0.1, 0.3, 0.5], [0.2, 0.4, 0.6])
network[ b1 ] np.array([0.1, 0.2, 0.3])
#第二层
network[ W2 ] np.array([0.1, 0.4], [0.2, 0.5], [0.3, 0.6])
network[ b2 ] np.array([0.1, 0.2])
#第三层
network[ W3 ] np.array([0.1, 0.3], [0.2, 0.4])
network[ b3 ] np.array([0.1, 0.2])
return network
#前向传播
#将输入信号转换为输出信号的处理过程进行封装
def forward(network, x):
W1, W2, W3 network[ W1 ], network[ W2 ], network[ W3 ]
b1, b2, b3 network[ b1 ], network[ b2 ], network[ b3 ]
#网络计算
a1 np.dot(x, W1) b1
z1 sigmoid(a1)
a2 np.dot(z1, W2) b2
z2 sigmoid(a2)
a3 np.dot(z2, W3) b3
y identity_function(a3)
return y
def net_compute():
network init_network()
x np.array([1.0, 0.5])
y forward(network, x)
print(y)

![[Deep Learning]——3层神经网络实现、输出层设计 [Deep Learning]——3层神经网络实现、输出层设计](http://www.mshxw.com/aiimages/31/267398.png)
