Keras Pytorch如何使用线性激活函数
在Keras中,我可以创建任何具有线性激活功能的网络层,如下所示(例如,采用完全连接的层):Keras Pytorch如何使用线性激活函数,keras,pytorch,Keras,Pytorch,在Keras中,我可以创建任何具有线性激活功能的网络层,如下所示(例如,采用完全连接的层): 但是我在PyTorch文档中找不到线性激活函数。ReLU不适合,因为我的示例中存在负值。如何在PyTorch中创建具有线性激活功能的层?如果您查看Keras文档,您将看到'sactivation='linear'对应于a(x)=x功能。这意味着没有非线性 因此,在PyTorch中,您只需定义线性函数,而无需添加任何激活层: torch.nn.Linear(160, outs) activation='
但是我在PyTorch文档中找不到线性激活函数。ReLU不适合,因为我的示例中存在负值。如何在PyTorch中创建具有线性激活功能的层?如果您查看Keras文档,您将看到's
activation='linear'
对应于a(x)=x
功能。这意味着没有非线性
因此,在PyTorch中,您只需定义线性函数,而无需添加任何激活层:
torch.nn.Linear(160, outs)
activation='linear'
等同于根本不激活
可以看出,它也被称为“passthrough”,意思是它什么也不做
因此,在pytorch中,您根本无法应用任何激活,以达到对等
然而,正如@Minsky所说,没有真实激活的隐藏层,即一些非线性激活是无用的。这就像是在网络绘制过程中改变权重。隐藏层上的纯线性函数是绝对无用的。另外,如果你有xmaybe,ReLU不会是0,因为他在问最后一层…回归问题。火炬。nn。线性(160,输出)工作良好。不需要明确指定“线性”激活。那么,是否有可能使线性激活函数不是针对完全连接的层,而是针对卷积层?如果我没有为某个层指定激活函数(无论是卷积的还是完全连接的),那么我的网络就根本没有经过训练。我正在为一个单通道30*30图像使用LeNet-5适配。“有可能为一个卷积层而不是一个完全连接的层生成一个线性激活函数吗?”你读了这两个答案吗
activation='linear'
表示不激活。我不确定你在conv层上的线性激活在哪里。我的意思是,我不确定在这种情况下,当反向传播错误时,导数会被传递。我说的是在PyTorch中使用线性激活。让我们重新开始:您希望在PyTorch中使用activation='linear'
实现一个密集层Dense
层是一个完全连接的层,即nn.Linear
,activation='Linear'
表示没有激活(即没有非线性功能)。问题在哪里?也许我没有明确说明torch.nn.Linear
等同于tf.keras.layers.Dense
启用了activation='Linear'
。我展示了一个如何在keras中应用线性激活函数的示例。现在我对如何在PyTorch中使用它感兴趣。就我所知,torch.nn。线性使用默认的线性激活功能创建完全连接的层。问题是:如果是这种情况,我如何为PyTorch中的卷积层添加一个线性激活函数?那么,是否有可能为卷积层而不是完全连接的层创建一个线性激活函数?如果我没有为某个层指定激活函数(无论是卷积的还是完全连接的),那么我的网络就根本没有经过训练。我正在使用LeNet-5适配单通道30*30图像。你没有做足够的研究@请解释这一点。
torch.nn.Linear(160, outs)