一、torch概念

1.1简介

        pytorch简称torch,意为深度学习框架。它使用张量(tensor)来表示数据,可以轻松地处理大规模数据集,且可以在GPU上加速。

        pytorch基本功能:自动微分、自动求导等。

1.2安装

        官网获得下载命令。

二、tensor概述

pytorch将数据封装成张量进行计算。

2.1概念

        张量:元素类型相同的多维矩阵,可以在GPU上于运行。

        张量的维度决定了它的形状:

(1)0维张量:标量;

(2)1维张量:向量、数组;

(3)2维张量:矩阵;

(4)更高维度张量:图像、视频等。

2.2特点

(1)动态计算图;

(2)GPU支持;

(3)自动微分。

2.3数据类型

        主要数据类型:浮点数float,整数int,布尔值True、False。

        其中,浮点数和整数又分为8位、16位、32位、64位,加起来共9种。

三、tensor创建

3.1基本创建方式

(1)torch.tensor()

        注意tensor为小写,根据指定的数据创建张量。

代码示例:

# 指定数据进行创建 torch.tensor
import torch
import numpy as np
# 用标量创建张量
data = torch.tensor(7)   #0维张量
print(data)
print(data.shape)

结果:

tensor(7)

torch.Size([])

(2)torch.Tensor()

         注意tensor为大写,根据形状创建张量,也可用指定的数据创建张量。

代码示例:

# 指定形状进行创建 torch.Tensor
def test01():tensor1 = torch.Tensor(3,4)print(tensor1)tensor2 = torch.Tensor([[1],[2],[3]])print(tensor2,tensor2.dtype)tensor3 = torch.Tensor([0])print(tensor3.shape,tensor3.dtype)tensor1 = torch.Tensor([1,2]).int()print(tensor1.dtype)if __name__ == '__main__':test01()

结果:

tensor([[-4.6947e-33, 1.9716e-42, 0.0000e+00, 0.0000e+00],

[ 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00],

[ 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00]])

tensor([[1.], [2.], [3.]]) torch.float32

torch.Size([1]) torch.float32

torch.int32

(3)torch.IntTensor()

        用于创建指定类型的张量。

代码示例:

# 指定类型进行创建 torch.IntTensor
data = torch.IntTensor(3,3)
print(data)
print(data.shape,data.dtype)

结果:

tensor([[-1983708176, 1407, 0],

[ 0, 0, 0],

[ 0, 0, 0]], dtype=torch.int32)

torch.Size([3, 3]) torch.int32

3.2创建线性张量

        利用API:

        torch.arange():PyTorch 中用于生成一个一维张量(向量)的函数,该张量包含从起始点到结束点(不包括结束点)的等间隔数值序列。

        torch.linspace((start,end,steps)):返回一个一维张量,包含在区间 `[start, end]` 上均匀间隔的 `steps` 个点。

代码示例:

# 创建线性张量
import torch
def tensor():data = torch.arange(0,9,2)print(data,data.shape,data.dtype)data1 = torch.linspace(1,10,3)print(data1,data1.shape,data1.dtype)tensor()

结果:

tensor([0, 2, 4, 6, 8]) torch.Size([5]) torch.int64

tensor([ 1.0000, 5.5000, 10.0000]) torch.Size([3]) torch.float32

3.3创建随机张量

随机数种子:torch.manual_seed()

获取随机数种子:torch.initial_seed()

创建随机张量:torch.rand--均匀分布 / torch.randn--正态分布

代码示例:

# 创建随机张量
import numpy as np
def random_t():torch.manual_seed(33)print(torch.initial_seed())data = torch.rand(3,4)data2 = torch.randn(2,3).int()print(data,data.shape,data.dtype)print(data2,data2.shape,data2.dtype)return 
random_t()

结果:

33

tensor([[0.6186, 0.5587, 0.1937, 0.3360],

            [0.2008, 0.6970, 0.6367, 0.1452],

            [0.8213, 0.2365, 0.3702, 0.9168]]) torch.Size([3, 4]) torch.float32

tensor([[ 0, 0, -1],

            [ 0, -1, 1]], dtype=torch.int32) torch.Size([2, 3]) torch.int32

四、tensor常见属性

4.1获取属性

        Tensor张量常见属性有三个:dtype(获取类型),shape(获取形状),device(获取运行设备)

代码示例:

import torch
import numpy as np
data = torch.tensor(np.random.randint(0,10,(2,2)))
print(data)
print(data.shape)
print(data.dtype)
print(data.device)

结果:

tensor([[4, 4], [6, 5]], dtype=torch.int32)

torch.Size([2, 2])

torch.int32

cpu

4.2切换设备

主要是指CPU,GPU之间的相互转换。

注意:这里都要重新赋值

(1)直接data.cuda()

(2)在创建张量时指定device类型

(3)重新赋值data.to(device)

代码示例:

# 切换设备
import torch
import numpy as np
data = torch.tensor(np.random.randint(0,10,(2,2)))
print(data)
print(data.shape)
print(data.dtype)
print(data.device)device = 'cuda' if torch.cuda.is_available() else 'cpu'
data_new = data.to(device=device)
print(data_new.device)data2 = torch.tensor([1,2,3],device='cpu')
print(data2.device)data3 =  torch.tensor([1,2,3],dtype=torch.float32)
data3_new = data3.cuda()
print(data3_new.device)

结果:

tensor([[4, 6], [5, 8]], dtype=torch.int32)

torch.Size([2, 2])

torch.int32

cpu

cpu

cpu

Torch not compiled with CUDA enabled(这里是因为我没有安装GPU)

4.3类型转换

(1)使用type进行转换,在type()括号内填上需要转换为的目标类型;

(2)重新赋值 data = data.int()

(3)创建张量时指定类型 dtype= torch.int64

代码示例:

# 类型转换
import torch
import numpy as npdata = torch.tensor(np.random.randn(3,4),dtype=torch.int64)
print(data,data.dtype)data2 = torch.tensor([[1,2],[3,4]])
data2 = data2.float()
print(data2,data2.dtype)data3 = torch.tensor([8,9,0])
data3 = data3.type(torch.bool)
print(data3,data3.dtype)

结果:

tensor([[ 0, 0, 0, -2], [ 0, 1, 0, -1], [ 1, 0, 0, 0]]) torch.int64

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

tensor([ True, True, False]) torch.bool

五、小结

        综上,简单学习了张量的创建以及张量相关属性的获取,数据类型的修改方式。都是一些简单的基本操作,但是对于不熟的代码还是要勤加练习。

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

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

相关文章

【内存】Linux 内核优化实战 - net.ipv4.tcp_max_tw_buckets

目录net.ipv4.tcp_max_tw_buckets 详解一、基本概念二、核心作用三、默认值四、调整场景需增大参数的场景需减小参数的场景五、查看与修改方法1. 查看当前值2. 临时修改(重启失效)3. 永久修改(重启生效)六、注意事项总结net.ipv4.…

短剧系统开发定制全流程解析:从需求分析到上线运营

一、短剧行业现状与系统开发价值短剧作为一种新兴的内容形态,近年来呈现爆发式增长态势。2023年中国短剧市场规模已突破300亿元,用户规模超过5亿,这种以"快节奏、强剧情、低成本"为特点的内容形式正在重塑数字娱乐产业格局。短剧系…

各服务器厂商调整BIOS睿频教程

调整BIOS睿频选项汇总:1、华为服务器:2、华为服务器V53、浪潮服务器4、浪潮服务器M45、 曙光服务器5.1 曙光I620-G205.2 曙光I620-G306、联想服务器(650系列)650系列的服务器对照截图信息修改对应项,修改为截图里的选项…

PyTorch笔记3----------统计学相关函数

