具有对数和指数激活函数的卷积神经网络

时间:2017-12-09 07:56:53

标签: machine-learning neural-network keras conv-neural-network

我正在尝试使用Keras实现一个非常具体的卷积神经网络。

关键区别在于我 使用非常规激活功能:logexp。 ConvNet的基本结构如下: Input => Conv2D => Activation Log => Avg Pooling => Activation Exp => ...

问题是:由于权重过小,log激活会迅速达到-inf

我需要使用logexp的原因是因为对于某些图层我想要模拟什么是*产品池*,这是较小窗口(过滤器)的产物当前图层 如果我应用log(a)log(b),我可以执行正常的平均合并 ~ log(a)+log(b),然后进行exp激活,这与我想要的产品相对应:a * b = exp( log(a)+log(b) )

为了摆脱-inf我试图用SGD和较低的学习率训练网络,所以我可以获得更大的权重,但它没有用。

请问,您是否知道如何避免-inf由于非常小的权重,或者更智能的方式来获取产品池而无需{{1}激活功能?

谢谢。

1 个答案:

答案 0 :(得分:0)

你的激活输出快速达到-inf的事实告诉我你的卷积层的输出非常小!我无法为您提供如何避免-inf的明确答案,因为它取决于您的网络结构,输入值的范围以及网络训练的任务。

但是,我建议两种可能的解决方案:

  1. 您可能需要重新考虑您的体重初始化技巧。许多实际的CNN从高斯分布初始化,具有零均值和相对较小的方差,约1x10 ^ -3,这将是你网络中的一个问题,因为大多数权重非常小并且将卷积输出驱动到一个以下。
  2. 考虑下限激活输出,例如max {..}函数。