最大值()与预期不符张量求值()

2024-04-25 22:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码:

import numpy
numpy.set_printoptions(threshold=numpy.nan)
with tf.Session() as test_a:
    box_confidence = tf.random_normal([3, 4, 5, 1], mean=1, stddev=4, seed = 1)
    boxes = tf.random_normal([3,4, 5, 4], mean=1, stddev=4, seed = 1)
    box_class_probs = tf.random_normal([3, 4, 5, 3], mean=1, stddev=4, seed = 1)
    xxx = box_confidence * box_class_probs
    aaa = K.argmax(xxx, axis=-1)
    bbb = K.max(xxx, axis=-1, keepdims=False)
    print(xxx.eval())
    print(xxx.get_shape())
    print(aaa.eval())
    print(aaa.get_shape())

根据我的理解,aaa取最后一个维度的xxx的最大值(第四维三个数字中的最大值)的索引。你知道吗

所以。。。给定张量值(用固定种子初始化),aaa的第一行应该是0 2 0 2 0,对吗?我从输出中得到的是1 1 1 2 1。为什么?你知道吗


Tags: numpyboxtfrandommeanclassxxxseed
1条回答
网友
1楼 · 发布于 2024-04-25 22:20:52

误解不是来自K.max()K.argmax(),而是来自tensor.eval()。你知道吗

每次调用tensor.eval()时,都会在图中启动一个新的运行,因此每次伪随机定义的张量都会填充新的值,因为它们的随机种子也会递增(使用seed=1for tf.random_normal()不会修复值,而是修复每次运行时生成的伪随机值序列,有关详细信息,请参见doc)。你知道吗

换言之,xxx.eval()aaa.eval()bbb.eval()给出了下面3个不同随机值的3个不同运行的结果。你知道吗

如果您在一次运行(test_a.run([xxx, aaa, bbb]))中同时计算xxxaaabbb,您将得到预期的结果。你知道吗


with tf.Session() as test_a:
    box_confidence = tf.random_normal([3, 4, 5, 1], mean=1, stddev=4, seed=1)
    boxes = tf.random_normal([3,4, 5, 4], mean=1, stddev=4, seed=1)
    box_class_probs = tf.random_normal([3, 4, 5, 3], mean=1, stddev=4, seed=1)
    # note: `seed=1` fixes the seed value and thus the sequence of pseudo-random values.
    #        the PSNR will still yield new values each run, only in a predefined manner.
    xxx = box_confidence * box_class_probs
    aaa = K.argmax(xxx, axis=-1)
    bbb = K.max(xxx, axis=-1, keepdims=False)

    # First run:
    res_xxx, res_aaa, res_bbb = test_a.run([xxx, aaa, bbb])
    print(res_aaa[0, 0])
    # > [0 2 0 2 0]
    # ^ the result you were expecting

    # Second run:
    res_xxx, res_aaa, res_bbb = test_a.run([xxx, aaa, bbb])
    print(res_aaa[0, 0])
    # > [1 1 1 2 1]
    # ^ new result, as new pseudo-random values have been picked inside,
    #   from the sequence predefined by the seeds.

相关问题 更多 >

    热门问题