gpt4 book ai didi

TensorFlow:改为 "TypeError: Expected int32, got list containing Tensors of type ' _Message'

转载 作者:行者123 更新时间:2023-12-01 16:52:26 24 4
gpt4 key购买 nike

当我运行以下代码时:

import tensorflow as tf

pivot = tf.constant([1, 2])
my_ones = tf.ones([2, 3])
padded = tf.pad(my_ones, [[pivot[0], 0], [1,1]])
sess = tf.Session()

init_op = tf.initialize_all_variables()
sess.run(init_op)
my_ones_var = sess.run(padded)
print("my_ones, ", my_ones_var)

...我在包含 tf.pad() 的行上收到错误:

TypeError: Expected int32, got list containing Tensors of type '_Message' instead

我怎样才能让它工作?

最佳答案

TL;DR:您目前无法将张量参数定义为包含张量的(列表的)列表,因此您必须手动构建填充。

此错误发生在以下行:

padded = tf.pad(my_ones, [[pivot[0], 0], [1,1]])

它失败的原因是因为 pivot[0] 是一个 tf.Tensor , tf.pad()需要一个 tf.Tensor 作为它的第二个参数,而 TensorFlow 目前不会将包含 tf.Tensor 对象的列表转换为新的张量。解决方法是使用 tf.pack()手动构建填充张量:

paddings = tf.pack([tf.pack([pivot[0], 0]), [1, 1]])
padded = tf.pad(my_ones, paddings)

我们正在研究自动发生这种情况的方法,以便您的原件可以正常工作。


编辑:现在支持自动打包(自 TensorFlow 0.9 起),因此现在可以使用以下代码:

padded = tf.pad(my_ones, [[pivot[0], 0], [1, 1]])

关于TensorFlow:改为 "TypeError: Expected int32, got list containing Tensors of type ' _Message',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37098155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com