Pytorch深度学习教程_3_初识pytorch

欢迎来到《PyTorch深度学习教程》系列的第三篇!在前面的两篇中,我们已经介绍了Python及numpy的基本使用。今天,我们将深入探索PyTorch的核心功能,帮助你更好地理解和使用这个强大的深度学习框架。

欢迎订阅专栏:

深度学习保姆教程_tRNA做科研的博客-CSDN博客


 

目录

1.张量:深度学习的基石

(1)张量的理解

(2)张量的关键属性

(3)创建张量

(4)张量为何重要

2.张量操作与广播

(1)基本张量操作

(2)广播机制

(3)索引和切片

(4)数学运算

(5)常见问题与最佳实践

3.Pytorch使用GPU

(1)GPU 和 CUDA 的基本概念

(2)在 PyTorch 中启用 GPU 加速

GPU 加速的优势

4.PyTorch 的生态系统和工具

(1)TorchVision:你的计算机视觉工具箱

(2)TorchText:轻松处理自然语言处理

(3)TorchAudio:你的音频工具包

其他值得注意的工具

5.结语


1.张量:深度学习的基石

张量是深度学习中的基本数据结构,可以看作是多维数组,能够表示从简单数字到图像、文本等复杂数据。理解张量对于掌握深度学习至关重要。

(1)张量的理解

标量(零维张量)‌:表示单个数值。

import torchscalar_tensor = torch.tensor(42)

向量(一维张量)‌:表示一列数字。

vector_tensor = torch.tensor([1, 2, 3])

矩阵(二维张量)‌:表示一个表格数字。

matrix_tensor = torch.tensor([[1, 2], [3, 4]])

高维张量:表示图像、视频等复杂数据。

(2)张量的关键属性

  • 形状(Shape)‌:定义张量的维度。

print(matrix_tensor.shape)  # 输出:torch.Size([2, 2])
  • 数据类型(Dtype)‌:指定张量中元素的类型。
print(matrix_tensor.dtype)  # 输出:torch.int64
  • 设备(Device)‌:表示张量存储的位置(CPU或GPU)。
print(matrix_tensor.device)  # 输出:cpu

(3)创建张量

可以从多种方式创建张量:

  • 从Python列表创建

my_list = [1, 2, 3]
tensor = torch.tensor(my_list)
  • 使用内置函数创建
zeros_tensor = torch.zeros(3, 4)   # 创建全零张量
ones_tensor = torch.ones(2, 2)     # 创建全一张量
random_tensor = torch.randn(2, 3)  # 创建随机数张量

(4)张量为何重要

张量提供了一种统一的方式来表示和操作深度学习中的数据,并且在GPU上进行高效计算,是现代神经网络的基石。

通过理解张量及其属性,你将能够更好地构建和训练深度学习模型。

2.张量操作与广播

张量操作和广播机制是深度学习中不可或缺的工具。本节将深入探讨核心张量操作以及广播机制。

(1)基本张量操作

与 NumPy 数组类似,可以对张量执行逐元素操作:

算术运算:

import torchx = torch.tensor([1, 2, 3])
y = torch.tensor([4, 5, 6])sum_tensor = x + y  # 逐元素相加
difference = x - y  # 逐元素相减
product = x * y     # 逐元素相乘
division = x / y    # 逐元素相除

聚合函数:

mean_value = torch.mean(x)
sum_value = torch.sum(x)
max_value = torch.max(x)
min_value = torch.min(x)

(2)广播机制

广播机制允许不同形状的张量进行运算,只要满足一定条件。

基本广播:

scalar = 2
tensor = torch.tensor([1, 2, 3])
result = tensor * scalar  # 将标量广播以匹配张量的形状

复杂广播:

a = torch.tensor([[1, 2], [3, 4]])
b = torch.tensor([10, 20])
result = a * b  # 将 b 广播以匹配 a 的形状

(3)索引和切片

可以使用索引和切片来访问张量的特定元素或子集。

基本索引:

tensor = torch.tensor([10, 20, 30, 40])
first_element = tensor[0]
last_element = tensor[-1]

切片:

subtensor = tensor[1:3]  # 从索引 1 到 2(不包括 3)的元素

(4)数学运算

