Pytorch初步使用

文章目录

    • 创建张量
    • 指定设备
    • 沿轴计算

创建张量

如果说数组是numpy的操作对象,那么张量Tensor就是pytorch的操作单元,从数据内容来说,与高维数组是如出一辙的,但作为一个类,其构造函数支持通过声明张量的维度来进行初始化,示例如下

import torch as t
z = t.Tensor(3, 4)
print(z)
'''
tensor([[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]])
'''

在实际应用中,随机矩阵有着广泛的需求,torch中的rand可以生成随机张量

r = t.rand(3,4)

r是一个 3 × 4 3\times4 3×4的随机矩阵,内容如下

[ 0.6220 0.3771 0.4598 0.0340 0.6928 0.1479 0.9832 0.3954 0.8050 0.3466 0.9227 0.1516 ] \begin{bmatrix} 0.6220& 0.3771& 0.4598& 0.0340\\ 0.6928& 0.1479& 0.9832& 0.3954\\ 0.8050& 0.3466& 0.9227& 0.1516\\ \end{bmatrix} 0.62200.69280.80500.37710.14790.34660.45980.98320.92270.03400.39540.1516

指定设备

如果安装了显卡版本的pytorch,那么由pytorch创建的矩阵可以指明写在显卡中

ct = t.rand(5000, 5000, device=t.device('cpu'))
dt = t.rand(5000, 5000, device=t.device('cuda'))

显卡的并行结构在矩阵计算中展现出极大的威力,下面测试一下 5000 × 5000 5000\times5000 5000×5000的矩阵在计算时的速度差异

from timeit import timeit
timeit(lambda: ct@ct, number=10)    # 返回 7.714848299976438
timeit(lambda: dt@dt, number=10)    # 返回 1.27076860005036

相当于CPU需要0.7秒计算一次,而Cuda只需0.1秒,这个差距还会随着矩阵维度的增大而进一步增大。

沿轴计算

在统计中经常用到的求和、求平均值等,都会把一组数据样本压缩成一个值,这种操作对于张量来说就是降维操作。

如果把张量表示出来,那么一阶张量即为向量,二阶张量则为矩阵,三阶张量则可排布在一个立方体中,如果在这个立方体中创建一个坐标系,则相当于有三个坐标轴。

而对张量进行降维操作时,比如求平均值,若不指定坐标轴,将对所有数据求平均值

t.mean(dt)
# tensor(0.5000, device='cuda:0')

通过axis来指定坐标轴,则可在相应的坐标轴上操作

t.mean(dt, axis=1)
# tensor([0.4965, 0.5018, ..., 0.5057, 0.4993], device='cuda:0')

除了这种降维操作之外,很多时候也需要对张量进行升维,比如把一个向量沿着另一个轴进行复制,并排布在矩阵中

v = t.arange(5)     # 0, 1, 2, 3, 4
v.repeat(3)         # 
# tensor([0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4])
v31 = v.repeat(3,1)

v31表示在第一个轴的方向复制1次,在第二个轴的方向复制3次,得到结果为

[ 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 ] \begin{bmatrix} 0& 1& 2& 3& 4\\0& 1& 2& 3& 4\\0& 1& 2& 3& 4 \end{bmatrix} 000111222333444

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

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

相关文章

clickhouse数据库磁盘空间使用率过高问题排查

一、前言 clickhouse天天触发磁盘使用率过高告警,所以需要进行排查,故将排查记录一下。 二、排查过程 1、连接上进入clickhouse 2、执行语句查看各库表使用磁盘情况 SELECT database, table, formatReadableSize(sum(bytes_on_disk)) as disk_space F…

蓝桥杯物联网竞赛_STM32L071_8_ADC扩展模块

原理图: 扩展模块原理图: RP1和RP2分别对应着AIN1和AIN2,扭动它们,其对应滑动变阻器阻值也会变化 实验板接口原理图: 对应实验板接口PB1和PB0 即AN1对应PB1, AN2对应PB0 CubMx配置: ADC通道IN8和IN9才对…

C#.net使用npgsql批量写入数据入库到postgresql数据库

C#.net使用npgsql批量写入数据入库到postgresql数据库 npgsql批量存储数据1. 单条存储2. 批量存储 npgsql批量存储数据 转载自:https://blog.csdn.net/liuwanying0226/article/details/130825503 1. 单条存储 当有类型限定时,例如jsonb,在…

uniApp项目的创建,运行到小程序

一、项目创建 1. 打开 HBuilder X 2. 右击侧边栏点击新建,选择项目 3. 填写项目名,点击创建即可 注:uniapp中如果使用生命周期钩子函数,建议使用哪种 ?(建议使用Vue的) 二、运行 1. 运行前先登录 2. 登录后点击 manifest.js…

基于lambda简化设计模式

前言 虽说使用设计模式可以让复杂的业务代码变得清晰且易于维护,但是某些情况下,开发可能会遇到我为了简单的业务逻辑去适配设计模式的情况,本文笔者就以四种常见的设计模式为例,演示如何基于lambda来简化设计模式的实现。 策略…

WorkPlus高效助力企业沟通的专业级即时通讯软件

在当今高度信息化和全球化竞争的世界,企业需要一个高效便捷的沟通工具来促进团队协作、提高工作效率。在这样的背景下,WorkPlus作为一款专业级的即时通讯软件应运而生。让我们一起深入了解WorkPlus,探讨其在企业沟通中的领先优势和卓越能力。…

