【深度学习】Pytorch 系列教程(一):PyTorch数据结构:1、Tensor(张量)及其维度(Dimensions)、数据类型(Data Types)

文章目录

  • 一、前言
  • 二、实验环境
  • 三、PyTorch数据结构
    • 0、分类
    • 1、Tensor(张量)
      • 1. 维度(Dimensions)
        • 0维(标量)
        • 1维(向量)
        • 2维(矩阵)
        • 3维张量
      • 2. 数据类型(Data Types)

一、前言

ChatGPT:

  PyTorch是一个开源的机器学习框架,广泛应用于深度学习领域。它提供了丰富的工具和库,用于构建和训练各种类型的神经网络模型。下面是PyTorch的一些详细介绍:

  • 动态计算图:PyTorch使用动态计算图的方式进行计算,这意味着在运行时可以动态地定义、修改和调整计算图,使得模型的构建和调试更加灵活和直观。
  • 强大的GPU加速支持:PyTorch充分利用GPU进行计算,可以大幅提升训练和推理的速度。它提供了针对GPU的优化操作和内存管理,使得在GPU上运行模型更加高效。
  • 自动求导:PyTorch内置了自动求导的功能,可以根据定义的计算图自动计算梯度。这简化了反向传播算法的实现,使得训练神经网络模型更加便捷。
  • 大量的预训练模型和模型库:PyTorch生态系统中有许多预训练的模型和模型库可供使用,如TorchVision、TorchText和TorchAudio等,可以方便地加载和使用这些模型,加快模型开发的速度。
  • 高级抽象接口:PyTorch提供了高级抽象接口,如nn.Module和nn.functional,用于快速构建神经网络模型。这些接口封装了常用的神经网络层和函数,简化了模型的定义和训练过程。
  • 支持分布式训练:PyTorch支持在多个GPU和多台机器上进行分布式训练,可以加速训练过程,处理大规模的数据和模型。
      总体而言,PyTorch提供了一个灵活而强大的平台,使得深度学习的研究和开发更加便捷和高效。它的简洁的API和丰富的功能使得用户可以快速实现复杂的神经网络模型,并在各种任务中取得优秀的性能。

二、实验环境

  本系列实验使用如下环境

conda create -n DeepL python==3.11
conda activate DeepL
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
pip install matplotlib

  关于配置环境问题,可参考前文的惨痛经历:

Anaconda搭建深度学习环境py 3.7:tensorflow-gpu2.3.0、pytorch1.12.1_gpu版本;(使用conda下载cuda和cudnn);配置环境经验总结

三、PyTorch数据结构

