Tensorflow中的错误切片索引Tensor

时间:2016-05-06 13:52:00

标签: python tensorflow deep-learning

这是tensorflow中张量的定义:

word_weight   = tf.get_variable("word_weight", [word_num])
x_index = tf.placeholder(tf.int32, [None, sentence_length, 1])  

当我尝试:  word_weight[0]word_weight[1]或其他人,它可以,我可以得到结果。但是当我尝试word_weight[x_index[0,0,0]]时,我收到错误:

TypeError: Bad slice index Tensor("modle/RNN/Squeeze_1:0", shape=(), dtype=int32) of type <class 'tensorflow.python.framework.ops.Tensor'>

1 个答案:

答案 0 :(得分:2)

TensorFlow在Tensors上的下标运算符(__getitem__)的实现是tf.slice函数的语法糖。下标运算符实现支持Python整数,列表,元组和slice作为下标的类型。正如您所发现的那样,Tensor本身不支持作为下标。但是,您可以直接使用tf.slice功能:

word_num = 100
sentence_length = 10
word_weight   = tf.get_variable("word_weight", [word_num])
x_index = tf.placeholder(tf.int32, [None, sentence_length, 1])  
ind = x_index[0, 0, 0:1]
_ = tf.slice(word_weight, ind, [1])