【发布时间】:2018-01-06 04:05:17
【问题描述】:
我的目标是(1)从文件中加载一个预先训练好的词嵌入矩阵作为初始值; (2)微调词嵌入而不是保持固定; (3) 每次我恢复模型时,加载微调的词嵌入而不是预训练的。
我尝试过类似的东西:
class model():
def __init__(self):
# ...
def _add_word_embed(self):
W = tf.get_variable('W', [self._vsize, self._emb_size],
initializer=tf.truncated_normal_initializer(stddev=1e-4))
W.assign(load_and_read_w2v())
# ...
def _add_seq2seq(self):
# ...
def build_graph(self):
self._add_word_embed()
self._add_seq2seq()
但是每当我停止训练并重新开始训练时,这种方法将涵盖微调的词嵌入。在调用model.build_graph 后,我也尝试了sess.run(W.assign())。但是它抛出了一个错误,即图表已经完成,我不能再改变它了。你能告诉我实现它的正确方法吗?提前致谢!
编辑:
这个问题没有重复,因为它有一个新要求:在培训开始时使用预训练的词嵌入并在之后进行查找。我还问如何有效地做到这一点。该问题的公认答案并不满足此要求。在将任何问题标记为重复之前,您能否三思而后行???????????
【问题讨论】:
-
@vijaym 哪个答案?接受的答案不是我想要的,因为它使单词嵌入保持不变。
-
在接受的答案(2)中,您只需删除
trainable=False -
@vijaym 真的吗?每次我重新开始训练时,我都需要重新分配它。首先,效率不高。其次,它将涵盖微调的词嵌入。
标签: python tensorflow deep-learning word2vec