0、分类

  • Tensor(张量):Tensor是PyTorch中最基本的数据结构,类似于多维数组。它可以表示标量、向量、矩阵或任意维度的数组。
  • Tensor的操作:PyTorch提供了丰富的操作函数,用于对Tensor进行各种操作,如数学运算、统计计算、张量变形、索引和切片等。这些操作函数能够高效地利用GPU进行并行计算,加速模型训练过程。
  • Variable(变量):Variable是对Tensor的封装,用于自动求导。在PyTorch中,Variable会自动跟踪和记录对其进行的操作,从而构建计算图并支持自动求导。在PyTorch 0.4.0及以后的版本中,Variable被废弃,可以直接使用Tensor来进行自动求导。
  • Dataset(数据集):Dataset是一个抽象类,用于表示数据集。通过继承Dataset类,可以自定义数据集,并实现数据加载、预处理和获取样本等功能。PyTorch还提供了一些内置的数据集类,如MNIST、CIFAR-10等,用于方便地加载常用的数据集。
  • DataLoader(数据加载器:DataLoader用于将Dataset中的数据按批次加载,并提供多线程和多进程的数据预读功能。它可以高效地加载大规模的数据集,并支持数据的随机打乱、并行加载和数据增强等操作。
  • Module(模块):Module是PyTorch中用于构建模型的基类。通过继承Module类,可以定义自己的模型,并实现前向传播和反向传播等方法。Module提供了参数管理、模型保存和加载等功能,方便模型的训练和部署。

1、Tensor(张量)

  Tensor(张量)是PyTorch中用于表示多维数据的主要数据结构,类似于多维数组,可以存储和操作数字数据。

1. 维度(Dimensions)

  Tensor(张量)的维度(Dimensions)是指张量的轴数或阶数。在PyTorch中,可以使用size()方法获取张量的维度信息,使用dim()方法获取张量的轴数。
在这里插入图片描述

0维(标量)
import torch# 创建0维张量(标量)
scalar = torch.tensor(5)
print("0维张量(标量):")
print(scalar)
print("维度信息:", scalar.size())
print("轴数:", scalar.dim())

在这里插入图片描述

1维(向量)
import torch# 创建1维张量(向量)
vector = torch.tensor([1, 2, 3, 4, 5])
print("1维张量(向量):")
print(vector)
print("维度信息:", vector.size())
print("轴数:", vector.dim())

在这里插入图片描述

2维(矩阵)
import torch# 创建2维张量(矩阵)
matrix = torch.tensor([[1, 2, 3], [4, 5, 6]])
print("2维张量(矩阵):")
print(matrix)
print("维度信息:", matrix.size())
print("轴数:", matrix.dim())

在这里插入图片描述

3维张量
import torch# 创建3维张量
tensor_3d = torch.tensor([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print("维张量:")
print(tensor_3d)
print("维度信息:", tensor_3d.size())
print("轴数:", tensor_3d.dim())

在这里插入图片描述

  在上面的代码中,创建了一个3维张量tensor,它有2个维度为2x3的矩阵。通过调用size()方法,我们可以获取张量的维度信息,返回的是一个torch.Size对象,它是一个元组(tuple)形式的数据结构,表示各个维度的大小。在这个例子中,tensor的维度信息是[2, 2, 3],表示有2个矩阵,每个矩阵的大小为2x3。通过调用dim()方法,我们可以得到张量的轴数,这里是3。

2. 数据类型(Data Types)

  PyTorch中的张量可以具有不同的数据类型:

  • torch.float32或torch.float:32位浮点数张量。
  • torch.float64或torch.double:64位浮点数张量。
  • torch.float16或torch.half:16位浮点数张量。
  • torch.int8:8位整数张量。
  • torch.int16或torch.short:16位整数张量。
  • torch.int32或torch.int:32位整数张量。
  • torch.int64或torch.long:64位整数张量。
  • torch.bool:布尔张量,存储True或False。

  在创建张量时,可以通过指定dtype参数来设置所需的数据类型。例如,要创建一个64位浮点数张量,可以使用以下代码:

import torchtensor = torch.tensor([1, 2, 3], dtype=torch.float64)
print(tensor)
print(tensor.dtype)

在这里插入图片描述

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

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

相关文章

报告称超 5 成职场人员有兼职 ,有人因做副业被降薪或被辞,有哪些信息值得关注?你有下班兼职的打算吗?

在职程序员分享身边几个做兼职的案例: 前领导从21年开始做小红书账号,粉丝30w,月入5w左右; 隔壁工位的哥们每隔几个月都会在平台接点小单,今年赚了小几万; 室友每天开车上班顺便接顺风车单子,一…

推荐一款好用的包含表格识别的OCR网站

在当今数字化的时代,文字和表格识别已经成为了许多行业的关键技术。无论是处理大量的纸质文档,还是从网络上收集数据,OCR(光学字符识别)技术都扮演着重要的角色。然而,对于许多用户来说,OCR软件…

螺旋矩阵算法(leetcode第885题)

题目描述: 在 rows x cols 的网格上,你从单元格 (rStart, cStart) 面朝东面开始。网格的西北角位于第一行第一列,网格的东南角位于最后一行最后一列。你需要以顺时针按螺旋状行走,访问此网格中的每个位置。每当移动到网格的边界之…

GradNorm理解

主要参考这一篇,GradNorm:Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks,梯度归一化_grad norm-CSDN博客 14:20-15:30 提前需要理解的概念 损失函数,衡量ypred与ytruth的差距。 Grad Loss定…

盲盒小程序如何盈利?创业新模式

当前,盲盒的影响力越来越大,深受年轻人的热爱,受众群体逐渐增加,盲盒的市场规模不断扩大。 在当下社交媒体时代,盲盒也转到了互联网上,根据网络的传播,盲盒也迎来了新一轮的发展,“…

在服务器上配置jupyter notebook便于本地访问

文章目录 需求配置1. 安装jupyter2. 生成配置文件3. 设置登录密码并生成秘钥a. 打开服务器的终端b. 设置密码 4. 修改配置文件a. 进入配置文件所在的文件夹b. 编辑配置文件jupyter_notebook_config.pyc. 保存文件 5. 在服务器上生成jupyter访问地址 关注公众号:『 …

C# WinForm 跨线程访问控件

写在前面 在WinForm开发中,经常会碰到主线程代码运行过程中需要刷新窗体控件的情况,如果直接在其他线程中去操作窗体控件,这时会抛出线程间操作无效的异常信息,因为窗体控件是由主线程创建的,C#强制要求代码必须是线程…

SAP 标准GUI 中增加按钮时报错:EC181

今天在打一个note的时候,需要做一些手动的调整,其中的步骤就需要我去在标准的GUI STATUS 增加按钮 我在进入编辑模式的时候,直接去插入的时候,始终报错如下: Function code xxxx has not been assigned to a functio…

使用matlab制作声音采样率转换、播放以及显示的界面

利用matlab做一个声音采样率转换、播放以及显示的界面 大抵流程: 图形界面创建:使用figure函数创建名为“声音采样率转换”的图形界面,并设置了其位置和大小。 按钮和文本框:使用uicontrol函数创建了选择音频文件的按钮、显示当前…

js基础之事件监听案例入门

事件绑定 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&…

【IDEA】关于快捷键行注释时会从行首开始注释

前言 每次在使用IDEA写代码时&#xff0c;用快捷键进行行注释的时候&#xff0c;//会处于行首位置 但是我们想要的是这种注释效果 修改 IDEA中打开settings 找到Editor - Code Style- Java - 找到Code Genneration&#xff0c;取消勾选Line comment at first column&#x…

汽车内饰设计开发流程(入门基础)

1 开发流程简介 2 汽车内饰的子系统&#xff08;分类&#xff09; 1 软内饰&#xff08;顶棚、地毯、座椅&#xff09; 2 硬内饰&#xff08;仪表板、副仪表板护、A柱饰板、B柱饰板、C柱饰板、门槛、侧围饰板、背门饰板&#xff09; 3内外饰板的分类&#xff1a;功能件和装饰…

Linux的重定向

Linux中的重定向是将程序的输入流或输出流从默认的位置改变到指定的位置。可以使用特殊的符号来实现重定向操作。&#xff08;文中command代表命令&#xff09; &#xff08;1&#xff09;重定向命令列表 命令 说明 command > file …

第16章 网络io与io多路复用select/pool/epool

第16.1节 写一个服务端代码 服务端代码 #include <stdio.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h>#include <fcntl.h>int main() {//openint sockfd sock…

考试的最大困扰度

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 1、题目描述 一位老师正在出一场由 n 道判断题构成的考试&#xff0c;每道题的答案为 true &#xff…

Hexo部署到云服务器后CSS样式无效的问题

Hexo部署到云服务器后CSS样式无效的问题 01 前言 趁活动入手了一个云服务器&#xff08;Linux&#xff09;&#xff0c;打算简单挂个博客上去&#xff0c;因为之前部署到github有了一些经验&#xff0c;所以还是选择使用Hexo。中间步骤略&#xff0c;部署完使用浏览器访问的时…

HT4125 低压CMOS 缓冲门器件 单电源电压转换

​​亿胜盈科HT4125 是一款低压CMOS 缓冲门器件&#xff0c;可运行在针对便携式和电池设备的更宽电压范围内。 其采用了较低阀值电路来设计此输入&#xff0c;以便匹配Vcc 3.3V 时的1.8V 输入逻辑&#xff0c;并且可被用 在1.8V 至3.3V 电平上行转换器功能中。此外&#xff0c;…

RabbitMQ的详细使用

消息队列RabbitMQ的详细使用 文章目录 消息队列RabbitMQ的详细使用MQ 的相关概念什么是MQ为什么要用MQMQ 的分类MQ 的选择 RabbitMQRabbitMQ 的概念四大核心概念各个名词介绍安装RabbitMQWeb管理界面及授权操作Docker 安装 Hello world简单示例 Work Queues轮训分发消息消息应答…

用友时空 KSOA 多处SQL注入漏洞复现

0x01 产品简介 用友时空 KSOA 是建立在 SOA 理念指导下研发的新一代产品,是根据流通企业前沿的 IT 需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的 IT 系统之间彼此轻松对话。 0x02 漏洞概述 用友时空 KSOA 系统 PayBill、QueryService、linkadd.jsp等接口处…

如何在Android中旋转屏幕时避免重新绘制Activity

如何在Android中旋转屏幕时避免重新绘制Activity 在Android开发中&#xff0c;设备旋转通常导致当前活动&#xff08;Activity&#xff09;被销毁并重新创建&#xff0c;这可能导致用户界面重置和不必要的资源重新加载。然而&#xff0c;有时我们希望避免这种行为&#xff0c;…