PyTorch 提供了常见的线性代数运算函数。

矩阵乘法:

matrix1 = torch.randn(2, 3)
matrix2 = torch.randn(3, 2)
product = torch.matmul(matrix1, matrix2)

点积:

vector1 = torch.tensor([1, 2, 3])
vector2 = torch.tensor([4, 5, 6])
dot_product = torch.dot(vector1, vector2)

(5)常见问题与最佳实践

形状不匹配:‌ 确保张量具有兼容的形状以进行运算。

数据类型:‌ 注意张量的数据类型,以避免意外结果。

GPU 利用:‌ 利用 GPU 加速进行更快的计算。

清晰性:‌ 使用清晰的变量名和注释以提高代码可读性。

通过理解张量操作和广播机制,可以更高效地操作和处理数据,从而更好地构建和训练深度学习模型。

3.Pytorch使用GPU

GPU 加速是深度学习中不可或缺的一部分,尤其在处理大规模数据和复杂模型时,其优势尤为显著。通过 PyTorch,我们可以轻松地利用 GPU 的强大计算能力来加速模型的训练和推理过程。

(1)GPU 和 CUDA 的基本概念

GPU(Graphics Processing Unit)‌:最初设计用于图像处理,但其并行计算能力使其成为处理深度学习任务的理想选择。

CUDA(Compute Unified Device Architecture)‌:这是 NVIDIA 提供的一套并行计算平台和编程模型,允许开发者利用 NVIDIA GPU 的计算能力。

我们已经在之前的教程中配置好了CUDA:

2025最新深度学习pytorch完整配置:conda/jupyter/vscode-CSDN博客

(2)在 PyTorch 中启用 GPU 加速

首先,检查系统中是否安装了 GPU 并且 PyTorch 能够识别它:

import torchif torch.cuda.is_available():print("GPU is available!")
else:print("GPU is not available.")

接下来,创建一个在 GPU 上运行的张量:

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tensor = torch.randn(3, 4, device=device)

也可以在 CPU 和 GPU 之间移动张量

tensor_cpu = tensor.to("cpu")
tensor_gpu = tensor_cpu.to(device)

GPU 加速的优势

  • 更快的训练时间:对于大型模型和数据集,GPU 可以显著减少训练时间。
  • 实时应用:GPU 加速使得实时推理成为可能,这对于图像和视频处理等应用至关重要。
  • 更大的模型:GPU 的并行计算能力使得训练更大、更复杂的模型成为可能。

4.PyTorch 的生态系统和工具

PyTorch 拥有一个充满活力的工具和库生态系统,这些工具和库补充了其核心功能,使其成为深度学习开发的综合平台。让我们探索一些关键组件。

(1)TorchVision:你的计算机视觉工具箱

TorchVision 是专为计算机视觉任务设计的包。它提供了:

  • 预训练模型:如 ResNet、VGG 和 AlexNet 等先进模型。
  • 数据集:常见数据集,如 ImageNet、CIFAR-10 和 MNIST。
  • 变换:用于图像预处理的数据增强技术。
import torch
import torchvision# 加载预训练的 ResNet 模型
model = torchvision.models.resnet50(weights=ResNet50_Weights.IMAGENET1K_V1)# 或者使用默认权重
# model = torchvision.models.resnet50(weights=ResNet50_Weights.DEFAULT)

(2)TorchText:轻松处理自然语言处理

TorchText 用于处理基于文本的数据,提供:

  • 数据集:常见 NLP 数据集,如 IMDB 和 Penn Treebank。
  • 文本处理工具:分词、填充和数值化等。
  • 词嵌入:预训练的词嵌入,如 GloVe 和 FastText。
import torch
from torchtext.datasets import IMDB# 加载 IMDB 数据集
train_data, test_data = IMDB(split=('train', 'test'))

(3)TorchAudio:你的音频工具包

TorchAudio 专注于音频处理,包括:

  • 音频加载和保存:支持多种音频格式。
  • 音频变换:音频数据增强技术。
  • 特征提取:用于提取频谱图和梅尔频谱图的工具。

