python-3.x - 有没有办法在张量流中施加约束,我可以在此过程中强制执行一些规则吗?
问题描述
是否有某种方法可以限制张量流生成的数据,例如,如果我的模型产生两个输出,您可以对这些输出施加某种约束吗,例如如果 a 和 b 输出可以预先执行类似(a +b)/2<10? 所以模型不会打破这个规则?
提前致谢
解决方案
如果“由 TensorFlow 生成”是指由神经网络生成,我认为一般情况下不可能做到这一点。您不能真正保证神经网络的输出通常不会违反此类硬约束,尤其是在测试时。
这是你可以做的:
- 添加损失项,例如
max(0, (a+b)/2 - 10)
. 这不能保证不违反您的约束(NN 的优化是“尽力而为”)。顺便说一句,这个损失函数与支持向量机中使用的铰链损失非常相似。 - 使用适当的激活函数。例如,如果您知道您的数据必须介于 之间
[0, 1]
,请在输出上使用 sigmoid 激活。 - 如果输出超出允许范围,则将其“投影”回允许范围。
虽然最后两个选项保证了可行性,但并不总是可以做到这一点,或者不清楚如何做到这一点,甚至更糟糕的是,这将如何影响学习。例如,如果你看到了,(a+b)/2 >= 10
你会怎么做?你会减少直到约束被满足,还是b
两者兼而有之?有时可以通过一些度量来定义“最近的可行点”,但一般情况下不是这样。a
b
推荐阅读
- applescript - Applescript 创建具有属性的文件夹
- google-cloud-platform - GCLB Url Map 中的正则表达式
- keras - Tensorflow2.4 使用自定义训练循环和镜像策略恢复训练
- html - 如何将 div 背景颜色居中在另一个标签中
- ruby-on-rails-5 - 奇怪的 Rails 迁移行为 - 重复 add_references 命令并因 ActiveRecord::StatementInvalid: PG::DuplicateColumn 而失败
- reactjs - 如何在反应中访问数组值?
- python - Django AllAuth URL 模式配置
- javascript - 如何从打字稿中的数组生成键值对对象
- laravel - 在 Laravel 中使用多个选择框过滤数据并为衣服尺寸、高度、背部、颜色范围和高度范围厘米定价
- implicit-conversion - Idris 2 中的隐式转换?