Deep learning 雷鲁不行,乙状结肠也行

Deep learning 雷鲁不行,乙状结肠也行,deep-learning,mobilenet,Deep Learning,Mobilenet,当我在输出层使用sigmoid时,有一个现象让我感到困惑,那就是网络运行良好。但是,如果我将输出的激活设置为Relu,则网络不会收敛。在第一个历元之后,训练损失不会减少。有人能解释这种现象吗 网络的输入是图像。像素被重新缩放为0-1。输出为0-1之间的一个值 谢谢。从您的上述问题中我了解到,当您使用ReLu作为最终激活时,模型不会收敛: 如果是这种情况,那么答案就在ReLu函数本身中,ReLu所做的是,它不会在[0,1]之间缩放网络输出,而是返回max(0,x),这是您不希望在输出/基本真理在[

当我在输出层使用sigmoid时,有一个现象让我感到困惑,那就是网络运行良好。但是,如果我将输出的激活设置为Relu,则网络不会收敛。在第一个历元之后,训练损失不会减少。有人能解释这种现象吗

网络的输入是图像。像素被重新缩放为0-1。输出为0-1之间的一个值


谢谢。

从您的上述问题中我了解到,当您使用
ReLu
作为最终激活时,模型不会收敛:

如果是这种情况,那么答案就在
ReLu
函数本身中,
ReLu
所做的是,它不会在
[0,1]
之间缩放网络输出,而是返回
max(0,x)
,这是您不希望在
输出/基本真理
在[0,1]之间缩放的结果而
sigmoid
确实会在
[0,1]
之间缩放网络输出,这符合您的基本事实

为了更好地理解,考虑你的网络的最终层在代码< > [0, 1 ] < /代码>之间的概率,这是通过使用<代码> SigMID实现的,但是由于函数定义,不能通过<代码> Relu < /代码>实现。p>


因此,要计算损失,你的
地面真相
和你的
网络输出
应该在sigmoid实现的相同范围内,因此,在你的情况下,模型收敛于
sigmoid

从你上面的问题中我了解到,当您使用
ReLu
作为最终激活时,模型不会收敛:

如果是这种情况,那么答案就在
ReLu
函数本身中,
ReLu
所做的是,它不会在
[0,1]
之间缩放网络输出,而是返回
max(0,x)
,这是您不希望在
输出/基本真理
在[0,1]之间缩放的结果而
sigmoid
确实会在
[0,1]
之间缩放网络输出,这符合您的基本事实

为了更好地理解,考虑你的网络的最终层在代码< > [0, 1 ] < /代码>之间的概率,这是通过使用<代码> SigMID实现的,但是由于函数定义,不能通过<代码> Relu < /代码>实现。p>


因此,要计算损失,你的
地面真实值
和你的
网络输出
应该在sigmoid实现的相同范围内,因此,在你的情况下,
sigmoid的模型收敛。

我有一个类似的问题,现在已经解决了。神经网络只有3层来训练MNIST数据。乙状结肠激活有效,但雷鲁没有,其他一切都一样。我将学习率从3降低到了0.1,然后Relu开始工作。
我从这里得到了这个想法:

我有一个类似的问题,现在已经解决了。神经网络只有3层来训练MNIST数据。乙状结肠激活有效,但雷鲁没有,其他一切都一样。我将学习率从3降低到了0.1,然后Relu开始工作。
我从这里得到了一个想法:

您使用的是什么损失函数?relu和sigmoid都经过了测试。我在这个链接中详细描述了我的问题,你能给我一些建议吗。非常感谢。雷卢和西格;oid是激活函数,不是损失函数,损失函数类似于“交叉熵”或“mse”。事实上,在最后一层中使用relu作为激活没有多大意义,因为一般情况下,您有一种树类型:回归、二元分类或多类分类,在第一种情况下,最好不使用激活,使用mse作为损失,在第二种情况下,最好使用带二进制交叉熵的sigmoid,在最后一种情况下,最好使用带变分交叉熵的softmax。您使用的损失函数是什么?relu和sigmoid都经过了测试。我在这个链接中详细描述了我的问题,你能给我一些建议吗。非常感谢。雷卢和西格;oid是激活函数,不是损失函数,损失函数类似于“交叉熵”或“mse”。事实上,在最后一层中使用relu作为激活没有多大意义,因为一般情况下,您有一种树类型:回归、二元分类或多类分类,在第一种情况下,最好不使用激活,使用mse作为损失,在第二种情况下,最好使用带二进制交叉熵的sigmoid,在最后一种情况下,最好使用带变分交叉熵的softmax。谢谢你的回答。我还有一个问题,我训练了一个回归网络,使用resnet50作为主干。网络的输入为图像(224*224*3,像素重缩放为0-1),输出为一个值(0-1)。无论我使用relu或sigmoid作为输出的激活函数,网络都不会收敛。但当我使用VGG16作为主干,使用sigmoid作为输出的激活函数时,网络会收敛。你能给我一些建议吗。1-检查模型和VGG16的损失从何处开始,检查损失在何处达到2-检查模型的行为,当你提供更高的学习率时,在你的情况下,尝试对resnet50使用高LR(可能是1e-2),并检查损失是否有任何变化,损失没有改善的一个原因可能是它可能停留在一个可能的平台上。谢谢你的回答。我还有一个问题,我训练了一个回归网络,使用resnet50作为主干。网络的输入为图像(224*224*3,像素重缩放为0-1),输出为一个值(0-1)。无论我使用relu或sigmoid作为输出的激活函数,网络都不会收敛。但当我使用VGG16作为主干,使用sigmoid作为输出的激活函数时,网络会收敛。你能给我一些建议吗。1-检查模型和VGG16的损失从何处开始,检查损失在何处达到2-检查模型行为,当你提供更高的学习率时,在你的情况下,尝试对resnet50使用高LR(可能是1e-2),并检查损失是否有任何变化,损失的一个原因是没有