Tensorflow或Keras中的离散权重和激活

你知道如何将Tensorflow或Keras约束到一组离散权重并使用离散/刚性激活函数(例如像sign或hard tanh)吗?

API似乎只具有平滑的激活功能.

我还想到的是通过自定义正则化函数来离散权重,但我不知道如何使框架考虑到这一点.

可能我必须扩展(例如)密集层类(相应框架)并定义自定义前向传播函数(及其派生).你有这方面的例子吗?

最佳答案 在我看来,改变重量和激活从平滑到离散的可能是Keras的一个大问题.我认为这种方法至少有两个主要困难:

>优化框架必须完全不同:Keras / Theano在ANN中做得如此出色的主要原因是它们能够自动区分张量函数.这是当今大多数优化算法的主要构建块.将域从连续域更改为离散域会改变优化规则,据我所知,Keras& Theano没有为此做好准备.
>数学问题:您可能想知道简单地舍入每个重量和激活可能是您的问题的一个很好的解决方案.但你必须记住,高度尺寸的离散网格具有一些违反直觉的特性,这可能会产生误导.例如.直径为28 x 28 x 3维单位立方体为50,并且具有巨大的顶点数(2 ^维).

这些是您解决问题可能非常困难的原因.

点赞