要是书都讲得这么细致,

AI也不会那么难学啦。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

使用Numpy的矩阵来实现神经网络 随笔 第1张

使用Numpy的矩阵来实现神经网络 随笔 第2张

使用Numpy的矩阵来实现神经网络 随笔 第3张

使用Numpy的矩阵来实现神经网络 随笔 第4张

import numpy as np


# sigmoid作为隐藏层的激活函数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))


#  恒等函数作为输出层的激活函数。
def identity_function(x):
    return x


"""从输入层到第1层的第1个神经元的信号传递过程"""
#  W1 是2 × 3的数组, X 是元素个数为2的一维数组。
#  这里, W1 和 X 的对应维度的元素个数也保持了一致。
X = np.array([1.0, 0.5])
W1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
B1 = np.array([0.1, 0.2, 0.3])
A1 = np.dot(X, W1) + B1
# 隐藏层的加权和(加权信号和偏置的总和)用a表示,
# 被激活函数转换后的信号用z表示。此外,
# 图中h()表示激活函数,这里我们使用的是sigmoid函数。
Z1 = sigmoid(A1)
print('A1:', A1)
print('Z1:', Z1)
"""第1层到第2层的信号传递"""
W2 = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]])
B2 = np.array([0.1, 0.2])
A2 = np.dot(Z1, W2) + B2
Z2 = sigmoid(A2)
print('A2:', A2)
print('Z2:', Z2)
"""第2层到输出层的信号传递"""
W3 = np.array([[0.1, 0.3], [0.2, 0.4]])
B3 = np.array([0.1, 0.2])
A3 = np.dot(Z2, W3) + B3
# 输出层的激活函数用σ()表示,
# 不同于隐藏层的激活函数h()(σ读作sigma)。
# 输出层所用的激活函数,要根据求解问题的性质决定。
# 一般地,回归问题可以使用恒等函数,
# 二元分类问题可以使用sigmoid函数,
# 多元分类问题可以使用softmax函数。
Y = identity_function(A3) # 或者Y = A3
print('A3:', A3)
print('Y:', Y)


# 重写上面的代码
# 进行权重和偏置的初始化
def init_network():
    network = dict()
    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


network = init_network()
x = np.array([1.0, 0.5])
y = forward(network, x)
print(y)

  

使用Numpy的矩阵来实现神经网络 随笔 第5张

C:\Python36\python.exe C:/Users/Sahara/PycharmProjects/test1/test.py
A1: [0.3 0.7 1.1]
Z1: [0.57444252 0.66818777 0.75026011]
A2: [0.51615984 1.21402696]
Z2: [0.62624937 0.7710107 ]
A3: [0.31682708 0.69627909]
Y: [0.31682708 0.69627909]
[0.31682708 0.69627909]

Process finished with exit code 0

  

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