丝滑走进深度学习之 PyTorch

在前不久写过一篇《# 小白白也能看懂的 TensorFlow 及其在 AMI 的部署》,关于深度学习框架 TensorFlow 以及云部署。

本篇带来另一个著名的深度学习框架 ------ PyTorch

冲~

TensorFlow vs PyTorch

从编程风格上来说,TensorFlow 有点像在写计划书:需要首先定义整个计算图(模型的结构和运算过程),然后再填充数据并执行。这样,虽然 TensorFlow 在某些情况下可以进行更多的优化,但也可能使代码看起来有些冗长。

而 PyTorch 更像是在进行对话,可以动态地构建、修改和执行计算图,这使得代码更易读、更接近 Python 编程的方式。

对于初学者来说,PyTorch 更容易上手,因为它的语法和编程风格更直观。TensorFlow 在 2.0 版本以后引入了 Eager Execution 模式,更接近 PyTorch,因此入门难度也相对降低。

社区生态方面,TensorFlow 有一个庞大的用户社区和丰富的生态系统,从部署到生产环境,适用于各种应用。而PyTorch 在科研领域更受欢迎;

对比表格如下:

特点 TensorFlow PyTorch
编程风格 静态计算图,较复杂。 动态计算图,直观易懂。
入门难度 初学者可能较难入门。 初学者友好,易于上手。
生态系统和支持 庞大的生态系统,广泛应用。 在研究中受欢迎,社区在增长。
部署和生产 丰富的部署工具,适用于生产环境。 提供部署选项,但 TensorFlow 更成熟。
计算图 静态计算图,有助于优化。 动态计算图,更灵活。

TensorFlow 有很多著名的应用,比如:Google的 BERT 模型就是使用 TensorFlow 开发的;还包括 ImageNet 图像分类、人脸识别、目标检测、图像分割等视觉类应用,以及语音识别、强化学习 AlphaGo 方面等;PyTorch 以其直观的动态计算图和易用性为标识,在学术界非常受欢迎。

TensorFlow 由 Google 开发,PyTorch 由 Facebook 开发。

上手 PyTorch

首先,安装 PyTorch:可以在 PyTorch 官方网站上找到适用于不同操作系统的安装指南。通常,可以使用 pip 或conda 来安装 PyTorch。

使用pip安装PyTorch

  1. 打开终端(命令提示符)。

  2. 使用以下命令安装PyTorch。根据您的需求和系统选择适当的安装选项:

  • 使用 CPU 版本的 PyTorch(没有 GPU 支持):

    pip install torch
    
  • 使用 GPU 版本的 PyTorch(需要具备支持 CUDA 的 GPU):

    ini 复制代码
    pip install torch==1.0.0 torchvision==0.2.1

    可以根据需求调整版本号;

使用conda安装PyTorch

  1. 如果使用 conda 进行环境管理,首先创建一个新的 conda 环境(可选建议):
ini 复制代码
conda create -n myenv python=3.8
conda activate myenv
  1. 然后使用 conda 安装PyTorch,选择适合系统的命令。例如,安装 CPU 版本的 PyTorch:
r 复制代码
conda install pytorch torchvision cpuonly -c pytorch

安装 GPU 版本,执行以下命令:

ini 复制代码
rCopy code
conda install pytorch torchvision cudatoolkit=11.1 -c pytorch

安装完成后,可以在 Python 环境中导入 PyTorch 并开始使用它。

ini 复制代码
import torch

# 创建一个空的张量
x = torch.Tensor()

# 创建一个包含特定数据的张量
y = torch.tensor([1, 2, 3])

# 张量操作
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])

c = a + b  # 加法操作
d = a * 2  # 乘法操作
e = a[1]   # 索引操作

PyTorch 内置了自动求导功能,允许构建和训练深度学习模型;使用 requires_grad=True 来启用梯度跟踪:

ini 复制代码
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = x**2
z = y.sum()
z.backward()  # 计算梯度
print(x.grad)  # 访问梯度

构建神经网络:

使用 torch.nn 模块构建:定义模型类,定义前向传播方法,并使用层来构建网络。例如,创建一个简单的全连接神经网络:

图片来源

python 复制代码
import torch.nn as nn

class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init()
        self.fc1 = nn.Linear(64, 128)
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(128, 10)

    def forward(self, x):
        x = self.fc1(x)
        x = self.relu(x)
        x = self.fc2(x)
        return x

还可使用 PyTorch 优化器(如torch.optim)和损失函数来训练模型。

定义数据加载器和训练循环,将输入数据传递给模型并计算损失;然后,通过反向传播更新模型的权重;这是深度学习项目的核心部分~

小结

PyTorch 是一个实践驱动的框架,通过亲自编写和运行代码来学习将更加有效;除了框架学习,加强了解深度学习的基本原理、梯度下降、反向传播等知识,也能助于 PyTorch 的操控。后面有机会再展开介绍~Σ(⊙▽⊙"a

相关推荐
池央30 分钟前
AI性能极致体验:通过阿里云平台高效调用满血版DeepSeek-R1模型
人工智能·阿里云·云计算
我们的五年31 分钟前
DeepSeek 和 ChatGPT 在特定任务中的表现:逻辑推理与创意生成
人工智能·chatgpt·ai作画·deepseek
Yan-英杰32 分钟前
百度搜索和文心智能体接入DeepSeek满血版——AI搜索的新纪元
图像处理·人工智能·python·深度学习·deepseek
Fuweizn34 分钟前
富唯智能可重构柔性装配产线:以智能协同赋能制造业升级
人工智能·智能机器人·复合机器人
玩电脑的辣条哥3 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
taoqick3 小时前
对PosWiseFFN的改进: MoE、PKM、UltraMem
人工智能·pytorch·深度学习
ew452183 小时前
ElementUI表格表头自定义添加checkbox,点击选中样式不生效
前端·javascript·elementui
suibian52353 小时前
AI时代:前端开发的职业发展路径拓宽
前端·人工智能
Moon.93 小时前
el-table的hasChildren不生效?子级没数据还显示箭头号?树形数据无法展开和收缩
前端·vue.js·html
垚垚 Securify 前沿站3 小时前
深入了解 AppScan 工具的使用:筑牢 Web 应用安全防线
运维·前端·网络·安全·web安全·系统安全