Deep learning 当深度学习神经网络在验证精度方面停止改进时,下一步该怎么办?

Deep learning 当深度学习神经网络在验证精度方面停止改进时,下一步该怎么办?,deep-learning,neural-network,loss-function,Deep Learning,Neural Network,Loss Function,我遇到了这个问题,我的模型在大约20或30年后才收敛得非常快 我的数据集包含7000个样本,我的神经网络有3个隐藏层,每个隐藏层有18个神经元,批量标准化,下降0.2 我的任务是一个多标签分类,其中我的标签是[0 0 1]、[0 1 0]、[1 0 0]和[0 0 0] num_neuron = 18 model = Sequential() model.add(Dense(num_neuron, input_shape=(input_size,), activation='elu')) mod

我遇到了这个问题,我的模型在大约20或30年后才收敛得非常快 我的数据集包含7000个样本,我的神经网络有3个隐藏层,每个隐藏层有18个神经元,批量标准化,下降0.2

我的任务是一个多标签分类,其中我的标签是[0 0 1]、[0 1 0]、[1 0 0]和[0 0 0]

num_neuron = 18
model = Sequential()
model.add(Dense(num_neuron, input_shape=(input_size,), activation='elu'))
model.add(Dropout(0.2))
model.add(keras.layers.BatchNormalization())

model.add(Dense(num_neuron, activation='elu'))
model.add(Dropout(0.2))
model.add(keras.layers.BatchNormalization())

model.add(Dense(num_neuron/3, activation='elu'))
model.add(Dropout(0.2))
model.add(keras.layers.BatchNormalization())

model.add(Dense(3, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
              optimizer='nadam',
              metrics=['accuracy'])
history = model.fit(X_train, Y_train,batch_size=512 ,epochs=1000,
                    validation_data=(X_test, Y_test), verbose=2)

我想知道是否有什么我可以做的来提高更多,因为即使在我设定了1000个大纪元后,没有什么会真正改变


这是神经网络训练中的预期行为:一段时间后,训练过程被称为收敛,这意味着进一步的训练不会带来任何进一步的进展(事实上,训练时间过长甚至可能会损害模型的泛化能力,因为这可能会导致训练集的过度拟合。提前停止是为了解决这个问题)

在您的案例中,由于训练已经收敛,训练和验证损失都不再减少,因此可以肯定地说,您已经通过这个特定的训练过程和这个特定的模型架构(3个隐藏层,18个神经元)实现了这个特定任务的最高可能精度


但是,通过试验这些属性,仍然可以进行改进。在您的情况下,很难说,因为我不知道您正在培训的任务,但是由于您的培训损失几乎与验证损失相同,您的模型可能不太适合,这意味着如果您使用更多ca,它可能会变得更好pable模型(每层或每层有更多的神经元)或减少标准化。

这是神经网络训练中的预期行为:一段时间后,训练过程称为收敛,这意味着进一步的训练不会导致任何进一步的进展(事实上,训练时间过长甚至可能会损害模型的泛化能力,因为这可能会导致训练集的过度拟合。提前停止是为了解决这个问题)

在您的案例中,由于训练已经收敛,训练和验证损失都不再减少,因此可以肯定地说,您已经通过这个特定的训练过程和这个特定的模型架构(3个隐藏层,18个神经元)实现了这个特定任务的最高可能精度

但是,通过试验这些属性,仍然可以进行改进。在您的情况下,很难说,因为我不知道您正在培训的任务,但是由于您的培训损失几乎与验证损失相同,您的模型可能不太适合,这意味着如果您使用更多ca,它可能会变得更好pable模型(每层或更多层有更多神经元)或减少标准化