最近在看深度学习中embedding的内容,把自己看过比较好的相关博客总结收录如下:
(1)深度学习中Embedding层有什么用?
地址:https://blog.csdn.net/u010412858/article/details/77848878
(2)英文版介绍Embedding层作用:
https://medium.com/towards-data-science/deep-learning-4-embedding-layers-f9a02d55ac12
翻译:
https://juejin.im/post/599183c6f265da3e2e5717d2
(3)用一个小例子来介绍embedding工作原理:
http://www.orbifold.net/default/2017/01/10/embedding-and-tokenizer-in-keras/
(4)用很全面的例子来介绍embedding:
https://juejin.im/entry/5acc23f26fb9a028d1416bb3
http://frankchen.xyz/2017/12/18/How-to-Use-Word-Embedding-Layers-for-Deep-Learning-with-Keras/
(5)embedding在Tensorflow中的例子:
https://blog.csdn.net/goddessblessme/article/details/79892613
import tensorflow as tf
import numpy as np
input_ids = tf.placeholder(dtype=tf.int32, shape=[None])
embedding = tf.Variable(np.identity(5, dtype=np.int32))
input_embedding = tf.nn.embedding_lookup(embedding, input_ids)
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
print(embedding.eval())
print(sess.run(input_embedding, feed_dict={input_ids:[1, 2, 3, 0, 3, 2, 1]}))
解释:
第四行:输入变量占位符,长度不定。
第五行:embedding的tensor变量,定义嵌入矩阵,此次为对角阵,矩阵对角上的值为1,其它为0,可以认为是一种one-hot编码。
第六行:通过指定input_ids查找编码。
第七、八行:初始化。
第九行:输出嵌入矩阵。
第十行:feed_dict输入变量赋值,根据input_ids输出第三行的值,分别是对应为[1,2,3,0,3,2,1]的编码向量。
注意:embedding层是可以训练的层,嵌入矩阵是可以学习得到的。
(6)这篇文章可以清楚的理解“词嵌入”和“嵌入层”之间的关系:
地址:http://www.360doc.com/content/17/1021/00/16619343_696787348.shtml