tf.nn.embedding_lookup函数的用法
程序员文章站
2024-02-29 21:25:28
...
- 原型:tf.nn.embedding_lookup(params, ids, partition_strategy='mod', name=None, validate_indices=True, max_norm=None)
- 在网上搜会发现基本都是假设ids只有一行,但是假如ids有若干行,会怎样?
- 直接上代码:
# -*- coding= utf-8 -*-
import tensorflow as tf
import numpy as np
a = [[0.1, 0.2, 0.3], [1.1, 1.2, 1.3], [2.1, 2.2, 2.3], [3.1, 3.2, 3.3], [4.1, 4.2, 4.3]]
a = np.asarray(a)
idx1 = tf.Variable([0, 2, 3, 1], tf.int32)
idx2 = tf.Variable([[0, 2, 3, 1], [4, 0, 2, 2]], tf.int32)
out1 = tf.nn.embedding_lookup(a, idx1)
out2 = tf.nn.embedding_lookup(a, idx2)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print sess.run(out1)
print out1
print '=================='
print sess.run(out2)
print out2
输出:
[[ 0.1 0.2 0.3]
[ 2.1 2.2 2.3]
[ 3.1 3.2 3.3]
[ 1.1 1.2 1.3]]
Tensor("embedding_lookup:0", shape=(4, 3), dtype=float64)
==================
[[[ 0.1 0.2 0.3]
[ 2.1 2.2 2.3]
[ 3.1 3.2 3.3]
[ 1.1 1.2 1.3]]
[[ 4.1 4.2 4.3]
[ 0.1 0.2 0.3]
[ 2.1 2.2 2.3]
[ 2.1 2.2 2.3]]]
Tensor("embedding_lookup_1:0", shape=(2, 4, 3), dtype=float64)
作者:fanbo
链接:https://www.jianshu.com/p/ad88a0afa98f
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
很显然等同于查字典,第一个参数给你一本字典,第二个参数告诉你要查的单词 ;和我原想的完全不一样;我一直以为word2vec矩阵会是一个线性转换矩阵;
本质是等价于将一个one-hot向量变成embedding vector;所以和以前的看法是一样的;只是没有明白其本质,所以才会上述结论;一个索引转换成一个one-hot 向量,然后与转换矩阵相乘就会得到其索引所在的行,如图所示:假如第一个索引为4
上一篇: Redis主从复制的原理
下一篇: Redis的主从复制原理
推荐阅读
-
tf.nn.embedding_lookup()函数
-
tf.nn.embedding_lookup函数的用法
-
Tensorflow中tf.nn.relu()函数的理解
-
CNN中做归一化用到的相关API(自己的小总结:tf.nn.moments()函数理解) 以及CNN中NHWC转NCHW的方法
-
java中enum的用法
-
Tensorflow中tf.nn.relu()函数的理解
-
python中yield的用法详解——最简单,最清晰的解释
-
mysql update语句的用法详解
-
ASP.NET服务器端控件RadioButtonList,DropDownList,CheckBoxList的取值、赋值用法
-
通过实例认识MySQL中前缀索引的用法