当前位置: 首页 > news >正文

python 神经网络教程,神经网络模型代码python,小白入门基础教程

文章目录

  • 前言
  • 1. 神经网络基础概念
    • 1.1 神经元
    • 1.2 激活函数
    • 1.3 神经网络结构
    • 1.4 安装 Python
    • 1.5 选择开发环境
    • 2. 使用numpy构建简单神经网络
  • 3. 使用PyTorch构建复杂神经网络


前言

本教程旨在为广大初学者和有一定基础的开发者提供一个系统、全面且深入的 Python 神经网络学习指南。无论你是对人工智能充满好奇的新手,还是希望在神经网络领域进一步提升技能的从业者,都能从本教程中找到适合自己的内容。
Python 作为一种功能强大、易于学习且应用广泛的编程语言,在神经网络领域中扮演着举足轻重的角色。它拥有丰富的科学计算和深度学习库,如 NumPy、PyTorch、TensorFlow 等,为开发者提供了便捷的工具和高效的开发环境。借助 Python,我们可以轻松地构建、训练和部署各种复杂的神经网络模型。


1. 神经网络基础概念

1.1 神经元

神经元是神经网络的基本单元,它接收多个输入,对输入进行加权求和,再通过一个激活函数处理后输出。

1.2 激活函数

激活函数为神经网络引入非线性因素,使网络能够学习复杂的模式。常见的激活函数有 Sigmoid、ReLU、Tanh 等。

1.3 神经网络结构

神经网络通常由输入层、隐藏层和输出层组成。隐藏层可以有多个,层数越多,网络越复杂,能学习的模式也越复杂。

1.4 安装 Python

访问 Python 官方网站,根据你的操作系统(Windows、Mac 或 Linux)下载并安装 Python 3.x 版本。安装时勾选 “Add Python to PATH”,方便在命令行中使用 Python。

Python 3.7安装教程:https://blog.csdn.net/u014164303/article/details/145620847
Python 3.9安装教程:https://blog.csdn.net/u014164303/article/details/145570561
Python 3.11安装教程:https://blog.csdn.net/u014164303/article/details/145549489

1.5 选择开发环境

下载 PyCharm 社区版(免费)或专业版(需付费或申请教育版)。安装完成后,打开 PyCharm,创建一个新的项目,在项目设置中选择之前创建的虚拟环境作为项目的 Python 解释器。PyCharm 功能强大,提供代码自动补全、调试等功能,适合开发大型项目。

Pycharm安装教程:https://blog.csdn.net/u014164303/article/details/145674773
PyCharm下载地址:https://pan.quark.cn/s/5756c8cf8b2a

2. 使用numpy构建简单神经网络

以下是一个使用numpy构建的简单两层神经网络示例,用于解决二分类问题。

import numpy as np

# 定义激活函数及其导数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
    return x * (1 - x)

# 输入数据集
X = np.array([[0, 0, 1],
              [0, 1, 1],
              [1, 0, 1],
              [1, 1, 1]])

# 输出数据集
y = np.array([[0], [1], [1], [0]])

# 设置随机数种子以保证结果可复现
np.random.seed(1)

# 初始化权重
syn0 = 2 * np.random.random((3, 4)) - 1
syn1 = 2 * np.random.random((4, 1)) - 1

# 训练次数
for iter in range(60000):
    # 前向传播
    l0 = X
    l1 = sigmoid(np.dot(l0, syn0))
    l2 = sigmoid(np.dot(l1, syn1))

    # 计算误差
    l2_error = y - l2

    # 根据误差调整权重
    l2_delta = l2_error * sigmoid_derivative(l2)
    l1_error = l2_delta.dot(syn1.T)
    l1_delta = l1_error * sigmoid_derivative(l1)

    syn1 += l1.T.dot(l2_delta)
    syn0 += l0.T.dot(l1_delta)

print("Output After Training:")
print(l2)

3. 使用PyTorch构建复杂神经网络

PyTorch是一个广泛使用的深度学习框架,下面是一个使用PyTorch构建简单全连接神经网络进行手写数字识别的示例。
3.1 安装PyTorch
根据自己的系统和 CUDA 版本,从PyTorch 官方网站选择合适的安装命令进行安装。
3.2 代码示例

import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader

# 数据预处理
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.1307,), (0.3081,))
])

# 加载训练集和测试集
train_dataset = datasets.MNIST(root='./data', train=True,
                               download=True, transform=transform)
test_dataset = datasets.MNIST(root='./data', train=False,
                              download=True, transform=transform)

# 创建数据加载器
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)

# 定义神经网络模型
class SimpleNet(nn.Module):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc1 = nn.Linear(28 * 28, 128)
        self.fc2 = nn.Linear(128, 64)
        self.fc3 = nn.Linear(64, 10)
        self.relu = nn.ReLU()

    def forward(self, x):
        x = x.view(-1, 28 * 28)
        x = self.relu(self.fc1(x))
        x = self.relu(self.fc2(x))
        x = self.fc3(x)
        return x

# 初始化模型、损失函数和优化器
model = SimpleNet()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)

# 训练模型
def train(model, train_loader, criterion, optimizer, epoch):
    model.train()
    for batch_idx, (data, target) in enumerate(train_loader):
        optimizer.zero_grad()
        output = model(data)
        loss = criterion(output, target)
        loss.backward()
        optimizer.step()
        if batch_idx % 100 == 0:
            print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
                epoch, batch_idx * len(data), len(train_loader.dataset),
                100. * batch_idx / len(train_loader), loss.item()))

# 测试模型
def test(model, test_loader):
    model.eval()
    test_loss = 0
    correct = 0
    with torch.no_grad():
        for data, target in test_loader:
            output = model(data)
            test_loss += criterion(output, target).item()
            pred = output.argmax(dim=1, keepdim=True)
            correct += pred.eq(target.view_as(pred)).sum().item()

    test_loss /= len(test_loader.dataset)
    print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(
        test_loss, correct, len(test_loader.dataset),
        100. * correct / len(test_loader.dataset)))

# 训练和测试模型
for epoch in range(1, 5):
    train(model, train_loader, criterion, optimizer, epoch)
    test(model, test_loader)
```c

相关文章:

  • 云端SaaS系统架构设计
  • Web入侵实战分析-常见web攻击类应急处置实验2
  • 【随手笔记】NB和4G信号杂记
  • golang--字符串处理(rune类型)
  • Qt开源项目获取
  • 【GORM学习笔记】GORM介绍以及增删改查相关操作
  • 算法的解题模式Ⅳ
  • Jenkins 配置 Credentials 凭证
  • vue自定义指令clickOutside篇、元素外部点击事件
  • 拼多多面试题记录
  • JavaScript 中 多个 Promise 嵌套中,如何保证正确的执行顺序?
  • Python学习心得面向对象的三大特征
  • Linux应急响应-系统排查
  • 【清华大学】DeepSeek从入门到精通完整版pdf下载
  • web网络安全:SQL 注入攻击
  • AI助力下的PPT革命:DeepSeek 与Kimi的高效创作实践
  • 测试面试及实用功能解读
  • Jenkins 创建 Node 到 Windows
  • 【Java八股文】08-计算机网络面试篇
  • 【C++】面向对象的三大特性
  • 网站架构设计师简历/知识营销
  • 尊园地产做的网站/外贸订单一般在哪个平台接?
  • wordpress自带图片大小/张家界百度seo
  • 建设银行 英文版网站/在线seo工具
  • 邢台业之峰装饰公司怎么样/东莞网站制作十年乐云seo
  • 廊坊推广seo霸屏/性价比高seo排名