技术文摘
Python 简单神经网络创建教程(含代码)
2024-12-31 12:54:39 小编
Python 简单神经网络创建教程(含代码)
在当今的人工智能和机器学习领域,神经网络扮演着至关重要的角色。Python 作为一种强大而灵活的编程语言,为创建神经网络提供了丰富的库和工具。在本文中,我们将一起探索如何使用 Python 创建一个简单的神经网络。
我们需要导入所需的库。numpy 库用于数值计算,matplotlib 库用于数据可视化。
import numpy as np
import matplotlib.pyplot as plt
接下来,定义神经网络的类。这个类包含了初始化函数、前向传播函数和反向传播函数。
class NeuralNetwork:
def __init__(self, input_size, hidden_size, output_size):
self.input_size = input_size
self.hidden_size = hidden_size
self.output_size = output_size
# 随机初始化权重
self.W1 = np.random.randn(self.input_size, self.hidden_size)
self.b1 = np.zeros((1, self.hidden_size))
self.W2 = np.random.randn(self.hidden_size, self.output_size)
self.b2 = np.zeros((1, self.output_size))
def forward(self, X):
self.z1 = np.dot(X, self.W1) + self.b1
self.a1 = np.tanh(self.z1)
self.z2 = np.dot(self.a1, self.W2) + self.b2
self.a2 = np.exp(self.z2) / np.sum(np.exp(self.z2), axis=1, keepdims=True)
return self.a2
def backward(self, X, y, learning_rate):
# 反向传播的计算
m = X.shape[0]
dZ2 = self.a2 - y
dW2 = np.dot(self.a1.T, dZ2) / m
db2 = np.sum(dZ2, axis=0, keepdims=True) / m
dZ1 = np.dot(dZ2, self.W2.T) * (1 - np.power(self.a1, 2))
dW1 = np.dot(X.T, dZ1) / m
db1 = np.sum(dZ1, axis=0, keepdims=True) / m
# 更新权重
self.W1 -= learning_rate * dW1
self.b1 -= learning_rate * db1
self.W2 -= learning_rate * dW2
self.b2 -= learning_rate * db2
然后,准备数据并进行训练。
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0, 1], [1, 0], [1, 0], [0, 1]])
nn = NeuralNetwork(2, 4, 2)
epochs = 1000
learning_rate = 0.1
for epoch in range(epochs):
nn.forward(X)
nn.backward(X, y, learning_rate)
最后,我们可以对新的数据进行预测。
通过以上步骤,我们成功创建了一个简单的神经网络,并能够对数据进行训练和预测。希望这个教程能帮助您初步理解和掌握 Python 中神经网络的创建过程。随着深入学习,您可以进一步优化网络结构、调整超参数以获得更好的性能。
TAGS: Python 神经网络代码 简单神经网络
- 滚动元素如何添加平滑过渡让滚动条滑动更自然流畅
- 网页集成腾讯会议功能之 Scheme 协议使用方法
- 多个输入框必填且按顺序填充的确保方法
- unpkg 引入 three.js 后,main.js 中为何无法识别 THREE 对象
- 获取隐藏DIV内容并传递给PHP变量的方法
- Vue2具名插槽无法显示的原因
- 函数b的eat方法调用后无输出原因
- Ajax读取XML并显示子节点数据的方法
- 编写视频播放地址正则表达式校验的方法
- Vue2 具名插槽使用时报错致页面无法展示插槽内容
- 解决用户代理样式表致页面元素不显示问题的方法
- 使用 CSS3D 变换打造不规则蓝色背景 DIV 的方法
- 用`html()`获取代码出现过多空格的原因及解决办法
- 前端实现不规则进度条的方法
- 动态添加元素后事件失效怎么办?教你解决方法