其他值得注意的工具

  • PyTorch Lightning:高级框架,简化训练,提供分布式训练和超参数调整等功能。
  • TorchX:用于管理和部署 PyTorch 模型的平台。
  • Hydra:配置管理工具,用于组织复杂实验。
  • Weights & Biases:实验跟踪、可视化和协作平台。

构建坚实的基础

利用 PyTorch 生态系统,你可以:

  • 加速开发:利用预构建的组件和工具。
  • 提升模型性能:受益于优化的实现和数据增强技术。
  • 简化工作流:有效管理实验和协作。

通过结合 PyTorch 和这些工具,你可以高效地应对各种深度学习挑战。

记住:PyTorch 生态系统在不断演进,因此了解最新发展至关重要。

5.结语

本教程主要是快速入门,熟悉整个框架,对于比较细节的地方,我们通过具体的项目进行学习!下次见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21012.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows桌面系统管理5:Windows 10操作系统注册表

Windows桌面系统管理0:总目录-CSDN博客 Windows桌面系统管理1:计算机硬件组成及组装-CSDN博客 Windows桌面系统管理2:VMware Workstation使用和管理-CSDN博客 Windows桌面系统管理3:Windows 10操作系统部署与使用-CSDN博客 Wi…

web入侵实战分析-常见web攻击类应急处置实验1

场景说明: 某天运维人员发现在/opt/tomcat8/webapps/test/目录下,多出了一个index_bak.jsp这个文件, 并告诉你如下信息 操作系统:ubuntu-16.04业务:测试站点中间件:tomcat开放端口:22&#x…

Bio-ORACLE数据分享[decade 2010-2020] [Surface layers]

