python - 在 Tensorflow 中,我是否需要为 "sinc"或 "gaussian"激活函数添加新的操作?

标签 python machine-learning tensorflow

我正在玩 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/

相关文章:

python - 如何从数据集中创建锚定正负对来训练模型?

variables - Tensorflow中默认的variable_scope是什么?

python - 在 Pandas 数据框中将一列拆分为具有特定名称的多列

hadoop - 如何在 Apache mahout 中合并两个相似实例

python - 在文件中查找单词

python - Windows 上的 Tensorflow 对象检测 API - ImportError : No module named "object_detection.utils"; "object_detection" is not a package

vector - 使用 SVC 偏差结果可以得到非常大(或非常小的)特征向量值吗? [scikit-学习]

python - 压平并返回keras

python - 为什么 shape 是属性和函数而不是数组的方法?

python - 使用 tk 的多线程 Python 控制台应用程序中的模糊、可重复崩溃