I try to run this code:
1
2
3
4
5
6
7
8
9outputs, states = rnn.rnn(lstm_cell, x, initial_state=initial_state, sequence_length=real_length) tensor_shape = outputs.get_shape() for step_index in range(tensor_shape[0]): word_index = self.x[:, step_index] word_index = tf.reshape(word_index, [-1,1]) index_weight = tf.gather(word_weight, word_index) outputs[step_index, :, :]=tf.mul(outputs[step_index, :, :] , index_weight)
But I get error on last line: TypeError: 'Tensor' object does not support item assignment
It seems I can not assign to tensor, how can I fix it?
In general, a TensorFlow tensor object is not assignable*, so you cannot use it on the left-hand side of an assignment.
The easiest way to do what you're trying to do is to build a Python list of tensors, and tf.stack()
them together at the end of the loop:
1
2
3
4
5
6
7
8
9
10
11
12
13
14outputs, states = rnn.rnn(lstm_cell, x, initial_state=initial_state, sequence_length=real_length) output_list = [] tensor_shape = outputs.get_shape() for step_index in range(tensor_shape[0]): word_index = self.x[:, step_index] word_index = tf.reshape(word_index, [-1,1]) index_weight = tf.gather(word_weight, word_index) output_list.append(tf.mul(outputs[step_index, :, :] , index_weight)) outputs = tf.stack(output_list)
* With the exception of tf.Variable
objects, using the Variable.assign()
etc. methods. However, rnn.rnn()
likely returns a tf.Tensor
object that does not support this method.
最后
以上就是精明可乐最近收集整理的关于[work]TypeError: 'Tensor' object does not support item assignment in TensorFlow的全部内容,更多相关[work]TypeError:内容请搜索靠谱客的其他文章。
发表评论 取消回复