是否有某种方式可以约束张量流生成的数据,例如,如果我的模型生成了两个输出,可以对它们施加某种约束,例如,如果a和b可以在其中预输出某些内容像(a + b)/ 2 <10?那么模型不会违反这个规则吗?
预先感谢
答案 0 :(得分:0)
如果“由TensorFlow生成”是指由神经网络生成,那么我一般认为不可能做到这一点。您不能真正保证神经网络的输出通常不会违反这样的严格约束,尤其是在测试时。
这是您可以做的:
max(0, (a+b)/2 - 10)
。这不能保证您的约束不受违反(NN的优化是“尽力而为”)。此损失函数与支持向量机中使用的铰链损失非常相似。[0, 1]
之间,请在输出端使用S型激活。尽管后两种选择保证了可行性,但并非总是可能做到这一点,或者不清楚如何做到这一点,而且-更糟的是,这将如何影响学习。例如,如果您看到(a+b)/2 >= 10
,该怎么办?您会减少b
直到满足约束,还是以某种方式权衡a
和b
?有时可以定义“最近可行点”。一些指标,但不是一般指标。