当前位置: 首页 > news >正文

深度学习torch基础知识

torch.

  • detach()
  • 拼接函数torch.stack()
  • torch.nn.DataParallel()
  • np.clip()
  • torch.linspace()
  • PyTorch中tensor.repeat()
  • pytorch索引查找 index_select

detach()

detach是截断反向传播的梯度流
将某个node变成不需要梯度的Varibale。因此当反向传播经过这个node时,梯度就不会从这个node往前面传播。

拼接函数torch.stack()

拼接:将多个维度参数相同的张量连接成一个张量

a=torch.tensor([[1,2,3],[4,5,6]])
b=torch.tensor([[10,20,30],[40,50,60]])
c=torch.tensor([[100,200,300],[400,500,600]])
print(torch.stack([a,b,c],dim=0))
print(torch.stack([a,b,c],dim=1))
print(torch.stack([a,b,c],dim=2))
print(torch.stack([a,b,c],dim=0).size())
print(torch.stack([a,b,c],dim=1).size())
print(torch.stack([a,b,c],dim=2).size())
#输出结果为:
tensor([[[  1,   2,   3],[  4,   5,   6]],[[ 10,  20,  30],[ 40,  50,  60]],[[100, 200, 300],[400, 500, 600]]])
tensor([[[  1,   2,   3],[ 10,  20,  30],[100, 200, 300]],[[  4,   5,   6],[ 40,  50,  60],[400, 500, 600]]])
tensor([[[  1,  10, 100],[  2,  20, 200],[  3,  30, 300]],[[  4,  40, 400],[  5,  50, 500],[  6,  60, 600]]])
torch.Size([3, 2, 3])
torch.Size([2, 3, 3])
torch.Size([2, 3, 3])

torch.nn.DataParallel()

torch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0)
module即表示你定义的模型,device_ids表示你训练的device,output_device这个参数表示输出结果的device,而这最后一个参数output_device一般情况下是省略不写的,那么默认就是在device_ids[0],也就是第一块卡上。

np.clip()

a = np.arange(10)
np.clip(a, 1, 8)
array([1, 1, 2, 3, 4, 5, 6, 7, 8, 8]) # a被限制在1-8之间
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # 没改变a的原值np.clip(a, 3, 6, out=a) # 修剪后的数组存入到a中
array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6])

torch.linspace()

函数的作用是,返回一个一维的tensor,这个张量包含了从start到end,分成steps个线段得到的向量。

torch.linspace(start, end, steps=100, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) 
→ Tensor

例如

import torch
print(torch.linspace(3,10,5))
#tensor([ 3.0000,  4.7500,  6.5000,  8.2500, 10.0000])type=torch.float
print(torch.linspace(-10,10,steps=6,dtype=type))
#tensor([-10.,  -6.,  -2.,   2.,   6.,  10.])

PyTorch中tensor.repeat()

当参数只有两个时,第一个参数表示的是行复制的次数,第二个参数表示列复制的次数;
当参数有三个时,第一个参数表示的是通道复制的次数,第二个参数表示的是行复制的次数,第三个参数表示列复制的次数。
(1). 对于已经存在的维度复制

import torcha = torch.tensor([[1], [2], [3]])  # 3 * 1
b = a.repeat(3, 2)
print('a\n:', a)
print('shape of a', a.size())  # 原始shape = (3,1)
print('b:\n', b)
print('shape of b', b.size())  # 新的shape = (3*3,1*2),新增加的数据通过复制得到'''   运行结果   '''
a:
tensor([[1],[2],[3]])
shape of a torch.Size([3, 1])  注: 原始shape =31)
b:tensor([[1, 1],[2, 2],[3, 3],[1, 1],[2, 2],[3, 3],[1, 1],[2, 2],[3, 3]])
shape of b torch.Size([9, 2])  新的shape =3*31*2

(2). 对于原始不存在的维度数量拓展

