使用Mindspore的embedding报错
收藏回复举报
使用Mindspore的embedding报错
发表于2024-03-20 17:08:36
0 查看

系统环境

硬件环境(Ascend/GPU/CPU): GPU/CPU

MindSpore版本: mindspore=2.2.0

执行模式(PyNative/ Graph):不限

Python版本: Python=3.8

操作系统平台: 不限

报错信息

2.1问题描述

pytorch的代码转换为mindspore,其中在embedding层遇到如下代码:

import mindspore
from mindspore import Tensor, nn
import numpy as np
net = nn.Embedding(110, 8)
x = Tensor(np.array([[107] *50]), mindspore. int64)
print(x)
# Maps the input wordIDs to word embedding.
output = net(x)
result = output.shape
print(net)
print(result)

其中input_data为int64类型,torch的embedding能够处理,使用mindspore将代码修改为:

net = nn.Embedding(vocab_size=self.hidden_size, embedding_size=self.embedding_size,dtype=ms.int64) 
input_data = net(input_data)

发现定义出来的net的dtype仍为float32,导致了类型错误

2.2报错信息

Traceback (most recent cal1 last):
File "main. py", line 206, in Kmodule)    main0
File "main. py", line 200, in main
ppo_ori. feature_search ()
File "/root/Catch-master/ppo_ori. py", line 96, in feature_search
sample history = self. controller. sample 0
File "/root/Catch master/control ler_alpha. py", line 446, in sample
res h_c_t_list, ops_logits, otp_logits = self. construct(
File "/root/Catch master/control ler_alpha. py", line 218, in construct
input_data = self. embedding (input_data)
File "/root/miniconda3/1ib/python3. 8/si te packages/mindspore/nn/cel1. py", line 705, in _cal1
raise err
File "/root/miniconda3/1ib/python3. 8/si te packages/mindspore/nn/cel1. py", line 701, in_call
output = self. _run_construct (args, kwargs)
File "/root/miniconda3/1ib/python3. 8/site-packages/mindspore/nn/ce11. py", line 482, in _run_construct
output = self. construct (*cast_inputs, **kwargs)
File "/root/miniconda3/1ib/python3.8/si te packages/mindspore/nn/layer/embedding. py", line 137, in constru
out_shape = self. get_shp(ids) + (self. embedding_size,)     File "/root/miniconda3/1ib/python3. 8/si te packages/mindspore/ops/operat ions/array_ops. py", line 701, in.
return x. shape
File "/root/miniconda3/1ib/python3.8/si te packages/mindspore/common/_stub_tensor. py", line 85, in shape
self. stub_shape = self. stub. get_shape()
TypeError: Invalid dtype

根因分析

******此处由用户填写******

解决方案

******此处由用户填写******

包含文字方案和最终脚本代码

请将正确的脚本打包并上传附件

我要发帖子