tensorflow 度量中的奇异行为

r7s23pms  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(108)

我已经创建了一个tensorflow 度量,如下所示:

def AttackAcc(y_true, y_pred):
    r = tf.random.uniform(shape=(), minval=0, maxval=11, dtype=tf.int32)
    if tf.math.greater(r,tf.constant(5) ):
      return tf.math.equal( tf.constant(0.6) ,  tf.constant(0.2) )
    else:
      return tf.math.equal( tf.constant(0.6) ,  tf.constant(0.6) )

将指标添加到model.compile,如下所示:

metrics=[AttackAcc]

这应该在一半时间返回0,在另一半时间返回1。所以在训练我的模型时,我应该看到这个度量的值大约为0.5。但是它总是0。
你知道为什么吗?

hs1ihplo

hs1ihplo1#

看起来您正在比较两个常量,它们总是不相等。请尝试BinaryAccuracy并使用您的输入变量更新状态。

def AttackAcc(y_true, y_pred):
    r = tf.random.uniform(shape=(), minval=0, maxval=11, dtype=tf.int32)
    acc_metric = tf.keras.metrics.BinaryAccuracy()
    acc_metric.update_state(y_true, y_pred)
    if tf.math.greater(r, tf.constant(5)):
        return acc_metric.result()
    else:
        return 1 - acc_metric.result()

相关问题