name | about | labels |
---|---|---|
Bug Report | Use this template for reporting a bug | kind/bug |
在进行big_bird模型迁移时,在对张量进行张量索引得到的结果和pytorch不同。对此我采用了简单例子展示问题。
Ascend
/GPU
/CPU
) / 硬件环境: CPUPlease delete the backend not involved / 请删除不涉及的后端:
/device ascend/GPU/CPU/kirin/等其他芯片
Software Environment / 软件环境 (Mandatory / 必填):
-- MindSpore version (e.g., 2.2.11) :
-- Python version (e.g., Python 3.9.16) :
-- OS platform and distribution (e.g., Linux Ubuntu 18.04):
-- GCC/Compiler version (if compiled from source): 7.5.0
Excute Mode / 执行模式 (Mandatory / 必填)(PyNative
/Graph
):
项目中执行的命令:pytest -v -s tests/ut/transformers/models/big_bird
简单样例直接执行即可
import torch
i2 = torch.zeros((14, 3),dtype=int)
p1 = p2 = 0
right_slice = torch.ones((8, 24))
attn_probs_view = torch.ones((7, 4, 16, 8, 16, 8))
attn_probs_view[p1, p2, 1, :, i2[0]] = right_slice.view(8, 3, 8)
attn_probs_view[p1, p2, 1, :, i2[0]].shape
import mindspore
from mindspore import ops
i2 = ops.zeros((14, 3),dtype=mindspore.int32)
p1 = p2 = 0
right_slice = ops.ones((8, 24))
attn_probs_view = ops.ones((7, 4, 16, 8, 16, 8))
attn_probs_view[p1, p2, 1, :, i2[0]] = right_slice.view(8, 3, 8)
相同的代码pytorch的attn_probs_view[p1, p2, 1, :, i2[0]].shape是(8,3,8);
但是mindspore的attn_probs_view[p1, p2, 1, :, i2[0]].shape是(3,8,8)。
mindspore/core/ops/broadcast_to.cc:97 BroadcastToInferShape
Please assign maintainer to check this issue.
请为此issue分配处理人。
@fangwenyi @chengxiaoli @Shawny
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
感谢您的反馈,您可以评论//mindspore-assistant更快获取帮助,更多标签可以查看标签列表:
改成这样即可attn_probs_view[p1, p2, 1][ :, i2[0]]
你好,问题收到,我们已安排人员分析。
执行切片后,shape与预期不一致
import mindspore
from mindspore import ops
i2 = ops.zeros((14, 3),dtype=mindspore.int32)
p1 = p2 = 0
right_slice = ops.ones((8, 24))
attn_probs_view = ops.ones((7, 4, 16, 8, 16, 8))
attn_probs_view[p1, p2, 1, :, i2[0]].shape
(3, 8, 8)
import torchi2 = torch.zeros((14, 3),dtype=int)
p1 = p2 = 0
right_slice = torch.ones((8, 24))
attn_probs_view = torch.ones((7, 4, 16, 8, 16, 8))
attn_probs_view[p1, p2, 1, :, i2[0]].shape
torch.Size([8, 3, 8])
import torch
import mindspore as ms
from mindspore import ops
import numpy as np
i2 = torch.tensor([0, 0, 0], dtype=int)
attn_probs_view = torch.ones((7, 4, 16, 8, 16, 8))
print(attn_probs_view[0, 0, 1, :, i2].shape)
# torch.Size([8, 3, 8])
i2 = ms.Tensor([0, 0, 0], dtype=ms.int32)
attn_probs_view = ops.ones((7, 4, 16, 8, 16, 8))
print(attn_probs_view[0, 0, 1, :, i2].shape)
# (3, 8, 8)
i2 = np.array([0, 0, 0], dtype=np.int32)
attn_probs_view = np.ones((7, 4, 16, 8, 16, 8))
print(attn_probs_view[0, 0, 1, :, i2].shape)
# (3, 8, 8)
import torch
import mindspore as ms
from mindspore import ops
import numpy as np
print("numpy:")
data = np.arange(24).reshape(2, 3, 4)
print(data[0, :, [0, 0]])
print(data[0, :, [0, 0]].shape)
# [[0 4 8]
# [0 4 8]]
# (2, 3)
print(data[0][:, [0, 0]])
print(data[0][:, [0, 0]].shape)
# [[0 0]
# [4 4]
# [8 8]]
# (3, 2)
print("\npytorch:")
data = torch.tensor(np.arange(24).reshape(2, 3, 4))
print(data[0, :, [0, 0]])
print(data[0, :, [0, 0]].shape)
# tensor([[0, 0],
# [4, 4],
# [8, 8]])
# torch.Size([3, 2])
print(data[0][:, [0, 0]])
print(data[0][:, [0, 0]].shape)
# tensor([[0, 0],
# [4, 4],
# [8, 8]])
# torch.Size([3, 2])
print("\nmindspore:")
data = ops.Tensor(np.arange(24).reshape(2, 3, 4))
print(data[0, :, [0, 0]])
print(data[0, :, [0, 0]].shape)
# [[0 4 8]
# [0 4 8]]
# (2, 3)
print(data[0][:, [0, 0]])
print(data[0][:, [0, 0]].shape)
# [[0 0]
# [4 4]
# [8 8]]
# (3, 2)
您好,由于问题单没有回复,我们后续会关闭,如您仍有疑问,可以反馈下具体信息,并将ISSUE状态修改为WIP,我们这边会进一步跟踪,谢谢
您好,由于问题单没有回复,我们后续会关闭,如您仍有疑问,可以反馈下具体信息,并将ISSUE状态修改为WIP,我们这边会进一步跟踪,谢谢
您好,由于问题单没有回复,我们后续会关闭,如您仍有疑问,可以反馈下具体信息,并将ISSUE状态修改为WIP,我们这边会进一步跟踪,谢谢
登录 后才可以发表评论