还在手动设置requires_grad=False?,发现PyTorch参数冻结的自动化新方案

第一章:PyTorch参数冻结的背景与意义

在深度学习模型训练过程中,参数冻结是一种常见且关键的技术手段,广泛应用于迁移学习、模型微调和资源优化等场景。通过冻结部分网络层的参数,可以有效防止这些层在反向传播过程中更新权重,从而保留预训练模型中已学到的特征表示。

参数冻结的核心作用

  • 提升训练效率:减少需要计算梯度的参数数量,降低显存占用和计算开销
  • 防止灾难性遗忘:在微调预训练模型时,保护底层通用特征不被破坏
  • 控制训练目标:仅对特定任务相关的顶层进行优化,适用于小数据集场景
典型应用场景
场景说明
迁移学习使用ImageNet预训练的ResNet作为特征提取器,仅训练分类头
分阶段训练先冻结主干网络训练头部,再解冻部分层进行联合微调
多任务学习共享编码器中某些子模块参数固定,避免任务间干扰

基本实现方式

在PyTorch中,可通过设置 requires_grad 属性来控制参数是否参与梯度计算。以下代码展示了如何冻结卷积神经网络的前几层:
# 定义一个简单的CNN模型
import torch.nn as nn
model = nn.Sequential(
    nn.Conv2d(3, 64, kernel_size=3),
    nn.ReLU(),
    nn.Conv2d(64, 128, kernel_size=3),
    nn.ReLU(),
    nn.Linear(128, 10)
)

# 冻结前两层参数
for param in model[0].parameters():
    param.requires_grad = False  # 禁用梯度计算

# 查看可训练参数总数
trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad)
print(f"可训练参数数量: {trainable_params}")
该机制为灵活构建复杂训练流程提供了基础支持,是现代深度学习工程实践中不可或缺的一环。

第二章:传统参数冻结方法解析

2.1 requires_grad属性的手动控制原理

PyTorch 中的 `requires_grad` 是张量(Tensor)的一个布尔属性,用于指示是否需要对该张量进行梯度追踪。当设置为 `True` 时,所有基于该张量的操作都会被记录在计算图中,以便后续自动求导。
手动启用与禁用梯度追踪
在模型训练过程中,某些场景下需要临时禁止梯度计算以提升性能或节省内存,例如模型推理或参数冻结。
x = torch.tensor([1.0, 2.0], requires_grad=True)
y = x ** 2
y.backward(torch.ones_like(y))
print(x.grad)  # 输出: tensor([2., 4.])
上述代码中,`requires_grad=True` 显式开启梯度追踪,使得 `x` 参与反向传播。若将该属性设为 `False`,则不会构建梯度依赖。
动态控制的应用场景
使用 `torch.no_grad()` 上下文管理器可批量禁用梯度,常用于验证阶段:
  • 防止不必要的梯度计算,加快前向推理速度
  • 冻结部分网络层参数,实现迁移学习中的特征提取器固定

2.2 基于named_parameters的筛选冻结实践

在模型微调过程中,常需对特定层进行参数冻结以保留预训练知识。PyTorch 提供 `named_parameters()` 方法,可遍历模型参数并获取其名称与张量,便于精准控制。
参数命名与筛选机制
通过 `model.named_parameters()` 可获得形如 `'encoder.layer.1.attention.self.query.weight'` 的层级命名路径,结合字符串匹配即可实现细粒度筛选。

for name, param in model.named_parameters():
    if 'encoder' in name:
        param.requires_grad = False  # 冻结编码器
    else:
        param.requires_grad = True   # 解锁解码器
上述代码逻辑中,所有包含 "encoder" 的参数被冻结,仅保留下游任务相关模块(如分类头)可训练,显著降低显存消耗并防止过拟合。
多策略冻结配置表
层名称模式是否冻结适用场景
embeddings是小数据微调
classifier否所有任务
layer.11是高效迁移

2.3 冻结特定层的典型应用场景分析

在深度学习模型微调过程中,冻结特定层是一种常见策略,主要用于迁移学习场景。通过固定预训练模型的部分参数,仅训练新增或顶层网络,可有效避免小数据集上的过拟合。
典型应用场景
  • 迁移学习:使用ImageNet预训练的ResNet等骨干网络,冻结底层卷积层
  • 资源受限环境:减少可训练参数量,降低显存消耗和训练时间
  • 小样本任务:防止少量新数据破坏已有特征提取能力
