是否存在某种方式对张量流生成的数据进行约束,例如,如果我的模型产生了两个输出,你可以对它们施加某种约束,比如a和b,其中输出可以预先强制执行类似的东西(a + b)/ 2 <10?那么模型不会打破这个规则?
提前致谢
如果“由TensorFlow生成”意味着由神经网络生成,我认为通常不可能这样做。你不能真正保证神经网络的输出通常不会违反这些硬约束,特别是在测试时。
这是你可以做的:
max(0, (a+b)/2 - 10)
。这不能保证不违反您的约束(NN的优化是“尽力而为”)。这种损失函数非常类似于支持向量机中使用的铰链损耗。[0, 1]
之间,请在输出上使用sigmoid激活。虽然最后两个选项保证了可行性,但并不总是可以做到这一点,或者不清楚如何做到 - 更糟糕的是 - 这将如何影响学习。例如,如果你看到(a+b)/2 >= 10
你会做什么?你会减少b
直到达到约束,还是以某种方式权衡a
和b
?有时可以定义“最接近的可行点”w.r.t.一些指标,但不是一般的。