【PyTorch】张量(Tensor)的生成
PyTorch深度学习总结
第一章 Pytorch中张量(Tensor)的生成
文章目录
- PyTorch深度学习总结
- 一、什么是PyTorch?
- 二、张量(Tensor)
- 1、张量的数据类型
- 2、张量生成和信息获取
- 总结
一、什么是PyTorch?
PyTorch
是一个开源的深度学习框架,基于Python语言。它由Facebook的人工智能研究团队于2016年开发并发布。
PyTorch
提供了一种灵活的、动态的计算图模型,使得开发者可以方便地构建和训练神经网络模型。PyTorch
采用了动态图
的方式,即在运行时才构建计算图,这与静态图的框架相比具有更大的灵活性和易用性。开发者可以使用Python的控制流语句
和标准库函数
来定义和操作计算图,这使得模型的编写和调试变得更加简单和直观。
PyTorch
还提供了丰富的工具和库,用于大规模训练和部署深度学习模型。其中包括数据加载和预处理
、模型定义
、优化算法
、可视化
等功能。
此外,PyTorch
还与许多其他常用的Python库和工具集成,如NumPy
、SciPy
和Jupyter Notebook
。
总之,
PyTorch
是一个强大而灵活的深度学习框架,它在易用性、灵活性和性能方面都具有优势,使得开发者可以更加自由地进行深度学习模型的设计、训练和部署。
二、张量(Tensor)
张量
是一种数学对象,可以用来表示多维数组
或多维矩阵
。
张量
在深度学习和神经网络中也被广泛应用,用于表示和处理大规模数据集。
1、张量的数据类型
在torch中CPU和GPU张量分别有8种数据类型:
数据类型 | Dtype | CPU Tensor | GPU Tensor |
---|---|---|---|
32位浮点型 | Torch.float或torch.float32 | torch.FloatTensor | torch.cuda.FloatTensor |
64位浮点型 | Torch.double或torch.float64 | torch.DoubleTensor | torch.cuda.DoubleTensor |
16位浮点型 | Torch.half 或torch.float16 | torch.HalfTensor | torch.cuda.HalfTensor |
8位无符号整型 | Torch.uint8 | torch.ByteTensor | torch.cuda.ByteTensor |
8位有符号整型 | Torch.int8 | torch.CharTensor | torch.cuda.CharTensor |
16位有符号整型 | Torch.short 或Torch.int16 | torch.ShortTensor | torch.cuda.ShortTensor |
32位有符号整型 | Torch.int或Torch.int32 | torch.IntTensor | torch.cuda.IntTensor |
64位有符号整型 | Torch.long 或Torch.int64 | torch.LongTensor | torch.cuda.LongTensor |
Torch
中默认数据类型为:torch.FloatTensor
和torch.int64
如果要修改默认数据类型可以使用函数:
torch.set_default_tensor_type()
(注:此函数只有torch.DoubleTensor
和torch.FloatTensor
两个参数)
①自动生成情况分析:
# 引入库 import torch# 创建张量 a = torch.tensor([1, 2]) # 均为整数 print(a.dtype)
输出结果为:torch.int64
# 引入库 import torch# 创建张量 a = torch.tensor([1.2, 2]) # 涉及到小数 print(a.dtype)
输出结果为:torch.float32
②修改后情况分析:
# 引入库 import torch# 创建张量 torch.set_default_tensor_type(torch.DoubleTensor) a = torch.tensor([1, 2]) print(a.dtype)
输出结果为:torch.int64
# 引入库 import torch# 创建张量 torch.set_default_tensor_type(torch.DoubleTensor) a = torch.tensor([1.2, 2]) print(a.dtype)
输出结果为:torch.float64
2、张量生成和信息获取
①张量生成:
A = torch.tensor([[1, 1], [2, 2]])
在深度学习
中需要对梯度
大小进行更新,所以需要计算梯度,需注意只有浮点型数据
才可以计算梯度。
B = torch.tensor([[1, 1], [2, 2]], dtype=torch.float32, >requires_grad=True)
输出结果为:tensor([[1., 1.],[2., 2.]], dtype=torch.float32, requires_grad=True)
其中dtype
设置数据类型,requires_grad
设置是否需要计算梯度。
函数 | 描述 |
---|---|
torch.zeros(3, 3) | 3*3的全0张量 |
torch.ones(3, 3) | 3*3的全1张量 |
torch.eye(3, 3) | 3*3的单位张量 |
torch.full((3, 3) , full_value=0.25) | 3*3使用0.25填充的张量 |
torch.empty(3, 3) | 3*3的空张量 |
torch.rand(3, 3) | 3*3的随机张量 |
torch.ones_like(A) | 与A大小相同的全1张量 |
torch.zeros_like(A) | 与A大小相同的全0张量 |
torch.rand_like(A) | 与A大小相同的随机张量 |
torch.ones_like(A) | 与A大小相同的全1张量 |
torch.arange(start=0, end=2, step=1) | tensor([0, 1]) |
②张量信息获取:
获取张量维度:
# 获取张量维度 A_shape = A.shape print(A_shape)
输出结果为:torch.Size([2, 2])
获取张量大小:
# 获取张量维度 A_size = A.size() print(A_size)
输出结果为:torch.Size([2, 2])
获取张量中包含元素数量:
# 获取张量中包含元素数量 A_number = A.numel() print(A_number)
输出结果为:4
总结
张量
在深度学习中起着重要的作用。在深度学习中,数据通常以张量
的形式表示。
张量的数值
存储了模型的参数值
和数据的特征表示
,通过对张量进行运算和优化,可以使模型逐渐学习到更好的特征表示和参数。
张量
的计算和变换是深度学习的核心操作
,它们的高效实现对于深度学习算法的训练和推理过程至关重要
。
相关文章:

