如何实现torch.arange的tensor版本

文章目录

背景

python 复制代码
import torch

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

python 复制代码
torch.arange(0,5,1)

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

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

python 复制代码
torch.arange(torch.tensor([0]),torch.tensor([5]),torch.tensor([1]))

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

python 复制代码
torch.arange(torch.tensor([0,2]),torch.tensor([5,7]),torch.tensor([1,1]))

也就是说,我们希望

python 复制代码
torch.arange(0,5,1)和torch.arange(2,7,1)

并行做,难道就不行吗?

实现方案

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

python 复制代码
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\]\])

不可行的情况

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

python 复制代码
torch.arange(torch.tensor([0,2]),torch.tensor([5,7]),torch.tensor([1,1]))

python 复制代码
torch.tensor([0,2])+5=torch.tensor([5,7])

且步长是一样的:

python 复制代码
torch.tensor([1,1])#步长都是1

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

python 复制代码
torch.arange(torch.tensor([0,2]),torch.tensor([5,7]),torch.tensor([1,2]))

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

python 复制代码
torch.arange(torch.tensor([0,2]),torch.tensor([5,9]),torch.tensor([1,1]))

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

相关推荐
灵机一物3 分钟前
灵机一物AI原生电商小程序、PC端(已上线)-TST Token叠加训练技术解析:预训练提速2.5倍,零改架构、零推理负担
人工智能
孙高飞7 分钟前
AI 驱动 UI 自动化的完整 DEOM 工程下载与详解
人工智能·ui·自动化
狒狒热知识10 分钟前
2026软文营销行业规范化发展报告:优质平台甄选标准与企业投放策略
人工智能
海盗123413 分钟前
AI科技周刊:2026年5月中旬大模型竞争白热化
人工智能·科技·ai
刘一说13 分钟前
AI科技热点日报 | 2026年5月16日
人工智能·科技
逆境不可逃14 分钟前
Hello-Agents 第一部分总结:从智能体概念到大语言模型基础
人工智能·语言模型·自然语言处理
littlebigbar15 分钟前
亲身体验AI智能体在实际项目中展现的核心能力
人工智能·selenium·测试工具
Android出海16 分钟前
2026主流AI工具对比:ChatGPT、Gemini、Claude、Grok深度分析与选择
人工智能·ai·chatgpt·claude·grok·ai工具·gemini
霍格沃兹测试学院-小舟畅学16 分钟前
AI 测试用例审核 Skill:把用例评审从“凭经验”变成“可评分”
人工智能·测试用例
凌风工具箱17 分钟前
告别流量焦虑|凌风工具箱一键开启流量加速,适配 TEMU/Shein/TK 全平台
大数据·人工智能