代码示例与说明
for name, param in model.named_parameters():
    if "features" in name:  # 冻结特征提取层
        param.requires_grad = False
上述代码通过判断参数名称冻结特定模块。将requires_grad设为False后,反向传播时不会计算对应梯度,从而实现层冻结。该机制适用于CNN、Transformer等多种架构的精细控制。

2.4 多阶段训练中的手动冻结策略设计

在复杂模型的多阶段训练中,手动冻结策略能有效控制梯度传播,提升训练稳定性。通过分阶段解冻网络层,可优先优化浅层特征表示,再逐步微调深层语义结构。
冻结实现方法
使用PyTorch可通过设置 requires_grad 属性控制参数更新:
# 冻结所有参数
for param in model.parameters():
    param.requires_grad = False

# 解冻分类头
for param in model.classifier.parameters():
    param.requires_grad = True
上述代码先冻结整个模型,随后仅激活分类头,适用于迁移学习初期阶段。
训练阶段规划
  • 第一阶段:冻结主干网络,仅训练新增头部
  • 第二阶段:解冻最后几层卷积,联合微调
  • 第三阶段:全网络微调,小学习率收敛

2.5 手动冻结的常见陷阱与调试技巧

在手动冻结对象时,开发者常忽略属性的动态变化,导致冻结失效。一个典型误区是仅冻结表层对象,而未递归处理嵌套结构。
常见陷阱
  • 误认为 Object.freeze() 深度冻结所有嵌套对象
  • 在冻结后仍尝试修改属性,未捕获静默失败
  • 对数组使用冻结时,忽略其索引属性仍可被修改的风险
调试技巧
使用严格模式配合异常捕获,及时发现非法写入:
'use strict';
const config = Object.freeze({ api: 'v1', nested: { port: 8080 } });

// 错误示例:嵌套对象未被冻结
try {
  config.nested.port = 9000; // 实际上仍可修改!
} catch (e) {
  console.error('Attempted to modify frozen object:', e);
}
上述代码中,config 本身被冻结,但 nested 对象未被深度冻结,因此属性修改不会抛错。应结合递归冻结函数确保完整性。

第三章:模块化冻结的技术演进

3.1 使用model.eval()对冻结的辅助作用

在模型训练完成后,进入推理阶段时,调用 model.eval() 不仅会关闭如 Dropout 和 BatchNorm 等训练特异性层的行为,还能间接增强参数冻结的效果。
推理模式下的行为一致性
当部分网络层被冻结后,model.eval() 确保这些层在前向传播中保持稳定输出。例如,BatchNorm 层在评估模式下使用固定的统计量,避免因输入分布波动影响冻结层的表达。
model.eval()
with torch.no_grad():
    output = model(input_tensor)
上述代码中,model.eval() 激活评估模式,torch.no_grad() 禁用梯度计算,双重机制保障冻结结构不被意外更新。
与冻结参数的协同机制
  • 确保冻结层的归一化行为一致
  • 防止评估过程中由于动态统计引发的输出漂移
  • 提升整体推理稳定性与可复现性

3.2 利用torch.no_grad上下文管理器优化推理

在PyTorch模型推理阶段,梯度计算是不必要的开销。通过使用 `torch.no_grad()` 上下文管理器,可以禁用自动求导机制,显著减少内存占用并提升推理速度。
基本用法示例

import torch

with torch.no_grad():
    output = model(input_tensor)
    predictions = torch.softmax(output, dim=1)
上述代码块中,`torch.no_grad()` 临时关闭了梯度追踪功能。所有在此上下文中执行的张量操作都不会构建计算图,从而节省显存并加快运算。
性能对比
模式显存占用推理延迟
默认模式(含梯度)高较长
torch.no_grad()低较短

3.3 模块级开关在迁移学习中的应用

在迁移学习中,模块级开关机制允许灵活控制预训练模型中各层参数的更新策略。通过启用或冻结特定网络模块,可以有效保留源任务中的通用特征表达,同时适配目标任务的需求。
模块开关配置示例

