当前位置: 首页 > 知识库问答 >
问题:

为什么我的模型在进行正则化和批量规格化之后会过度拟合

司寇照
2023-03-14

这是我的CNN模型结构。

def make_dcnn_model():
  model = models.Sequential()
  model.add(layers.Conv2D(5, (5, 5), input_shape=(9, 128,1), padding='same', strides = (1,2), activity_regularizer=tf.keras.regularizers.l1(0.001)))
  model.add(layers.LeakyReLU())
  model.add(BatchNormalization())

  model.add(layers.AveragePooling2D((4, 4), strides = (2,4)))

  model.add(layers.Conv2D(10, (5, 5),  padding='same', activity_regularizer=tf.keras.regularizers.l1(0.001)))
  model.add(layers.LeakyReLU())
  model.add(BatchNormalization())

  model.add(layers.AveragePooling2D((2, 2), strides = (1,2)))

  model.add(layers.Flatten())
  model.add(layers.Dense(50, activity_regularizer=tf.keras.regularizers.l1(0.001)))
  model.add(layers.LeakyReLU())
  model.add(BatchNormalization())

  model.add(layers.Dense(6, activation='softmax'))
  return model

结果表明,该模型与训练数据吻合较好,验证数据的验证精度波动较大。

在7352个样本上训练,在2947个样本上验证Epoch 1/3000 7352/7352[===============================================================-3s 397us/样本-损失:0.1016-精度:0.9698-val损失:4.0896-val精度:0.5816 Epoch 2/3000 7352/7352[==================================================================================================================================================================================================================================================================-2s 214us/样本-损耗:0.0965-精度:0.9727-瓦卢损耗:1.2296-瓦卢精度:0.7384历元3/3000 7352/7352[=============================================================================================================================================================================================================================================================================================================================================================================================================================================-2s 211U/样本-损耗:0.1013-精度:0.9701-val_损耗:0.5319-val_精度:0.9114历元5/3000 7352/7352[======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================-2s 205us/样本-损耗:0.0925-精度:0.9743-瓦卢损耗:1.4033-瓦卢精度:0.7472历元7/3000 7352/7352[=============================================================================================]-1s 203us/样本-损耗:0.0948-精度:0.9740-瓦卢损耗:0.8375-瓦卢精度:0.7998

共有1个答案

韦星文
2023-03-14

减少过度装配需要反复试验。有很多方法可以解决这个问题。

尝试向模型中添加更多数据,或者在处理图像时增加数据。(非常有用)

尝试通过调整层的参数来降低模型的复杂性。

试着早点停止训练。

正则化和批处理归一化非常有帮助,但是如果没有它们的过拟合,你的模型可能已经表现得更差了。尝试不同类型的正则化。

我的猜测是,通过在数据中添加更多的多样性,您的模型将不会过度拟合。

 类似资料:
  • 我试图在Tensorflow中构建一个通用的批处理规范化函数。 在这篇文章中,我学习了批处理规范化,我发现这很好。 我有一个问题与规模和beta变量的维度:在我的情况下,批处理规范化应用于每个卷积层的每个激活,因此,如果我有卷积层的输出一个大小的tersor: 我需要刻度和beta与卷积层输出具有相同的尺寸,对吗? 这是我的函数,程序可以运行,但我不知道是否正确

  • 我想知道,在卷积神经网络中,是否应该对每个像素分别应用批处理归一化,还是应该对每个通道取像素的平均值? 我在Tensorflow的tf描述中看到了这一点。图层。batch\u归一化建议对通道执行bn,但如果我回忆正确,我使用了另一种方法,效果很好。

  • 我是一名深度学习的初学者,我正在尝试使用Mobilenet_v2和Inception训练一个深度学习模型,以对不同的ASL手势进行分类。 下面是我的代码创建一个ImageDataGenerator,用于创建培训和验证集。 以下是培训模型的代码: 纪元1/5 94/94[=================================================================

  • 我们通常在数据库中存储对象图。在rdbms中,我们需要男性连接来重试对象之间的关系。在cassandra中,它被提升为非规范化模型以适应查询。但是这样做,我们使模型的更新更加复杂或更加指定。在Cassandra中,它存在复杂的数据类型,如set、map、list ou元组。这些类型可以通过在列表中存储连接对象的id来以简单的方式(关联、聚合、对象组合)存储对象之间的关系。唯一的缺点是必须将sql复

  • 在TensorFlow中执行批量规格化的正确方法是什么?(即,我不想计算连续均值和方差)。我当前的实现基于tf。nn。batch\u normalization(批次规格化),其中x是具有形状的卷积层的输出。[批次大小、宽度、高度、通道数]。我想在通道方面执行批处理规范。 但这种实施的结果非常糟糕。与tensorflow比较。承包商。苗条的batch\u norm显示其票价较低(同样糟糕的培训表现

  • 问题内容: 是否有很好的资源来描述PMD规则集背后的“为什么”?PMD的站点具有“什么”(每条规则的作用),但是并未说明PMD为何具有该规则以及为何忽略该规则会使您在现实世界中遇到麻烦。特别是,我很想知道PMD为何具有避免规则In避免(InstantInstantiatingObjectsInLoops和OnlyOneReturn)(如果需要创建一个与集合中每个对象相对应的新对象,则第一个似乎是必