Bio-ORACLE数据分享[decade 2010-2020] [Surface layers] 文章目录 Bio-ORACLE数据分享[decade 2010-2020] [Surface layers]前言一、文件分享(主要)二、相关代码(选看)总结 Bio-ORACLE数据分享[decade 2010-2020] [Surface layer…

换服务器需要做的工作(记录一下)

1.Nginx开启OCSP 加快Let’s Encrypt免费证书 HTTPS网站访问速度 https://blog.csdn.net/wx23986/article/details/141722669 2.添加伪静态规则 location / {rewrite ^([^\.]*)/topic-(.)\.html$ $1/portal.php?modtopic&topic$2 last;rewrite ^([^\.]*)/article-([0-9…

c++作业

练习题&#xff1a; #include <iostream> #include <cstring> using namespace std;class mystring {char* p;int len; public:mystring();mystring(const char* p);~mystring();void copy(const mystring& str);void append(const mystring& str);void sh…

网络爬虫学习:借助DeepSeek完善爬虫软件,实现模拟鼠标右键点击,将链接另存为本地文件

一、前言 最近几个月里&#xff0c;我一直在学习网络爬虫方面的知识&#xff0c;每有收获都会将所得整理成文发布&#xff0c;不知不觉已经发了7篇日志了&#xff1a; 网络爬虫学习&#xff1a;从百度搜索结果抓取标题、链接、内容&#xff0c;并保存到xlsx文件中 网络爬虫学…

leetcode203.移除链表元素

目录 问题描述示例提示 具体思路思路一思路二 代码实现 问题描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 题目链接&#xff1a;移除链表元素 示例 提示 列表中的节点数目在范围…

全球直播新标杆:DeepSeek融合全平台AI无人直播,构建直播流量永动机!

全球直播新标杆&#xff1a;DeepSeek融合全平台AI无人直播&#xff0c;构建直播流量永动机&#xff01; 在科技日新月异的今天&#xff0c;直播行业正经历一场前所未有的变革。在这场变革中&#xff0c;DeepSeek凭借其创新的AI无人直播系统&#xff0c;正逐步树立起全球直播的新…

postgres源码学习之简单sql查询

postgres源码学习之sql查询 sql查询的主流程读取sql解析sql重写sql获得执行计划执行查询操作结果返回 sql查询的主流程 参考postgres的处理流程 由上一节&#xff0c;我们可以看到&#xff0c;当有新的连接通过权限认证之后&#xff0c;将进入等待接收sql语句&#xff0c;并执…

【AI实践】阿里百炼文本对话Agent安卓版搭建

环境&#xff1a;安卓手机运行环境&#xff1b;WinsurfAI编程工具&#xff1b;阿里百炼提前创建Agent应用&#xff1b; 耗时&#xff1a;2小时&#xff1b; 1&#xff0c;新建安卓项目 完成文本输入&#xff0c;并将输入的文字显示出来。 2&#xff0c;安装SDK 参考文档 安…

[论文阅读] SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution

文章目录 一、前言二、主要贡献三、Introduction四、Methodology4.1 Motivation &#xff1a;4.2Framework Overview.** 一、前言 通信作者是香港理工大学 & OPPO研究所的张磊教授&#xff0c;也是图像超分ISR的一个大牛了。 论文如下 SeeSR: Towards Semantics-Aware Rea…

探秘 DeepSeek R1 模型:跨越多领域的科技奇迹,引领智能应用新浪潮

DeepSeek R1 模型功能强大&#xff0c;应用广泛。在自然语言处理、计算机视觉、推荐系统和医疗等领域都能发挥作用。本文介绍了其在各领域的应用场景和代码示例&#xff0c;助你深入了解它。 目录 ​编辑 一、本篇背景&#xff1a; 二、DeepSeek R1 模型概述&#xff1a; …

常用网络工具分析(ping,tcpdump等)

写在前面 本文看下常用网络工具。 1&#xff1a;ping 1.1&#xff1a;用途 用于检验网络的连通性。 1.2&#xff1a;实战 在Linux环境中执行&#xff1a;ping www.sina.com.cn&#xff1a; [rootlocalhost ~]# ping www.sina.com.cn PING spool.grid.sinaedge.com (111.…

【MySQL】表操作

表操作 一、创建表 1、语句2、语句介绍3、注意事项4、介绍5、示例 二、查看表结构 1、语句2、介绍3、返回的信息4、示例 三、添加字段 1、语句2、语句介绍3、示例 四、修改 1、语句2、语句介绍3、示例 五、删除 1、语句2、示例 六、修改表名 1、语句2、语句介绍3、示例 七、删…

【UCB CS 61B SP24】Lecture 3 - Lists 1: References, Recursion, and Lists学习笔记

本文开坑伯克利 CS 61B&#xff08;算法与数据结构&#xff09;2024年春季课程学习笔记&#xff0c;Lecture 1 & Lecture 2 的内容为课程介绍与 Java 基础&#xff0c;因此直接跳过。本文内容为介绍基本数据类型与引用数据类型的区别&#xff0c;以及手动实现整数列表。 1…

【C语言】fwrite函数用法介绍

目录 一、函数原型 二、参数解析 三、返回值 四、核心特性 五、案例代码 案例1&#xff1a;写入字符串到文件 案例2&#xff1a;写入整型数组到二进制文件 案例3&#xff1a;写入结构体数据 六、注意事项 一、函数原型 作用&#xff1a;将内存中的数据块以二进制形式…

WIN系统服务器如何修改远程端口?

在Windows服务器上修改远程桌面协议&#xff08;RDP&#xff09;的默认端口&#xff08;3389&#xff09;可以增强服务器的安全性&#xff0c;减少被恶意扫描和攻击的风险。以下是修改远程端口的详细步骤&#xff1a; --- ### **步骤 1&#xff1a;通过注册表修改远程端口** …

使用Termux将安卓手机变成随身AI服务器(page assist连接)

通过以下方法在安卓手机上运行 Ollama 及大模型&#xff0c;无需 Root 权限&#xff0c;具体方案如下&#xff1a; 通过 Termux 模拟 Linux 环境运行 核心工具&#xff1a; 安装 &#xff08;安卓终端模拟器&#xff09;()]。借助 proot-distro 工具安装 Linux 发行版&#xf…

【Prometheus】prometheus结合pushgateway实现脚本运行状态监控

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

《运维工程师如何利用DeepSeek实现智能运维:分级实战指南》

目录 智能运维革命:DeepSeek带来的范式转变DeepSeek核心运维能力全景解析分级实战场景与解决方案 3.1 初级工程师:自动化运维入门3.2 中级工程师:复杂系统诊断与优化3.3 高级工程师:架构级智能运维典型项目案例深度剖析 4.1 金融系统全链路监控体系构建4.2 电商大促资源弹性…