# 冻结前三个卷积块,仅训练分类头和第四个块
for param in model.features[:8].parameters():
    param.requires_grad = False  # 关闭梯度计算

for param in model.features[8:].parameters():
    param.requires_grad = True   # 开启后续层微调
上述代码通过设置 requires_grad 控制不同模块的可训练状态。冻结早期卷积层可减少计算开销并防止过拟合,而开放深层模块则有助于捕捉目标数据的高级语义特征。
典型应用场景对比
场景冻结模块训练模块
小数据集微调Conv1–Conv3Conv4, Classifier
域自适应Embedding层中间表示层

第四章:自动化冻结方案的设计与实现

4.1 自定义Module子类集成冻结逻辑

在深度学习模型训练中,参数冻结是迁移学习的关键技术。通过继承`torch.nn.Module`并扩展自定义行为,可实现精细化的参数控制。
冻结机制实现
重写模块初始化后,遍历参数并设置`requires_grad=False`以冻结指定层:
class CustomModule(nn.Module):
    def __init__(self, freeze_backbone=False):
        super().__init__()
        self.backbone = nn.Linear(768, 512)
        self.classifier = nn.Linear(512, 10)
        if freeze_backbone:
            for param in self.backbone.parameters():
                param.requires_grad = False
上述代码中,`freeze_backbone`控制是否冻结主干网络;冻结后该部分参数不参与梯度更新,显著减少训练开销。
参数分组优化
使用参数分组可为不同层配置独立优化策略:
  • 冻结层:不计算梯度,节省内存
  • 可训练层:正常反向传播
  • 学习率差异化:如骨干网络用较小学习率微调

4.2 基于装饰器的声明式冻结机制构建

在复杂状态管理中,对象不可变性是确保数据一致性的核心。通过 Python 装饰器,可实现声明式的冻结逻辑,自动拦截对关键对象的修改。
装饰器实现原理
利用 `@property` 与 `__setattr__` 拦截赋值操作,结合类装饰器标记需冻结的目标:

def frozen(cls):
    orig_setattr = cls.__setattr__
    def __setattr__(self, name, value):
        if hasattr(self, name):
            raise AttributeError(f"Cannot modify frozen attribute: {name}")
        orig_setattr(self, name, value)
    cls.__setattr__ = __setattr__
    cls.__frozen__ = True
    return cls

@frozen
class Config:
    def __init__(self):
        self.api_key = "123"
上述代码中,`frozen` 装饰器重写类的属性设置行为,首次赋值允许,后续修改将抛出异常,实现运行时冻结。
应用场景对比
场景是否支持动态扩展冻结时机
配置对象否实例化后立即冻结
共享状态是(通过代理)显式调用冻结方法

4.3 配置驱动的参数冻结策略引擎

在复杂系统中,动态调整参数可能导致状态不一致。为此,引入配置驱动的参数冻结策略引擎,实现运行时关键参数的可控锁定。
策略定义与结构
通过声明式配置指定需冻结的参数路径及条件:
{
  "frozen_params": [
    {
      "path": "database.pool.size",
      "condition": "env == 'production'",
      "strategy": "immutable"
    }
  ]
}
该配置表示在生产环境中锁定数据库连接池大小,防止误修改。
执行机制
引擎在配置加载阶段解析冻结规则,并注入拦截器:
  • 监听配置变更事件
  • 匹配冻结路径与当前环境条件
  • 触发保护策略(如拒绝写入、告警)
策略类型对照表
策略行为
immutable完全禁止修改
warn允许但记录日志
ttl临时冻结,超时自动释放

4.4 冻结状态的序列化与模型保存兼容性处理

在深度学习模型训练中,冻结层常用于迁移学习场景。当部分网络参数被冻结时,其梯度计算被禁用,但在序列化保存模型时仍需保留这些参数的状态。
保存包含冻结层的模型
import torch

# 假设 model 为预训练模型
for param in model.base_layers.parameters():
    param.requires_grad = False  # 冻结基础层

