比较与torch.eye的功能差异
torch.eye
torch.eye(
n,
m=None,
*,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False) -> Tensor
更多内容详见torch.eye。
mindspore.ops.eye
mindspore.ops.eye(n, m, t) -> Tensor
更多内容详见mindspore.ops.eye。
差异对比
PyTorch:PyTorch中可以在参数中指定一个接受输出的张量、返回的张量的layout、requires_grad以及指定设备。
MindSpore:
PyTorch中参数m
是可选的,如果没有该参数,那么返回一个列数和行数相同的张量;MindSpore中是必须的。
PyTorch中dtype
是可选的,如果没有该参数,默认为torch.float32
;MindSpore中是必须的。
功能上无差异。
分类 |
子类 |
PyTorch |
MindSpore |
差异 |
---|---|---|---|---|
参数 |
参数1 |
n |
n |
- |
参数2 |
m |
m |
指定张量的列数。PyTorch中是可选的,如果没有该参数,那么返回一个列数和行数相同的张量;MindSpore中是必须的 |
|
参数3 |
out |
- |
不涉及 |
|
参数4 |
dtype |
t |
功能一致,参数名不同,PyTorch中是可选的,如果没有默认为 |
|
参数5 |
layout |
- |
不涉及 |
|
参数6 |
device |
- |
不涉及 |
|
参数7 |
requires_grad |
- |
MindSpore无此参数,默认支持反向求导 |
差异分析与示例
代码示例1
PyTorch可以缺省
m
参数。其他功能一致。
# PyTorch
import torch
# 参数m可以缺省,dtype可以缺省
e1 = torch.eye(3)
print(e1.numpy())
# [[1., 0., 0.]
# [0., 1., 0.]
# [0., 0., 1.]]
# MindSpore
import mindspore
import mindspore.ops as ops
e1 = ops.eye(3, 3, mindspore.float32)
print(e1)
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
代码示例2
PyTorch可以缺省
dtype
参数。其他功能一致。
# PyTorch
import torch
# 参数dtype可以缺省
e2 = torch.eye(3, 2)
print(e2.numpy())
# [[1, 0]
# [0, 1]
# [0, 0]]
# MindSpore
import mindspore
import mindspore.ops as ops
e2 = ops.eye(3, 2, mindspore.float32)
print(e2)
# [[1. 0.]
# [0. 1.]
# [0. 0.]]