Tensorflow 卷积神经网络的单词嵌入

Tensorflow 卷积神经网络的单词嵌入,tensorflow,conv-neural-network,word2vec,Tensorflow,Conv Neural Network,Word2vec,我正在尝试将word2vec应用于卷积神经网络。我是Tensorflow的新手。这是我的列车前层代码 W = tf.Variable(tf.constant(0.0, shape=[vocabulary_size, embedding_size]), trainable=False, name="W") embedding_placeholder = tf.placeholder(tf.float32, [vocabulary_size, embedding_si

我正在尝试将word2vec应用于卷积神经网络。我是Tensorflow的新手。这是我的列车前层代码

W = tf.Variable(tf.constant(0.0, shape=[vocabulary_size, embedding_size]),
                trainable=False, name="W")
embedding_placeholder = tf.placeholder(tf.float32, [vocabulary_size, embedding_size])
embedding_init = W.assign(embedding_placeholder)
sess = tf.Session()
sess.run(embedding_init, feed_dict={embedding_placeholder: final_embeddings})
我想我应该使用
embedded\u lookup
,但不知道如何使用它。我真的很感激有人能给我一些建议



谢谢

我也在做类似的事情。我偶然发现了这个博客,它实现了论文“用于句子分类的卷积神经网络”。这个博客很好

我也在做类似的事情。我偶然发现了这个博客,它实现了论文“用于句子分类的卷积神经网络”。这个博客很好

Tensorflow有一个使用word2vec cnn进行文本分类的示例:

Tensorflow有一个使用word2vec cnn进行文本分类的示例:

您的思路正确。由于
embedded\u lookup
的工作原理是假定单词表示为整数ID,因此您需要转换输入向量以符合该要求。此外,您需要确保转换后的单词被正确地索引到嵌入矩阵中。我所做的是,我使用了从嵌入模型生成的索引到单词映射的信息(我使用gensim来训练我的嵌入)来创建一个单词到索引的查找表,我随后使用它来转换我的输入向量。

你走的是对的。由于
embedded\u lookup
的工作原理是假定单词表示为整数ID,因此您需要转换输入向量以符合该要求。此外,您需要确保转换后的单词被正确地索引到嵌入矩阵中。我所做的是,我使用嵌入模型生成的索引到单词映射的信息(我使用gensim来训练我的嵌入)创建一个单词到索引的查找表,我随后用它来转换我的输入向量。

是的,我看到了,但他们没有使用单词嵌入。是的,我看到了,但是他们没有使用文字嵌入。谢谢你的回复。他们的代码差别不大。他们用一个热向量来编码这个单词,而不是这行中的word2vec:我能用我的最后一个字母改变它吗
byte\u list=tf.reforme(learn.ops.one\u hot\u matrix(x,256),[-1,MAX\u DOCUMENT\u LENGTH,256,1])
感谢您的回复。他们的代码差别不大。他们用一个热向量来编码这个单词,而不是这行中的word2vec:我能用我的最后一个字母改变它吗
byte\u list=tf.reforme(learn.ops.one\u hot\u matrix(x,256),[-1,MAX\u DOCUMENT\u LENGTH,256,1])
谢谢Frobb,听到这个消息我很高兴。我试图使用“嵌入查找”,但是我在传递参数时遇到了问题。我有带标签的训练数据,我使用word2vec_basic.py对我的数据进行预训练。我在很多网站上读到,有人说我必须将单词向量映射到字典。像这样
embedded\u chars=tf.nn.embedded\u lookup(W,dictionary)
但它给出了错误,有张量的维度,我试图用“data”或“reverse\u dictionary”来更改变量“dictionary”,但没有帮助。你能给我提些建议吗。感谢
embedded\u lookup
的第二个参数应该是包含输入数据的张量。看看@Kashyap提供的博客文章,您将看到第二个参数是(批处理)输入的占位符张量。您只需确保输入数据中的单词已根据我前面提到的单词索引方案转换为整数。在博客中,作者说“将词汇单词索引映射为低维向量表示”。在“word2vec_basic.py”中,变量“data”存储distionary的索引。所以我这样做:
embedded\u chars=tf.nn.embedded\u lookup(W,data)
我运行了它,它没有给出任何错误。你认为这是一个正确的方法吗?谢谢,我不确定我是否听懂了。我以前没有使用过这段代码,但是
word2vec_basic.py
data
变量(如果您指的是源代码?)包含一个word,用于索引
words
变量中包含的解压缩原始数据的转换版本。这就是你试图输入到CNN嵌入层的内容吗?是的,这就是我使用的代码,我试图将索引与我创建的“权重”匹配。下面是完整的代码
W=tf.Variable(tf.constant(0.0,shape=[词汇表大小,嵌入大小]),trainable=False,name=“W”)
embedded\u placeholder=tf.placeholder(tf.float32[词汇表大小,嵌入大小])embedded\u init=W.assign(嵌入占位符)
sess=tf.Session()
sess.run(embedded\u init,feed\u dict={embedded\u占位符:final\u embeddedings})
embedded\u chars=tf.nn.embedded\u lookup(W,data)
embedded\u chars\u expanded=tf.expanded\u dims(embedded\u chars,-1)
谢谢Frobb,听到这个消息我很高兴。我试图使用“嵌入查找”,但是我在传递参数时遇到了问题。我有带标签的训练数据,我使用word2vec_basic.py对我的数据进行预训练。我在很多网站上读到,有人说我必须将单词向量映射到字典。像这样
embedded\u chars=tf.nn.embedded\u lookup(W,dictionary)
但它给出了错误,有张量的维度,我试图用“data”或“reverse\u dictionary”来更改变量“dictionary”,但没有帮助。你能给我提些建议吗。感谢
embedded\u lookup
的第二个参数应该是包含输入数据的张量。看看@Kashyap提供的博客文章,您将看到第二个参数是(批处理)输入的占位符张量。您只需确保输入数据中的单词已根据我前面提到的单词索引方案转换为整数