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

  • 微信视频来电铃声怎么设置(微信视频来电铃声怎么调大小)

    微信视频来电铃声怎么设置(微信视频来电铃声怎么调大小)

  • 苹果13pro怎么开机(苹果13pro怎么开热点)

    苹果13pro怎么开机(苹果13pro怎么开热点)

  • 微信朋友圈广告评论是自动评论的吗(微信朋友圈广告怎么关闭不了)

    微信朋友圈广告评论是自动评论的吗(微信朋友圈广告怎么关闭不了)

  • 苹果6为什么连不上wifi(苹果6为什么连接不上蓝牙)

    苹果6为什么连不上wifi(苹果6为什么连接不上蓝牙)

  • 华为桌面布局已锁定怎么办(华为手机桌面小组件)

    华为桌面布局已锁定怎么办(华为手机桌面小组件)

  • vivox50手机怎么截屏(vivox50手机怎么录屏幕视频)

    vivox50手机怎么截屏(vivox50手机怎么录屏幕视频)

  • 华为手机可以查到去过的地方吗(华为手机可以查找荣耀手机位置吗)

    华为手机可以查到去过的地方吗(华为手机可以查找荣耀手机位置吗)

  • 华为p40怎样设置返回键(华为p40怎样设置简易模式)

    华为p40怎样设置返回键(华为p40怎样设置简易模式)

  • 抖音直播定位修改会限流吗(抖音直播定位修改器)

    抖音直播定位修改会限流吗(抖音直播定位修改器)

  • 拼多多取消订单优惠券退回吗(拼多多取消订单怎么取消不了)

    拼多多取消订单优惠券退回吗(拼多多取消订单怎么取消不了)

  • 为什么抖音不能绑定QQ(为什么抖音不能连续点赞)

    为什么抖音不能绑定QQ(为什么抖音不能连续点赞)

  • 删除的照片可以找回吗(删除的照片可以免费恢复吗)

    删除的照片可以找回吗(删除的照片可以免费恢复吗)

  • 宽带fttb是什么意思(fttb ftth)

    宽带fttb是什么意思(fttb ftth)

  • redminote8pro是什么手机(redminote8pro怎么样值得买吗)

    redminote8pro是什么手机(redminote8pro怎么样值得买吗)

  • 小爱是什么手机的(小爱是什么手机的智能助手)

    小爱是什么手机的(小爱是什么手机的智能助手)

  • 电脑wps怎么分享(电脑wps怎么分享文件到微信)

    电脑wps怎么分享(电脑wps怎么分享文件到微信)

  • 如何解除微信免密支付(如何解除微信免打扰)

    如何解除微信免密支付(如何解除微信免打扰)

  • 闲聊人脸识别怎么弄(人脸识别怎么说)

    闲聊人脸识别怎么弄(人脸识别怎么说)

  • 苹果手机lla是什么版本(iphone型号lla是哪个国家)

    苹果手机lla是什么版本(iphone型号lla是哪个国家)

  • 苹果lte怎么变成4g(苹果lte怎么变成4g网络)

    苹果lte怎么变成4g(苹果lte怎么变成4g网络)

  • 如何处理手机号码泄露(如何处理手机号被标记)

    如何处理手机号码泄露(如何处理手机号被标记)

  • r5 1600配什么主板(r5 1600主板推荐)

    r5 1600配什么主板(r5 1600主板推荐)

  • Win10如何关闭专注助手 Win10关闭专注助手的方法(如何关闭win10专业版自动更新)

    Win10如何关闭专注助手 Win10关闭专注助手的方法(如何关闭win10专业版自动更新)

  • vue中使用百度地图(vue使用百度地图三方标准地图清空后卡死)

    vue中使用百度地图(vue使用百度地图三方标准地图清空后卡死)

  • 预缴税款计算公式
  • 财务软件进什么费用
  • 啥叫反倾销税
  • 一般纳税人增值税优惠政策2023
  • 垃圾处理费怎么算
  • 劳务什么情况下会多扣税
  • 企业股权转让影响利润吗
  • 企业的房屋是否能确认为存货?为什么?(简单描述即可)
  • 增值税专票未认证丢失怎么办
  • 延迟交款收息做什么科目?
  • 大额虚开发票做转出税款入什么会计科目?
  • 二手车公司销售二手车的税率
  • 由于生产工艺改进引起建筑物设备陈旧
  • 企业购买预付卡怎么做账
  • 固定资产清理属于
  • 银行利息所得税调整方案
  • 所得税除以利润总额是稳定性评价指标吗
  • 分公司可以单独签协议吗
  • 制造费用月末需要结转吗
  • 坏账准备年底有余额吗
  • 应收票据贴现的会计分录
  • 职工赔偿金的账务处理
  • 建账时选择什么会计制度
  • 园林公司采购岗位职责
  • 华为mate50耳机孔和充电口一样吗
  • 企业债卷利息收入是营业收入吗
  • win11任务栏失灵
  • 百内国家公园塔状尖峰
  • 非合理损耗怎么做分录
  • 在建工程进项税额
  • 企业所得税的纳税人包括哪些
  • 同步和异步的关系
  • oss使用场景
  • 格雷厄姆岛
  • Asian elephants in West Bengal, India (© Avijan Saha/Minden Pictures)
  • 工程项目成本核算的依据主要有
  • php示例代码
  • nodejs 下载
  • 2023跨年代码大全可复制免费
  • urlparse安装
  • 出口退税率和进口税率的区别
  • 林木苗圃
  • 材料暂估入库如何进行账务处理
  • 出租改自用房产税
  • php安装步骤
  • mongodb writeconcern
  • 不良品扣款入什么科目
  • 小规模纳税人季度不超30万免增值税
  • 应交税费为什么写在借方
  • 社保的账务处理分录
  • 一般纳税人收到的普票可以抵扣吗
  • 超过两年记入错误的主营业务成本怎么调账?
  • 年度财务报告和年度报告
  • 销售返利的会计分录 东奥
  • 销售费用现金支出预算
  • 房地产开发企业会计制度
  • 税收返还会计核算
  • 投标保证金退回是不是没中标
  • 资产总额怎么进行税务数据授权登记
  • mysql增删改查面试题
  • SQL中distinct 和 row_number() over() 的区别及用法
  • linux常用命令 删除
  • ati2mdxx.exe是什么进程 ati2mdxx进程信息查询
  • ubuntu怎样调出命令行
  • 如何通过mac找到具体地址
  • 在windows中用户建立的文件默认具有的属性是
  • xp创建VPN连接图文教程
  • mac的替换在哪里
  • Win10 Mobile/PC/HoloLens一周年更新14389曝光
  • win7系统本地连接图标不见了
  • 如何解决win7系统中鼠标键盘不能用
  • opengl示例
  • python第六章函数
  • jq写css样式
  • window.onerror()的用法与实例分析
  • 基础的十进制按什么来算
  • 神州浩天财务软件
  • 机动车检测属于哪个税收
  • 处室岗位是什么意思
  • 国网福建电力微信公众
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设