假设您需要创建一个仅使用预定义的tensorflow构建块无法实现的激活功能,您可以做什么?
所以在Tensorflow中可以创建自己的激活功能.但它很复杂,你必须用C++编写它并重新编译整个tensorflow [1] [2].
有更简单的方法吗?
python neural-network deep-learning tensorflow activation-function
在LSTM网络(了解LSTM)中,为什么输入门和输出门使用tanh?这背后的直觉是什么?它只是一个非线性变换?如果是,我可以将两者都更改为另一个激活功能(例如ReLU)吗?
machine-learning deep-learning lstm recurrent-neural-network activation-function
这些天我一直在尝试使用神经网络.我遇到了一个关于要使用的激活功能的一般问题.这可能是一个众所周知的事实,但我无法理解.我见过的很多例子和论文都在研究分类问题,他们要么使用sigmoid(在二进制情况下)或softmax(在多类情况下)作为输出层中的激活函数,这是有道理的.但我还没有看到回归模型的输出层中使用的任何激活函数.
所以我的问题是,我们不会在回归模型的输出层中使用任何激活函数,因为我们不希望激活函数限制或限制值.输出值可以是任意数字,也可以是数千,因此像sigmoid到tanh的激活函数没有意义.或者还有其他原因吗?或者我们实际上可以使用一些针对这类问题的激活函数?
我见过的用于分类任务的神经网络的大多数例子都使用softmax层作为输出激活函数.通常,其他隐藏单元使用sigmoid,tanh或ReLu函数作为激活函数.据我所知,在这里使用softmax函数也可以用数学方法计算出来.
classification machine-learning neural-network softmax activation-function
我在玩 Keras 一点,我在想线性激活层和根本没有激活层之间有什么区别?它没有相同的行为吗?如果是这样,那么线性激活的意义何在?
我的意思是这两个代码片段之间的区别:
 model.add(Dense(1500))
 model.add(Activation('linear'))
 model.add(Dense(1500))
和
 model.add(Dense(1500))
 model.add(Dense(1500))
我最近一直在阅读 Wavenet 和 PixelCNN 的论文,在这两篇论文中,他们都提到使用门控激活函数比 ReLU 效果更好。但在这两种情况下,他们都解释了为什么会这样。
我曾在其他平台(如 r/machinelearning)上问过,但到目前为止我还没有得到任何答复。可能是他们只是(偶然)尝试了这个替代品,结果却产生了良好的结果?
参考函数: y = tanh(Wk,f ? x) 。?(Wk,g ? x)
卷积的 sigmoid 和 tanh 之间的元素乘法。
machine-learning neural-network deep-learning activation-function
我在 Pytorch 中实现自定义激活函数时遇到问题,例如 Swish。我应该如何在 Pytorch 中实现和使用自定义激活函数?
python neural-network deep-learning activation-function pytorch
在pytorch分类网络模型中定义为这样,
class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature, n_hidden)   # hidden layer
        self.out = torch.nn.Linear(n_hidden, n_output)   # output layer
    def forward(self, x):
        x = F.relu(self.hidden(x))      # activation function for hidden layer
        x = self.out(x)
        return x
这里应用了 softmax 吗?在我看来,事情应该是这样的,
class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature, n_hidden)   # hidden layer
        self.relu =  torch.nn.ReLu(inplace=True)
        self.out = torch.nn.Linear(n_hidden, n_output)   # output layer
        self.softmax = torch.nn.Softmax(dim=n_output)
    def forward(self, x):
        x = …根据PyTorch论坛的讨论:
的目的是就地inplace=True修改输入,而不用此操作的结果为附加张量分配内存。
这允许更有效地使用内存,但禁止进行向后传递的可能性,至少在操作减少信息量的情况下是如此。并且反向传播算法需要保存中间激活才能更新权重。
\n是否可以说,只有在模型已经训练好并且不想再修改它的情况下才应该分层启用此模式?
\nkeras/activation.py中定义的Relu函数是:
    def relu(x, alpha=0., max_value=None):
      return K.relu(x, alpha=alpha, max_value=max_value)
它有一个max_value,可用于剪切值.现在如何在代码中使用/调用它?我尝试了以下方法:(a)
    model.add(Dense(512,input_dim=1))
    model.add(Activation('relu',max_value=250))
    assert kwarg in allowed_kwargs, 'Keyword argument not understood: 
    ' + kwarg
    AssertionError: Keyword argument not understood: max_value
(b)中
    Rel = Activation('relu',max_value=250)
同样的错误
(C)
    from keras.layers import activations
    uu = activations.relu(??,max_value=250)
这个问题是它希望输入存在于第一个值中.错误是'relu()需要至少1个参数(给定1个)'
那我怎么做这个图层呢?
    model.add(activations.relu(max_value=250))
有同样的问题'relu()需要至少1个参数(给定1个)'
如果此文件不能用作图层,则似乎无法为Relu指定剪辑值.这意味着这里的评论https://github.com/fchollet/keras/issues/2119关闭提议的更改是错误的......有什么想法吗?谢谢!