【PyTorch】张量(Tensor)的生成

PyTorch深度学习总结

第一章 Pytorch中张量(Tensor)的生成


文章目录

  • PyTorch深度学习总结
  • 一、什么是PyTorch?
  • 二、张量(Tensor)
    • 1、张量的数据类型
    • 2、张量生成和信息获取
  • 总结


一、什么是PyTorch?

PyTorch是一个开源的深度学习框架,基于Python语言。它由Facebook的人工智能研究团队于2016年开发并发布。

PyTorch提供了一种灵活的、动态的计算图模型,使得开发者可以方便地构建和训练神经网络模型。PyTorch采用了动态图的方式,即在运行时才构建计算图,这与静态图的框架相比具有更大的灵活性和易用性。开发者可以使用Python的控制流语句标准库函数来定义和操作计算图,这使得模型的编写和调试变得更加简单和直观。

PyTorch还提供了丰富的工具和库,用于大规模训练和部署深度学习模型。其中包括数据加载和预处理模型定义优化算法可视化等功能。
此外,PyTorch还与许多其他常用的Python库和工具集成,如NumPySciPyJupyter Notebook

总之,PyTorch是一个强大而灵活的深度学习框架,它在易用性、灵活性和性能方面都具有优势,使得开发者可以更加自由地进行深度学习模型的设计、训练和部署。


二、张量(Tensor)

张量是一种数学对象,可以用来表示多维数组多维矩阵
张量在深度学习和神经网络中也被广泛应用,用于表示和处理大规模数据集。


1、张量的数据类型

在torch中CPU和GPU张量分别有8种数据类型:

数据类型DtypeCPU TensorGPU Tensor
32位浮点型Torch.float或torch.float32torch.FloatTensortorch.cuda.FloatTensor
64位浮点型Torch.double或torch.float64torch.DoubleTensortorch.cuda.DoubleTensor
16位浮点型Torch.half 或torch.float16torch.HalfTensortorch.cuda.HalfTensor
8位无符号整型Torch.uint8torch.ByteTensortorch.cuda.ByteTensor
8位有符号整型Torch.int8torch.CharTensortorch.cuda.CharTensor
16位有符号整型Torch.short 或Torch.int16torch.ShortTensortorch.cuda.ShortTensor
32位有符号整型Torch.int或Torch.int32torch.IntTensortorch.cuda.IntTensor
64位有符号整型Torch.long 或Torch.int64torch.LongTensortorch.cuda.LongTensor

