标签: activation-function

C#中的激活功能列表

我可以在数学中找到激活函数列表,但在代码中找不到。因此,我想如果应该有一个列表,那么这将是代码中此列表的正确位置。从以下2个链接中的算法翻译开始:https : //en.wikipedia.org/wiki/Activation_function https://stats.stackexchange.com/questions/115258/comprehensive-list-of-activation-functions-in神经网络的利弊

我们的目标是拥有一个激活类(带有函数及其派生类),并且可以通过UI轻松访问。

编辑:我的尝试

using UnityEngine;
using System.Collections;
using System;

///<summary>
///Activation Functions from:
///https://en.wikipedia.org/wiki/Activation_function
///https://stats.stackexchange.com/questions/115258/comprehensive-list-of-activation-functions-in-neural-networks-with-pros-cons
///D infront means the Deravitive of the function
///x is the input of one perceptron. a is the alpha value sometimes needed.
///</summary>
[System.Serializable]
public class Activation
{
    public ActivationType activationType;
    public Activation(ActivationType type)
    {
        activationType = type;
    }
    public double AFunction(double x)
    {
        switch(activationType)
        {
        case ActivationType.Identity:
            return Identity(x);
        case ActivationType.BinaryStep:
            return BinaryStep(x);
        case ActivationType.Logistic:
            return Logistic(x);
        case ActivationType.Tanh:
            return …
Run Code Online (Sandbox Code Playgroud)

c# derivative neural-network activation-function

6
推荐指数
1
解决办法
2032
查看次数

在 Keras 层中使用 softmax 激活时如何指定轴?

用于 softmax 激活的 Keras文档指出,我可以指定激活应用于哪个轴。我的模型应该输出一个n × k矩阵M,其中Mij是第i个字母是符号j的概率。

n = 7 # number of symbols in the ouput string (fixed)
k = len("0123456789") # the number of possible symbols

model = models.Sequential()
model.add(layers.Dense(16, activation='relu', input_shape=((N,))))
...
model.add(layers.Dense(n * k, activation=None))
model.add(layers.Reshape((n, k)))

model.add(layers.Dense(output_dim=n, activation='softmax(x, axis=1)'))
Run Code Online (Sandbox Code Playgroud)

最后一行代码无法编译,因为我不知道如何k为 softmax 激活正确指定轴(在我的情况下为轴)。

deep-learning keras activation-function

6
推荐指数
1
解决办法
4987
查看次数

带有负奖励的RL激活功能

我有一个关于带有正负奖励环境的适当激活功能的问题。

我认为,在强化学习中,我们的产出应该是所有可能采取的行动的预期回报。由于某些选项的收益为负,因此我们希望输出范围包括负数。

这使我相信唯一合适的激活函数将是线性或正切。但是,我看到许多ReRL论文都在使用Relu。

有两个问题:

  1. 如果确实要同时具有负输出和正输出,那么您是否仅限于正切和线性?

  2. 是否有更好的策略(如果可能)扩大奖励,使奖励都处于正域(即代替[-1,0,1],[0、1、2]),以便模型能够利用替代激活功能?

machine-learning reinforcement-learning q-learning activation-function

6
推荐指数
1
解决办法
1085
查看次数

如何在python中实现Leaky Relu的派生词?

如何在不使用Tensorflow的情况下在Python中实现Leaky ReLU的派生类?

有没有比这更好的方法了?我希望函数返回一个numpy数组

def dlrelu(x, alpha=.01):
     # return alpha if x < 0 else 1

     return np.array ([1 if i >= 0 else alpha for i in x])
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助

python neural-network activation-function

6
推荐指数
1
解决办法
3969
查看次数

SpatialDropout2D、BatchNormalization 和激活函数的正确顺序?

对于 CNN 架构,我想使用 SpatialDropout2D 层而不是 Dropout 层。另外我想使用 BatchNormalization。到目前为止,我总是直接在卷积层之后但在激活函数之前设置 BatchNormalization,就像 Ioffe 和 Szegedy 的论文中提到的那样。我总是在 MaxPooling2D 层之后设置 dropout 层。

https://machinelearningmastery.com/how-to-reduce-overfit-with-dropout-regularization-in-keras/ 中, SpatialDropout2D 直接设置在卷积层之后。

我发现我现在应该以何种顺序应用这些层相当令人困惑。我还在 Keras 页面上读到 SpatialDropout 应该直接放在 ConvLayer 后面(但我再也找不到这个页面了)。

以下顺序是否正确?

ConvLayer - SpatialDropout - BatchNormalization - 激活函数 - MaxPooling

我真的希望得到提示并提前谢谢你

更新 我的目标实际上是在以下 CNN 架构 dropout 中交换空间 dropout:

model = Sequential()
model.add(Conv2D(32,(3,3))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Conv2D(32,(3,3))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2))
model.add(Dropout(0.2))

model.add(Conv2D(64, (3,3))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Conv2D(64,(3,3))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2))
model.add(Dropout(0.2))

model.add(Flatten())
model.add(Dense(512))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.4))
model.add(Dense(10))
model.add(Activation('softmax'))
Run Code Online (Sandbox Code Playgroud)

