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>)
"""
浙公网安备 33010602011771号