【发布时间】:2018-05-09 17:30:39
【问题描述】:
我想用scatter_nd_update来改变从tf.nn.embedding_lookup()返回的张量的内容。但是,返回的张量是不可变的,scatter_nd_update() 需要一个可变的张量作为输入。
我花了很多时间试图找到解决方案,包括使用gen_state_ops._temporary_variable和使用tf.sparse_to_dense,可惜都失败了。
我想知道有没有很好的解决方案?
with tf.device('/cpu:0'), tf.name_scope("embedding"):
self.W = tf.Variable(
tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0),
name="W")
self.embedded_chars = tf.nn.embedding_lookup(self.W, self.input_x)
updates = tf.constant(0,shape=[embedding_size])
for i in range(1,sequence_length - 2):
indices = [None,i]
tf.scatter_nd_update(self.embedded_chars,indices,updates)
self.embedded_chars_expanded = tf.expand_dims(self.embedded_chars, -1)
【问题讨论】:
标签: python tensorflow machine-learning embedding tensor