1.基础函数 import torch a torch.rand(2,2) print("a:\n",a) print(########################) print("平均值:\n",torch.mean(a,dim0)) print("总和:\n",torch.sum(a,dim0)) print("所有元素的积:\n",torch.prod(a,dim0)) print(&…

【Prometheus】通过tar包部署单机版Prometheus 和 Pushgateway

在ECS(Elastic Compute Service)机器上通过tar包部署 Prometheus 和 Pushgateway,并配置 Prometheus 采集 Pushgateway 的数据,是一个常见的监控部署任务。以下是详细的步骤说明:🧩 环境准备 操作系统&…

Matlab 频谱分析 (Spectral Analysis)

文章目录1. 信号预处理 - 去直流分量2. 快速傅里叶变换(FFT)3. 功率谱密度(PSD)计算4. 主频率检测5. 谱质心计算6. 对数谱显示完整的信号处理流程实际应用示例1. 信号预处理 - 去直流分量 data data - mean(data);数学原理&…

【实时Linux实战系列】实时以太网与 TSN 基础

在实时系统中,网络通信的实时性和可靠性是确保系统正常运行的关键。实时以太网和时间敏感网络(TSN)技术为实时数据传输提供了强大的支持。TSN通过一系列协议和机制,确保数据能够在预定的时间内可靠传输,满足工业自动化…

茶颜悦色JAVA面试分享

1、自我介绍项目2、设计一个爆款饮品秒杀系统:如何解决“幽兰拿铁”上新时的瞬时10万QPS?从缓存、限流、库存扣减到订单创建的全流程设计。3、订单超市未支付自动取消:如何实现高精度(30分钟精确到秒)且低延迟的订单状…

OneCode图表配置速查手册

前言 在数据可视化日益成为业务决策核心驱动力的今天,高效、灵活的图表配置系统已成为开发人员不可或缺的工具。OneCode图表组件凭借其丰富的图表类型与精细化的配置能力,为开发者提供了构建专业数据可视化界面的完整解决方案。然而,随着图表…

二维码驱动的独立站视频集成方案

一、独立站视频嵌入的技术挑战与架构设计 在独立站建设中,视频内容的集成面临着性能、安全与用户体验的三重挑战。传统直接嵌入方式会导致页面加载缓慢(平均增加3-5秒首屏时间)、服务器带宽消耗激增(单视频日均播放1000次约产生50…

【STM32】预分频因子(Prescaler)和重装载值(Reload Value)

在 STM32 的 独立看门狗(IWDG) 中(结合上文【STM32】独立看门狗(提供完整实例代码)),为了控制看门狗的超时时间(溢出时间),我们主要设置两个参数:…

从0到1搭建同城O2O外卖平台:外卖系统源码架构解析与实战指南

当下,越来越多的创业者、品牌连锁商家,甚至社区集群,开始布局属于自己的本地外卖平台。而对于软件开发者和技术团队而言,如何从0到1搭建一套可落地、可扩展、可持续运营的外卖系统,成为了一个既现实又挑战性十足的话题…

MySQL 8.0 OCP 1Z0-908 题目解析(16)

题目61 Choose the best answer. Examine this command, which executes successfully: mysqlbackup --defaults-file/backups/server-my.cnf --backup-dir/backups/full copy-backWhich statement is true about the copy-back process? ○ A) It restores files from the da…

WSL命令

以下是 WSL&#xff08;Windows Subsystem for Linux&#xff09;的常用命令大全&#xff0c;涵盖安装、管理、网络、文件交互等场景&#xff0c;方便快速查阅和使用&#xff1a;1. 安装与版本管理命令说明wsl --install默认安装 WSL 和 Ubuntuwsl --install -d <发行版名&g…

AI语音训练——GPT-SoVITS(GSV)

链接说明 github项目地址&#xff1a;RVC-Boss/GPT-SoVITS: 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 项目中文说明书&#xff1a; GPT-SoVITS指南//项目说明书里也有在线使用的链接 原项目作者B站教学视频&#xff1a;耗时两个…

事件委托版本tab栏切换

事件委托&#xff1a;是JavaScript中注册事件的常用技巧&#xff0c;也称事件委派、事件代理简单理解&#xff1a;原本需要注册在子元素的事件委托给父元素&#xff0c;让父元素担当事件监听的职务优点&#xff1a;减少注册次数&#xff0c;可提高程序性能原理&#xff1a;事件…

FLAN-T5:规模化指令微调的语言模型

摘要 在将数据集表述为指令的形式上进行语言模型微调&#xff0c;已被证明能够提升模型性能及其对未见任务的泛化能力。本文探讨了指令微调&#xff0c;特别关注以下三个方面&#xff1a;(1) 任务数量的扩展&#xff0c;(2) 模型规模的扩展&#xff0c;以及 (3) 基于链式思维&…

设计模式文章

1. 工厂模式 | 菜鸟教程

Xilinx Vivado开发环境快速导出hdf文件(bat批处理)

Xilinx FPGA使用Vivado开发环境创建MicroBlaze软核或ZYNQ PS侧SDK逻辑工程时&#xff0c;需要FPGA侧搭建的硬件平台文件&#xff0c;即hdf文件&#xff0c;常规方式是编译完成生成bit流文件后&#xff0c;通过File->Export->Export Hardware菜单来导出&#xff0c;在弹出…

UniApp 中实现智能吸顶 Tab 标签导航效果

前言在移动端应用开发中&#xff0c;Tab 标签导航是一种常见的交互模式。本文将详细介绍如何在 UniApp 中实现一个功能完善的智能吸顶 Tab 导航组件&#xff0c;该组件具有以下特性&#xff1a;&#x1f3af; 智能显示&#xff1a;根据滚动位置动态显示/隐藏&#x1f4cc; 吸顶…