使用张量是tensorflow中的字典键
我已经看到了答案。这不是我要找的 我在tensorflow2.0上运行这个 我阅读了TensorFlow文档中的以下句子: 除了tf.Variable,张量的值是不可变的, 这意味着,在单个执行的上下文中,仅使用张量 只有一个值。然而,计算同一张量两次可以 返回不同的值;例如,张量可以是 从磁盘读取数据,或生成随机数 我尝试使用张量作为字典键,但出现以下错误:使用张量是tensorflow中的字典键,tensorflow,tensorflow2.0,Tensorflow,Tensorflow2.0,我已经看到了答案。这不是我要找的 我在tensorflow2.0上运行这个 我阅读了TensorFlow文档中的以下句子: 除了tf.Variable,张量的值是不可变的, 这意味着,在单个执行的上下文中,仅使用张量 只有一个值。然而,计算同一张量两次可以 返回不同的值;例如,张量可以是 从磁盘读取数据,或生成随机数 我尝试使用张量作为字典键,但出现以下错误: Tensor is unhashable if Tensor equality is enabled. Instead, use ten
Tensor is unhashable if Tensor equality is enabled. Instead, use tensor.experimental_ref() as the key
tf.compat.v1.disable_tensor_equality()
x = tf.ones(shape=[10,2], dtype=np.float32)
dct = {x: 1} # Works fine
发生的情况是,现在返回一个正确的ID,而不是引发错误。这允许您将其用作字典中的键
禁用此功能的缺点是,您无法再使用张量执行元素级比较。比如说,
x = tf.ones(shape=[10,2], dtype=np.float32)
print((x==1.0))
在平等回报的情况下,
在平等的情况下,
变量也是可散列的吗?他们也定义了一个计算,而不是一个计算,那么为什么会有“除了tf.Variable,张量的值是不可变的”的区别呢
是的。如果查看\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
函数,它。我不太了解如何使用id
生成散列id。但只要它是独一无二的,就不成问题。事实上,当变量值成为字典中的键后,您也可以更改它
>>> tf.Tensor(
[[ True True]
[ True True]
...
[ True True]
[ True True]], shape=(10, 2), dtype=bool)
>>> False