keras activation-function batch-normalization dropout

6
推荐指数
1
解决办法
1652
查看次数

由多个激活函数组成的神经网络

我正在使用 sknn 包来构建神经网络。为了优化我正在使用的数据集的神经网络参数,我使用了进化算法。由于该包允许我构建一个神经网络,其中每一层都有不同的激活函数,我想知道这是否是一个实用的选择,或者我是否应该每个网络只使用一个激活函数?在神经网络中具有多个激活函数对神经网络有害、没有损害还是有益?

另外,我应该拥有的每层神经元的最大数量是多少,我应该拥有的每个网络的最大层数是多少?

python neural-network scikits activation-function

5
推荐指数
1
解决办法
3973
查看次数

在 Keras 中舍入激活函数

我正在尝试创建一个激活函数以在我的 keras 模型中使用。

基本上,我想要的是一个只有两位小数的 sigmoid 函数。所以我试图像这样创建我自己的激活函数:

def mySigmoid(x):
    return np.around(K.sigmoid(x), decimals=2)
Run Code Online (Sandbox Code Playgroud)

进而:

get_custom_objects().update({'mySigmoid': Activation(mySigmoid)})
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,我这样做了。

有人可以帮帮我吗?

非常感谢

堆栈跟踪:

AttributeError                            Traceback (most recent call last)
<ipython-input-52-891a9f63ca56> in <module>()
      3 model.add(Dense(30, activation='softmax'))
      4 
----> 5 model.add(Dense(10, activation='mySigmoid'))
      6 model.summary()
      7 sgd = optimizers.SGD(lr=0.1, decay=1e-5, momentum=0.3, nesterov=True)

/usr/local/lib/python2.7/dist-packages/keras/models.pyc in add(self, layer)
    473                           output_shapes=[self.outputs[0]._keras_shape])
    474         else:
--> 475             output_tensor = layer(self.outputs[0])
    476             if isinstance(output_tensor, list):
    477                 raise TypeError('All layers in a Sequential model '

/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc in __call__(self, inputs, **kwargs)
    600 
    601             # Actually call …
Run Code Online (Sandbox Code Playgroud)

python neural-network keras activation-function

5
推荐指数
1
解决办法
3899
查看次数

如何在Keras中使用categorical_hinge?

也许这是一个非常愚蠢的问题,但我找不到如何在Keras中使用categorical_hinge的示例。我进行分类,目标是shape(,1)[-1,0,1],所以我有3个类别。使用功能性API,我像这样设置了输出层:

输出=密集(1,名称='输出',激活='tanh',kernel_initializer ='lecun_normal')(output1)

然后我申请:

model.compile(optimizer = adam,损失= {'输出':'categorical_hinge'},指标= ['准确性'])

结果是该模型正在收敛,但精度接近0。我该怎么做?

keras activation-function loss-function keras-2

5
推荐指数
1
解决办法
2939
查看次数

Keras Functional API 中的高级激活层

使用 Keras 设置神经网络时,您可以使用Sequential模型或Functional API. 我的理解是前者易于设置和管理,并且作为层的线性堆栈运行,而函数式方法对于更复杂的架构非常有用,尤其是那些涉及共享内部层输出的架构。我个人喜欢使用函数式 API 来实现多功能性,但是,在使用 LeakyReLU 等高级激活层时遇到困难。当使用标准激活时,在顺序模型中可以写:

model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
          loss='categorical_crossentropy',
          metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

类似地,在函数式 API 中,可以将上述内容写为:

inpt = Input(shape = (100,))
dense_1 = Dense(32, activation ='relu')(inpt)
out = Dense(10, activation ='softmax')(dense_2)
model = Model(inpt,out)
model.compile(optimizer='rmsprop',
          loss='categorical_crossentropy',
          metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

但是,当使用 LeakyReLU 和 PReLU 等高级激活时,在该顺序模型中,我们将它们编写为单独的层。例如:

model = Sequential()
model.add(Dense(32, input_dim=100))
model.add(LeakyReLU(alpha=0.1))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
          loss='categorical_crossentropy',
          metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

现在,我假设在函数式 API 方法中执行等效操作:

inpt = Input(shape = (100,))
dense_1 = Dense(32)(inpt)
LR = LeakyReLU(alpha=0.1)(dense_1)
out = …
Run Code Online (Sandbox Code Playgroud)

neural-network keras activation-function

5
推荐指数
1
解决办法
3534
查看次数

为什么在神经网络中几乎每个激活函数都会在负输入值处饱和

这可能是一个非常基本/微不足道的问题。

对于负输入,

  1. ReLu 激活函数的输出为零
  2. Sigmoid 激活函数的输出为零
  3. Tanh 激活函数的输出为 -1

下面提到的是我的问题:

  1. 为什么上述所有激活函数都对负输入值饱和。
  2. 如果我们想预测负目标值,是否有任何激活函数。

谢谢你。

neural-network deep-learning keras activation-function

5
推荐指数
1
解决办法
3878
查看次数