如何实现torch.arange的tensor版本

news/2025/1/6 7:46:06/

文章目录

      • 背景
      • 实现方案
      • 不可行的情况

背景

import torch

我们都知道,torch.arange只支持数字,不支持tensor,如下:

torch.arange(0,5,1)

tensor([0, 1, 2, 3, 4])

但是如果使用tensor,就会报错:

torch.arange(torch.tensor([0]),torch.tensor([5]),torch.tensor([1]))

在这里插入图片描述

可问题是,我们有如下场景怎么办:

torch.arange(torch.tensor([0,2]),torch.tensor([5,7]),torch.tensor([1,1]))

也就是说,我们希望

torch.arange(0,5,1)和torch.arange(2,7,1)

并行做,难道就不行吗?

实现方案

上面这种并行是可以做到的,如下:

x=torch.arange(0,5,1).reshape(1,-1)
a=torch.tensor([0,2])
a=a.reshape(-1,1)
x=a+x
x

tensor([[0, 1, 2, 3, 4],
[2, 3, 4, 5, 6]])

不可行的情况

细心的人可以发现,上面是具有特殊性的,

torch.arange(torch.tensor([0,2]),torch.tensor([5,7]),torch.tensor([1,1]))

torch.tensor([0,2])+5=torch.tensor([5,7])

且步长是一样的:

torch.tensor([1,1])#步长都是1

为什么必须这样呢?因为这样才可以保证,输出的结果的维度是一样的。比如你换一个:

torch.arange(torch.tensor([0,2]),torch.tensor([5,7]),torch.tensor([1,2]))

步长一个是1,一个是2,这样肯定不行,两个arange输出的维度不同,就肯定不可能并行。再比如:

torch.arange(torch.tensor([0,2]),torch.tensor([5,9]),torch.tensor([1,1]))

步长是一样了,但是5-0=5,9-2=7(end-start),最终arange输出的维度还是会不同,无法并行。


http://www.ppmy.cn/news/1135436.html

相关文章

SD卡格式化怎么恢复?

随着智能手机、平板电脑、数码相机和行车记录仪等各种移动电子设备走入千家万户,SD卡作为与这些设备相配套的存储介质,也随之获得了广泛的市场认可。SD卡因其体积小巧、容量庞大、读写速度高及与多种设备兼容的优点,逐渐成为日常工作和生活中…

使用 Python 和 wxPython 进行批量文件扩展名替换

引言: 在日常的文件管理中,有时我们需要将一大批文件的扩展名进行替换。手动一个个重命名文件是一项繁琐的任务,但是使用 Python 编程语言和 wxPython 模块可以轻松地实现这一功能。本文将介绍如何使用 Python 和 wxPython 创建一个简单的图形…

OpenGLES:绘制一个混色旋转的3D球体

一.概述 前面几篇博文讲解了如何使用OpenGLES实现不同的3D图形 本篇博文讲解怎样实现3D世界的代表图形:一个混色旋转的3D球体 二.球体解析 2.1 极限正多面体 如果有学习过我前几篇3D图形绘制的博文,就知道要想绘制一个3D图形,首先要做的…

Jmeter如何做压力测试

1.哪些业务需要做压力测试? 比较常用的业务场景或功能模块 单业务场景或多业务场景 项目要求做的业务场景 2.压力测试的并发数是多少? 有预期的数值?100 200 300一次性达到还是逐次增加?参照上次性能测试的结果 3.关注哪些参…

【userfaultfd】2021强网杯notebook

程序分析 老规矩,看下启动脚本 开启了 smep、smap、kaslr 保护,当然 kvm64 默认开启 kpti 保护 文件系统初始化脚本 #!/bin/sh /bin/mount -t devtmpfs devtmpfs /dev chown root:tty /dev/console chown root:tty /dev/ptmx chown root:tty /dev/tty…

力扣-383.赎金信

Idea 使用一个hashmap 或者一个int数组存储第二次字符串中每一个字符及其出现的次数 遍历第一个字符串,讲出现的重复字符减1,若该字符次数已经为0,则返回false AC Code class Solution { public:bool canConstruct(string ransomNote, strin…

Redis Cluster Gossip Protocol: PING, PONG, MEET

返回目录 PING / PONG / MEET 的发送 过程 计算freshNodes。freshNodes表示在消息中能携带的,在cluster节点字典中的节点总数,但需要减去myself和对端节点,因为myself的信息会存储在消息头中。实际上,并非所有在cluster节点字典…

Vue09 事件的修饰符

Vue中的事件修饰符: 1.prevent:阻止默认事件(常用); 2.stop:阻止事件冒泡(常用); 3.once:事件只触发一次(常用); 4.captur…