预训练权重是否加载的区别
·
举个例子,以下两行有什么区别
from torchvision.models import VGG16_Weights
# 不加载预训练权重
vgg16_false = torchvision.models.vgg16(weights=None)
# 加载预训练权重
vgg16_true = torchvision.models.vgg16(weights=VGG16_Weights.IMAGENET1K_V1)
-
weights=None(不加载预训练权重):- 创建 VGG16 模型时,网络的参数是随机初始化的。
- 模型需要在你的数据集上从头训练,适合在全新的领域或任务中从零开始训练模型(如一个完全不同的任务或数据分布)。
- 通常用于有大量数据和计算资源的场景。
-
weights=VGG16_Weights.IMAGENET1K_V1(加载预训练权重):- 创建 VGG16 模型时,网络参数加载了已经在 ImageNet 数据集上训练好优化的权重。
- 适用于与 ImageNet 数据分布相似的任务,可以直接用这些预训练特征进行迁移学习,微调模型,或者甚至完全直接推理。
- 能节省训练时间,提高模型在新任务上的效果。
总结:
- 加载预训练权重(
VGG16_Weights.IMAGENET1K_V1)是为了利用 ImageNet 数据事先训练好的特征来加速模型训练,或者直接用于推理。 - 不加载预训练权重(
weights=None)需要完全自行训练模型,适合在全新任务上使用。
更多推荐



所有评论(0)