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

Python AI 入门指南:从线性回归到图像分类

Python AI 开发环境搭建与基础模型实现。涵盖线性回归、神经网络构建及 MNIST 图像分类实战。对比 Rust 语言特性,分析 Python 在 AI 生态中的优势与学习路径。适合希望快速入门深度学习框架的开发者。

草莓泡芙发布于 2026/4/11更新于 2026/9/463 浏览

Python AI 入门指南:从线性回归到图像分类

一、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
 epoch  (epochs):
    
    outputs = model(x)
    
    loss = criterion(outputs, y)
    
    optimizer.zero_grad()
    loss.backward()
    
    optimizer.step()
     (epoch + ) %  == :
        ()


 torch.no_grad():
    predicted = model(x)


plt.scatter(x.numpy(), y.numpy(), label=)
plt.plot(x.numpy(), predicted.numpy(), , label=)
plt.legend()
plt.show()
()
for
in
range
# 前向传播
# 计算损失
# 反向传播
# 更新参数
if
1
10
0
print
f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.4f}'
# 测试模型
with
# 可视化结果
'Original data'
'r-'
'Fitted line'
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 入门指南:从线性回归到图像分类
  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. 五、总结

更多推荐文章

查看全部
  • 利用检索增强生成(RAG)降低大模型幻觉与虚假信息
  • tkinter-helper:Python Tkinter 可视化拖拽布局工具
  • Java AI 编程实测:从自然语言生成完整工程,初中级开发者效率分析
  • AI Agent 平台横评:ZeroClaw vs OpenClaw vs Nanobot
  • 清华团队 Nature 发表仿生多模态触觉传感器 SuperTac 研究
  • 条件变分自编码器(CVAE):如何精准控制生成结果
  • C++ 算法实战:图书整理 I(反转链表)从 C 到 C++ 的过渡
  • Python 数据分析全流程指南:从基础到建模实战
  • Lychee-Rerank-MM 本地部署教程:无网依赖图文重排序
  • Microi 吾码开源低代码平台部署与实战指南
  • ROS 基于 v4l2loopback 虚拟摄像头的 YOLO 目标检测与机器人控制
  • Java 模拟算法实战:LeetCode 经典题解
  • 数据结构实战:并查集应用与优化
  • 使用 OpenClaw 框架通过 AI Agent 生成测试用例并写入 Excel
  • ComfyUI 基于 CNB 平台的云端搭建与使用指南
  • AI 浪潮下 SaaS 行业前景与 a16z 观点解析
  • ThinkPHP 和 Laravel 框架的基于 Web 的在线考试答题游戏设计与实现
  • 基于 TIA、PLCSIM Advanced 与 Kepware 实现 Fanuc 机器人虚拟仿真调试
  • OpenClaw 机器人抓取仿真平台搭建与配置指南
  • 四大世界大学排名对比:计算机专业究竟哪家强
  • 相关免费在线工具

    • 加密/解密文本

      使用加密算法(如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