import torch
a = torch.tensor([[1, 2], [3, 4], [5, 6]])  # 3 * 2
b = a.repeat(3, 2, 1)   # 在原始tensor的0维前拓展一个维度,并把原始tensor的第1维扩张2倍,都是通过复制来完成的
print('a:\n', a)
print('shape of a', a.size())  # 原始维度为 (3,2)
print('b:\n', b)
print('shape of b', b.size())  # 新的维度为 (3,2*2,2*1)=(3,4,2)'''   运行结果   '''
a:tensor([[1, 2],[3, 4],[5, 6]])
shape of a torch.Size([3, 2])   注:原始维度为 (32)
b:tensor([[[1, 2],[3, 4],[5, 6],[1, 2],[3, 4],[5, 6]],[[1, 2],[3, 4],[5, 6],[1, 2],[3, 4],[5, 6]],[[1, 2],[3, 4],[5, 6],[1, 2],[3, 4],[5, 6]]])
shape of b torch.Size([3, 6, 2])   新的维度为 (32*22*1=342

pytorch索引查找 index_select

anchor_w = FloatTensor(scaled_anchors).index_select(1, LongTensor([0]))

先定义了一个tensor,这里用到了linspace和view方法。
第一个参数是索引的对象,第二个参数0表示按行索引,1表示按列进行索引,第三个参数是一个tensor,就是索引的序号,比如b里面tensor[0, 2]表示第0行和第2行,c里面tensor[1, 3]表示第1列和第3列

a = torch.linspace(1, 12, steps=12).view(3, 4)
print(a)
b = torch.index_select(a, 0, torch.tensor([0, 2]))
print(b)
print(a.index_select(0, torch.tensor([0, 2])))
c = torch.index_select(a, 1, torch.tensor([1, 3]))
print(c)-----输出结果-----
tensor([[ 1.,  2.,  3.,  4.],[ 5.,  6.,  7.,  8.],[ 9., 10., 11., 12.]])
tensor([[ 1.,  2.,  3.,  4.],[ 9., 10., 11., 12.]])
tensor([[ 1.,  2.,  3.,  4.],[ 9., 10., 11., 12.]])
tensor([[ 2.,  4.],[ 6.,  8.],[10., 12.]])

相关文章:

深度学习torch基础知识

torch. detach()拼接函数torch.stack()torch.nn.DataParallel()np.clip()torch.linspace()PyTorch中tensor.repeat()pytorch索引查找 index_select detach() detach是截断反向传播的梯度流 将某个node变成不需要梯度的Varibale。因此当反向传播经过这个node时,梯度…...

【JAVA】正则表达式是啥?

个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)&#xff0c…...

网络安全之原型链污染

目录: 目录: 一、概念 二、举例 三、 实操了解 总结 四、抛出原题,历年原题复现 第一题: 五、分析与原理 第二题: 八、分析与原理 九、具体操作,payload与结果 结果: 一、概念 Java…...

【腾讯云Cloud Studio实战训练营】使用Cloud Studio迅捷开发一个3D家具个性化定制应用

