小数据集上的卷积神经网络训练与预训练模型的应用
1. 小数据集上从头训练卷积神经网络
在小数据集上训练卷积神经网络时,我们首先加载之前训练好的模型并评估其在测试集上的性能。以下是具体代码:
test_model = keras.models.load_model("convnet_from_scratch.keras")
test_loss, test_acc = test_model.evaluate(test_dataset)
print(f"Test accuracy: {test_acc:.3f}")
运行上述代码后,我们得到的测试准确率约为 69.5%。由于神经网络初始化的随机性,实际结果可能会在该数值的一个百分点范围内波动。
由于训练样本相对较少(仅有 2000 个),过拟合成为了首要问题。为了缓解过拟合,我们可以采用多种技术,如 Dropout 和权重衰减(L2 正则化),此外,还可以使用专门用于计算机视觉的新方法——数据增强。
1.1 使用数据增强
过拟合通常是由于可用于学习的样本太少,导致模型无法泛化到新数据。如果有无限的数据,模型就能接触到数据分布的各个方面,从而避免过拟合。数据增强通过对现有训练样本进行一系列随机变换,生成更多的训练数据,使模型在训练过程中不会两次看到完全相同的图片,从而更好地泛化。
在 Keras 中,可以在模型的起始部分添加数据增强层。以下是一个示例:
data_augmentation = k
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



