我正在玩 Tensorflow 并希望以这种方式训练权重,使神经元仅在神经元输出特定范围内的值时“触发”,并且只输出 0 或当输出值超出该范围时接近于 0。
我正在考虑通过使用“Sinc”(here)或“Gaussian”(here)作为激活函数来做到这一点。不幸的是,Tensorflow 不支持这一点。
我需要为此添加新操作吗? Tensorflow 确实支持实现“Sinc”或“Gaussian”所需的所有操作,因此它们也应该实现梯度以进行训练。
我试过使用它,但不知何故,神经网络的所有权重和偏差都变为 0。
最佳答案
您可以使用基本的 TF 操作来实现这两个功能。我不建议从数学角度(大量的浅局部最优值)在神经网络中使用周期性激活函数(或“准周期性” - 在具有不断变化的导数符号的一般函数中),因此我建议不要使用 sinc .就高斯而言,您可能必须小心初始化。这种“局部函数”的棘手之处在于它们会很快变为 0,因此您必须确保初始时您的神经元激活在出现训练数据时处于“事件”部分。使用基于点积的方法(如 sigmoid、relu 等)要容易得多,因为你所要做的就是处理比例。对于高斯,您实际上必须确保您的激活“到位”。
关于python - 在 Tensorflow 中,我是否需要为 "sinc"或 "gaussian"激活函数添加新的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40208111/