目录 前言: 一、腾讯云 Cloud Studio介绍: 1、接近本地 IDE 的开发体验 2、多环境可选,或连接到云主机 3、随时分享预览效果 4、兼容 VSCode 插件 5、 AI代码助手 二、腾讯云Cloud Studio项目实践(3D家具个性化定制应用&…...

【计算机网络】第四章 网络层(一)

文章目录 第四章 网络层4.1 网络层概述4.2 网络层提供的两种服务4.2.1 小结 第四章 网络层 网络层是计算机网络体系结构中的一个关键层,位于传输层上方、数据链路层下方。它负责将传输层提供的数据分割成适当大小的数据包,并在不同网络之间进行路由选择和…...

Elasticsearch删除文档

根据id删除 例如删除id为110的文档 DELETE /ffbf/_doc/110返回信息 {"_index" : "ffbf","_type" : "_doc","_id" : "110","_version"...

MySQL数据库如何实现AX规范

本文我们来讨论 MySQL 的 XA 规范有哪些应用相关的内容。 MySQL 为我们提供了分布式事务解决方案,在前面的内容中 聊一聊分布式事务的解决方案 提到过 binlog 的同步,其实是 MySQL XA 规范的一个应用,那么 XA 规范是如何定义的,具…...

mac安装nvm

如果安装过node,须得卸载 sudo npm uninstall npm -gsudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*sudo rm -rf /usr/local/include/node /Users/$USER/.npmsudo rm /usr/local/bin/nodesudo rm /usr/local/share/m…...

使用 ckeditor gem

安装 1.vim Gemfile 对于基本用法,只需包含 ckeditor gem: gem ckeditor gem paperclip 2. 运行 $ bundle install 3. 运行 $ rails generate ckeditor:install --ormactive_record --backendpaperclip 4. 在config/initializers/assets.rb: Ra…...

Windows环境下Node.js二进制版安装教程

文章目录 前言一 下载Node.js二 设置环境变量三 配置全局安装和缓存路径四 设置仓库 前言 新版的Node.js已自带npm,就在Node.js下载完成解压后的文件内,的node_modules包中。 npm的作用:是对Node.js依赖的包进行管理,类似maven。…...

Spring中的注解装配

1.关于Spring中的注解装配的作用 Spring中的注解装配简化了xml中bean的配置,大大提高了开发效率。 原本我们想在spring容器中使用某个类需要先在xml中配置该类的bean。使用注解后可以直接通过包扫描的方式自动在我们调用类时自动装配。 例如: 当我们想…...

深度优先搜索|130, 200

深度优先搜索|130. 被围绕的区域, 200. 岛屿数量 被围绕的区域岛屿数量 被围绕的区域 这个题应该是从外到里做,我们应该去找和外圈的’O’相通的所有’O’,而不是去找内圈被包围的’O’。 所以我们做的就是从边界的’O’出发,把和他相连的所…...

go-resty

一. go-resty一个优秀的 HTTP 客户端库 go-resty超时控制示例 go-resty自动重示例 go-resty TLS示例 go-resty 与连接池 go-resty 与代理 go-resty 与认证 总结go-resty中提供的API 一. go-resty一个优秀的 HTTP 客户端库 在 Golang 标准库中提供了net/http 具体参考该文档 这…...

香港服务器速度不稳定的原因有哪些

香港服务器速度不稳定的原因有哪些 网络连接的稳定性和速度对于个人和企业来说至关重要。然而,许多用户经常遇到香港服务器速度不稳定的问题,有时候快,有时候慢,这给他们的在线体验和工作效率带来了困扰。本文将探讨香港服务器速…...

企业架构NOSQL数据库之MongoDB

目录 一、背景描述及其方案设计 (一)业务背景描述 (二)模拟运维设计方案 二、Mongodb介绍 (一)nosql介绍 (二)产品特点 1、存储性 2、 效率性 3、结构 三、安装和配置 (一&#xff09…...

鸟哥马哥共叙Linux发展

导读北京时间3月28日,由51CTO学院和人民邮电出版社信息技术分社联合举办的[开放见远]“鸟哥”大陆行Linux技术沙龙在位于北京市西三环久凌大厦的51CTO学院举行。 台湾著名Linux网站——“鸟哥的Linux私房菜”站长蔡德明,51CTO学院讲师马哥教育创始人马永…...

OpenCV中常用算子

一、图像运算 Mat src, src1, src2, dst;// 图像运算 加 减 乘 除cv::add(src1, src2, dst); // 相加:src1src2cv::scaleAdd(src1, 1.0, src2, dst); // 相加:1.0*src1src2cv::addWeighted(src1, 0.3, src2, 0.7,…...

Android 11.0 系统限制上网系列之iptables用IOemNetd实现app某个时间段禁止上网的功能实现

1.前言 在11.0的系统rom定制化开发中,对于系统限制网络的使用,在system中netd网络这块的产品需要中,会要求设置app某个时间段禁止上网的功能, liunx中iptables命令也是比较重要的,接下来就来在IOemNetd这块实现app某个时间段禁止上网的的相关功能,就是在 系统中只能允许…...

【JavaSE】面向对象编程思想之继承

【本节目标】 1. 继承 2. 组合 目录 1. 为什么需要继承 2. 继承概念 3. 继承的语法 4. 父类成员访问 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. 子类构造方法 7. super和this 8. 再谈初始化 9. protected 关键字 10. 继承方式…...

Golang make和new的区别

make 和 new new函数 作用 分配内存设置零值返回指针 eg: type Student struct{name stringage int }func main(){//new 一个内建类型num : new(int)fmt.Println(*num) //打印:0//new一个自定义类型s : new(Student)s.name "yx"fmt.Prin…...

数据库凭证的安全管理

数据库凭证是任何组织中最重要的安全资产之一。当这些凭证落入不法之徒手中时,后果可能极其严重——从数据泄露到监管罚款,乃至声誉受损。掌握如何正确管理、存储和轮换这些凭证,对于维护安全的数据库环境至关重要。 了解密钥管理 密钥管理…...

从一次真实的炸板经历说起:隔离变压器、差分探头、拔地线,开关电源调试三件套到底怎么选?

开关电源调试安全指南:隔离变压器、差分探头与地线处理的工程决策 实验室里弥漫着焦糊味的那一刻,我才真正理解电源调试中的安全细节有多重要。那次为了赶进度跳过了标准操作流程,结果不仅损失了价值上万的开关电源模块,还差点危及…...

6、替换元素是什么?

目录 一、标准面试回答 二、怎么理解“替换”? 例子 1:img 例子 2:input 三、常见替换元素有哪些? 四、非替换元素是什么? 五、替换元素的特点 1. 内容由外部资源或浏览器决定 2. 通常有“固有尺寸” 3. 某些…...

PeachPie性能优化10个技巧:让您的PHP应用在.NET平台上飞起来

PeachPie性能优化10个技巧:让您的PHP应用在.NET平台上飞起来 【免费下载链接】peachpie PeachPie - the PHP compiler and runtime for .NET and .NET Core 项目地址: https://gitcode.com/gh_mirrors/pe/peachpie PeachPie作为将PHP代码编译为.NET平台可执行…...

GitHub汉化插件终极指南:快速实现GitHub中文界面的完整教程

GitHub汉化插件终极指南:快速实现GitHub中文界面的完整教程 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾经在使…...

终极艾尔登法环帧率解锁与游戏增强完整指南:如何彻底释放高刷新率显示器潜力

终极艾尔登法环帧率解锁与游戏增强完整指南:如何彻底释放高刷新率显示器潜力 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.…...

轻量级AI助手开发:基于通义千问1.8B的智能问答系统搭建

轻量级AI助手开发:基于通义千问1.8B的智能问答系统搭建 1. 项目概述与核心价值 在AI应用开发领域,如何在资源受限环境下部署高效的智能问答系统一直是开发者面临的挑战。通义千问1.5-1.8B-Chat-GPTQ-Int4模型通过量化压缩技术,在保持良好对…...

5分钟快速上手:MelonLoader Unity游戏模组加载器终极指南

5分钟快速上手:MelonLoader Unity游戏模组加载器终极指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否想为…...

傍轴假设工具

摘要 由于傍轴行为在无数光学系统中扮演的实际角色,以及由于傍轴假设通常需要极大地简化所涉及的数学和数值,因此为物理光学软件用户提供从这些优势中受益的可能性是有意义的。这正是VirtualLab Fusion所做的事情:在专门以此为目的设计的控制…...

Cortex-A7 MPCore 架构

鉴于学习的硬件使用的是Cortex-A7架构,本章学习该架构的相关知识。了解了 Cortex-A7 架构以后有利于我们后面的学习,因为后面有很多例程涉及到 Cortex-A7 架构方面的知识,比如处理器模型、 Cortex-A7 寄存器组等等。Cortex-A7 MPCore 简介Cor…...