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

  • 如何有效地投放kol获得最大的推广效果?(投放的流程)

    如何有效地投放kol获得最大的推广效果?(投放的流程)

  • 闲鱼背景墙怎么改(闲鱼背景墙怎么设置视频)

    闲鱼背景墙怎么改(闲鱼背景墙怎么设置视频)

  • 华为nova 7 se有nfc功能吗(华为nova 7 SE有没有NFC)

    华为nova 7 se有nfc功能吗(华为nova 7 SE有没有NFC)

  • 华为手机安卓颜色反转怎么设置(华为手机安卓颜色不一样)

    华为手机安卓颜色反转怎么设置(华为手机安卓颜色不一样)

  • 爱奇艺电脑怎么下载视频(爱奇艺电脑怎么退出登录)

    爱奇艺电脑怎么下载视频(爱奇艺电脑怎么退出登录)

  • 抖音聊天列表为啥显示为空(抖音聊天列表为什么会显示跟好友打个招呼)

    抖音聊天列表为啥显示为空(抖音聊天列表为什么会显示跟好友打个招呼)

  • melsoft是什么软件(mer是什么软件)

    melsoft是什么软件(mer是什么软件)

  • 微信没登录信息能收到吗(如果微信没登录消息能发过去吗)

    微信没登录信息能收到吗(如果微信没登录消息能发过去吗)

  • 钉钉一个手机号可以注册多少个(钉钉一个手机号注册两个号怎么取消)

    钉钉一个手机号可以注册多少个(钉钉一个手机号注册两个号怎么取消)

  • 手机wps单倍行距怎么设置(手机wps单倍行距设置)

    手机wps单倍行距怎么设置(手机wps单倍行距设置)

  • 拼多多还没有拼成功怎么取消(拼多多还没有拼单成功可以取消订单吗)

    拼多多还没有拼成功怎么取消(拼多多还没有拼单成功可以取消订单吗)

  • 抖音上mnl是什么软件(抖音m是什么单位的)

    抖音上mnl是什么软件(抖音m是什么单位的)

  • 所谓计算机病毒是指(所谓计算机病毒的危害性是指)

    所谓计算机病毒是指(所谓计算机病毒的危害性是指)

  • qq大会员包括豪华黄钻吗

    qq大会员包括豪华黄钻吗

  • 如何在电脑上打包照片(如何在电脑上打分数)

    如何在电脑上打包照片(如何在电脑上打分数)

  • 微信公众号的主体信息可以变更吗(微信公众号的主要类型有)

    微信公众号的主体信息可以变更吗(微信公众号的主要类型有)

  • fonts文件夹在哪里(font files)

    fonts文件夹在哪里(font files)

  • 照片生成pdf是什么意思(把照片生成pdf格式文件的软件)

    照片生成pdf是什么意思(把照片生成pdf格式文件的软件)

  • 过期的微信好友怎么回加(过期的微信好友怎么添加)

    过期的微信好友怎么回加(过期的微信好友怎么添加)

  • 鸿蒙系统基于安卓哪个版本(鸿蒙系统基于安卓)

    鸿蒙系统基于安卓哪个版本(鸿蒙系统基于安卓)

  • 显卡1050和1650区别(显卡1050与1650)

    显卡1050和1650区别(显卡1050与1650)

  • 如何剪切视频(电脑如何剪切视频)

    如何剪切视频(电脑如何剪切视频)

  • word里面简历模板在哪(word里面简历模板)

    word里面简历模板在哪(word里面简历模板)

  • qq预计账号上限什么意思(qq预计账号上限怎么办)

    qq预计账号上限什么意思(qq预计账号上限怎么办)

  • OPPO手机怎么长截屏(OpPo手机怎么长载屏)

    OPPO手机怎么长截屏(OpPo手机怎么长载屏)

  • 怎么用抖音号查手机号(怎么用抖音号查找用户)

    怎么用抖音号查手机号(怎么用抖音号查找用户)

  • 在微机中vga属于什么(在微机中,vga属于什么)

    在微机中vga属于什么(在微机中,vga属于什么)

  • 什么时候要计提坏账准备
  • 什么是宏观税负如何判定一国宏观税负的轻重
  • 自动售货机进货渠道
  • 发票多开了,要求退回重开,如何处理
  • 增值税进项发票网上勾选平台
  • 销售并提供安装的税率
  • 当期亏损如何计提所得税
  • 收到税务局附加税退税税款的分录
  • 想开饮品店
  • 存货内部交易抵消通俗讲解
  • 企业预付一年的房租怎么做分录
  • 付现金给别的公司是否可以开具发票呢?
  • 收购股权怎么做账
  • 公司先注册实收资本后付账该如何做会计处理呢?
  • 计提摊销房租会计分录
  • 发票已缴销什么意思
  • 预缴企业所得税税率
  • 工作量法计提折旧会计分录
  • 小规模免征增值税政策
  • 资产负债表写错数字怎么改
  • 原材料意外损失会计分录
  • 无法加载响应数据 对于预检请求没有可显示的内容
  • mac如何打印预览
  • php处理图片需要什么扩展
  • uniapp微信小程序支付流程
  • 新开的酒店怎么做宣传
  • 独资企业弥补亏损怎么办
  • echarts右侧y轴
  • 赖格宝视频
  • php常用数组函数和用法
  • yolov3图像识别
  • thinkphp 手机号和用户名同时登录
  • 原生php和框架php的区别
  • 股息和未分配利润的区别
  • 存货毁损计入什么科目
  • 发票作废发票怎么处理
  • 公司开的餐费专票可以抵扣吗
  • 应付职工薪酬如何确认
  • 存货盘亏原因不明会计分录
  • 第6章 分支语句和逻辑运算符
  • 医疗机构收据
  • mongodb如何修改数据
  • 现金发放工资会扣税吗
  • 主营业务税金及附加和税金及附加的区别
  • 个税跨月更正申报怎么做
  • 企业处置子公司
  • 以前年度损益调整在利润表中怎么填
  • 内账需要哪些单据
  • 工程项目需要交5000万保证金合理吗
  • 人工费没有发票怎么入账
  • 原材料报废卖掉会计分录
  • 公司美元账户收款方便吗
  • 2020发票丢失新规
  • 差旅费用包含哪些
  • 反结账钱会转回去吗
  • 审计真实性认定
  • 会计结转是什么意思
  • 剩余股利政策发放股利后的年末未分配利润
  • 文档介绍
  • 登录ubuntu桌面
  • fedora系统安装教程
  • 使用u盘安装windows10电脑识别不出来
  • 双系统麻烦吗
  • Mac系统中使用QuickTime Player实现屏幕录像图文教程
  • win1020h2硬件要求
  • linux br0配置
  • 简述linux的系统结构
  • win7电脑无限蓝屏怎么解决
  • 举例讲解水生花卉栽培管理
  • jquery时间轴插件
  • js判断密码强弱
  • js 显示当前时间
  • android数据存储实验报告
  • javascript语言基础
  • python批量修改文本内容
  • Python的collections模块中的OrderedDict有序字典
  • 党建引领安全宣传美篇幼儿园
  • 中华人民共和国成立于1949年10月1日到今年是多少周年
  • 奔驰购置税多少钱
  • oecd是什么意思的缩写
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设