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

问题描述 投票:2回答:1

是否存在某种方式对张量流生成的数据进行约束,例如,如果我的模型产生了两个输出,你可以对它们施加某种约束,比如a和b,其中输出可以预先强制执行类似的东西(a + b)/ 2 <10?那么模型不会打破这个规则?

提前致谢

python-3.x tensorflow constraints
1个回答
0
投票

如果“由TensorFlow生成”意味着由神经网络生成,我认为通常不可能这样做。你不能真正保证神经网络的输出通常不会违反这些硬约束,特别是在测试时。

这是你可以做的:

  • 添加一个损失术语,像max(0, (a+b)/2 - 10)。这不能保证不违反您的约束(NN的优化是“尽力而为”)。这种损失函数非常类似于支持向量机中使用的铰链损耗。
  • 使用适当的激活功能。例如。如果您知道您的数据必须位于[0, 1]之间,请在输出上使用sigmoid激活。
  • 如果输出位于其外部,则将“输出”返回到允许的范围。

虽然最后两个选项保证了可行性,但并不总是可以做到这一点,或者不清楚如何做到 - 更糟糕的是 - 这将如何影响学习。例如,如果你看到(a+b)/2 >= 10你会做什么?你会减少b直到达到约束,还是以某种方式权衡ab?有时可以定义“最接近的可行点”w.r.t.一些指标,但不是一般的。

© www.soinside.com 2019 - 2024. All rights reserved.