有没有一种方法可以在张量流中施加约束,我可以在此过程中强制执行一些规则吗?

时间:2019-02-25 10:27:53

标签: python-3.x tensorflow constraints

是否有某种方式可以约束张量流生成的数据,例如,如果我的模型生成了两个输出,可以对它们施加某种约束,例如,如果a和b可以在其中预输出某些内容像(a + b)/ 2 <10?那么模型不会违反这个规则吗?

预先感谢

1 个答案:

答案 0 :(得分:0)

如果“由TensorFlow生成”是指由神经网络生成,那么我一般认为不可能做到这一点。您不能真正保证神经网络的输出通常不会违反这样的严格约束,尤其是在测试时。

这是您可以做的:

  • 添加损失项,例如max(0, (a+b)/2 - 10)。这不能保证您的约束不受违反(NN的优化是“尽力而为”)。此损失函数与支持向量机中使用的铰链损失非常相似。
  • 使用适当的激活功能。例如。如果您知道数据必须位于[0, 1]之间,请在输出端使用S型激活。
  • 将输出“投影”到允许的范围(如果超出范围)。

尽管后两种选择保证了可行性,但并非总是可能做到这一点,或者不清楚如何做到这一点,而且-更糟的是,这将如何影响学习。例如,如果您看到(a+b)/2 >= 10,该怎么办?您会减少b直到满足约束,还是以某种方式权衡ab?有时可以定义“最近可行点”。一些指标,但不是一般指标。