使用 Tensorflow 在运行时拟合张量的索引向量
index vector that fit tensor at runtime using Tensorflow
我有这个 python 函数,它使用 Tensorflow 框架:
def compute_ap(gain_vector):
#this vector must fit the dimension of the gain_vector
index_vector = tf.range(1, gain_vector.get_shape()[0],dtype=tf.float32)
ap = tf.div(tf.reduce_sum(tf.div(tf.cast(gain_vector,tf.float32), index_vector), 1),tf.reduce_sum(tf.cast(gain_vector,tf.float32), 1))
return ap
当我 运行 程序时我得到这个错误:
ValueError: Tensor conversion requested dtype float32 for Tensor with dtype int32: 'Tensor("inputs/strided_slice:0", shape=(), dtype=int32)'
好像gain_vector.get_shape()[0]没有得到增益向量的向量,有什么问题吗?
tf.range()
只接受 int32
.
类型的参数
Args:
start: A 0-D (scalar) of type int32
. First entry in sequence.
Defaults to 0.
因此,您可以创建一个 int32
张量,稍后将其转换为 float32
。所以,使用这样的东西:
In [80]: index_vector = tf.range(1, tf.shape(gain_vector)[0])
In [81]: vec_float32 = tf.cast(index_vector, dtype=tf.float32)
我有这个 python 函数,它使用 Tensorflow 框架:
def compute_ap(gain_vector):
#this vector must fit the dimension of the gain_vector
index_vector = tf.range(1, gain_vector.get_shape()[0],dtype=tf.float32)
ap = tf.div(tf.reduce_sum(tf.div(tf.cast(gain_vector,tf.float32), index_vector), 1),tf.reduce_sum(tf.cast(gain_vector,tf.float32), 1))
return ap
当我 运行 程序时我得到这个错误:
ValueError: Tensor conversion requested dtype float32 for Tensor with dtype int32: 'Tensor("inputs/strided_slice:0", shape=(), dtype=int32)'
好像gain_vector.get_shape()[0]没有得到增益向量的向量,有什么问题吗?
tf.range()
只接受 int32
.
Args:
start: A 0-D (scalar) of typeint32
. First entry in sequence.
Defaults to 0.
因此,您可以创建一个 int32
张量,稍后将其转换为 float32
。所以,使用这样的东西:
In [80]: index_vector = tf.range(1, tf.shape(gain_vector)[0])
In [81]: vec_float32 = tf.cast(index_vector, dtype=tf.float32)