torch.save({
    'model_state_dict': model.state_dict(),
    'optimizer_state_dict': optimizer.state_dict(),
}, 'checkpoint.pth')
上述代码保存了模型状态字典,即使某些层被冻结,其参数仍会被序列化。PyTorch 的 state_dict 默认包含所有参数,无论是否参与梯度更新。
兼容性注意事项
  • 加载模型时需确保结构一致,否则状态字典映射失败
  • 恢复模型后应同步冻结状态,避免误更新
  • 跨框架导出(如 ONNX)需确认冻结参数是否被正确固化

第五章:未来趋势与最佳实践建议

云原生架构的持续演进
现代企业正加速向云原生转型,Kubernetes 已成为容器编排的事实标准。结合服务网格(如 Istio)和无服务器架构,可实现更高效的资源调度与故障隔离。例如,某金融企业在微服务中引入 eBPF 技术,通过内核层监控网络流量,显著降低延迟。
自动化安全策略集成
安全左移要求在 CI/CD 流程中嵌入自动化检测。以下代码展示了在 GitLab CI 中集成 Trivy 进行镜像漏洞扫描的配置片段:

scan-image:
  image: aquasec/trivy:latest
  script:
    - trivy image --exit-code 1 --severity CRITICAL $IMAGE_NAME
  only:
    - main
该实践帮助团队在部署前拦截高危漏洞,提升整体安全性。
可观测性体系构建
完整的可观测性需整合日志、指标与追踪。推荐使用 OpenTelemetry 统一采集数据,并输出至 Prometheus 与 Loki。下表列出了常见工具组合的实际应用效果:
场景工具链响应效率提升
API 性能分析Jaeger + Grafana60%
错误根因定位Loki + Promtail55%
团队协作模式优化
采用 DevOps SRE 混合模型的企业,通常设立“平台工程团队”以提供内部开发者平台(Internal Developer Platform)。该团队通过预制模板(如 Backstage)减少重复配置,提升交付一致性。
  • 定义标准化的 K8s 命名空间模板
  • 集成自助式监控告警创建流程
  • 定期执行混沌工程演练,验证系统韧性

相关推荐

PyTorch backward()原理及示例详解。哪些数据需要手动设置 requires_grad=True

backward() 函数的主要作用是根据当前计算图的梯度信息,自动计算出各个张量(tensor)的梯度。具体来说,它通过链式法则(**chain rule**)对损失函数(通常是神经网络的输出与目标值之间的差异)对各个模型参数的梯度进行计算,并把这些梯度储存在每个张量的 .grad 属性中。

qq_43069203的博客 1704

parameters.requires_grad=False :误差仍然反向传播,梯度不更新

parameters.requires_grad=False :误差仍然反向传播,梯度不更新

Never say never 3127

pytorch Variable与Tensor合并后 requires_grad()默认与修改

pytorch更新完后合并了Variable与Tensor torch.Tensor()能像Variable一样进行反向传播的更新,返回值为Tensor Variable自动创建tensor,且返回值为Tensor,(所以以后不需要再用Variable) Tensor创建后,默认requires_grad=Flase 可以通过xxx.requires_grad_()将默认的Flase修改为True...

weixin_43635550的博客 8526

param.requires_grad = False的作用

param.requires_grad = False的作用是: 屏蔽预训练模型的权重。 只训练最后一层的全连接的权重。 最后一层的添加,是通过[2]中的一句代码: model_conv.fc = nn.Linear(num_ftrs, 2) 可以发现,冻结预训练模型的权重后,验证精度会下降。 ...

weixin_36670529的博客 8500

Pytorch 冻结参数更新的三种方法

Pytorch冻结参数跟新的三种方法

tanhongweibest的博客 2884

中科蓝讯蓝牙开发:从源码到固件的自动化构建链路解析

本文详细解析了中科蓝讯AB530X蓝牙芯片从源码到最终固件的完整自动化构建链路。通过剖析prebuild.bat、GCC编译、postbuild.bat等关键环节,阐述了资源打包、配置生成、代码编译与固件合成的全过程,并重点介绍了如何实现一键编译与自动下载,为开发者高效进行嵌入式蓝牙开发提供清晰指南。

weixin_29193259的博客 121

param.requires_grad = False

param.requires_grad = False:屏蔽预训练模型的权重,只训练全连接层的权重

重剑无锋博客 3908

