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>) """