在tensorflow中,我想执行以下操作:
但是在创建图时,我不知道每个一维张量的大小,这会产生问题。这是我在做什么的摘要:
def stack(tensors):
sizes = tf.convert_to_tensor([t.shape[0].value for t in tensors])
tensor_stacked = tf.concat(tensors, axis=0)
res = my_function(tensor_stacked)
return tf.split(res, sizes, 0)
tensor_A = tf.placeholder(
tf.int32,
shape=[None],
name=None
)
tensor_B = tf.placeholder(
tf.int32,
shape=[None],
name=None
)
res = stack([tensor_A, tensor_B])
这将在带有消息的“ concat”行上失败
TypeError:无法将类型的对象转换为Tensor。内容:[无,无]。考虑将元素强制转换为受支持的类型。
有什么办法可以在tensorflow中做到这一点吗?在绘制图时,“尺寸”变量将始终包含未知尺寸,因为一维张量的长度是未知的
答案 0 :(得分:0)
好的,与此同时我找到了答案
显然,将对tensor.shape[0]
的调用替换为tf.shape(tensor)[0]
现在我有:
def stack(tensors):
sizes = tf.convert_to_tensor([tf.shape(t)[0] for t in tensors])
print(sizes)
tensor_stacked = tf.concat(tensors, axis=0)
res = my_function(tensor_stacked)
return tf.split(res, sizes, 0)