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

相关推荐
AI第一基地5 分钟前
推荐系统-电商直播 多目标排序算法探秘
人工智能·深度学习·排序算法·transformer·知识图谱·word2vec
叫我:松哥5 分钟前
基于机器学习的癌症数据分析与预测系统实现,有三种算法,bootstrap前端+flask
前端·python·随机森林·机器学习·数据分析·flask·bootstrap
我是瓦力7 分钟前
球形包围框-Bounding Sphere-原理-代码实现
人工智能·python·深度学习·计算机视觉·3d
开MINI的工科男7 分钟前
【笔记】自动驾驶预测与决策规划_Part1_自动驾驶决策规划简介
人工智能·笔记·自动驾驶
让开,我要吃人了8 分钟前
HarmonyOS鸿蒙开发实战(5.0)网格元素拖动交换案例实践
前端·华为·程序员·移动开发·harmonyos·鸿蒙·鸿蒙开发
网络研究院12 分钟前
企业急于采用人工智能,忽视了安全强化
网络·人工智能·安全·工具·风险·企业
jndingxin13 分钟前
OpenCV特征检测(3)计算图像中每个像素处的特征值和特征向量函数cornerEigenValsAndVecs()的使用
人工智能·opencv·计算机视觉
谢尔登16 分钟前
Webpack 和 Vite 的区别
前端·webpack·node.js
谢尔登17 分钟前
【Webpack】Tree Shaking
前端·webpack·node.js
byxdaz20 分钟前
基于OpenCV的YOLOv5图片检测
人工智能·opencv·yolo