[二十六]深度学习Pytorch-迁移学习、模型微调Finetune

0. 往期内容

[一]深度学习Pytorch-张量定义与张量创建

[二]深度学习Pytorch-张量的操作:拼接、切分、索引和变换

[三]深度学习Pytorch-张量数学运算

[四]深度学习Pytorch-线性回归

[五]深度学习Pytorch-计算图与动态图机制

[六]深度学习Pytorch-autograd与逻辑回归

[七]深度学习Pytorch-DataLoader与Dataset(含人民币二分类实战)

[八]深度学习Pytorch-图像预处理transforms

[九]深度学习Pytorch-transforms图像增强(剪裁、翻转、旋转)

[十]深度学习Pytorch-transforms图像操作及自定义方法

[十一]深度学习Pytorch-模型创建与nn.Module

[十二]深度学习Pytorch-模型容器与AlexNet构建

[十三]深度学习Pytorch-卷积层(1D/2D/3D卷积、卷积nn.Conv2d、转置卷积nn.ConvTranspose)

[十四]深度学习Pytorch-池化层、线性层、激活函数层

[十五]深度学习Pytorch-权值初始化

[十六]深度学习Pytorch-18种损失函数loss function

[十七]深度学习Pytorch-优化器Optimizer

[十八]深度学习Pytorch-学习率Learning Rate调整策略

[十九]深度学习Pytorch-可视化工具TensorBoard

[二十]深度学习Pytorch-Hook函数与CAM算法

[二十一]深度学习Pytorch-正则化Regularization之weight decay

[二十二]深度学习Pytorch-正则化Regularization之dropout

[二十三]深度学习Pytorch-批量归一化Batch Normalization

[二十四]深度学习Pytorch-BN、LN(Layer Normalization)、IN(Instance Normalization)、GN(Group Normalization)

[二十五]深度学习Pytorch-模型保存与加载

[二十六]深度学习Pytorch-模型微调Finetune

深度学习Pytorch-模型微调Finetune

1. 模型微调

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

features_extractor是共性,classifier需要改变,尤其是最后一个输出层。
在这里插入图片描述
在这里插入图片描述
需要更改fc层。

2. 代码示例

finetune_resnet18.py

# -*- coding: utf-8 -*-
"""
# @file name  : finetune_resnet18.py
# @brief      : 模型finetune方法
"""
import os
import numpy as np
import torch
import torch.nn as nn
from torch.utils.data import DataLoader
import torchvision.transforms as transforms
import torch.optim as optim
from matplotlib import pyplot as plt
from tools.my_dataset import AntsDataset
from tools.common_tools import set_seed
import torchvision.models as models
import torchvision
BASEDIR = os.path.dirname(os.path.abspath(__file__))
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print("use device :{}".format(device))

set_seed(1)  # 设置随机种子
label_name = {
   
   "ants": 0, "bees": 1}

# 参数设置
MAX_EPOCH = 25
BATCH_SIZE = 16
LR 
### 使用 DeekSeek-R1 大模型进行本地微调以构建电商问答模型 为了使用 DeekSeek-R1 大模型进行本地微调并构建电商问答模型,可以遵循以下方法和教程。这些内容基于大模型的学习路径以及实际应用场景中的经验[^1]。 #### 数据准备 在开始微调之前,需要收集大量高质量的电商领域数据。这包括但不限于商品描述、客户评论、常见问题解答 (FAQ) 和用户查询日志。确保数据经过清洗和标注,以便于后续训练过程的有效执行[^2]。 #### 环境搭建 安装必要的依赖库,并配置适合运行大型神经网络的硬件环境(如 GPU 或 TPU)。推荐使用的框架有 PyTorch 和 TensorFlow,它们提供了灵活且高效的接口来实现自定义层和支持分布式计算的能力[^3]。 ```bash pip install torch transformers datasets accelerate ``` #### 微调策略 采用迁移学习的方法对预训练好的 DeekSeek-R1 模型参数做进一步调整优化。具体来说就是冻结部分底层权重不变只更新高层特定任务相关的参数从而减少过拟合风险同时加快收敛速度提高泛化性能表现良好效果显著优于随机初始化方式训练出来的模型实例. 以下是简单的代码示例展示如何加载基础模型并对指定任务重新训练: ```python from transformers import AutoTokenizer, AutoModelForSeq2SeqLM import torch tokenizer = AutoTokenizer.from_pretrained("path_to_deekseek_r1") model = AutoModelForSeq2SeqLM.from_pretrained("path_to_deekseek_r1") def fine_tune(model, tokenizer, train_dataset, val_dataset=None): optimizer = torch.optim.AdamW(params=model.parameters(), lr=5e-5) for epoch in range(epochs): model.train() total_loss = 0 for batch in dataloader(train_dataset): inputs = {k:v.to(device) for k,v in batch.items()} outputs = model(**inputs) loss = outputs.loss loss.backward() optimizer.step() optimizer.zero_grad() total_loss += loss.item() return model ``` 完成上述步骤之后就可以保存最终版本用于部署上线提供在线服务支持实时交互功能满足业务需求了.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值