Pytorch 神经网络模块之 Sparse Layers

1. torch.nn.Embedding

   embedding 的主要目的是对稀疏特征进行降维。函数原型如下:

"""
num_embeddings – 词典的大小
embedding_dim – 嵌入向量的维度,即用多少维的向量来表示一个词
padding_idx(optional) – 填充id,每次的句子长度可能并不一样,就需要用统一的数字填充,而这里就是指定这个数字
max_norm – 
norm_type – 
scale_grad_by_freq – 
sparse –
"""
torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2, scale_grad_by_freq=False, sparse=False)

   举个例子:

    import torch

    embedding = torch.nn.Embedding(10, 3)
    # 输入 input 是两个句子,每个句子都是由四个字组成的,使用每个字的索引来表示,
    # 于是使用 nn.Embedding 对输入进行编码,每个字都会编码成长度为 3 的向量。
    input = torch.LongTensor([[1, 2, 4, 5], [4, 3, 2, 9]])
    print(embedding(input))

    """
    tensor([[[ 0.2917, -1.5941, -0.4041],
             [ 1.9426, -0.3626,  0.2998],
             [ 1.5753,  1.2323, -0.4405],
             [-0.6988, -0.1813, -0.8102]],

            [[ 1.5753,  1.2323, -0.4405],
             [ 0.3580, -0.4253,  0.6412],
             [ 1.9426, -0.3626,  0.2998],
             [-0.9070,  0.2207,  2.1904]]], grad_fn=<EmbeddingBackward>)
    """

 

posted @ 2020-12-30 22:44  _yanghh  阅读(608)  评论(0编辑  收藏  举报