目錄
1.導包
2.加載數據、拼接訓練、測試數據的文件夾路徑
3.數據預處理
3.1 transforms.Compose數據轉化
3.2分類存儲的圖片數據創建dataloader
torchvision.datasets.ImageFolder
torch.utils.data.DataLoader
4.加載預訓練好的模型(遷移學習)
4.1固定、修改預訓練好的模型參數
4.2模型拷到GPU上
4.3定義優化器與損失函數
4.4學習率衰減
4.5定義訓練過程
5.測試運行
6.可視化 :訓練與測試的損失函數、準確率
#學習率衰減屬于超參數設。在深度學習中,超參數是指在模型訓練之前設定的參數,它們不會在訓練過程中自動學習到,而是需要人為設置的。
#學習率衰減是一種動態調整學習率的方法,通過在學習過程中逐漸減少學習率,以提高模型的訓練效果和穩定性。
#具體來說,學習率衰減是通過在訓練過程中逐漸減小學習率來實現的,這有助于在訓練初期快速收斂,同時在后期避免過大的波動,從而更接近最優解
#學習率衰減有兩種方式,隨著訓練次數的增加,學習率逐漸變小
#學習率衰減,在訓練過程中使用, 測試過程中不需要使用
1.導包
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import numpy as np
import matplotlib.pyplot as pltimport torchvision
from torchvision import transformsimport os
2.加載數據、拼接訓練、測試數據的文件夾路徑
base_dir = './dataset'
train_dir = os.path.join(base_dir, 'train')
test_dir = os.path.join(base_dir, 'test')
3.數據預處理
3.1 transforms.Compose數據轉化
transform = transforms.Compose([# 統一縮放到96 * 96transforms.Resize((96, 96)),transforms.ToTensor(),# 正則化transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])
])
3.2分類存儲的圖片數據創建dataloader
torchvision.datasets.ImageFolder
torch.utils.data.DataLoader
train_ds = torchvision.datasets.ImageFolder(train_dir, transform=transform)
test_ds = torchvision.datasets.ImageFolder(test_dir, transform=transform)batch_size = 32
train_dl = torch.utils.data.DataLoader(train_ds, batch_size=batch_size, shuffle=True, drop_last=True)
test_dl = torch.utils.data.DataLoader(test_ds, batch_size=batch_size)
4.加載預訓練好的模型(遷移學習)
# 加載預訓練好的模型
model = torchvision.models.vgg16(pretrained=True)
model
VGG((features): Sequential((0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(1): ReLU(inplace=True)(2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1,