这是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'>
答案 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])