迁移学习指的是将一个已经训练好的模型用于其他的问题上。例如,利用在ImageNet(包含数百万张图像)等大数据集中训练出来的模型,将它们用于支持我们FoodVision Mini模型——一个更加细分的食物图片分类任务上,
迁移学习的原理是利用已经在一个问题上学到的知识,来帮助解决另一个相关的问题。
它的核心思想是,即使两个问题并不完全相同,它们之间可能存在一些共享的特征或模式。通过将一个问题上学到的知识迁移到另一个问题上,我们可以加速学习过程,提高解决问题的效率。

计算机视觉:
自然语言处理(NLP):
医学影像诊断:
PyTorch
torchvision.models、torchtext.models、torchaudio.models 和 torchrec.models 中可以找到。HuggingFace Hub
timm (PyTorch图像模型) 库
Paperswithcode

下面代码参考自官网教程:Models and pre-trained weights — Torchvision 0.18 documentation
选取一张pizza的图片,并使用预训练模型对其识别,最后打印结果
from torchvision.io import read_image
from torchvision.models import resnet50, ResNet50_Weights
# 读取图片
img = read_image("/content/data/pizza_steak_sushi/test/pizza/1687143.jpg")
# 第一步:初始化模型
example_weights = ResNet50_Weights.DEFAULT #选择默认的预训练权重
example_model = resnet50(weights=example_weights) #使用预训练权重初始化模型
example_model.eval() # 将模型设置为评估模式
# 第二步:初始化预处理变换
preprocess = example_weights.transforms() # 获取与预训练权重相关的预处理变换
# 第三步:应用预处理变换
batch = preprocess(img).unsqueeze(0) # 对图像进行预处理变换,并添加一个新的维度(batch)
# 第四步:使用模型并打印预测的类别
prediction = example_model(batch).squeeze(0).softmax(0) # 对图像进行预测分类
class_id = prediction.argmax().item() # 获取预测概率最高的类别 ID
score = prediction[class_id].item() # 获取预测概率
category_name = example_weights.meta["categories"][class_id] # 获取类别名称
print(f"{category_name}: {100 * score:.1f}%") # 打印结果
结果输出:pizza: 37.6%。
这意味着在所有可能的类别中,模型最有信心的是该图像属于 “pizza” 类别,且模型认为图像是 “pizza” 的可能性为 37.6%。虽然 37.6% 不是一个非常高的概率,但在多分类任务中,如果其他类别的概率都低于 37.6%,那么 “pizza” 就是模型的最佳猜测。