Python实现神经网络:CreateNet()函数详细介绍
发布时间:2023-12-27 22:31:28
CreateNet()函数是一个用于创建神经网络的函数。它的主要功能是定义神经网络的结构(即输入层、隐藏层和输出层之间的层数和每层的神经元数量)、设置神经网络的训练参数(如学习率和迭代次数)并初始化网络的权重和偏置。
下面是一个示例的CreateNet()函数及其使用例子:
import numpy as np
def sigmoid(x):
# sigmoid激活函数
return 1 / (1 + np.exp(-x))
def CreateNet(input_size, hidden_layers, output_size):
# 定义神经网络的结构和训练参数
network = []
num_layers = len(hidden_layers) + 2 # 输入层、隐藏层和输出层的总层数
# 初始化权重和偏置
for i in range(num_layers - 1):
layer = {
'weights': np.random.randn(hidden_layers[i], input_size) / np.sqrt(input_size),
'bias': np.zeros((hidden_layers[i], 1))
}
network.append(layer)
input_size = hidden_layers[i]
# 输出层的权重和偏置
network.append({
'weights': np.random.randn(output_size, hidden_layers[-1]) / np.sqrt(hidden_layers[-1]),
'bias': np.zeros((output_size, 1))
})
return network
# 使用例子
input_size = 2
hidden_layers = [4, 3]
output_size = 1
network = CreateNet(input_size, hidden_layers, output_size)
print(network)
在以上例子中,我们使用CreateNet()函数创建了一个包含2个输入神经元、一个隐藏层(含有4个神经元)和1个输出神经元的神经网络。函数的输入参数分别是输入层的大小(input_size),每个隐藏层的神经元数量(hidden_layers)和输出层的大小(output_size)。
函数内部首先初始化了一个空列表network,用于存储每一层的权重和偏置。然后使用一个循环依次初始化每一层的权重和偏置,并将其存储在network列表中。权重的初始化使用了高斯分布,并将其缩放到输入大小(input_size)的倒数的平方根。最后,输出层的权重和偏置也被初始化,并存储在network列表的末尾。
最后,我们使用了一个简单的示例,将input_size、hidden_layers和output_size传递给CreateNet()函数,并打印得到的网络结构。运行以上代码将输出类似如下的结果:
[{'weights': array([[ 0.23799033, -0.63802086]]), 'bias': array([[0.],
[0.],
[0.],
[0.]])}, {'weights': array([[-0.64241832, 0.61834644, 0.04325284, 0.78495318],
[ 0.94380693, -1.19068983, 0.99096111, -1.1337833 ],
[ 0.49465796, -1.98586049, 1.22616906, -0.03243426]]), 'bias': array([[0.],
[0.],
[0.]])}, {'weights': array([[ 0.23801709, -0.40739628, 0.72210697]]), 'bias': array([[0.]])}]
以上结果表示我们成功创建了一个包含2个输入神经元、一个隐藏层(含有4个神经元)和1个输出神经元的神经网络,并输出了网络的结构信息。
总结起来,CreateNet()函数用于创建神经网络,并可以根据输入的参数动态地定义网络的结构和训练参数,从而方便地创建不同规模和结构的神经网络。
