跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Python AI 入门:从 Hello World 到图像分类

介绍 Python AI 开发入门,涵盖环境搭建、线性回归、神经网络基础及 MNIST 图像分类实战。通过 PyTorch 框架演示模型构建与训练流程,对比 Rust 语言特点,帮助开发者快速掌握 AI 核心概念与代码实现。

安卓系统发布于 2026/4/6更新于 2026/5/2328 浏览

Python AI 入门:从 Hello World 到图像分类

一、Python AI 的 Hello World

1.1 环境搭建

首先,我们需要搭建 Python AI 的开发环境:

# 安装 PyTorch
pip install torch torchvision
# 安装其他依赖
pip install numpy matplotlib
1.2 第一个 AI 程序

让我们来编写一个最简单的 AI 程序 - 线性回归:

import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt

# 生成训练数据
x = torch.linspace(0, 10, 100).unsqueeze(1)
y = 2 * x + 1 + torch.randn(100, 1) * 0.5

# 定义模型
class LinearModel(nn.Module):
    def __init__(self):
        super(LinearModel, self).__init__()
        self.linear = nn.Linear(1, 1)

    def forward(self, x):
        return self.linear(x)

# 创建模型实例
model = LinearModel()

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 训练模型
epochs = 100
for epoch in range(epochs):
    outputs = model(x)
    loss = criterion(outputs, y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    if (epoch + 1) % 10 == 0:
        print(f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.4f}')

# 测试模型
with torch.no_grad():
    predicted = model(x)

# 可视化结果
plt.scatter(x.numpy(), y.numpy(), label='Original data')
plt.plot(x.numpy(), predicted.numpy(), 'r-', label='Fitted line')
plt.legend()
plt.show()
print("Hello World! AI 模型训练完成")

二、从线性回归到神经网络

2.1 神经网络基础

线性回归是最简单的 AI 模型,而神经网络则是更复杂的模型。让我们来构建一个简单的神经网络:

import torch
import torch.nn as nn
import torch.optim as optim

# 生成非线性数据
x = torch.linspace(-1, 1, 100).unsqueeze(1)
y = x.pow(2) + 0.2 * torch.randn(100, 1)

# 定义神经网络模型
class NeuralNet(nn.Module):
    def __init__(self):
        super(NeuralNet, self).__init__()
        self.hidden = nn.Linear(1, 10)
        self.output = nn.Linear(10, 1)

    def forward(self, x):
        x = torch.relu(self.hidden(x))
        x = self.output(x)
        return x

# 创建模型实例
model = NeuralNet()

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 训练模型
epochs = 1000
for epoch in range(epochs):
    outputs = model(x)
    loss = criterion(outputs, y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    if (epoch + 1) % 100 == 0:
        print(f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.4f}')

# 测试模型
with torch.no_grad():
    predicted = model(x)

# 可视化结果
import matplotlib.pyplot as plt
plt.scatter(x.numpy(), y.numpy(), label='Original data')
plt.plot(x.numpy(), predicted.numpy(), 'r-', label='Neural network prediction')
plt.legend()
plt.show()
2.2 理解神经网络的工作原理

神经网络的基本原理是通过多层神经元的组合,学习数据中的复杂模式:

  1. 输入层:接收原始数据
  2. 隐藏层:提取数据特征
  3. 输出层:产生预测结果
  4. 激活函数:引入非线性,使网络能够学习复杂模式

三、图像分类入门

3.1 数据准备

我们将使用 MNIST 数据集进行图像分类:

import torch
import torchvision
import torchvision.transforms as transforms

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

# 加载 MNIST 数据集
trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
testset = torchvision.datasets.MNIST(root='./data', train=False, download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=64, shuffle=False)

# 查看数据
import matplotlib.pyplot as plt
import numpy as np

# 函数:显示图像
def imshow(img):
    img = img / 2 + 0.5  # 反归一化
    npimg = img.numpy()
    plt.imshow(np.transpose(npimg, (1, 2, 0)))
    plt.show()

# 获取一批训练数据
dataiter = iter(trainloader)
images, labels = next(dataiter)

# 显示图像
imshow(torchvision.utils.make_grid(images))
print('标签:', ' '.join(f'{labels[j]}' for j in range(4)))
3.2 构建图像分类模型

现在我们来构建一个用于图像分类的卷积神经网络:

import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        # 卷积层
        self.conv1 = nn.Conv2d(1, 32, 3, 1)
        self.conv2 = nn.Conv2d(32, 64, 3, 1)
        # 池化层
        self.pool = nn.MaxPool2d(2, 2)
        # 全连接层
        self.fc1 = nn.Linear(64 * 12 * 12, 128)
        self.fc2 = nn.Linear(128, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(-1, 64 * 12 * 12)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# 创建模型实例
net = Net()
print(net)
3.3 训练图像分类模型
import torch.optim as optim

# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

# 训练模型
epochs = 5
for epoch in range(epochs):
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        # 获取输入
        inputs, labels = data
        # 清零梯度
        optimizer.zero_grad()
        # 前向传播
        outputs = net(inputs)
        # 计算损失
        loss = criterion(outputs, labels)
        # 反向传播
        loss.backward()
        # 更新参数
        optimizer.step()
        # 统计损失
        running_loss += loss.item()
        if i % 100 == 99:
            print(f'[{epoch + 1}, {i + 1}] loss: {running_loss / 100:.3f}')
    running_loss = 0.0
print('训练完成')
3.4 测试模型
# 测试模型
correct = 0
total = 0
with torch.no_grad():
    for data in testloader:
        images, labels = data
        outputs = net(images)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()
print(f'测试准确率:{100 * correct / total:.2f}%')

# 查看预测结果
dataiter = iter(testloader)
images, labels = next(dataiter)

# 显示图像
imshow(torchvision.utils.make_grid(images))
print('真实标签:', ' '.join(f'{labels[j]}' for j in range(4)))

# 预测
outputs = net(images)
_, predicted = torch.max(outputs, 1)
print('预测标签:', ' '.join(f'{predicted[j]}' for j in range(4)))

四、从 Rust 开发者角度的思考

4.1 与 Rust 的对比

作为一个 Rust 开发者,学习 Python AI 有以下感受:

  • 开发效率:Python 的开发效率比 Rust 高,尤其是在 AI 开发中
  • 生态系统:Python 的 AI 生态系统非常丰富,有大量成熟的库
  • 性能:Python 的性能虽然不如 Rust,但在 AI 开发中,PyTorch 等库已经做了很多优化
  • 类型系统:Python 的动态类型与 Rust 的静态类型有很大不同,需要适应
4.2 学习建议

对于 Rust 开发者学习 Python AI,我有以下建议:

  • 利用系统思维:Rust 的系统级编程经验有助于理解 AI 模型的底层实现
  • 注重代码质量:保持 Rust 的代码风格,写出清晰、可维护的 Python 代码
  • 实践项目:通过实际项目巩固学习成果
  • 跨语言学习:将 Rust 和 Python 结合起来,发挥各自的优势

五、总结

通过从 Hello World 到图像分类的学习,我已经初步掌握了 Python AI 的基本概念和使用方法。作为一个 Rust 开发者,我发现 Python AI 的学习过程既有挑战也有机遇。

挑战在于 Python 的动态类型和内存管理与 Rust 有很大不同,需要适应新的思维方式。机遇在于 Python 的 AI 生态系统非常丰富,开发效率高,能够快速实现 AI 模型。

目录

  1. Python AI 入门:从 Hello World 到图像分类
  2. 一、Python AI 的 Hello World
  3. 1.1 环境搭建
  4. 安装 PyTorch
  5. 安装其他依赖
  6. 1.2 第一个 AI 程序
  7. 生成训练数据
  8. 定义模型
  9. 创建模型实例
  10. 定义损失函数和优化器
  11. 训练模型
  12. 测试模型
  13. 可视化结果
  14. 二、从线性回归到神经网络
  15. 2.1 神经网络基础
  16. 生成非线性数据
  17. 定义神经网络模型
  18. 创建模型实例
  19. 定义损失函数和优化器
  20. 训练模型
  21. 测试模型
  22. 可视化结果
  23. 2.2 理解神经网络的工作原理
  24. 三、图像分类入门
  25. 3.1 数据准备
  26. 数据预处理
  27. 加载 MNIST 数据集
  28. 查看数据
  29. 函数:显示图像
  30. 获取一批训练数据
  31. 显示图像
  32. 3.2 构建图像分类模型
  33. 创建模型实例
  34. 3.3 训练图像分类模型
  35. 定义损失函数和优化器
  36. 训练模型
  37. 3.4 测试模型
  38. 测试模型
  39. 查看预测结果
  40. 显示图像
  41. 预测
  42. 四、从 Rust 开发者角度的思考
  43. 4.1 与 Rust 的对比
  44. 4.2 学习建议
  45. 五、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 马斯克论中美 AI 竞争:电力基础设施成决胜关键
  • 前端CI/CD流程:自动化部署的正确打开方式
  • 麒麟 V10 ARM64 环境部署 WebLogic 12c 实战
  • 国产机器人开发平台 RDK-S100 硬件与 AI 功能评测
  • ruoyi-vue-pro 数据大屏纯前端单点登录实现
  • 昇腾 910B NPU 平台 ops-transformer 算子全场景性能测试与 PyTorch 注意力对比
  • FPGA 开发入门:基于 Quartus 实现 LED 控制
  • ionet 分布式事件总线实战:无需中间件的通信方案
  • Isaac Lab 机器人强化学习实战:配置架构、机器人添加流程与调参技巧
  • 自然语言处理在金融领域的应用与实战
  • 宇树 G1 机器人导航仿真:地图构建与配置指南
  • 数据团队建设:角色与技能要求完整指南
  • Stable Diffusion WebUI 模型推荐与文件夹详解
  • Java HashMap 从链表到红黑树的进化之路
  • AI 辅助开发:从需求描述到 SpringBoot 项目生成
  • 论文笔记:π₀ 视觉 - 语言 - 动作流模型通用机器人控制
  • C++11 左值与右值引用区别及移动语义解决传值返回销毁问题
  • YOLOv8 C++部署:OpenCV DNN 实现 V5/V7/V8
  • 数据结构基础:树的概念与二叉树详解
  • OpenClaw Gateway 服务运维指南:启动、停止与监控

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online