【发布时间】:2018-07-24 14:52:56
【问题描述】:
我正在制作一个带有随机初始化嵌入的嵌入层。 我是这样处理的
import tensorflow as tf
vocab_size = 10
embed_dim = 4
# input tokens
mapping_strings = tf.constant(["hello", "lake", "palmer"])
table = tf.contrib.lookup.string_to_index_table_from_tensor(mapping=mapping_strings,
num_oov_buckets=1,
default_value=-1)
# ids for each token
ids = table.lookup(mapping_strings)
embedding_matrix = tf.random_normal(name="embedding_matrix", dtype=tf.float32,
shape=[vocab_size, embed_dim])
# embedding for each id
embedded_inputs = tf.nn.embedding_lookup(embedding_matrix, ids)
with tf.Session() as sess:
table.init.run()
print(sess.run(embedded_inputs))
这可行并给了我预期的输出,但我希望稍后训练这些随机初始化的嵌入。权重和偏差在哪里设置?为了学习嵌入,将如何执行反向传播?另外,tf.random_normal 是给我一个 embedding_matrix 的随机变量还是我应该使用 tf.Variable?
【问题讨论】:
标签: tensorflow random embedding