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

  • 全民k歌下载的音频文件在哪里找(全民k歌下载的歌在哪)

    全民k歌下载的音频文件在哪里找(全民k歌下载的歌在哪)

  • iphone怎么改字体(iPhone怎么改字体风格)

    iphone怎么改字体(iPhone怎么改字体风格)

  • 红米note8指纹解锁的位置在哪里(红米note8指纹解锁怎么不见了)

    红米note8指纹解锁的位置在哪里(红米note8指纹解锁怎么不见了)

  • 8p充电显示可能不支持此配件(8p充电显示可能损坏)

    8p充电显示可能不支持此配件(8p充电显示可能损坏)

  • qq怎么生成二维码(qq怎么生成二维码表白)

    qq怎么生成二维码(qq怎么生成二维码表白)

  • 4g手机和5g手机有什么区别(4g手机和5g手机的区别大不大)

    4g手机和5g手机有什么区别(4g手机和5g手机的区别大不大)

  • 苹果相机怎么镜面翻转(苹果相机怎么镜像转换)

    苹果相机怎么镜面翻转(苹果相机怎么镜像转换)

  • 主机一亮一灭启动不了(主机一亮就灭)

    主机一亮一灭启动不了(主机一亮就灭)

  • gmtds是什么接入点(接入点gmtds)

    gmtds是什么接入点(接入点gmtds)

  • 抖音点完赞为什么会自动取消(抖音点完赞为什么我喜欢里面没有)

    抖音点完赞为什么会自动取消(抖音点完赞为什么我喜欢里面没有)

  • 华为哪些手机支持畅连通话(华为哪些手机支持wifi6)

    华为哪些手机支持畅连通话(华为哪些手机支持wifi6)

  • 华为m6能用蓝牙鼠标吗(华为m6 蓝牙)

    华为m6能用蓝牙鼠标吗(华为m6 蓝牙)

  • 三级域名网站有哪些(三级域名有哪些)

    三级域名网站有哪些(三级域名有哪些)

  • 优酷下载视频怎么转成mp4格式(优酷下载视频怎么转换mp4)

    优酷下载视频怎么转成mp4格式(优酷下载视频怎么转换mp4)

  • 微信乘车码能刷几个人(微信乘车码能刷几个人坐地铁)

    微信乘车码能刷几个人(微信乘车码能刷几个人坐地铁)

  • 华为mate305G版怎么更换输入法(华为mate30z)

    华为mate305G版怎么更换输入法(华为mate30z)

  • 苹果11原相机怎么设置正方形 (苹果11原相机怎么调才好看)

    苹果11原相机怎么设置正方形 (苹果11原相机怎么调才好看)

  • word文档字体竖排居中(word文档字体竖排)

    word文档字体竖排居中(word文档字体竖排)

  • 电脑设置在那里(怎么进入电脑设置系统)

    电脑设置在那里(怎么进入电脑设置系统)

  • 抖音直播被永久封了怎么解封(抖音直播被永久禁播还能恢复吗)

    抖音直播被永久封了怎么解封(抖音直播被永久禁播还能恢复吗)

  • 抖音能进几个粉丝团(抖音能进几个粉丝群)

    抖音能进几个粉丝团(抖音能进几个粉丝群)

  • 铃声多多怎么导入视频(铃声多多怎么导入本地苹果手机)

    铃声多多怎么导入视频(铃声多多怎么导入本地苹果手机)

  • 如何在电脑上设置开机密码?(如何在电脑上设置壁纸)

    如何在电脑上设置开机密码?(如何在电脑上设置壁纸)

  • AirPods如何查看电量(airpods如何查看型号)

    AirPods如何查看电量(airpods如何查看型号)

  • 苹果锁屏看不到时间了(苹果锁屏看不到消息内容)

    苹果锁屏看不到时间了(苹果锁屏看不到消息内容)

  • ES6 - Promise详解及用法(es6promise的理解)

    ES6 - Promise详解及用法(es6promise的理解)

  • 增值税发票勾选平台
  • 注销空白缴销发票流程
  • 中级会计实务主观题
  • 计提存款利息
  • 购买产品再出售怎么入账
  • 已认证发票对方红冲应该怎么做账
  • 一般纳税人给小规模开普票是几个点
  • 上月已收款,本月开的票怎么做分录
  • 新增资产额怎么计算
  • 印花税交完有什么凭证
  • 重新建账 和之前数据差的多
  • 记账凭证的附件包括哪些
  • 金融资产的减少为什么记在贷方
  • 金税盘可以异地使用吗
  • 企业弥补亏损的三个途径
  • 如何从工商信息中看出是小规模还是一般纳税人
  • 城市公交可以承包吗
  • 公司账户转账给个人账户有限额吗?
  • 地方教育费附加计入什么科目
  • 软件开发开增票几个点
  • 工商注册需要提供什么
  • 税金当月计提当月缴纳
  • 购买承兑汇票怎么做账
  • 默认网关不可用修复后过一会又不好使了
  • win10玩游戏太卡了
  • 常见内存大小
  • 房产的评估增值属于土地增值税征税范围对吗
  • 滴滴发票开公司名称可以抵扣进项吗
  • 发出商品借方余额120000元
  • php serialize()与unserialize() 不完全研究
  • 传递优化的作用
  • 其他综合收益的来源
  • 现金长款和短款怎么处理
  • 金融服务企业按照是否办理存款业务
  • 向银行借入长期借款200000元,存入银行
  • 缴纳社保公司需要税务登记吗
  • php array_search二维数组
  • yolov3怎么用
  • 检测命令
  • unlinkhist.dat怎么删除
  • 服务业加计扣除比例
  • 技术服务费怎么开票税率
  • 红字发票可以跨越开吗
  • 所得税费用怎样算出来的
  • 普通的增值税
  • 生产成本制造费用借贷方向
  • sqlserver、mysql获取连接字符串步骤
  • 银行利息支出税率是多少
  • 应交税金科目的核算
  • 什么叫做有限循环小数
  • 刚成立公司没有发生业务,如何申报企业所得税
  • 增值税发票开错冲红重开如何做会计分录?
  • 商业折让发票如何开
  • 进项税和销项税怎么理解
  • 可供出售金融资产有哪些
  • 药品进销差价的计算公式是什么
  • 仓库周转率是什么意思
  • sql分组having
  • 收集整理的近义词
  • window英语
  • linux开机后怎么进去系统
  • kdeskcore.exe是什么
  • win10 20h2 微软账户
  • win10未检测到任何网络硬件
  • ExtJS Ext.MessageBox.alert()弹出对话框详解
  • php上传文件到指定目录
  • android的基本概念
  • python-pip安装
  • jquery中的each方法
  • python爬取前程无忧
  • easyui toolbar布局
  • 税控盘税务数字证书密码忘记怎么办
  • 城市配套费需要缴纳契税
  • 土地增值税优惠政策办理流程和手续方面的精简措施
  • 大连市网上税务申报平台
  • 营业税未达起征点
  • 地税局网上报税
  • 乳胶枕属于什么经营范围
  • ca证书怎么删除
  • 一般纳税人认定书
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设