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 神经网络代码 简单神经网络

欢迎使用万千站长工具!

Welcome to www.zzTool.com