pytorch 训练过程acc_PyTorch使用教程-迁移学习(几分钟即可训练好自己的模型)

本文介绍了如何使用PyTorch进行迁移学习,通过微调预训练模型,如ResNet18,只需几分钟即可训练出高准确率的模型。文章详细讲解了数据准备、模型选择、预训练模型的调整以及训练过程,展示了在CPU上快速获得良好结果的可能性。
摘要由CSDN通过智能技术生成

PyTorch使用教程-迁移学习

前言

如果你认为深度学习非常的吃GPU,或者说非常的耗时间,训练一个模型要非常久,但是你如果了解了迁移学习那你的模型可能只需要几分钟,而且准确率不比你自己训练的模型准确率低,本节我们将会介绍两种方法来实现迁移学习

迁移学习方法介绍

微调网络的方法实现迁移学习,更改最后一层全连接,并且微调训练网络

将模型看成特征提取器,如果一个模型的预训练模型非常的好,那完全就把前面的层看成特征提取器,冻结所有层并且更改最后一层,只训练最后一层,这样我们只训练了最后一层,训练会非常的快速

a62cd7701865e5374fb823d3360538ba.png

迁移基本步骤

数据的准备

选择数据增广的方式

选择合适的模型

更换最后一层全连接

冻结层,开始训练

选择预测结果最好的模型保存

需要导入的包

import zipfile # 解压文件

import torchvision

from torchvision import datasets, transforms, models

import torch

from torch.utils.data import DataLoader, Dataset

import os

import cv2

import numpy as np

import matplotlib.pyplot as plt

from PIL import Image

import copy

数据准备

本次实验的数据到这里下载

首先按照上一章节讲的数据读取方法来准备数据

# 解压数据到指定文件

def unzip(filename, dst_dir):

z = zipfile.ZipFile(filename)

z.extractall(dst_dir)

unzip('./data/hymenoptera_data.zip', './data/')

# 实现自己的Dataset方法,主要实现两个方法__len__和__getitem__

class MyDataset(Dataset):

def __init__(self, dirname, transform=None):

super(MyDataset, self).__init__()

self.classes = os.listdir(dirname)

self.images = []

self.transform = transform

for i, classes in enumerate(self.classes):

classes_path = os.path.join(dirname, classes)

for image_name in os.listdir(classes_path):

self.images.append((os.path.join(classes_path, image_name), i))

def __len__(self):

return len(self.images)

def __getitem__(self, idx):

image_name, classes = self.images[idx]

image = Image.open(image_name)

if self.transform:

image = self.transform(image)

return image, classes

def get_claesses(self):

return self.classes

# 分布实现训练和预测的transform

train_transform = transforms.Compose([

transforms.Grayscale(3),

transforms.RandomResizedCrop(224), #随机裁剪一个area然后再

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值