• nn.Embedding()函数理解


    torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None,
     max_norm=None,  norm_type=2.0,   scale_grad_by_freq=False, 
     sparse=False,  _weight=None)
    

    参数解释:

    • num_embeddings (python:int) – 词典的大小尺寸,比如总共出现5000个词,那就输入5000。此时index为(0-4999)
    • embedding_dim (python:int) – 嵌入向量的维度,即用多少维来表示一个符号。
    • padding_idx (python:int, optional) – 填充id,比如,输入长度为100,但是每次的句子长度并不一样,后面就需要用统一的数字填充,而这里就是指定这个数字,这样,网络在遇到填充id时,就不会计算其与其它符号的相关性。(初始化为0)
    • max_norm (python:float, optional) – 最大范数,如果嵌入向量的范数超过了这个界限,就要进行再归一化。
    • norm_type (python:float, optional) – 指定利用什么范数计算,并用于对比max_norm,默认为2范数。
    • scale_grad_by_freq (boolean, optional) – 根据单词在mini-batch中出现的频率,对梯度进行放缩。默认为False

    nn.Embedding()就是随机初始化了一个num_embeddings*embedding_dim的二维表,每一行代表着对应索引的词向量表示。加入我们要得到一句话的初始化词向量,我们需要将

    句子进行分词,得到每一个词的索引,将索引送入nn.embedding()函数中,会自动在建立的二维表中找到索引对应的初始化词向量。

    nn.Embedding()的输入是(batch_size,seq_len) 输出是(batch_size,seq_len,embedding)

    这个函数实质上是将索引转成one-hot向量,之后再与权重矩阵W相乘进行运算,再反向传播过程中,不断更新权重W,使得词向量能更准确的表示这个词。

    参考连接:https://www.jianshu.com/p/63e7acc5e890

  • 相关阅读:
    logic:iterate用法教程
    js实现页面跳转的几种方式
    MyEclipse快捷键两篇文章
    hibernate.cfg.xml配置
    DispatchAction功能用法
    第一个Spring程序
    BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
    【Struts1.2总结】strutsconfig.xml配置
    java中equals和==的区别
    开发Struts程序的两篇文章
  • 原文地址:https://www.cnblogs.com/zhang12345/p/16104319.html
Copyright © 2020-2023  润新知