第1章 神经网络的复习
1.1 数学和Python的复习
- 多维数组(矩阵)的形状和维数:
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6]])
print(x.shape) # (2, 3)——shape表示多维数组的形状
print(x.ndim) # 2——ndim表示维数
- 多维数组(矩阵)的对应元素运算:
W = np.array([[1, 2, 3], [4, 5, 6]])
X = np.array([[0, 1, 2], [3, 4, 5]])
print(W + X) # array([[1, 3, 5], [7, 9, 11]])
print(W * X) # array([[0, 2, 6], [12, 20, 30]])
- 矩阵乘法:
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(np.dot(A,B)) # array([[19, 22], [43, 50]])
1.2 神经网络的推理
- 输人二维数据、输出三维数据的函数:为了使用神经网络进行实现,需要在输入层准备2个神经元,在输出层准备3个神经元。然后,在隐藏层(中间层)放置若干神经元。
- 所有相邻的神经元之间都存在连接的神经网络称为全连接网络。
import numpy as np
def sigmoid (x):
raturn 1 / (1 + np.exp(-x))
x = np.random.randn(10, 2) # 神经网络的输入
W1 = np.random.randn(2, 4) # 第1个全连接层的权重
b1 = np.random.randn(4) # 第1个全连接层的偏置
W2 = np.random.randn(4, 3) # 第2个全连接层的权重
b2 = np.random.randn(3) # 第2个全连接层的偏置
h = np.dot(x, W1) + b1 # 第1个全连接层的计算
a = sigmoid(h) # 第1个全连接层的计算结果传入激活函数计算,得到隐层输入
s = np.dot(a, W2) + b2 # 隐层经过第1个全连接层的计算得到神经网络的输出
x 的形状是(10, 2),表示10笔二维数据组织为了1个mini-batch。最终输出的 s 的形状是(10, 3)。这意味着10笔数据一起被处理了,每笔数据都被变换为了三维数据。
- 层的类化及正向传播的实现:
import numpy as np
class Sigmoid:
"""激活函数"""
def __init__(self):
self.params = []
def forward(self, x):
return 1 / (1 + np.exp(-x))
class Affine:
"""全连接层"""
def __init__(self, W, b):
self.params = [W, b]
def forward(self, x):
W, b = self.params
out = np.dot(x, W) + b
return out
class TwoLayerNet:
"""神经网络:输入神经元数,隐层神经元数,输出神经元数"""
def __init__(self, input_size, hidden_size, output_size):
I, H, O = input_size, hidden_size, output_size
# 初始化权重和编置
W1 = np.random.randn(I, H)
b1 = np.random.randn( H)
W2 = np.random.randn(H, O)
b2 = np.random.randn(O)
# 生成层
self.layers = [
Affine(W1, b1),
Sigmoid(),
Affine(W2, b2)
]
# 将所有的权重整理到列表中
self.params = []
for layer in self.layers:
self.params += layer.params
def predict(self, x):
for layer in self.layers:
x = layer.forward (x)
return x
x = np.random.randn(10, 2)
model = TwoLayerNet(2, 4, 3)
s = model.predict(x)
Python 中可以使用+运算符进行列表之间的拼接。
继续阅读:
《深度学习进阶:自然语言处理(第1章)》-读书笔记
《深度学习进阶:自然语言处理(第2章)》-读书笔记
《深度学习进阶:自然语言处理(第3章)》-读书笔记
《深度学习进阶:自然语言处理(第4章)》-读书笔记
《深度学习进阶:自然语言处理(第5章)》-读书笔记
《深度学习进阶:自然语言处理(第6章)》-读书笔记
《深度学习进阶:自然语言处理(第7章)》-读书笔记
《深度学习进阶:自然语言处理(第8章)》-读书笔记