免费,Python蓝桥杯等级考试真题--第10级(含答案解析和代码)

Python中蓝桥杯算是含金量和难度最大的比赛之一,网上可以找到不少真题,不过要么零零散散要么付费才能解锁,而且大都是没答案和解析的,给学习者造成很大困扰。因此本文档打算整理历年等级考试、STEMA、省赛、国赛真题卷和解析,供大家学习参考。

1578

pytorch网络冻结的三种方法区别:detach、requires_grad、with_no_grad

pytorch网络冻结的三种方法区别:detach、requires_grad、with_no_grad

weixin_42855362的博客 7875

第四届“网鼎杯”网络安全大赛 - 青龙组

第四届“网鼎杯”网络安全大赛 - 青龙组

lpppp小公主的博客 1313

MIT6.824-lab2D-2022(日志压缩详细讲解)

从paper中去讲解,并实现关于lab2D的代码。

幸平的博客 6036

Pytorch关于requires_grad_(True)的理解

  在学习图像迁移的时候,发现使用的vgg19模型需要保证模型参数不更新,所以使用了如下代码: vgg19 = models.vgg19(pretrained=True).to(device) vgg = vgg19.features for param in vgg.parameters(): param.requires_grad_(False)   但是疑惑的是,requires_grad_(False)的作用是让参数不被追踪。百思不解其意,故使用如下代码测试: import torch

一叶知秋境 4万+

Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图

其中,阵列方向图是评价阵列性能的重要参数之一。均匀面阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个圆盘。均匀线阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个矩形。本文将采用Matlab进行仿真,分别实现均匀面阵方向图、均匀线阵方向图和均匀圆阵方向图,并对三种阵列进行比较分析。通过以上代码仿真,我们可以对均匀面阵、均匀线阵和均匀圆阵进行方向图的绘制,进一步分析不同阵列在天线性能方面的差异。Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图。

2301_79326857的博客 3436

pytorch 更新部分参数(冻结参数)注意事项

实验的pytorch版本1.2.0 在训练过程中可能需要固定一部分模型的参数,只更新另一部分参数。有两种思路实现这个目标,一个是设置不要更新参数的网络层为false,另一个就是在定义优化器时只传入要更新的参数。当然最优的做法是,优化器中只传入requires_grad=True的参数,这样占用的内存会更小一点,效率也会更高。 一、设置参数为false import torch import torch.nn as nn import torch.optim as optim # 定义一个简单的网络

Answer3664的博客 2万+

lammps教程:官方自带eam_database程序拟合EAM势方法介绍

使用lammps模拟金属体系,最常用的势函数为eam、meam势。 对于大多数金属或者合金来说,可以从网上下载相对应的eam或meam势力场文件。 而对于一些新的合金材料,可能就找不到相对应的力场文件。 解决的方法有两种,一是采用混合势(pair_style hybrid),第二种方法是自己拟合势函数文件。 混合势的写法在前面文章中已经介绍过,本文介绍一种拟合EAM势的方法。 该方法是运行Xiaowang Zhou编写的一个拟合程序,该程序可自动生成所需要的合金势。 这个程序能够拟合的合金元素有: Cu,

lammps_jiayou的博客 4616

WOFOST作物模型(3):敏感性分析

使用TAGP(Total Above Ground Production),地上总产量TSUM1,temperature sum from emergence to anthesis,萌发至开花所需温度TSUM2,temperature sum from anthesis to maturity,开花至成熟所需温度SPAN,life span of leaves growing at 35 Celsius,生长温度为35度时的叶龄。

所有专家都曾始于新手 1146

pytorch中模型参数requires_grad的含义

【代码】pytorch中模型参数requires_grad的含义。

zyk910811的博客 1万+

大数据学习指南从入门到精通

利用框架的力量,看懂游戏规则,才是入行的前提大多数人不懂,不会,不做,才是你的机会,你得行动,不能畏首畏尾选择才是拉差距关键,风向,比你流的汗水重要一万倍,逆风划船要累死人的为什么选择学习大数据开发,不选择Java开发?借棋弈做比喻,智商高的不要选择五子琪,要选择围棋,它能长久地吸引你。不都是在棋盘上一颗黑子一颗白子地下吗?因为围棋更复杂,能够掌握如此复杂的技艺、产生稳定输出的棋手、让我们更佩服。选择学习大数据开发也如此,能让你的职业生涯走得更远,少走弯路。

