【问题标题】:Weird behaviour for my CNN validation accuracy and loss function during training phase在训练阶段我的 CNN 验证准确性和损失函数的奇怪行为
【发布时间】:2020-09-01 09:13:13
【问题描述】:

这是我的网络架构:

cnn3 = Sequential()
cnn3.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
cnn3.add(MaxPooling2D((2, 2)))
cnn3.add(Dropout(0.25))
cnn3.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
cnn3.add(MaxPooling2D(pool_size=(2, 2)))
cnn3.add(Dropout(0.25))
cnn3.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))
cnn3.add(Dropout(0.2))
cnn3.add(Flatten())
cnn3.add(Dense(128, activation='relu'))
cnn3.add(Dropout(0.4)) # 0.3
cnn3.add(Dense(4, activation='softmax'))
cnn3.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adam(),
              metrics=['accuracy'])

当我绘制了训练和验证准确度以及损失函数后,我得到了接下来的两个数字:

我不明白为什么验证准确率和损失都没有跟随训练准确率和损失?

【问题讨论】:

    标签: python tensorflow validation keras training-data


    【解决方案1】:

    您的验证是跟踪训练损失和准确性。由于数据集较小,验证行中的抖动更大。训练和验证之间的偏移可能是由于某种程度的过度拟合。

    【讨论】:

    • 那么可以根据训练集和验证集的准确率值来检测过拟合吗?那么我应该增加验证数据集吗?
    • 是的,通常您通过具有良好的训练性能和较差的(或不太好的)验证性能来检测过度拟合。增加验证集大小将使抖动更小,但这也意味着更小的训练集大小......
    • 好吧,我正在使用 Imagegenration 进行数据增强,这会解决问题吗?
    • 你绝对可以试试
    猜你喜欢
    • 2019-04-20
    • 2018-04-03
    • 2020-08-08
    • 2018-09-23
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    相关资源
    最近更新 更多