我正在尝试使用反向传播训练深度神经网络进行分类。具体来说,我使用Tensor Flow库将卷积神经网络用于图像分类。在训练过程中,我遇到一些奇怪的行为,我只是想知道这是否很典型,或者我做错了什么。
因此,我的卷积神经网络有8层(5层卷积,3层完全连接)。所有权重和偏差均以较小的随机数初始化。然后,我设置步长,并使用Tensor Flow的Adam Optimizer进行小批量训练。
我正在谈论的奇怪行为是,对于我的训练数据中的前10个循环,训练损失通常不会减少。权重正在更新,但训练损失大致保持在大约相同的值,有时在小批之间增加或减少。它会保持这种状态一段时间,并且我总是给人以损失永远不会减少的印象。
然后,突然之间,训练损失急剧减少。例如,在训练数据的大约10个循环内,训练精度从大约20%变为大约80%。从那时起,一切最终都很好地融合在一起。每当我从头开始运行训练管道时,都会发生相同的事情,下面的图表说明了一个示例运行。
因此,我想知道的是,这是通过训练深度神经网络进行的正常行为,从而需要一段时间才能“踢进”。还是我做错了某件事导致了此延迟?
非常感谢!
我想我聚会晚了一点。但是也许我仍然可以为对话增加一些价值。太...对我来说,这听起来像是S型激活功能。由于乙状结肠的导数对于非常小的值或非常大的值都是很小的,因此对于“饱和神经元”而言训练可能会很慢。不幸的是,根据您所提供的描述,我无法准确判断您的CNN情况。
—
尼玛·穆萨维