用法:
mxnet.symbol.Embedding(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.
) - 结果符号的名称。
- data:(
结果符号。
参数:
返回:
返回类型:
将整数索引映射到向量表示(嵌入)。
该运算符将单词映射到高维空间中的实值向量,称为单词嵌入。这些嵌入可以捕获单词的语义和句法属性。例如,已经注意到在学习的嵌入空间中,相似的词往往彼此靠近,而不同的词则相距甚远。
对于形状为 (d1, ..., dK) 的输入数组,输出数组的形状为 (d1, ..., dK, output_dim)。所有输入值应为 [0, input_dim) 范围内的整数。
如果input_dim为ip0,output_dim为op0,则嵌入权重矩阵的形状必须为(ip0, op0)。
当“sparse_grad” 为 False 时,如果提及的任何索引太大,则将其替换为嵌入矩阵中最后一个向量的索引。当“sparse_grad” 为 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. Embedding(x, y, 4, 5) = [[[ 5., 6., 7., 8., 9.], [ 15., 16., 17., 18., 19.]], [[ 0., 1., 2., 3., 4.], [ 10., 11., 12., 13., 14.]]]
权重的存储类型可以是row_sparse 或默认值。
注意:
如果“sparse_grad”设置为True,梯度w.r.t权重的存储类型将是“row_sparse”。只有一部分优化器支持稀疏梯度,包括 SGD、AdaGrad 和 Adam。请注意,默认情况下延迟更新已打开,其执行方式可能与标准更新不同。有关详细信息,请在以下位置查看优化 API:https://mxnet.incubator.apache.org/api/python/optimization/optimization.html
例子:
假设我们要将 26 个英文字母映射到 16 维向量表示。
>>> vocabulary_size = 26 >>> embed_dim = 16 >>> seq_len, batch_size = (10, 64) >>> input = Variable('letters') >>> op = Embedding(data=input, input_dim=vocabulary_size, output_dim=embed_dim, ...name='embed') >>> SymbolDoc.get_output_shape(op, letters=(seq_len, batch_size)) {'embed_output': (10L, 64L, 16L)}
>>> vocab_size, embed_dim = (26, 16) >>> batch_size = 12 >>> word_vecs = test_utils.random_arrays((vocab_size, embed_dim)) >>> op = Embedding(name='embed', input_dim=vocab_size, output_dim=embed_dim) >>> x = np.random.choice(vocab_size, batch_size) >>> y = test_utils.simple_forward(op, embed_data=x, embed_weight=word_vecs) >>> y_np = word_vecs[x] >>> test_utils.almost_equal(y, y_np) True
相关用法
- Python mxnet.symbol.op.broadcast_logical_xor用法及代码示例
- Python mxnet.symbol.op.log_softmax用法及代码示例
- Python mxnet.symbol.space_to_depth用法及代码示例
- Python mxnet.symbol.random_pdf_poisson用法及代码示例
- Python mxnet.symbol.argmin用法及代码示例
- Python mxnet.symbol.linalg_potrf用法及代码示例
- Python mxnet.symbol.contrib.dgl_graph_compact用法及代码示例
- Python mxnet.symbol.op.SliceChannel用法及代码示例
- Python mxnet.symbol.op.linalg_trmm用法及代码示例
- Python mxnet.symbol.sparse.exp用法及代码示例
- Python mxnet.symbol.sparse.zeros_like用法及代码示例
- Python mxnet.symbol.Symbol.get_children用法及代码示例
- Python mxnet.symbol.op.broadcast_plus用法及代码示例
- Python mxnet.symbol.linalg.makediag用法及代码示例
- Python mxnet.symbol.op.broadcast_mul用法及代码示例
- Python mxnet.symbol.fix用法及代码示例
- Python mxnet.symbol.broadcast_hypot用法及代码示例
- Python mxnet.symbol.linalg_gelqf用法及代码示例
- Python mxnet.symbol.op.reciprocal用法及代码示例
- Python mxnet.symbol.choose_element_0index用法及代码示例
注:本文由纯净天空筛选整理自apache.org大神的英文原创作品 mxnet.symbol.Embedding。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。