位置: IT常识 - 正文

torch.where()用法(torch.save用法)

编辑:rootadmin
torch.where()用法 torch.where用法前言1、torch.where()常规用法1.1 形状相同1.2 标量情况1.3 形状不同2、torch.where()特殊用法总结参考链接前言

推荐整理分享torch.where()用法(torch.save用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:torch.sort用法,torch.save用法,torch.cat用法,torch.save用法,torch where,torch.where()函数,torch where,torch的用法,内容如对您有帮助,希望把文章链接给更多的朋友!

本文主要讲述torch.where()的两种用法,第一种是最常规的,也是官方文档所注明的;第二种就是配合bool型张量的计算

1、torch.where()常规用法

我们先看官方文档的解释:

torch.where(condition, x, y) 根据条件,也就是condiction,返回从x或y中选择的元素的张量(这里会创建一个新的张量,新张量的元素就是从x或y中选的,形状要符合x和y的广播条件)。 Parameters解释如下: 1、condition (bool型张量) :当condition为真,返回x的值,否则返回y的值 2、x (张量或标量):当condition=True时选x的值 2、y (张量或标量):当condition=False时选y的值

我看了好些博文,他们都说x和y的形状必须相同,完全胡扯嘛,官方文档写的明明白白的:The tensors condition, x, y must be broadcastable. 也就是说condition、x、y能进行广播就行,并不要求形状一样。下面看用法:

1.1 形状相同

先演示形状相同的情况:

import torchx = torch.tensor([[1, 2, 3], [3, 4, 5], [5, 6, 7]])y = torch.tensor([[5, 6, 7], [7, 8, 9], [9, 10, 11]])z = torch.where(x > 5, x, y)print(f'x = {x}')print(f'=========================')print(f'y = {y}')print(f'=========================')print(f'x > 5 = {x > 5}')print(f'=========================')print(f'z = {z}')>print result:x = tensor([[1, 2, 3], [3, 4, 5], [5, 6, 7]])=========================y = tensor([[ 5, 6, 7], [ 7, 8, 9], [ 9, 10, 11]])=========================x > 5 = tensor([[False, False, False], [False, False, False], [False, True, True]])=========================z = tensor([[5, 6, 7], [7, 8, 9], [9, 6, 7]])torch.where()用法(torch.save用法)

上面定义了x和y,两者的形状shape=(3, 3)相同,然后condition = x > 5也是就x中的每个元素值都要大于5,这里就能看到x中第0行和第1行都是False,只有第2行的1、2列是True,然后前面说了,为True时使用的是x中的值,为False时使用的是y中的值,那么新创建的z前两行和第2行0列使用的是y中的值,剩下两个使用x中的值,z的shape也是(3, 3)。

1.2 标量情况x = 3y = torch.tensor([[1, 5, 7]])z = torch.where(y > 2, y, x)print(f'y > 2 = {y > 2}')print(f'=========================')print(f'z = {z}')print(f'y > 2 = {y > 2}')print(f'=========================')print(f'z = {z}')>print result:y > 2 = tensor([[False, True, True]])=========================z = tensor([[3, 5, 7]])

在这里,x是一个标量,condition = y > 2,你要是问我为什么不把condition设为condition = x > 2,很简单,x > 2不是bool Tensor。这里标量和张量是可以进行广播的!! example:

a = torch.tensor([1, 5, 7])b = 3c = a + bd = torch.tensor([3, 3, 3])e = a + dprint(f'c = {c}')print(f'e = {e}')>print result:c = tensor([ 4, 8, 10])d = tensor([ 4, 8, 10])

其实就是把b = 3拉成了[3, 3, 3],也是就d那样。

1.3 形状不同

其实标量那里也算是形状不同了,这里我再啰嗦一下吧,看例子:

x = torch.tensor([[1, 3, 5]])y = torch.tensor([[2], [4], [6]])z = torch.where(x > 2, x, y)print(f'x = {x}')print(f'=========================')print(f'y = {y}')print(f'=========================')print(f'x > 2 = {x > 2}')print(f'=========================')print(f'z = {z}')>print result:x = tensor([[1, 3, 5]])=========================y = tensor([[2], [4], [6]])=========================x > 2 = tensor([[False, True, True]])=========================z = tensor([[2, 3, 5], [4, 3, 5], [6, 3, 5]])

上面x.shape=(1, 3) y.shape=(3, 1),然后condition = x > 2的shape=(1, 3),是可广播的,所以运算也能成功,在计算torch.where(x > 2, x, y)时,分别对x、y、condition进行广播,x.shape=(3, 3),y.shape=(3, 3),condition.shape=(3, 3) 所以y的值替换第0列,第1、2列为x的值。 更多的广播形式请读者朋友自行尝试

2、torch.where()特殊用法

torch.where(a & b) a和b都是bool Tensor,返回的是一个元组,元组第一项是a、b中都为True的行的index的Tensor,第二项是a、b都为True列的index的Tensor

请看例子:

a = torch.tensor([[0, 1, 1], [1, 0, 0], [0, 0, 1]], dtype=torch.bool)b = torch.ones((3, 3), dtype=torch.bool)c = torch.where(a & b)print(f'a = {a}')print(f'=========================')print(f'b = {b}')print(f'=========================')print(f'c = {c}')>print result:a = tensor([[False, True, True], [ True, False, False], [False, False, True]])=========================b = tensor([[True, True, True], [True, True, True], [True, True, True]])=========================c = (tensor([0, 0, 1, 2]), tensor([1, 2, 0, 2]))

c就是一个元组,第0项是a、b都为True的行标,第1项是a、b都为True的列标

总结

以上就是torch.where()的两种用法,看起来比较麻烦,多练练也就是那样,特别一点的就是一个广播机制一个特殊用法,欢迎评论指正! 请尊重原创,拒绝转载!!!

参考链接

https://pytorch.org/docs/stable/generated/torch.where.html#torch.where https://pytorch.org/docs/stable/notes/broadcasting.html#broadcasting-semantics https://numpy.org/doc/stable/user/basics.broadcasting.html

本文链接地址:https://www.jiuchutong.com/zhishi/289743.html 转载请保留说明!

上一篇:斯诺多尼亚国家公园多尔威泽兰城堡,英国威尔士康威 (© Sebastian Wasek/Sime/eStock Photo)(斯诺多尼亚山)

下一篇:雪花 (© TothGaborGyula/Getty Images Plus)

  • 钱包在哪里(钱包在哪里)(钱包里的钱怎么使用)

    钱包在哪里(钱包在哪里)(钱包里的钱怎么使用)

  • 如何同步手机微信和电脑微信步(如何同步手机微信记录到电脑微信上)

    如何同步手机微信和电脑微信步(如何同步手机微信记录到电脑微信上)

  • matepad11可以插手机卡吗(matepad11可以插sd卡吗)

    matepad11可以插手机卡吗(matepad11可以插sd卡吗)

  • 惠普打印机136w如何连接无线打印(惠普打印机136w连接wifi)

    惠普打印机136w如何连接无线打印(惠普打印机136w连接wifi)

  • 双显卡会自动切换吗(双显卡自动切换规则)

    双显卡会自动切换吗(双显卡自动切换规则)

  • 苹果靠近传输没反应(iphone靠近传输)

    苹果靠近传输没反应(iphone靠近传输)

  • flv是什么格式的(flv是什么格式的视频可以在投影上看吗)

    flv是什么格式的(flv是什么格式的视频可以在投影上看吗)

  • 苹果x已停用连接itunes是什么意思(苹果x停用连接iTunes怎么弄)

    苹果x已停用连接itunes是什么意思(苹果x停用连接iTunes怎么弄)

  • 蓝牙耳机放在盒子里就可以充电了吗(蓝牙耳机放在盒子里灯一直亮红灯)

    蓝牙耳机放在盒子里就可以充电了吗(蓝牙耳机放在盒子里灯一直亮红灯)

  • 爱奇艺免流量什么意思(爱奇艺的免流量是什么)

    爱奇艺免流量什么意思(爱奇艺的免流量是什么)

  • 申请第二个微信号不用手机号可以吗(同一台手机怎么申请第二个微信)

    申请第二个微信号不用手机号可以吗(同一台手机怎么申请第二个微信)

  • 六类水晶头可以接五类线吗(六类水晶头可以用在超五类网线上吗)

    六类水晶头可以接五类线吗(六类水晶头可以用在超五类网线上吗)

  • 荣耀v30有指纹解锁吗(荣耀v30指纹解锁在哪里设置)

    荣耀v30有指纹解锁吗(荣耀v30指纹解锁在哪里设置)

  • 魅族a680q是什么型号(魅族a6800是什么型号)

    魅族a680q是什么型号(魅族a6800是什么型号)

  • 手机自带相机不见了怎么恢复(手机自带相机不能拍照的原因)

    手机自带相机不见了怎么恢复(手机自带相机不能拍照的原因)

  • nova65g参数(nova65g参数详细参数)

    nova65g参数(nova65g参数详细参数)

  • 小米手环4充满要多久(小米手环4充满电会提示吗)

    小米手环4充满要多久(小米手环4充满电会提示吗)

  • 电脑运行程序怎么打开(电脑运行程序怎么看)

    电脑运行程序怎么打开(电脑运行程序怎么看)

  • 荣耀20i怎么关闭后台(荣耀20i怎么关闭横屏)

    荣耀20i怎么关闭后台(荣耀20i怎么关闭横屏)

  • 手机卡抽了打电话啥提示(手机卡抽了打电话怎么办)

    手机卡抽了打电话啥提示(手机卡抽了打电话怎么办)

  • nvme固态有必要吗(有必要买nvme固态移动)

    nvme固态有必要吗(有必要买nvme固态移动)

  • 抖音左右镜像怎拍摄教(抖音左右镜像怎么调整)

    抖音左右镜像怎拍摄教(抖音左右镜像怎么调整)

  • 微博怎么看访客(微博怎么看访客记录)

    微博怎么看访客(微博怎么看访客记录)

  • 为什么看抖音总是卡(为什么看抖音总是觉得那个人就是我)

    为什么看抖音总是卡(为什么看抖音总是觉得那个人就是我)

  • 10倍效能不是梦:“软件工程3.0”之下软件研发(10倍理论)

    10倍效能不是梦:“软件工程3.0”之下软件研发(10倍理论)

  • 一般纳税人抵扣小规模期间的专票怎么解决
  • 纳税调整项目包括哪些?请简单列举
  • 代收代缴消费税会计分录
  • 口罩属于什么经营类别
  • 所得税不计提直接缴纳,年末一次性计提
  • 个体工商户每月需要申报个税吗
  • 事业单位已核销怎么处理
  • 银行属于个人吗
  • 客户已经抵扣的发票怎么开负数发票给对方
  • 代扣代缴的增值税
  • 个体户发放现金工资税务局认可吗
  • 增值税发票校验码是什么意思
  • 个人无偿受赠房屋 个人所得税 张英泉
  • 购进原材料直接销售应该怎样结转成本呢
  • 资产减值损失是什么类科目
  • 往来形式的投资款是借款吗
  • 合作社免税收入需要成本吗?
  • 非正常损失怎么处理
  • 发票金额大于实际支付金额如何报账
  • 民间非营利组织会计制度最新版
  • win7硬盘安装win10教程
  • 销售折让和折扣的风险点
  • 客户罚款记哪个科目
  • 错误代码:0x0000428
  • 汽车空调不制冷的原因有六种
  • 可抵扣的费用
  • 波特兰在哪
  • 河马是站在睡觉吗
  • 建筑物附属设备包括哪些
  • 增值税的法律法规最新
  • 特定业务计算的应纳税所得额是指
  • 使用php连接多种数据库
  • 新个税讲解
  • lxml&xpath一站式教学
  • PyTorch 深度学习实战 | 基于生成式对抗网络生成动漫人物
  • 学会这两种方式英语
  • js轮播图视频教程
  • numpy的简单例子
  • php怎么转go
  • php_curl.dll
  • 应收及预付款项的思维导图
  • 合并报表为什么要抵消子公司所有者权益
  • 税票电子发票怎么开
  • python函数如何返回列表
  • Ficstar Software � Web Data Extraction Tools
  • 收到退税收入
  • 收客户样品费怎么做分录
  • 应收账款收不回来做坏账处理分录
  • 汽车车票增值税税率
  • 固定资产盘盈为何要交所得税
  • 营业执照是什么字体
  • 季度所得税计提分录
  • 水利基金减免
  • 销售折让如何核算
  • 同城票据交换差额户的帐号怎么查对方的帐号
  • 公交卡充值发票怎么开
  • 上期留抵本期抵扣怎么做分录
  • 已经开了发票需要退款怎么处理?
  • 会计往来账如何记账
  • 商品销售成本的计算可以采用逆算成本法,其操作方法是
  • sql server使用sql语句
  • ubuntu系统中文
  • window系统大全
  • xp系统开机后不停重启
  • mac画图的app叫什么
  • Win7旗舰版系统文件名称
  • win8触摸板失灵怎么办
  • win7旗舰版磁盘清理
  • linux中病毒了怎么处理
  • OpenGL Tips: 在Visual C++中调用FreeGLUT
  • parentElement,srcElement的使用小结
  • ssh连不上centos
  • 详细说明js的执行过程
  • nodejs爬虫技术
  • three. js
  • javascript高级程序设计pdf百度云
  • android圆形按钮
  • android面试题网站
  • 税控开票软件里的汇总怎么弄
  • 金水区地税局办事大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设