【PyTorch】张量(Tensor)的生成
PyTorch深度学习总结 第一章 Pytorch中张量(Tensor)的生成 文章目录 PyTorch深度学习总结一、什么是PyTorch?二、张量(Tensor)1、张量的数据类型2、张量生成和信息获取 总结 一、什么是PyTorch? PyTorch是一个开源的深度学习框架,基于Python…...

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-Viterbi译码原理
目录 一、引言 二、Viterbi译码的基本原理 2.1 卷积码与网格图 2.2 Viterbi算法的核心思想 2.3 路径度量与状态转移 三、Viterbi译码算法工作原理详解 3.1 算法流程 3.2 关键步骤 3.3 译码算法举例 3.4 性能特点 四、Viterbi译码的应用场景 4.1 移动通信系统 4.2 卫…...

矩阵在计算机图像处理中的应用
矩阵在计算机图像处理中是非常核心的概念,因为它们为表示和操作图像数据提供了一种非常方便和强大的方式。以下是矩阵在计算机图像处理中的一些关键作用: 图像表示:在计算机中,图像通常被表示为像素矩阵,也就是二维数组…...

Java实现教学资源共享平台 JAVA+Vue+SpringBoot+MySQL
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…...

Spring Boot(六十五):使用 ant.jar 执行 SQL 脚本文件
ant用处,主要用在编译java文件,打包,部署。打包:jar,war,ear包等。ant在项目中有很重要的作用。今天我们讲解它的另一个作用:执行 SQL 脚本文件。 1 引入依赖 <dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId&g…...

161基于matlab的快速谱峭度方法
基于matlab的快速谱峭度方法,选择信号峭度最大的频段进行滤波,对滤波好信号进行包络谱分析。输出快速谱峭度及包络谱结果。程序已调通,可直接运行。 161 信号处理 快速谱峭度 包络谱分析 (xiaohongshu.com)...

