如何实现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输出的维度还是会不同,无法并行。

相关推荐
lrh1228002 分钟前
详解逻辑回归算法:分类任务核心原理、损失函数与评估方法
人工智能·分类·数据挖掘
StarRocks_labs4 分钟前
不止于极速查询!StarRocks 2025 年度回顾:深耕 Lakehouse,加速 AI 融合
starrocks·人工智能·物化视图·lakehouse·湖仓架构
智驱力人工智能7 分钟前
景区节假日车流实时预警平台 从拥堵治理到体验升级的工程实践 车流量检测 城市路口车流量信号优化方案 学校周边车流量安全分析方案
人工智能·opencv·算法·安全·yolo·边缘计算
IT北辰11 分钟前
基于Vue3+python+mysql8.0的财务凭证录入系统,前后端分离完整版(可赠送源码)
python·vue
Sherlock Ma13 分钟前
强化学习入门(2):DQN、Reinforce、AC、PPO
人工智能·深度学习·机器学习·自然语言处理·transformer·dnn·强化学习
冰西瓜60014 分钟前
从项目入手机器学习(六)—— 深度学习尝试
人工智能·深度学习·机器学习
水境传感 张园园18 分钟前
负氧离子监测站:守护清新空气,畅享健康生活
人工智能·负氧离子监测站
咩咩不吃草19 分钟前
机器学习不平衡数据处理三招:k折交叉验证、下采样与过采样实战
人工智能·算法·机器学习·下采样·过采样·k折交叉验证
墨染青竹梦悠然20 分钟前
基于Django+vue的图书借阅管理系统
前端·vue.js·后端·python·django·毕业设计·毕设
TSINGSEE20 分钟前
国标GB28181视频质量诊断:EasyGBS服务插件EasyVQD快速识别花屏、蓝屏、画面冻结抖动
人工智能·音视频·实时音视频·视频编解码·视频质量诊断·花屏检测·画面抖动