mindtext.embeddings.static_embedding

class mindtext.embeddings.static_embedding.StaticEmbedding(vocab: Vocabulary, model_dir_or_name: Union[str, None] = None, embedding_dim=-1,requires_grad: bool = True, dropout=0.1)

给定预训练embedding的名称或路径,根据vocab从embedding中抽取相应的数据。如果没有找到相应的数据,则会随机初始化embedding。

Example

>>> vocab = Vocabulary()
>>> vocab.update(["i", "am", "fine"])
>>> embed = StaticEmbedding(vocab, model_dir_or_name=None, embedding_dim=5)
>>> words = mindspore.Tensor([[vocab[word] for word in ["i", "am", "fine"]]])
>>> words_emb = embed(words)
>>> Tensor(shape=[1, 3, 5], dtype=Float32, value=
            [[[7.56267071e-001, -3.02625038e-002, 6.10783875e-001, 4.03315663e-001, -6.82987273e-001],
            [3.35875869e-001, 2.93195043e-002, 2.17977986e-001, 9.68403295e-002, -4.01605248e-001],
            [-2.35586300e-001, 4.89649743e-001, -2.10691467e-001, -1.81295246e-001, -6.90823942e-002]]]).

init (vocab: Vocabulary, model_dir_or_name: Union[str, None] = None, embedding_dim=-1,requires_grad: bool = True, dropout=0.1)

参数

  • vocab (Vocabulary): Vocabulary对象。 StaticEmbedding只会加载单词列表中包含的单词的词向量,如果在预训练的Embedding中没有找到,则使用随机初始化的Embedding。

  • model_dir_or_name (Union[str, None]): 预训练的StaticEmbedding有两种调用方式:1)是传入本地文件夹(一个后缀为.txt的文件)或文件路径。 2)是传入embedding的名称。 在第2种情况下,StaticEmbedding会自动检查模型是否存在于缓存中。 如果没有,StaticEmbedding会自动下载(华为云实现后)。如果输入为None,则使用维度为embedding_dim的随机初始化embedding。默认值为None

  • embedding_dim (int): 随机初始化embedding的维度。如果值大于0,model_dir_or_name将被忽略。

  • requires_grad (bool): 是否允许优化Embedding的参数。若为True,则优化所有参数;若为False,所有参数不允许优化;若为None,则部分参数允许优化、部分不允许。默认值为True

  • dropout (float): 对embedding后的输出表示进行dropout。默认值为0.1

construct (words)

传入单词的tokens,返回对应的embedding表示

参数

  • words (mindspore.Tensor): 单词的tokens,shape为(batch_size, seq_len)。

返回

  • mindspore.Tensor:单词的embedding表示,shape为(batch_size, seq_len)。