# MindSpore报错TypeError: init\(\) missing 2 required positional arguments: 'vocab\_size' and 'embedding\_size'

**1. 系统环境**

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

软件环境: MindSpore 版本: 2.2.0

执行模式（静态图/动态图）： 不限

Python 版本: 3.9

操作系统平台: linux

**2. 报错信息**

2.1 问题描述

将pytorch框架的代码转换为mindspore报错。

2.2 报错信息

```
TypeError: __init__() missing 2 required positional arguments: 'vocab_size' and 'embedding_size'
```

2.3 脚本信息

PyTorch

```
input_data = self.embedding(input_data)
```

MindSpore

```
net = nn.Embedding() 
input_data = net(input_data)
```

**3. 根因分析**

首先看torch的API：https://pytorch.org/docs/stable/generated/torch.nn.Embedding.html\#torch.nn.Embedding

```
# an Embedding module containing 10 tensors of size 3
embedding = nn.Embedding(10, 3)
# a batch of 2 samples of 4 indices each
input = torch.LongTensor([[1, 2, 4, 5], [4, 3, 2, 9]])
embedding(input)
```

上面torch代码的self.embedding 应该也是定义了_num\_embeddings_,  _embedding\_dim_

再看mindspore API：https://www.mindspore.cn/docs/zh-CN/r2.2/api\_python/nn/mindspore.nn.Embedding.html?highlight=embedding\#mindspore.nn.Embedding

```
import mindspore
from mindspore import Tensor, nn
import numpy as np
net = nn.Embedding(20000, 768,  True)
x = Tensor(np.ones([8, 128]), mindspore.int32)
# Maps the input word IDs to word embedding.
output = net(x)
result = output.shape
print(result)
```

```
classmindspore.nn.Embedding(vocab_size, embedding_size, use_one_hot=False, embedding_table='normal', dtype=mstype.float32, padding_idx=None)
```

vocab\_size \(int\) - 词典的大小。

embedding\_size \(int\) - 每个嵌入向量的大小。

这两个参数的必选的，分别对应torch的num\_embeddings, embedding\_dim

**4. 解决方案**

定义net = nn.Embedding\(\) 的时候提供_vocab\_size_,  _embedding\_size这两个参数即可_。

```
net = nn.Embedding(20000,100) 
input_data = net(input_data)
```

