Python 3.x 有没有办法在张量流中施加约束,我可以沿途执行一些规则吗?

Python 3.x 有没有办法在张量流中施加约束,我可以沿途执行一些规则吗?,python-3.x,tensorflow,constraints,Python 3.x,Tensorflow,Constraints,有没有办法对张量流生成的数据进行约束,例如,如果我的模型生成了两个输出,你可以对这些输出施加某种约束,比如a和b,其中输出可以预执行类似(a+b)/2的内容,如果“由张量流生成”是指由神经网络生成,我认为一般来说不可能做到这一点。一般来说,你不能保证神经网络的输出不会违反这样的硬约束,尤其是在测试时 以下是您可以做的: 添加一个损失项,类似于max(0,(a+b)/2-10)。这并不能保证您的约束不会被违反(NN的优化是“尽力而为”)。这个损失函数非常类似于支持向量机中使用的铰链损失 使用适当

有没有办法对张量流生成的数据进行约束,例如,如果我的模型生成了两个输出,你可以对这些输出施加某种约束,比如a和b,其中输出可以预执行类似(a+b)/2的内容,如果“由张量流生成”是指由神经网络生成,我认为一般来说不可能做到这一点。一般来说,你不能保证神经网络的输出不会违反这样的硬约束,尤其是在测试时

以下是您可以做的:

  • 添加一个损失项,类似于
    max(0,(a+b)/2-10)
    。这并不能保证您的约束不会被违反(NN的优化是“尽力而为”)。这个损失函数非常类似于支持向量机中使用的铰链损失
  • 使用适当的激活功能。例如,如果您知道您的数据必须介于
    [0,1]
    之间,请在输出上使用sigmoid激活
  • “项目”将输出返回到允许的范围(如果超出范围)
虽然最后两个选项保证了可行性,但并不总是可能做到这一点,或者不清楚如何做到这一点,更糟糕的是,这将如何影响学习。例如,如果您看到
(a+b)/2>=10
,您会怎么做?您会减少
b
,直到满足约束条件,还是以某种方式权衡
a
b
?有时,可以定义“最近可行点”w.r.t.某些度量,但一般不确定