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

  • 手机自动打开微信怎么回事(手机自动打开微信付款码)

    手机自动打开微信怎么回事(手机自动打开微信付款码)

  • 怎么删淘宝的购买记录(怎么删淘宝购物券)

    怎么删淘宝的购买记录(怎么删淘宝购物券)

  • qq二维码加载失败怎么回事(qq二维码加载失败怎么回事电脑版)

    qq二维码加载失败怎么回事(qq二维码加载失败怎么回事电脑版)

  • 钉钉群直播删除后能不能恢复(钉钉群直播删除不掉怎么回事)

    钉钉群直播删除后能不能恢复(钉钉群直播删除不掉怎么回事)

  • 滴滴返空费怎么收取(滴滴打车收空车返程费)

    滴滴返空费怎么收取(滴滴打车收空车返程费)

  • 手机里有sm卡为什么显示没有(手机里有sm卡为什么没用)

    手机里有sm卡为什么显示没有(手机里有sm卡为什么没用)

  • 抖音可以发布多长的视频(抖音可以发布多少个作品)

    抖音可以发布多长的视频(抖音可以发布多少个作品)

  • oppo手机微信聊天记录怎么恢复(oppo手机微信聊天记录怎样移到另一个手机)

    oppo手机微信聊天记录怎么恢复(oppo手机微信聊天记录怎样移到另一个手机)

  • 钉钉在悬浮窗看算观看时长吗(钉钉悬浮窗看直播老师知道吗)

    钉钉在悬浮窗看算观看时长吗(钉钉悬浮窗看直播老师知道吗)

  • mh182ch/a是什么型号(mh182zp/a是哪年的)

    mh182ch/a是什么型号(mh182zp/a是哪年的)

  • 爱奇艺奇秀直播为什么被停(爱奇艺奇秀直播视频)

    爱奇艺奇秀直播为什么被停(爱奇艺奇秀直播视频)

  • 快手主播pk是怎么回事(快手主播pk是怎么算的)

    快手主播pk是怎么回事(快手主播pk是怎么算的)

  • 怎么知道来电是转接的(怎么知道来电是骚扰电话)

    怎么知道来电是转接的(怎么知道来电是骚扰电话)

  • ipad应用闪退解决方法(ipad应用软件闪退)

    ipad应用闪退解决方法(ipad应用软件闪退)

  • iphone摔了一下会影响硬件吗(iphone摔了一下会怎么样)

    iphone摔了一下会影响硬件吗(iphone摔了一下会怎么样)

  • 爱奇艺登录失效是被踢了吗(爱奇艺登录失效是什么意思)

    爱奇艺登录失效是被踢了吗(爱奇艺登录失效是什么意思)

  • 怎样下载音乐到u盘里(怎样下载音乐到mp3)

    怎样下载音乐到u盘里(怎样下载音乐到mp3)

  • 华为mate30隐私空间怎么关闭

    华为mate30隐私空间怎么关闭

  • 手机调音器怎么用(手机调音器怎么特殊调弦)

    手机调音器怎么用(手机调音器怎么特殊调弦)

  • 互联网sp和ssp什么意思(互联网 sp ssp)

    互联网sp和ssp什么意思(互联网 sp ssp)

  • erp账号是什么意思啊(erp帐号是什么意思)

    erp账号是什么意思啊(erp帐号是什么意思)

  • iphone11支持多少w的无线充电(iPhone11支持多少刷新率)

    iphone11支持多少w的无线充电(iPhone11支持多少刷新率)

  • 小米8打电话黑屏(小米8打电话黑屏怎么办)

    小米8打电话黑屏(小米8打电话黑屏怎么办)

  • vivoy3是哪年出的(vivoy3什么时候出的)

    vivoy3是哪年出的(vivoy3什么时候出的)

  • vivox9计算器怎么开方(vivo手机计算器怎么归零)

    vivox9计算器怎么开方(vivo手机计算器怎么归零)

  • 今日头条如何认证(今日头条如何认证领域)

    今日头条如何认证(今日头条如何认证领域)

  • 为什么系统弹出提示xlive.dll文件丢失?(为什么系统弹出登录此网络)

    为什么系统弹出提示xlive.dll文件丢失?(为什么系统弹出登录此网络)

  • mtools命令  显示mtools支持的指令(cmd more命令)

    mtools命令 显示mtools支持的指令(cmd more命令)

  • 计提税费的会计分录怎么写
  • 盘盈盘亏处理意见和建议
  • 代开专票上的税额比电子缴款凭证上的税额少怎么调整
  • 差旅费是计入
  • 由第三方代付款开票给对方合规吗
  • 财务费用利息如何结转
  • 给非公司员工开工作证明办房贷
  • 劳务发票需要身份证原件吗
  • 小规模企业的企业所得税怎么交
  • 房屋的契税印花税的会计分录
  • 城市垃圾处置费计入会计什么科目
  • 会计做账中记账表怎么做
  • 出租无形资产收到的租金
  • 专业做电热水器哪些品牌
  • 清算结业是什么意思
  • 高新加计扣除怎么做账
  • 计划分配率怎么算
  • powershell不显示用户名
  • windows10如何开机直接进入桌面
  • 经营性租赁 会计准则
  • 苹果mac电脑自带的软件
  • PHP中time(),date(),mktime()区别介绍
  • 企业购入固定资产在每期末应使用公允价值法进行计量
  • 酒店装修期间的费用如何核算
  • 会计购入材料入什么科目
  • 存货什么时候计提什么时候回转
  • 模式识别与图像处理能做什么
  • 2023年前端开发找工作好找吗
  • bind函数错误
  • wordpress文章主题
  • 筹备期间费用怎么做分录
  • 什么情况需要预缴
  • 非营利组织免征企业所得税的通知
  • 航空公司可以开发票吗
  • 多提的增值税该怎么做账
  • 预计表示什么意思
  • 补缴的土地价款怎么算费用
  • 金税四期介绍 王军
  • 材料采购和原材料和在途物资的区别
  • 电梯改造税率
  • 银行代发的工资公司要求返还然后发一半
  • 仓库发货打包员工作内容
  • 白酒系列代理
  • 专票红冲信息表填开显示红字信息表金额大于蓝色金额
  • 财务会计应收票据
  • 代开租金发票的税金怎样入账?
  • 计提社保和工资一起怎么做账
  • 股东以货币出资的 应当将货币足额存入
  • 增值税为负值时当年可抵扣的进项税
  • 分配现金股利的顺序
  • 货款折扣的账务处理
  • 环境检测费属于什么费用
  • 小规模纳税人怎么算税
  • 药品进销差价科目明细
  • 旅游业营业税税率
  • 车辆折旧费法律支持吗
  • mysql 5.7 8.0
  • sql server如何
  • mysql数据库崩了怎么恢复
  • cndll.dll
  • skydrive pro
  • vidaa 破解
  • linux 详解
  • linux lv扩容
  • win8系统怎么查看隐藏文件
  • centos7网络配置文件在哪
  • win7系统回收站不见了怎么办
  • win7系统文件夹怎么加密
  • ubuntu搭建ftp服务器的步骤
  • jquery ztree api
  • 选择照片的快捷键
  • listview的item
  • MaterialCheckBox
  • python3gui
  • jQuery插件在使用前都需要引入jQuery的js文件
  • unable to instantiate decoder
  • js需要学到什么程度
  • javascript创建对象的三种方法
  • python with 用法
  • 企业税收筹划中的涉税风险及其防范
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设