深度学习中embedding层的理解

最近在看深度学习中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

猜你喜欢

转载自blog.csdn.net/program_developer/article/details/80852710