丝滑走进深度学习之 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

相关推荐
亚里随笔2 分钟前
AlphaEvolve:LLM驱动的算法进化革命与科学发现新范式
人工智能·算法·llm·大语言模型
Panesle3 分钟前
基于对抗性后训练的快速文本到音频生成:stable-audio-open-small 模型论文速读
人工智能·机器学习·音视频
Linux猿9 分钟前
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1商用服务体验
人工智能·华为云·华为云征文·modelartsstudio·flexus+deepseek·deepseek-v3/r1
跟我一起学测试呀17 分钟前
软件测试—接口测试面试题及jmeter面试题
软件测试·jmeter·面试
攻城狮7号21 分钟前
一文解析13大神经网络算法模型架构
人工智能·深度学习·神经网络·机器学习
羽凌寒27 分钟前
动态范围调整(SEF算法实现)
人工智能·深度学习·计算机视觉
zyhomepage38 分钟前
科技的成就(六十八)
开发语言·人工智能·科技·算法·内容运营
数据库安全38 分钟前
美创科技针对《银行保险机构数据安全管理办法》解读
大数据·人工智能·产品运营
zandy101138 分钟前
如何快速入门-衡石科技分析平台
服务器·前端·科技·数据库管理员
{⌐■_■}39 分钟前
【计算机网络】HTTP/1.0,HTTP/1.1,HTTP/2,HTTP/3汇总讲解,清晰表格整理面试重点对比
计算机网络·http·面试