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

  • voc智能锁怎么设置指纹(voc智能锁怎么设置临时密码)

    voc智能锁怎么设置指纹(voc智能锁怎么设置临时密码)

  • vivo NEX 3s的屏幕多大(vivonex3s的屏幕分辨率是多少)

    vivo NEX 3s的屏幕多大(vivonex3s的屏幕分辨率是多少)

  • qq转发能屏蔽部分人吗(qq怎么在转发的时候屏蔽好友)

    qq转发能屏蔽部分人吗(qq怎么在转发的时候屏蔽好友)

  • 苹果怎么删除小爱同学软件(苹果怎么删除小程序记录)

    苹果怎么删除小爱同学软件(苹果怎么删除小程序记录)

  • 蓝牙耳机怎么拆开修理(蓝牙耳机怎么拆开修理视频)

    蓝牙耳机怎么拆开修理(蓝牙耳机怎么拆开修理视频)

  • 京东的店铺类型有哪三类(京东的店铺类型哟)

    京东的店铺类型有哪三类(京东的店铺类型哟)

  • 为什么小红书发布的内容别人看不到(为什么小红书发不了评论)

    为什么小红书发布的内容别人看不到(为什么小红书发不了评论)

  • 手机卡拔了还能查到轨迹吗(手机卡拔了还能不能定位)

    手机卡拔了还能查到轨迹吗(手机卡拔了还能不能定位)

  • 手机微信直播咋录屏(在微信里直播)

    手机微信直播咋录屏(在微信里直播)

  • 淘宝追评什么时候才能显示出来(淘宝追评什么时候能看到)

    淘宝追评什么时候才能显示出来(淘宝追评什么时候能看到)

  • 华为mate30摄像头玻璃碎了(华为mate30摄像头模糊官方解决教程)

    华为mate30摄像头玻璃碎了(华为mate30摄像头模糊官方解决教程)

  • 闹钟没有设置却天天响(闹钟没有设置却响了)

    闹钟没有设置却天天响(闹钟没有设置却响了)

  • 台式电脑耗电量大吗(台式电脑耗电量一小时多少)

    台式电脑耗电量大吗(台式电脑耗电量一小时多少)

  • qq上网环境异常怎么解决(qq 上网环境异常)

    qq上网环境异常怎么解决(qq 上网环境异常)

  • iphone已停用连接itunes恢复后数据还在吗(iphone已停用连接it u n e s)

    iphone已停用连接itunes恢复后数据还在吗(iphone已停用连接it u n e s)

  • 苹果小白球怎么设置(苹果小白球怎么移动)

    苹果小白球怎么设置(苹果小白球怎么移动)

  • 芒果账号可以几个人用(芒果账号能登几个)

    芒果账号可以几个人用(芒果账号能登几个)

  • 苹果8支持反向充电吗(苹果支持反向充电的手机有哪些)

    苹果8支持反向充电吗(苹果支持反向充电的手机有哪些)

  • 电脑被远程控制怎么解除(电脑被远程控制了可以看到记录吗)

    电脑被远程控制怎么解除(电脑被远程控制了可以看到记录吗)

  • ios原彩显示有用么(iphone原彩显示需要打开吗)

    ios原彩显示有用么(iphone原彩显示需要打开吗)

  • 唯品会怎么设置登录名(唯品会怎么设置自动抢货)

    唯品会怎么设置登录名(唯品会怎么设置自动抢货)

  • facetime和微信的区别(微信和face time)

    facetime和微信的区别(微信和face time)

  • apple watch series4怎么接听电话

    apple watch series4怎么接听电话

  • 电脑重装系统有哪些方法(电脑重装系统有危害吗)

    电脑重装系统有哪些方法(电脑重装系统有危害吗)

  • vue中实现路由跳转的三种方式(超详细整理)(vue实现路由跳转传参)

    vue中实现路由跳转的三种方式(超详细整理)(vue实现路由跳转传参)

  • vue3生命周期及setup介绍(vue3生命周期及使用)

    vue3生命周期及setup介绍(vue3生命周期及使用)

  • 从零开始,国内实现调用Open Ai(从零开始作者)

    从零开始,国内实现调用Open Ai(从零开始作者)

  • 税务检查是什么行政行为
  • 预付加油充值卡可以报销吗
  • 个体户需要做利润分析吗
  • 技术服务的分录
  • 平均股东权益在利润表中怎么看
  • 企业变更股东需要本人到场吗
  • 住宿发票规格型号一栏写什么
  • 商品类别发票能抵扣吗
  • 销项发票导出格式不对怎么办
  • 房屋置换以房换房政策2019
  • 企业实际发生的公益性捐赠支出
  • 工会经费拨缴是什么意思
  • 视同销售收入计入会计利润吗
  • 政策性用房包括哪些
  • 加建工程部分结算款如何做会计分录呢?
  • 银行发放执行款多久到账
  • 多扣社保个人部分怎么做分录
  • 增值税专用发票有效期是多长时间
  • 跨年的发票能红字冲销吗?
  • 国家税务总局公告2012年第57号
  • 收到培训机构的电话骚扰该怎么办?
  • 小规模纳税申报表下载
  • 所得税计税方法
  • 列入工资的补贴是什么
  • 增值税一般纳税人认定标准
  • 个人收回转让的股权个税应如何处理?
  • 关联交易认定标准税务
  • 收到上级工会下拨的工会经费
  • 固定资产清理应交税费怎么算
  • 简单才能极致
  • vue blob下载文件
  • win10商店在哪打开
  • mac设置在哪里设置
  • 股权折价转让
  • 购买货物现金付讫的会计分录
  • 企业间合作建房且建成后自用
  • 塔拉基之死
  • 企业所得税申报表在哪里打印
  • 卷卷卷卷卷
  • php隐藏图片地址
  • 外地预交的企业所得税如何在季度企业所得税申报
  • 开发票时有哪些规定呢?
  • 货币资金有余额怎样填写清税申报表
  • 政府补助可以挂账吗
  • 不计提工资直接发放可以吗
  • 专票信息开户行少了一个字
  • 单位交的那部分医保去哪了
  • rust基础操作
  • mysql内连接查询使用汉语作为官方语言的所有国家
  • SQLServer中Partition By及row_number 函数使用详解
  • 帝国cms自动推送插件
  • 税前补发补扣
  • 公司代扣代缴个人所得税是怎么算的
  • 扣缴义务人如何登录电子税务局
  • 税是什么为什么要交税
  • 企业所得税本年累计
  • 现金支付无发票怎么报销
  • 往来账怎么记账
  • 红冲发票视频教程
  • 销售产品收取的价款
  • 固定资产多少钱标准
  • 赠送给客户的商品怎么做会计分录
  • mysql中增删改查语句
  • mysql 正则表达式分组替换
  • xp系统如何安装
  • xp系统如何获取ip地址
  • mac屏幕共享软件
  • 电脑超频以后变得很卡
  • win10天气系统怎么弄掉
  • js的上传文件
  • js 和html
  • android camera preview
  • Please ensure that adb is correctly located at 'D:Androidandroid-sdkplatform-toolsadb.exe' and
  • Ubuntu14.04 Android 源码编译
  • python里的lambda怎么用
  • 社保每个月几号截止申报
  • 江苏省2023年1号文
  • 留抵税额退税政策2022年14号文件
  • 国税优盘安装教程
  • 城镇土地使用税优惠政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设