gpt4 book ai didi

numpy - 如何检查两个张量形状是否相同,包括无?

转载 作者:行者123 更新时间:2023-12-04 00:35:59 24 4
gpt4 key购买 nike

我想检查两个张量是否具有相同的形状。

假设我有一些这样的张量:

a = tf.placeholder(tf.float32, shape=[None, 3])
b = tf.placeholder(tf.float32, shape=[None, 3])

我添加了 assert a.shape == b.shape。但是,这失败了,可能是由于 None。确实 a.shape = (?, 1),而且 b.shape 也是 (?, 1) .它们在我看来是一样的。

如果没有None,它工作正常。

a = tf.placeholder(tf.float32, shape=[1, 3])
b = tf.placeholder(tf.float32, shape=[1, 3])
assert a.shape == b.shape # True

如何在形状检查中忽略 None?

总结:

1: a = tf.placeholder(tf.float32, shape=[1, 3])
2: b = tf.placeholder(tf.float32, shape=[1, 3])
3: assert a.shape == b.shape # True
4:
5: a = tf.placeholder(tf.float32, shape=[None, 3])
6: b = tf.placeholder(tf.float32, shape=[None, 3])
7: assert a.shape == b.shape # False

我想让第 7 行中的断言为 True。

最佳答案

您可以使用 a.shape.as_list() == b.shape.as_list() 比较两个 tf.TensorShape “平等”的对象。但是,这样做时应该小心,因为如果两个形状在同一位置包含 None,则不能保证具有这些形状的张量在该维度上具有相同的大小。

(能够在 tf.TensorShape 中表示像 batch_size 这样的“符号”维度会很有用,这将使相等性测试更有用。我们是正在研究 API 的扩展,以便在 TensorFlow 的 future 版本中实现这一点。)

关于numpy - 如何检查两个张量形状是否相同,包括无?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42523189/

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