技术文摘
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 神经网络代码 简单神经网络
- Web浏览器中鼠标悬停时出现的DOM元素调试方法
- AntV/G6 Dagre布局节点文字过长显示省略号方法
- store方法中data非空但页面获取为null怎么解决
- 怎样防止浏览器记住登录信息
- 怎样防止 Vite 打包产生多余的 vite.svg 图标
- 使用非开源代码有何风险?怎样明智选择?
- Tailwind CSS自定义变体hoverColor不生效的原因
- JavaScript正则表达式提取URL中斜杠间值的方法
- 使用 `as number` 后为何还是 string
- CSS border-image手机端兼容性问题及边框图片显示异常解决方法
- Tree组件频繁请求的优化方法
- 用正则表达式替换HTML字符串中指定片段的方法
- 除伪元素外,实现元素特殊样式还有哪些方法
- Node.js:JavaScript 在服务器端的运行机制
- AntV/G6 Dagre布局中怎样解决文本过长显示问题