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

  • 桌面上我的电脑图标怎么增加(桌面上我的电脑图标不见了)(电脑桌面上我的电脑)

    桌面上我的电脑图标怎么增加(桌面上我的电脑图标不见了)(电脑桌面上我的电脑)

  • 支付宝转账有声音提示吗(支付宝转账有声音还是红包有声音)

    支付宝转账有声音提示吗(支付宝转账有声音还是红包有声音)

  • 淘宝超过15天退货方法(淘宝超过15天退款能退成功吗)

    淘宝超过15天退货方法(淘宝超过15天退款能退成功吗)

  • 华为荣耀20i有没有屏幕录制(华为荣耀20i有没有OTG功能)

    华为荣耀20i有没有屏幕录制(华为荣耀20i有没有OTG功能)

  • qq群直播上课能看见学生吗(qq群直播上课能看见在线时长嘛)

    qq群直播上课能看见学生吗(qq群直播上课能看见在线时长嘛)

  • exif信息是啥意思(exif信息?)

    exif信息是啥意思(exif信息?)

  • 载入此照片时出错怎么办(载入此照片时出现错误)

    载入此照片时出错怎么办(载入此照片时出现错误)

  • 苹果手机日版跟国行有什么区别(苹果手机日版跟美版哪个好)

    苹果手机日版跟国行有什么区别(苹果手机日版跟美版哪个好)

  • 微信暗黑模式怎么设置关闭(微信暗黑模式怎么取消)

    微信暗黑模式怎么设置关闭(微信暗黑模式怎么取消)

  • 手机充电接口芯片断了(手机充电接口芯片断了能修吗)

    手机充电接口芯片断了(手机充电接口芯片断了能修吗)

  • qq截图怎么操作(qq截图怎么截长图)

    qq截图怎么操作(qq截图怎么截长图)

  • 手机离线是什么意思(手机离线模式开启后会怎么样)

    手机离线是什么意思(手机离线模式开启后会怎么样)

  • ip地址一般有几个字节表示(ip地址一般都是什么)

    ip地址一般有几个字节表示(ip地址一般都是什么)

  • 华为mate30pro贴什么膜(华为mate30pro贴什么手机膜好)

    华为mate30pro贴什么膜(华为mate30pro贴什么手机膜好)

  • 手机上便签怎么导出(手机上便签怎么修改)

    手机上便签怎么导出(手机上便签怎么修改)

  • mate30有5g版本吗(华为mate 30有5g吗)

    mate30有5g版本吗(华为mate 30有5g吗)

  • 小米手机智能出行在哪里(小米手机智能出行怎么使用)

    小米手机智能出行在哪里(小米手机智能出行怎么使用)

  • 苹果x怎么删除空白桌面(苹果x怎么删除联系人批量删除)

    苹果x怎么删除空白桌面(苹果x怎么删除联系人批量删除)

  • 重装系统怎么保存原来的文件(重装系统怎么保存c盘原来的文件)

    重装系统怎么保存原来的文件(重装系统怎么保存c盘原来的文件)

  • 苹果xmax支持5g吗(12promax支持5g吗)

    苹果xmax支持5g吗(12promax支持5g吗)

  • dc调光的手机有哪些(dc调光手机有哪些2020)

    dc调光的手机有哪些(dc调光手机有哪些2020)

  • soul怎么看访客记录(soul如何看到访客记录)

    soul怎么看访客记录(soul如何看到访客记录)

  • 荣耀v20有没有耳机接口(荣耀v20pro有没有耳机孔)

    荣耀v20有没有耳机接口(荣耀v20pro有没有耳机孔)

  • 微信领不了红包提示绑卡怎么办(微信领不了红包截图)

    微信领不了红包提示绑卡怎么办(微信领不了红包截图)

  • 苹果手机变烫怎么处理(苹果手机变烫怎么回事)

    苹果手机变烫怎么处理(苹果手机变烫怎么回事)

  • 应交增值税已交税金是什么意思
  • 出租房屋取得的收入计入什么
  • 在外地设立分公司如何办理
  • 党建经费的标准
  • 环保税计税依据怎么算
  • 小规模纳税人残保金
  • 2021年停车费税率
  • 城市建设税和教育费附加计算公式
  • 无形资产使用费计入什么科目
  • 承担客户装修费怎么入账
  • 出口货物的进项发票什么时候认证
  • 预付账款 费用
  • 企业代缴个人所得税打印完税证明
  • 分公司清算和总公司清算
  • 企业所得税计算器2023
  • 房租发票进项税可以抵扣吗
  • 暖气冷气热水的增值税适用税率是多少?
  • 本期金额怎么计算
  • 季报中现金流量表报的是当季的还是本年累计数
  • 交通费进项税抵扣计算
  • 税务票开错了怎么办理退税
  • 职工的经济补偿金是优先债权吗
  • 手机home键是什么意思图片
  • 网站防止被刷票怎么解决
  • 公司给员工的油费补贴以什么为依据入账
  • php面向对象编程
  • 环保税与排污费的联系
  • 瓦尔德内尔精彩
  • 现金清查的会计科目
  • 免税的农业企业可以抵扣专票吗
  • 实际缴纳消费税计算公式
  • 数据结构考试内容
  • 事业单位增值税可以抵扣吗
  • thinkphp案例
  • 子公司破产对母公司是利好还是利空
  • ai图片生成矢量图
  • linux调试工具有哪些
  • 制造费用的主要内容
  • 房产自用改为出租如何申报房产税
  • 与下级往来账户贷方核算的内容有
  • 新建厂房如何计提折旧费用
  • 文化事业建设费的征收范围
  • 母公司和子公司可以一起投标吗
  • 开发票的盘锁了
  • page_sql
  • 工会经费计算表
  • 根据工资总额组成的规定下列哪些列入工资总额的范围
  • 分公司非独立核算怎么报税
  • 如何处理库存货
  • 无形资产达到可使用状态前如何入账
  • 如何冲销应付账款
  • 实缴出资未注明投资款
  • 老板在自己的公司做事
  • 香港发票在内地认可吗
  • 年终奖会计怎么走账
  • 金蝶系统如何设置套打
  • mysql慢查询日志在哪里
  • 在windows的命令提示符下,命令名在实际输入时规定
  • win7系统安装教程不用u盘
  • win8.0下载
  • winlogon是什么意思
  • awk命令的功能是什么
  • windows time同步系统时间的服务无法启动报错1058解决方法
  • pavkre.exe - pavkre是什么进程 作用是什么
  • win7电脑曝光度过高怎么调
  • bass表示什么
  • 蛋疼的生活歌曲
  • shell 批量改名
  • jquery获取当前地址
  • 基于mvc设计模型的框架
  • android反编译软件
  • js鼠标点击图片就消失
  • js中input怎么用
  • JavaScript For Beginners(转载)
  • python中的类怎样理解
  • js格式化时间戳
  • qt Android开发
  • 督查局工作怎么样
  • 车险包括车船费吗
  • 越南进口废塑料新政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设