Lansonli(蓝深李)的博客 2万+

pytorch冻结模型中某几层的参数

本文系转载,写得很详细,故记录于此,方便查阅(实际上只看方法1就够了) 链接:https://www.zhihu.com/question/311095447/answer/589307812 先列出4种可行参考方法,最后列出一种方法的代码实现。 首先假设如下的模型: class Char3SeqModel(nn.Module): def __init__(self, char_sz, n_fac, n_h): super().__init__() .

谁谓荼苦,其甘如荠 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【pytorch】 grad、grad_fn、requires_grad()、with torch.no_grad() 、net.train()、net.eval():记录一次奇怪的debug经历

刚开始接触pytorch框架时,最让我觉得神奇的就是它居然可以--**自 动 求 导 !** 于是我开始尝试理解内部的运行机制,但很快放弃了,直接当成黑盒使用…… 最近又遇到一个奇怪的bug,让我不得不去学一下相关知识,预防忘记,故记录下来,共勉之。

优快云_Shaw的博客 6558

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【pytorch】加载部分模型参数及冻结部分参数

前言 结论:1)部分加载模型参数的关键就是自定义选取训练好的模型的state_dict的键值对,然后更新到需要加载模型参数的新模型的state_dict中。 2)冻结部分参数的关键就是自定义设置需冻结的参数的requires_grad属性值为False,并在优化器中传入参数时,过滤掉requires_grad=False的这部分参数,使其不参与更新。 下文通过实例记录如何在pytorch中只加载部分参数,及冻结部分参数进行训练。   背景如下,有一个基于bert的内容分类器和基于bert的序列标

weixin_44815943的博客 6023

PyTorch 中,tensor不设置requires_grad和设置requires_grad=False的区别

可以看到,x 的梯度为 None,而 y 的梯度为 2,这是因为 x 没有设置 requires_grad,因此 PyTorch 不会为它计算梯度,而 y 的梯度为 2,表示其计算出的梯度值为 2。需要注意的是,如果一个 tensor 设置了 requires_grad=True,那么其依赖的所有 tensor 也会自动设置为 requires_grad=True。这种情况下,PyTorch 不会构建用于计算 tensor 梯度的计算图,因此也不会计算 tensor 的梯度。错误表示没有元素需要计算梯度。

ding_programmer的博客 3206

requires_grad,grad_fn,grad的含义及使用

requires_grad: 如果需要为张量计算梯度,则为True,否则为False。我们使用pytorch创建tensor时,可以指定requires_grad为True(默认为False), grad_fn: grad_fn用来记录变量是怎么来的,方便计算梯度,y = x*3,grad_fn记录了y由x计算的过程。 grad:当执行完了backward()之后,通过x.grad查看x的梯度值。 创建一个Tensor并设置requires_grad=True,requires_grad=Tru.

RocZhang的博客 4万+

pytorch冻结网络参数,requires_grad与optimizer顺序的关系

问题说明: pytorch迁移学习时,需要对某些层冻结参数,不参与方向传播,具体实现是将要冻结的参数的 requires_grad属性置为false,如下:

村民的菜篮子 5809

pytorch如何冻结某层参数

在迁移学习finetune时我们通常需要冻结前几层的参数不参与训练,在Pytorch中的实现如下: class Model(nn.Module): def __init__(self): super(Transfer_model, self).__init__() self.linear1 = nn.Linear(20, 50) self.line...

Pr4da的博客 3208

pytorch 冻结层操作 + 学习率超参数设置

pytorch finetune冻结层操作 + 学习率超参数设置 原文:https://blog.youkuaiyun.com/jdzwanghao/article/details/83239111 1、冻结层不参与训练方法: ######### 模型定义 ######### class MyModel(nn.Module): def __init__(self, feat_dim): # inpu...

jacke121的专栏 6956
上一篇: 【高效Python编程】:f-string中datetime格式化的3种高阶用法
下一篇: Numpy随机数在多进程中的隐患:如何确保fork后依然安全可控
simcode
博客等级 码龄14年 154粉丝 2026原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值