【发布时间】:2020-06-19 21:31:26
【问题描述】:
我使用的是 tensorflow 1.14.0。我想知道如何将强制转换列表输入张量。尝试使用 tf.convert_to_tensor() 时出现此错误。感谢任何帮助
无法将类型对象转换为张量。内容:[无]。考虑将元素转换为支持的类型。
这是我的代码
def testtf4():
x = tf.placeholder(tf.float32, shape=[None])
y = tf.placeholder(tf.float32, shape=[None])
op = tf.placeholder(tf.float32, shape=[None,3])
print("\nshape of x,y", x.shape, y.shape)
arr = np.genfromtxt("C:\\Data\\Training_and_codes\\ML\\TF Samples\\Data.csv", delimiter=",");
gradmulx_op = tf.gradients(op[:,0],x)
gradmuly_op = tf.gradients(op[:,0],y)
tgradmulx_op = tf.convert_to_tensor(gradmulx_op)
tgradmuly_op = tf.convert_to_tensor(gradmuly_op)
print("\nshape of gradmul tensors", tgradmulx_op.shape, tgradmuly_op.shape)
with tf.Session() as sess:
print("started session......\n")
input_feed={}
input_feed[x]=arr[:,0]
input_feed[y]=arr[:,1]
input_feed[op]=arr[:,2:4]
[gradx, grady] = sess.run([tgradmulx_op, tgradmuly_op],input_feed)
print("x gradient",gradx)
print("y gradient",grady)
【问题讨论】:
-
这里有多个问题,不需要将梯度转换为张量,它们已经是张量了。 tf.gradients 返回 None 因为在两个不相关的占位符之间没有要计算的梯度。
-
感谢您的回复。我认为在 1.14 tf.gradients 返回列表 (github.com/tensorflow/docs/blob/r1.14/site/en/api_docs/python/…)。这只是一个示例代码,用于重现我在使用 tf.gradients 构建损失函数的较大项目中遇到的错误。我想将 tf.gradients 的 return 用于与其他张量的一些矩阵运算。如果我按原样使用它,则会弹出无法将类型为
的对象转换为张量的错误。内容:[无,无,无]。考虑将元素转换为支持的类型。 -
当然,它返回张量列表,所以我看不到问题所在。你真的需要描述真正的问题,因为我现在不明白问题是什么,因为你已经掩盖了它。
标签: python tensorflow