当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python mxnet.contrib.symbol.SparseEmbedding用法及代码示例


用法:

mxnet.contrib.symbol.SparseEmbedding(data=None, weight=None, input_dim=_Null, output_dim=_Null, dtype=_Null, sparse_grad=_Null, name=None, attr=None, out=None, **kwargs)

参数

  • data(Symbol) - 嵌入运算符的输入数组。
  • weight(Symbol) - 嵌入权重矩阵。
  • input_dim(int, required) - 输入索引的词汇量。
  • output_dim(int, required) - 嵌入向量的维度。
  • dtype({'bfloat16', 'float16', 'float32', 'float64', 'int32', 'int64', 'int8', 'uint8'},optional, default='float32') - 重量的数据类型。
  • sparse_grad(boolean, optional, default=0) - 在反向计算中计算行稀疏梯度。如果设置为 True,则 grad 的存储类型为row_sparse。
  • name(string, optional.) - 结果符号的名称。

返回

结果符号。

返回类型

Symbol

将整数索引映射到向量表示(嵌入)。

注意::contrib.SparseEmbedding 已弃用,请改用 Embedding

该运算符将单词映射到高维空间中的实值向量,称为单词嵌入。这些嵌入可以捕获单词的语义和句法属性。例如,已经注意到在学习的嵌入空间中,相似的词往往彼此靠近,而不同的词则相距甚远。

对于形状为 (d1, ..., dK) 的输入数组,输出数组的形状为 (d1, ..., dK, output_dim)。所有输入值应为 [0, input_dim) 范围内的整数。

如果input_dim为ip0,output_dim为op0,则嵌入权重矩阵的形状必须为(ip0, op0)。

渐变的存储类型将是 row_sparse

注意

SparseEmbedding 专为 input_dim 非常大(例如 100k)的用例而设计。该运算符可在 CPU 和 GPU 上使用。当 deterministic 设置为 True 时,如果特征在输入中出现多次,则梯度的累积遵循确定性顺序。但是,在 GPU 上执行命令时,累积通常较慢。在 GPU 上使用算子时,deterministic 的推荐值为 True

例子:

input_dim = 4
output_dim = 5

// Each row in weight matrix y represents a word. So, y = (w0,w1,w2,w3)
y = [[  0.,   1.,   2.,   3.,   4.],
     [  5.,   6.,   7.,   8.,   9.],
     [ 10.,  11.,  12.,  13.,  14.],
     [ 15.,  16.,  17.,  18.,  19.]]

// Input array x represents n-grams(2-gram). So, x = [(w1,w3), (w0,w2)]
x = [[ 1.,  3.],
     [ 0.,  2.]]

// Mapped input x to its vector representation y.
SparseEmbedding(x, y, 4, 5) = [[[  5.,   6.,   7.,   8.,   9.],
                               [ 15.,  16.,  17.,  18.,  19.]],

                              [[  0.,   1.,   2.,   3.,   4.],
                               [ 10.,  11.,  12.,  13.,  14.]]]

相关用法


注:本文由纯净天空筛选整理自apache.org大神的英文原创作品 mxnet.contrib.symbol.SparseEmbedding。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。