位置: 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)

  • 博客营销新创意内容的九个寻找素材的方法(博客营销范文)

    博客营销新创意内容的九个寻找素材的方法(博客营销范文)

  • 小米平板5怎么换字体(小米平板5怎么样,性价比高吗?)

    小米平板5怎么换字体(小米平板5怎么样,性价比高吗?)

  • 中国移动一号双卡怎么办理(中国移动一号双终端业务什么时候恢复)

    中国移动一号双卡怎么办理(中国移动一号双终端业务什么时候恢复)

  • 表格里查找快捷键ctrl加什么(表格里查找快捷键ctrl加F没反应)

    表格里查找快捷键ctrl加什么(表格里查找快捷键ctrl加F没反应)

  • 微信删了对方还能看到我朋友圈吗(微信删了对方还能发消息过来)

    微信删了对方还能看到我朋友圈吗(微信删了对方还能发消息过来)

  • 微信注销后好友还能看到我吗(微信注销后好友视角)

    微信注销后好友还能看到我吗(微信注销后好友视角)

  • 摩托罗拉折叠手机发布时间(摩托罗拉折叠手机2023怎么样)

    摩托罗拉折叠手机发布时间(摩托罗拉折叠手机2023怎么样)

  • 腾讯会议截图会被监控么(腾讯会议截图会被谁看到)

    腾讯会议截图会被监控么(腾讯会议截图会被谁看到)

  • qq简洁模式有什么区别(qq简洁模式什么意思)

    qq简洁模式有什么区别(qq简洁模式什么意思)

  • 小米10充电要多久吗?(小米10充电要多少分钟)

    小米10充电要多久吗?(小米10充电要多少分钟)

  • 华为手机怎么连手机热点流量(华为手机怎么连接蓝牙耳机)

    华为手机怎么连手机热点流量(华为手机怎么连接蓝牙耳机)

  • 无法连接服务器1302什么意思(无法连接服务器1-10087是怎么回事)

    无法连接服务器1302什么意思(无法连接服务器1-10087是怎么回事)

  • 同一wifi检测不到dlna(在同一wifi下为什么搜索不到设备)

    同一wifi检测不到dlna(在同一wifi下为什么搜索不到设备)

  • 英特尔显卡驱动程序可以卸载吗(英特尔显卡驱动下载官网)

    英特尔显卡驱动程序可以卸载吗(英特尔显卡驱动下载官网)

  • ipadmini是什么时候上市的(ipadmini是哪一年出的)

    ipadmini是什么时候上市的(ipadmini是哪一年出的)

  • 回收站实际上是什么(回收站哪里找)

    回收站实际上是什么(回收站哪里找)

  • 抖音作品小三角是啥意思(抖音作品小三角怎么关闭)

    抖音作品小三角是啥意思(抖音作品小三角怎么关闭)

  • icloud怎么用恢复数据(icloud怎么恢复出厂设置)

    icloud怎么用恢复数据(icloud怎么恢复出厂设置)

  • 手机怎么截动态屏(手机怎么截长图 滚动截屏)

    手机怎么截动态屏(手机怎么截长图 滚动截屏)

  • 戴尔触摸屏怎么关闭(戴尔触摸屏怎么锁定)

    戴尔触摸屏怎么关闭(戴尔触摸屏怎么锁定)

  • 饿了么的订单怎么删除(饿了么的订单怎么退款)

    饿了么的订单怎么删除(饿了么的订单怎么退款)

  • 怎样取消流量套餐(怎样取消流量套餐自动续费)

    怎样取消流量套餐(怎样取消流量套餐自动续费)

  • 抖音怎么评论发表情包(抖音怎么评论发图片不是表情包)

    抖音怎么评论发表情包(抖音怎么评论发图片不是表情包)

  • 如何成为架构师(如何成为架构师 源码)

    如何成为架构师(如何成为架构师 源码)

  • ios13音量在哪调(iphone13调节音量)

    ios13音量在哪调(iphone13调节音量)

  • 申请百度地图开发者AK和基本使用(百度地图 申请)

    申请百度地图开发者AK和基本使用(百度地图 申请)

  • 企业土地使用税征收标准
  • 卖出看跌期权的损益图
  • 税控盘怎么增加专票
  • 接受捐赠计入什么费用
  • 无形资产和固定资产的折旧
  • 企业所得税季度申报
  • 支付单位结算卡年费计入什么科目
  • 商业承兑到期对方不付款如何起诉
  • 非居民企业间接转让股权案例
  • 劳务派遣公司如何缴纳残疾人保障金
  • 企业发工资哪些需要缴个人所得税?
  • 个人劳务报酬个人所得税怎么算
  • 免税和不征税货一样吗
  • 停车服务费的税率
  • 物业公司停车费怎么开票
  • 外地餐费计入什么账户
  • 做季报和月报增发的区别
  • 特种设备培训费计入什么会计科目
  • 定期定额怎么报税
  • 个体工商户要交附加税吗
  • 在window10中可以使用什么窗口
  • 主营业务收入科目应按什么进行明细核算
  • php快递查询系统
  • 在win7中如何设置屏幕保护程序
  • php封装composer包
  • windows无法验证此设备数字签名
  • win7怎么添加设备
  • 怎么修改boot启动项
  • 建造合同完工百分比法
  • 打开苹果safari浏览器
  • 炫酷登录注册教程
  • php实现图片上传
  • sqlserver2008数据库定时备份
  • mongodb导出数据库数据文件
  • 其他应收款是如何核算的
  • 商誉需要交税吗
  • 发票金额 含税
  • sql server如何操作
  • sql server 2008 怎么使用
  • 不动产租赁可以享受加计抵减吗
  • 哪些进项税额不能抵扣
  • 利润总额是负数怎么计算利润率
  • 电商刷单的成本如何处理?
  • 360天认证期是什么时候发布的
  • 小规模纳税人年底做账
  • 注册工贸公司业务范围
  • 资产减值损失结转到本年利润吗
  • 空调的预计净残值是什么
  • 公司刚成立如何做账
  • 单位委托单位
  • 税务代扣社保怎么办理?
  • sql server怎么复制表
  • 装了ntfs for mac os后找不到磁盘了
  • 桌面右边
  • linux中字符设备有哪些
  • mac怎么卸载苹果系统
  • npscheck.exe - npscheck是什么进程 有什么用
  • win8关机慢怎么办
  • windows7输入
  • jquery获取复选框是否被选中
  • Android 中的 TableLayout 继承自
  • linux怎么使用shell
  • python怎么用
  • ReactNative 之FlatList使用及踩坑封装总结
  • jQuery Ajax 实现在html页面实时显示用户登录状态
  • dos批命令
  • node .js
  • linux conky
  • 世界坐标转换成屏幕坐标
  • jquery从左到右渐渐显示
  • 不同版本安卓控制台区别
  • javascript总结笔记
  • web 开发
  • jquerybind事件
  • 税务文书送达地点
  • 施工企业应缴纳的税金计算
  • 出口免税不退税主要适用于
  • 个体工商户将自有车辆出租取得的收入怎么征税
  • 国税企业所得税网上申报
  • 预先支付货款
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设