如何将回归输出保持在一定范围内

时间:2019-04-04 21:24:27

标签: python tensorflow

我正在尝试为tensorflow中的年龄估算建立回归模型。我的数据集包含1到80岁之间的图像。我想将输出保持在这些值之间。基本上我可以在python中做到:

if output > 80:
    output = 80
elif output < 1:
    output = 1

但是我无法在tensorflow中做到这一点。我尝试过:

one = tf.constant(1, dtype=tf.int32)
eighty = tf.constant(80, dtype=tf.int32)

output = tf.cond(tf.less(output, one), lambda: one, lambda: output)
output = tf.cond(tf.less(eighty, output), lambda: eighty, lambda: output)

它会引发很长的错误,但是我想这部分很重要:

ValueError: Shape must be rank 0 but is rank 2 for 'cond_1/Switch' (op: 'Switch') with input shapes: [?,1], [?,1].

这很有意义。我正在尝试比较一个常数和一个列表(或类似列表的东西)。我该如何解决?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用tf.clip_by_value

output = tf.clip_by_value(output, clip_value_min=1, clip_value_max=80)
相关问题