CTFshow-WEB入门-信息搜集
web1(查看注释1) wp 右键查看源代码即可找到flag web2(查看注释2) wp 【CtrlU】快捷键查看源代码即可找到flag web3(抓包与重发包) wp 抓包后重新发包,在响应包中找到flag web4(robo…...

django密码管理器(创建项目)
目录 创建项目 安装django 创建项目(django-admin) 创建管理员用户 创建数据库 创建项目 新建一个项目文件夹,如"密码管理器" 安装django 要先安装pip,pip安装地址:pypi.org、pypi.python.org、cheeseshop.python.org pip install django 创建项…...

Centos7之Oracle12c安装与远程连接配置
Centos7之Oracle12c安装与远程连接配置 文章目录 Centos7之Oracle12c安装与远程连接配置1.Oracle官网2. Centos7中安装Oracle12c(12.2.0.1.0)2.1 Introduction (介绍)2.2 Prerequisites(先决条件)2.3 Installation Steps(安装步骤)2.4 Oracle Installer Screens(Oracle安装程序…...

CVE-2022-25578 漏洞复现
CVE-2022-25578 路由/admin/admin.php是后台,登录账号和密码默认是admin、tao,选择文件管理。 是否还记得文件上传中的.htaccess配置文件绕过发,在这个文件中加入一句AddType application/x-httpd-php .jpg,将所有jpg文件当作php…...

Ubuntu22.04安装黑屏(进入U盘安装引导时 和 安装完成后)
一:进入U盘安转引导时黑屏 问题描述:选择’try or install ubuntu’,开始安装,出现黑屏。 解决方法:(可行) 安装时,先选择" try or install ubuntu", 此时不要按enter&a…...

一、DataX简介
DataX简介 一、什么是DataX二、DataX设计三、支持的数据源四、框架设计五、运行原理六、DataX和Sqoop对比 一、什么是DataX DataX是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、OD…...

直播app开发,技术驱动的实时互动新纪元
随着互联网技术的快速发展,直播已成为我们日常生活的重要组成部分。从娱乐、教育到商业活动,直播的广泛应用正在改变着我们的生活和工作方式。在这一变革中,直播开发扮演着至关重要的角色。本文将探讨直播开发的核心理念、技术挑战以及未来的…...

Apache POI的介绍以及使用示例
Apache POI 是一套开源的 Java 库,用于读取和写入 Microsoft Office 文档格式,如 Excel、Word 和 PowerPoint。Spring Boot 是一个流行的 Java 应用程序框架,用于简化 Spring 应用的开发和部署。将 Apache POI 与 Spring Boot 结合使用&#…...

npm config set registry https://registry.npm.taobao.org 这个设置了默认的镜像源之后如何恢复默认的镜像源
要恢复npm默认的镜像源,你可以使用以下命令将registry设置回npm的官方源: npm config set registry https://registry.npmjs.org/这个命令会修改你的全局npm配置,将包的下载源改回npm官方的源。这样做之后,任何后续的npm install…...

算法沉淀——位运算(leetcode真题剖析)
算法沉淀——位运算 常用位运算总结1.基础位运算2.确定一个数中第x位是0还是13.将一个数的第x位改成14.将一个数的第x位改成05.位图6.提取一个数最右边的17.删掉一个数最右边的18.异或运算9.基础例题 力扣题目讲解01.面试题 01.01. 判定字符是否唯一02.丢失的数字03.两整数之和…...

React18原理: 再聊Fiber架构下的时间分片
时间分片 react的任务可以被打断,其实就是基于时间分片的人眼最高能识别的帧数不超过30帧,电影的帧数差不多是在24浏览器的帧率一般来说是60帧,也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右浏览器正常的工作流程是运算渲染ÿ…...

【玩转408数据结构】线性表——线性表的顺序表示(顺序表)
知识回顾 通过前文,我们了解到线性表是具有相同数据类型的有限个数据元素序列;并且,线性表只是一种逻辑结构,其不同存储形式所展现出的也略有不同,那么今天我们来了解一下线性表的顺序存储——顺序表。 顺序表的定义 …...

图像处理之《黑盒扰动的可逆噪声流鲁棒水印》论文阅读
一、文章摘要 近年来,基于深度学习的数字水印框架得到了广泛的研究。现有的方法大多采用基于“编码器-噪声层-解码器”的架构,其中嵌入和提取过程分别由编码器和解码器完成。然而,这种框架的一个潜在缺点是编码器和解码器可能不能很好地耦合…...

一个Vivado仿真问题的debug
我最近在看Synopsys的MPHY仿真代码,想以此为参考写个能实现PWM-G1功能的MPHY,并应用于ProFPGA原型验证平台。我从中抽取了一部分代码,用Vivado自带的仿真器进行仿真,然后就遇到了一个莫名其妙的问题,谨以此文作为debug…...

C#阿里云消息列队推送消息
推送消息到队列 IMNS nativeclient new Aliyun.MNS.MNSClient(accessKeyId, accessKeySecret, endpoint, _stsToken);var nativeSend nativeclient.GetNativeTopic("SMQ");nativeSend.PublishMessage("推送消息内容"); 需要引用Aliyun.MNS.dll 下载地址…...

Stable Diffusion 模型下载:majicMIX sombre 麦橘唯美
本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十...

WindowsLinuxmeterepreter渗透命令回顾
最近小编发现在学红队的时候总会忘记一些命令(基础的),导致整天红温,于是今天就来偷个懒记一下(一起回顾一下) 1.Linux 1.查看当前按目录 pwd2.查看文件内容 cat filename.txt3.cd 家族 cd ..|| cd ../…...

KingSCADA实现按钮点击效果
哈喽,你好啊,我是雷工! 在做SCADA项目的时候,按钮是不可缺少的功能,但软件自带的按钮太丑,已经无法满足现如今客户对界面美观度的要求。 这时候就需要UI小姐姐设计美观大气的SCADA界面,但UI设计…...

Python编程-二万字浅谈装饰器原理与装饰器设计模式和函数式编程案例讲解
Python编程-浅析装饰器原理与装饰器设计模式和函数式编程案例讲解 本文制作时基于Python3.11.8与Python3.12.1,存在谬误,请联系修改,希望对你有所帮助 什么是函数式编程 函数式编程(Functional Programming)是一种编程…...

基于Zigbee的智能温室大棚系统(附详细使用教程+完整代码+原理图+完整课设报告)
🎊项目专栏:【Zigbee课程设计系列文章】(附详细使用教程+完整代码+原理图+完整课设报告) 前言 👑由于无线传感器网络(也即是Zigbee)作为🌐物联网工程的一门必修专业课,具有很强的实用性,因此很多院校都开设了zigbee的实训课程;👑同时最近很多使用了我的单片机课…...

【Web】Redis未授权访问漏洞学习笔记
目录 简介 靶机配置 Redis持久化 Redis动态修改配置 webshell 反弹shell Redis写入反弹shell任务 加固方案 简介 Redis(Remote Dictionary Server 远程字典服务器)是一个开源的内存数据库,也被称为数据结构服务器,它支持…...

【JAVA WEB】 css背景属性 圆角矩形的绘制
目录 背景属性设置 圆角矩形 背景属性设置 背景颜色,在style中 background-color:颜色; 背景图片 background-image:url(……) 背景图片的平铺方式 background-repeat: 平铺方式 repeat 平铺(默认)no-repeat 不平铺repeat-x 水平平铺repea…...

Docker-现代化应用部署的利器
一、容器部署的发展 今天我们来说说容器部署。我们知道容器部署的发展大致分三个阶段,下面来介绍一下不同阶段的部署方式的优缺点 物理机部署 优点是可以提供更高的性能、资源控制,也可以提供更好的数据隔离和安全性,因为不同的应用程序运行在…...

「优选算法」:山脉数组的峰顶索引
一、题目 符合下列属性的数组 arr 称为 山脉数组 : arr.length > 3存在 i(0 < i < arr.length - 1)使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i1] > ... > arr[arr.length - 1] …...