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

  • 淘宝网页设计要做好网站策划,一定要明确用户的需求

    淘宝网页设计要做好网站策划,一定要明确用户的需求

  • u盘蠕虫病毒杀不掉(u盘中了蠕虫病毒会传到电脑上吗)

    u盘蠕虫病毒杀不掉(u盘中了蠕虫病毒会传到电脑上吗)

  • 苹果照片上显示手机型号怎么设置(苹果照片上显示时间地点怎么设置)

    苹果照片上显示手机型号怎么设置(苹果照片上显示时间地点怎么设置)

  • 拉黑是响一声还是不响(拉黑是响一声吗)

    拉黑是响一声还是不响(拉黑是响一声吗)

  • tittl00是什么手机(titcl00)

    tittl00是什么手机(titcl00)

  • 三星s10摄像头传感器型号(三星S10摄像头传感器)

    三星s10摄像头传感器型号(三星S10摄像头传感器)

  • 通常把计算机网络定义为什么(通常把计算机网络定位)

    通常把计算机网络定义为什么(通常把计算机网络定位)

  • 华为mate30摄像头怎么用(华为mate30摄像头参数)

    华为mate30摄像头怎么用(华为mate30摄像头参数)

  • qq电话关闭麦克风对方听得见吗(qq电话关闭麦克风刷抖音对方听得见吗)

    qq电话关闭麦克风对方听得见吗(qq电话关闭麦克风刷抖音对方听得见吗)

  • 摄像头一天需要多少个G(摄像头一天需要多少存储)

    摄像头一天需要多少个G(摄像头一天需要多少存储)

  • 手机ip泄露了会怎样(手机ip泄露了会怎么样)

    手机ip泄露了会怎样(手机ip泄露了会怎么样)

  • qq打卡出来多少天了(qq打卡有什么奖励)

    qq打卡出来多少天了(qq打卡有什么奖励)

  • 手机怎么禁止软件启动(手机怎么禁止软件联网)

    手机怎么禁止软件启动(手机怎么禁止软件联网)

  • 打包安装程序是什么意思(打包安装程序是什么怎么删除)

    打包安装程序是什么意思(打包安装程序是什么怎么删除)

  • 固态硬盘装在台式机哪(固态硬盘装在台式电脑上)

    固态硬盘装在台式机哪(固态硬盘装在台式电脑上)

  • hwt文件怎么打开(hwt文件放哪里)

    hwt文件怎么打开(hwt文件放哪里)

  • 华为nova3机身多长厘米(华为nova3外形尺寸)

    华为nova3机身多长厘米(华为nova3外形尺寸)

  • 三星手机截屏怎么操作(三星手机截屏怎么截用什么键呢)

    三星手机截屏怎么操作(三星手机截屏怎么截用什么键呢)

  • 苹果11用的什么系统(苹果11用的什么芯片)

    苹果11用的什么系统(苹果11用的什么芯片)

  • a1652是ipad几(A1652是iPad几)

    a1652是ipad几(A1652是iPad几)

  • qq怎样设置自动回复手机(QQ怎样设置自动发消息)

    qq怎样设置自动回复手机(QQ怎样设置自动发消息)

  • 小米8se微信视频怎么美颜(小米8se微信视频美颜怎么设置)

    小米8se微信视频怎么美颜(小米8se微信视频美颜怎么设置)

  • 一加手机代言人是谁(一加手机代言人胡歌)

    一加手机代言人是谁(一加手机代言人胡歌)

  • 手机屏幕白斑会扩散吗(手机屏幕白斑会自己消失吗)

    手机屏幕白斑会扩散吗(手机屏幕白斑会自己消失吗)

  • 苹果发布macOS Catalina 10.15.3最新开发者测试版(苹果发布macOS13.5开发者预览版)

    苹果发布macOS Catalina 10.15.3最新开发者测试版(苹果发布macOS13.5开发者预览版)

  • 沃特金斯格伦州立公园的彩虹瀑布,纽约州北部芬格湖群 (© Kenneth Keifer/Alamy)(沃特金斯格伦州立公园)

    沃特金斯格伦州立公园的彩虹瀑布,纽约州北部芬格湖群 (© Kenneth Keifer/Alamy)(沃特金斯格伦州立公园)

  • Vite4 + Vue3 + vue-router4 动态路由

    Vite4 + Vue3 + vue-router4 动态路由

  • 怎样根据税负率调账
  • 应付票据是资产吗
  • 2019最新运输发票样本
  • 个人独资企业是什么单位性质
  • 个体户没有税务登记证能注销营业执照吗
  • 收到进项专用发票怎么做
  • 有限合伙企业分红个人所得税
  • 高新研发费的账务处理怎么做?
  • 运输公司结转成本
  • 银行客户专用回单分录
  • 完成税务登记之后多久开始报个税?
  • 企业为职工支付的家庭财产保险
  • 为何要简并增值税税率?
  • 分公司可以列为被告吗
  • 转登记日下期指的是什么
  • 进项税期末有余额吗
  • 对公直接转私人卡会怎么样
  • 工程项目管理人员任命书
  • 公司购买模具的会计科目
  • 鸿蒙系统怎么设置导航键
  • 劳务报酬计入综合所得吗
  • 鸿蒙系统怎么关闭负一屏
  • php函数返回值类型
  • php utf8转gb2312
  • 任务管理器无法完成操作拒绝访问
  • help是什么文件夹可以删除吗
  • 所有者权益会计科目借贷方向
  • 挂靠建筑公司没有票据怎么做账?
  • laravel框架用到哪些设计模式
  • 财务费用明细科目怎么写
  • iis 7下安装laravel 5.4环境的方法教程
  • php关键字描红
  • js前端路由
  • 基于opencv的人脸检测算法
  • 赠送的物品有价值吗
  • 小微企业所得税税率2.5% 10% 25%
  • css边框实现效果图及代码
  • 租赁公司成本如何计算
  • 资产负债表的负债项目显示了企业所负担债务的
  • 公司代买社保怎么收费
  • 织梦系统
  • 织梦内容页模板修改
  • 长期待摊费用最低摊销年限
  • 应交增值税是应收账款吗
  • access怎么提取数据
  • ms sql 2012
  • 产权出典是啥意思
  • 车辆购置税 购置
  • 资产负债表与利润表的关联性可在存货与销售成本
  • 领款单有法律效力吗
  • 公司转投资是什么意思
  • 可以自行开具增值税专用发票的行业有哪些
  • 旅行社代订机票便宜吗
  • 营业外支出贷方余额
  • 红字信息表开错了对方已开发票怎么处理
  • sqlserver怎么恢复数据
  • ubuntu中怎么安装vscode
  • 如何彻底释放k50至尊版性能
  • win7旗舰版系统激活码
  • uefimbr安装win7
  • windows7粘滞键怎么关
  • linux中dhcp
  • profiler.exe - profiler是什么进程 有什么用
  • win7如何删除无法删除的文件
  • Win10 UWP红石版应用商店迎来更新:查找更新再换位置
  • w10版本更新
  • windows7没有桌面图标
  • win10安全问题
  • amp designer插件
  • js的模块化可以怎么做
  • Android spinner 的使用
  • nodejs cli
  • dom操作中获取节点的方法有哪几种
  • 广东国家电子税务全电发票
  • 天津国税局电子税务局
  • 责令立即改正和责令限期整改
  • 河北省国税局发展前景
  • 航天信息服务费300元
  • 舟山自贸区税收优惠政策五减五免
  • 公司完税证明去哪里打
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设