我正在尝试使用Keras实现一个非常具体的卷积神经网络。
关键区别在于我 使用非常规激活功能:log
和exp
。
ConvNet的基本结构如下:
Input => Conv2D => Activation Log => Avg Pooling => Activation Exp => ...
问题是:由于权重过小,log
激活会迅速达到-inf
。
我需要使用log
和exp
的原因是因为对于某些图层我想要模拟什么是*产品池*,这是较小窗口(过滤器)的产物当前图层
如果我应用log(a)
和log(b)
,我可以执行正常的平均合并 ~ log(a)+log(b)
,然后进行exp
激活,这与我想要的产品相对应:a * b = exp( log(a)+log(b) )
。
为了摆脱-inf
我试图用SGD和较低的学习率训练网络,所以我可以获得更大的权重,但它没有用。
请问,您是否知道如何避免-inf
由于非常小的权重,或者更智能的方式来获取产品池而无需{{1}激活功能?
谢谢。
答案 0 :(得分:0)
你的激活输出快速达到-inf的事实告诉我你的卷积层的输出非常小!我无法为您提供如何避免-inf的明确答案,因为它取决于您的网络结构,输入值的范围以及网络训练的任务。
但是,我建议两种可能的解决方案: