手把手教你用Python创建简单的神经网络(附代码)("Python入门教程:手把手带你构建简易神经网络(附完整代码)")

原创
ithorizon 4周前 (10-19) 阅读数 16 #后端开发

Python入门教程:手把手带你构建简易神经网络(附完整代码)

一、引言

神经网络是一种模拟人脑神经元结构的计算模型,广泛应用于机器学习和人工智能领域。Python作为一种易于学习且功能强劲的编程语言,为构建神经网络提供了充裕的库和工具。本文将手把手教你使用Python创建一个单纯的神经网络,并附上完整的代码。

二、准备工作

在起始构建神经网络之前,我们需要安装以下Python库:

  • numpy:用于数值计算
  • matplotlib:用于绘制图表

可以使用以下命令安装这些库:

pip install numpy matplotlib

三、构建神经网络的基本结构

神经网络由输入层、隐藏层和输出层组成。每个神经元与相邻的神经元通过权重连接。下面我们将构建一个单纯的神经网络,包括一个输入层、一个隐藏层和一个输出层。

四、代码实现

下面是构建简易神经网络的完整代码:

import numpy as np

import matplotlib.pyplot as plt

# 设置随机种子

np.random.seed(0)

# 定义激活函数

def sigmoid(x):

return 1 / (1 + np.exp(-x))

# 定义Sigmoid函数的导数

def sigmoid_derivative(x):

return x * (1 - x)

# 定义神经网络类

class NeuralNetwork:

def __init__(self, input_size, hidden_size, output_size):

# 初始化权重

self.weights_input_to_hidden = np.random.rand(input_size, hidden_size)

self.weights_hidden_to_output = np.random.rand(hidden_size, output_size)

def forward(self, inputs):

# 输入层到隐藏层的线性变换

hidden_layer_activation = np.dot(inputs, self.weights_input_to_hidden)

# 应用激活函数

hidden_layer_output = sigmoid(hidden_layer_activation)

# 隐藏层到输出层的线性变换

final_output = np.dot(hidden_layer_output, self.weights_hidden_to_output)

# 应用激活函数

output = sigmoid(final_output)

return output

def backward(self, output, y_true):

# 计算输出误差

output_error = y_true - output

# 计算输出误差的梯度

output_delta = output_error * sigmoid_derivative(output)

# 计算隐藏层误差

hidden_error = output_delta.dot(self.weights_hidden_to_output.T)

# 计算隐藏层误差的梯度

hidden_delta = hidden_error * sigmoid_derivative(hidden_layer_output)

# 更新权重

self.weights_hidden_to_output += hidden_layer_output.T.dot(output_delta)

self.weights_input_to_hidden += inputs.T.dot(hidden_delta)

def train(self, training_inputs, training_outputs, epochs):

for epoch in range(epochs):

for inputs, output in zip(training_inputs, training_outputs):

self.forward(inputs)

self.backward(self.forward(inputs), output)

# 创建神经网络实例

nn = NeuralNetwork(2, 3, 1)

# 训练数据

training_inputs = np.array([[0, 0],

[0, 1],

[1, 0],

[1, 1]])

training_outputs = np.array([[0],

[1],

[1],

[0]])

# 训练神经网络

nn.train(training_inputs, training_outputs, 10000)

# 测试神经网络

print("预测因此:")

print(nn.forward(training_inputs))

五、代码解析

1. 首先,我们导入了numpy和matplotlib库,并设置了随机种子,以保证每次运行因此一致。

2. 我们定义了Sigmoid激活函数及其导数,Sigmoid函数用于将神经元的输出压缩到0和1之间。

3. 接下来,我们定义了一个名为NeuralNetwork的类,它包含神经网络的权重和前向传播、反向传播方法。

4. 在NeuralNetwork类的构造函数中,我们初始化了输入层到隐藏层和隐藏层到输出层的权重。

5. forward方法实现了输入层到隐藏层和隐藏层到输出层的前向传播。

6. backward方法实现了反向传播,通过输出误差更新权重。

7. train方法用于训练神经网络,它接收训练数据、训练输出和迭代次数作为参数。

8. 最后,我们创建了一个NeuralNetwork实例,使用AND门函数作为训练数据,训练了10000次。

六、总结

本文详细介绍了怎样使用Python创建一个单纯的神经网络。通过明白神经网络的原理和代码实现,我们可以更好地明白神经网络的工作机制。当然,这只是一个非常基础的神经网络示例,实际应用中的神经网络会更加纷乱和强劲。期待本文能帮助您入门神经网络编程。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门