Torch中默认数据类型为:torch.FloatTensortorch.int64
如果要修改默认数据类型可以使用函数:
torch.set_default_tensor_type()
(注:此函数只有torch.DoubleTensortorch.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


总结

张量在深度学习中起着重要的作用。在深度学习中,数据通常以张量的形式表示。
张量的数值存储了模型的参数值数据的特征表示,通过对张量进行运算和优化,可以使模型逐渐学习到更好的特征表示和参数。
张量的计算和变换是深度学习的核心操作,它们的高效实现对于深度学习算法的训练和推理过程至关重要

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

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

相关文章

20240212请问如何将B站下载的软字幕转换成为SRT格式?

20240212请问如何将B站下载的软字幕转换成为SRT格式? 2024/2/12 12:47 百度搜索:字幕 json 转 srt json srt https://blog.csdn.net/a_wh_white/article/details/120687363?share_token2640663e-f468-4737-9b55-73c808f5dcf0 https://blog.csdn.net/a_w…

上位机图像处理和嵌入式模块部署(利用python开发软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 开发windows和linux软件的时候,大家一般都是习惯于用c/c语言进行开发,但是目前来说很多的开发板都是支持python语言开发的。…

RK3588平台开发系列讲解(视频篇)RKMedia 数据流向

文章目录 一、 获取RKMedia模块通道中的数据二、RKMedia的数据源和接收者三、模块通道绑定API调用 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输…

服务治理中间件-Eureka

目录 简介 搭建Eureka服务 注册服务到Eureka 简介 Eureka是Spring团队开发的服务治理中间件,可以轻松在项目中,实现服务的注册与发现,相比于阿里巴巴的Nacos、Apache基金会的Zookeeper,更加契合Spring项目,缺点就是…

前端vue 数字 字符串 丢失精度问题

1.问题 后端返回的数据 是这样的 一个字符串类型的数据 前端要想显示这个 肯定需要使用Json.parse() 转换一下 但是 目前有一个问题 转换的确可以 showId:1206381711026823172 有一个这样的字段 转换了以后 发现 字段成了1206381711026823200 精度直接丢了 原本的数据…

MySQL监控Innodb信息

Innodb监控 Innodb由于支持事务操作,是mysql中使用最多的存储引擎,所以如何监控Innodb存储引擎以进行性能优化是在使用mysql过程中遇到最多的,那么如何进行监控呢? show engine -- 显示innodb存储引擎状态的统计和配置信息show en…

MogaNet实战:使用MogaNet实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 论文:https://arxiv.org/pdf/2211.03295.pdf 作者多阶博弈论交互这一全新视角探索了现代卷积神经网络的表示能力。这种交互反映了不同尺度上下文中变量间的相互作用效…

C语言函数指针实现函数参数化

之前学习了基本的函数指针;函数指针有多种用途;下面看一下函数参数化; 函数参数化是指通过函数指针将函数的某些行为参数化。这样可以在调用函数时动态地指定函数的行为。 新建一个单文档工程;下述增加的函数声明加到视类cpp文件的头部,函数体加到视类cpp文件的尾部,在…

时域和离散域的重要转换器

自然界的模拟信号都是连续信号,也就是我们常说的时域信号,而我们的计算机只能处理离线的数字量信号,但是我们的闭环控制系统都是由离散域和时域所组成的,这里的离散域包括我们的计算机微控制器,时域包括我们的被控对象…

2024.2.3 作业

1、实现单向循环链表的头插头删尾插尾删 #include<stdio.h> #include<string.h> #include<stdlib.h> typedef int datatype; typedef struct node {//数据域int data;//指针域struct node *next; }*Linklist; Linklist create() {Linklist s(Linklist)mallo…

linux应用 进程间通信之信号量(POSIX)

1、前言 1.1 定义 POSIX信号量是一种用于同步进程之间对共享资源访问的机制。它允许进程在访问共享资源之前进行互斥和同步操作&#xff0c;以确保数据的一致性和正确性。POSIX信号量通常由一个整数值表示&#xff0c;可以进行原子增减操作&#xff0c;以及等待和通知操作。 …

【Python网络编程之DHCP服务器】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Python开发技术 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; Python网络编程之DHCP服务器 代码见资源&#xff0c;效果图如下一、实验要求二、协议原理2.1 D…

线性时间非比较类排序之计数排序

计数排序 计数排序由 HaroldH.Seward 于1954年提出&#xff0c;它是一种非基于比较的排序算法&#xff0c;通过辅助数组来确定各元素的最终位置。因为在排序过程中不存在元素之间的比较和交换操作&#xff0c;所以当待排序数组为整数且数组内数据的范围较小时&#xff0c;其优…

计算x的平方根x含负数和复数cmath.sqrt(x)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算x的平方根 x含负数和复数 cmath.sqrt(x) cmath.sqrt(-4)输出的结果是&#xff1f; import cmath import math a 4 print("【显示】a ",a) print("【执行】math.sqrt(a)&…

有状态DHCPv6快速模式配置及EUI-64介绍

正文共&#xff1a;1024 字 15 图&#xff0c;预估阅读时间&#xff1a;3 分钟 我们现在已经熟悉了IPv6的地址架构&#xff08;IPv6地址架构一本通&#xff09;&#xff0c;掌握了IPv6地址的手工配置方式&#xff08;IPv6从入门到精通&#xff09;和DHCPv6有状态地址配置&#…

openssl3.2 - osslsigncode工程的学习

文章目录 openssl3.2 - osslsigncode工程的学习概述笔记工程库地址工程的编译osslsigncodeM工程文件列表osslsigncodeM工程搭建细节原始工程实现的改动自己封装的包含openssl和curl的实现osslsigncodeM工程命令行的用法备注 - VS2019调试环境备注 - 如果要单步openssl的API学学…

第六篇:MySQL图形化管理工具

经过前五篇的学习&#xff0c;对于数据库这门技术的理解&#xff0c;我们已经在心中建立了一个城堡大致的雏形&#xff0c;通过命令行窗口&#xff08;cmd&#xff09;快速上手了【SQL语法-DDL-数据定义语言】等相关命令 道阻且长&#xff0c;数据库技术这一宝藏中还有数不清的…

人脸追踪案例及机器学习认识

1.人脸追踪机器人初制 用程序控制舵机运动的方法与机械臂项目完全相同。 由于摄像头的安装方式为上下倒转安装&#xff0c;我们在编写程序读取图像时需使用 flip 函数将 图像上下翻转。 现在&#xff0c;只需要使用哈尔特征检测得到人脸在图像中的位置&#xff0c;再指示舵机运…

796. 子矩阵的和

Problem: 796. 子矩阵的和 文章目录 思路解题方法复杂度Code 思路 这是一个二维前缀和的问题。二维前缀和的主要思想是预处理出一个二维数组&#xff0c;使得每个位置(i, j)上的值表示原数组中从(0, 0)到(i, j)形成的子矩阵中所有元素的和。这样&#xff0c;对于任意的子矩阵(x…

MySQL数据库应用实验报告——实验1 表结构创建

实验1 表结构创建 创建用于大学管理的高校管理数据库&#xff0c;数据库名为GXGL&#xff0c;包含学生的信息&#xff0c;教学单位信 息、专业信息&#xff0c;教职工信息、课程的相关信息以及学生选课信息。数据库GXGL包含下列 六个表: (1) Students: 学生信息表 (2) Depar…