本文已参加「新人创作礼」活动,一起敞开创作之路。

CPU(Central Processing Unit):中央处理器 GPU(Graphics Processing Unit):图形处理器 NPU(Neural Network Processing Unit):神经网络处理器,是基于神经网络算法与加快的新型处理器总称。

一、 torch.arange() 和 torch.range() 的用法

pytorch官网介绍:

【pytorch算子】torch.arange 算子在 CPU/GPU/NPU 中支持的数据类型格式

torch.arange(start,end,step) 用于发生一个从start开始,到end完毕(留意不包含end),步长为step的Tensor, 并且能够设置 Tensor 的 device 和 dtype

torch.arange 与 torch.range 功用及其类似,不同之处在于 torch.range(start,end,step) 生成的 Tensor, 包含 end

如:

a=torch.arange(1, 7, 2)
b=torch.range(1, 7, 2)
print(a)
print(b)

输出:

tensor([1, 3, 5])
tensor([1., 3., 5., 7.])
可是建议运用 torch.arange ,因为 torch.range 即将被pytorch 移除:

【pytorch算子】torch.arange 算子在 CPU/GPU/NPU 中支持的数据类型格式

二、 torch.arange 支撑的数据类型格局

只考虑 float 类型

cpu 不支撑 float16,支撑 float32 和 float64 cpu 支撑 float16 、float32 和 float64 npu 不支撑 float16 和 float64 ,只支撑 float32

事实上 npu 基本不支撑一切的 64位类型,包含 int64 和 float64,与算子无关。当然cpu 是支撑 16位数据类型的,仅仅 torch.arange 不支撑罢了。

验证代码如下:

import torch
# CPU
a=torch.arange(1, 10, 2,device="cpu",dtype=torch.float16)    # 不能够
a=torch.arange(1, 10, 2,device="cpu",dtype=torch.float32)    # 能够
a=torch.arange(1, 10, 2,device="cpu",dtype=torch.float64)    # 能够
# GPU
a=torch.arange(1, 10, 2, device="cuda:0",dtype=torch.float16)    # 能够
a=torch.arange(1, 10, 2, device="cuda:0",dtype=torch.float32)    # 能够
a=torch.arange(1, 10, 2, device="cuda:0",dtype=torch.float64)    # 能够
# NPU
a=torch.arange(1, 10, 2, device="npu:0",dtype=torch.float16)    # 不能够
a=torch.arange(1, 10, 2, device="npu:0",dtype=torch.float32)    # 能够
a=torch.arange(1, 10, 2, device="npu:0",dtype=torch.float64)    # 不能够
print(a)