遷移學習(TRANSFER LEARNING)
阿新 • • 發佈:2018-12-13
在本教程中,您將學習如何使用遷移學習來培訓您的網路。
在實踐中,很少有人從頭開始訓練整個卷積網路(使用隨機初始化),因為擁有足夠大小的資料集是相對少見的。相反,在一個非常大的資料集上預先訓練一個卷積神經網路是很常見的(例如,ImageNet,它包含了120萬個有1000個類別的影象),然後使用“卷積神經網路”作為初始化或固定的功能提取器來完成感興趣的任務。
這兩種主要的轉移學習情景如下:
1)對卷積神經網路的研究:我們用一個預先訓練的網路來初始化網路,就像在imagenet 1000資料集上訓練的那樣。其餘的訓練看起來和往常一樣。
2)在這裡,我們將固定所有網路的權重,除了最後全連線層。最後一個全連線層被替換為一個帶有隨機權重的新層,只有這一層被訓練。
# License: BSD # Author: Sasank Chilamkurthy from __future__ import print_function, division import torch import torch.nn as nn import torch.optim as optim from torch.optim import lr_scheduler import numpy as np import torchvision from torchvision import datasets, models, transforms import matplotlib.pyplot as plt import time import os import copy plt.ion() # interactive mode
資料載入(LOAD DATA)
我們將使用 torchvision 和 torch.utils.data 兩個包來完成資料的載入
我們今天要解決的問題是訓練一個模型來分類螞蟻和蜜蜂。我們為螞蟻和蜜蜂準備了大約120張訓練圖片。每個類有75個驗證映像。通常,如果從頭開始訓練,這是一個非常小的資料集。由於我們使用的是轉移學習,所以我們應該能夠很好地概括。
這個資料集是imagenet的一個非常小的子集。
Download the data from here and extract it to the current directory.