平衡二叉树

AVL简称平衡二叉树,缩写为BBST,由苏联数学家 Adelse-Velskil 和 Landis 在 1962 年提出。 二叉树是动态查找的典范,但在极限情况下,二叉树的查找效果等同于链表,而平衡二叉树可以完美的达到 log ⁡ 2 n \log_2 n log2…

ElementPlus table 中嵌套 input 输入框

文章目录 需求分析 需求 vue3 项目中 使用UI组件库 ElementPlus 时&#xff0c;table 中嵌入 input输入框 分析 <template><div class"p-10"><el-table :data"tableData" border><el-table-column prop"date" label&qu…

课堂练习4.1:段式内存管理

4-1 课堂练习4.1&#xff1a;段式内存管理 段式内存管理以段为单位分配内存空间&#xff0c;段内连续&#xff0c;段间可以不连续。段可以很大&#xff0c;比如数据段、代码段、栈段等。本实训分析 Linux 0.11 的段式内存管理技术。 第1关1 号进程 mynext 变量的逻辑地址与线性…

cache教程 3.HTTP服务器

上一节我们实现了单机版的缓存服务&#xff0c;但是我们的目标是分布式缓存。那么&#xff0c;我们就需要把缓存服务部署到多态机器节点上&#xff0c;对外提供访问接口。客户端就可以通过这些接口去实现缓存的增删改查。 分布式缓存需要实现节点间通信&#xff0c;而通信方法…

【面试经典150 | 二叉树】翻转二叉树

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;递归方法二&#xff1a;迭代 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题…

4-SpringMVC

文章目录 项目源码地址回顾-MVC什么是MVC&#xff1f;MVC各部分组成 回顾-ServletMaven创建Web项目1、创建Maven父工程pom&#xff0c;并导入依赖2、用Maven新建一个Web Module3、代码&#xff1a;HelloServlet.java3、代码-hello.jsp3、代码-web.xml4、配置Tomcat5、浏览器测试…

github使用方法【附安装包】

如果你是一枚Coder&#xff0c;但是你不知道Github&#xff0c;那么我觉的你就不是一个菜鸟级别的Coder&#xff0c;因为你压根不是真正Coder&#xff0c;你只是一个Code搬运工。说明你根本不善于突破自己&#xff01;为什么这么说原因很简单&#xff0c;很多优秀的代码以及各种…

高级系统架构设计师之路

前言&#xff1a;系 统 架 构 设 计 师 (System Architecture Designer)是项目开发活动中的众多角色之 一 &#xff0c;它可 以是 一个人或 一个小组&#xff0c;也可以是一个团队。架构师 (Architect) 包含建筑师、设计师、创造 者、缔造者等含义&#xff0c;可以说&#xff0…

边缘计算系统设计与实践:引领科技创新的新浪潮

文章目录 一、边缘计算的概念二、边缘计算的设计原则三、边缘计算的关键技术四、边缘计算的实践应用《边缘计算系统设计与实践》特色内容简介作者简介目录前言/序言本书读者对象获取方式 随着物联网、大数据和人工智能等技术的快速发展&#xff0c;传统的中心化计算模式已经无法…

基于ssm人力资源管理系统论文

摘 要 随着企业员工人数的不断增多&#xff0c;企业在人力资源管理方面负担越来越重&#xff0c;因此&#xff0c;为提高企业人力资源管理效率&#xff0c;特开发了本人力资源管理系统。 本文重点阐述了人力资源管理系统的开发过程&#xff0c;以实际运用为开发背景&#xff0…

【大数据】Hudi 核心知识点详解(一)

Hudi 核心知识点详解&#xff08;一&#xff09; 1.数据湖与数据仓库的区别 &#xff1f;1.1 数据仓库1.2 数据湖1.3 两者的区别 2.Hudi 基础功能2.1 Hudi 简介2.2 Hudi 功能2.3 Hudi 的特性2.4 Hudi 的架构2.5 湖仓一体架构 3.Hudi 数据管理3.1 Hudi 表数据结构3.1.1 .hoodie …

【C语言】位运算实现二进制数据处理及BCD码转换

文章目录 1&#xff0e;编程实验&#xff1a;按short和unsigned short类型分别对-12345进行左移2位和右移2位操作&#xff0c;并输出结果。2&#xff0e;编程实验&#xff1a;利用位运算实现BCD码与十进制数之间的转换&#xff0c;假设数据类型为unsigned char。3&#xff0e;编…

FPGA | Verilog基础语法

这里写自定义目录标题 Case语句系统任务$dumpfile | 为所要创建的VCD文件指定文件名。$dumpvar | 指定需要记录到VCD文件中的信号$fscanf$fread菜鸟教程连接 Case语句 case(case_expr)condition1 : true_statement1 ;condition2 : true_stat…

多线程(进阶二:CAS)

目录 一、CAS的简单介绍 CAS逻辑&#xff08;用伪代码来描述&#xff09; 二、CAS在多线程中简单的使用 三、原子类自增的代码分析 都看到这了&#xff0c;点个赞再走吧&#xff0c;谢谢谢谢谢 一、CAS的简单介绍 CAS的全称&#xff1a;“Compare And Swap”&#xff0c;字…