【深度学习实战(12)】训练之模型参数初始化

在深度学习模型的训练中,权重的初始值极为重要。一个好的初始值,会使模型收敛速度提高,使模型准确率更精确。一般情况下,我们不使用全0初始值训练网络。为了利于训练和减少收敛时间,我们需要对模型进行合理的初始化。

一、初始化方式

在常见的CNN深度学习模型中,最常出现的是Conv卷积BatchNorm算子
(1)对于Conv卷积,权重初始化的方式有‘normal’‘xavier’,‘kaiming’,‘orthogonal’

  • ‘normal’方式为例:对Conv卷积的weight通常是以均值为0,标准差为0.02的正态分布进行参数初始化

(2)对于BatchNorm算子,通常是使用‘normal’方式进行初始化

  • weight通常是以均值为1,标准差为0.02的正态分布进行参数初始化
  • bias通常是以方差为0的正态分布进行参数初始化

二、代码

def weights_init(net, init_type='normal', init_gain = 0.02):def init_func(m):classname = m.__class__.__name__if hasattr(m, 'weight') and classname.find('Conv') != -1:if init_type == 'normal':# ---------------------------------------------##   Conv weight:均值为0,标准差为0.02的正态分布# ---------------------------------------------#torch.nn.init.normal_(m.weight.data, 0.0, init_gain)elif init_type == 'xavier':torch.nn.init.xavier_normal_(m.weight.data, gain=init_gain)elif init_type == 'kaiming':torch.nn.init.kaiming_normal_(m.weight.data, a=0, mode='fan_in')elif init_type == 'orthogonal':torch.nn.init.orthogonal_(m.weight.data, gain=init_gain)else:raise NotImplementedError('initialization method [%s] is not implemented' % init_type)elif classname.find('BatchNorm2d') != -1:# ---------------------------##   BN weight:均值为1,标准差为0.02的正态分布# ---------------------------#torch.nn.init.normal_(m.weight.data, 1.0, 0.02)# ---------------------------##   BN bias:方差为0的正态分布# ---------------------------#torch.nn.init.constant_(m.bias.data, 0.0)print('initialize network with %s type' % init_type)net.apply(init_func)

debug查看
在执行weights_init函数之前,model.Dethead.obj_preds.weight的数值为
在这里插入图片描述
在执行weights_init函数之后,model.Dethead.obj_preds.weight的数值为
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/637313.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 下的 sqlite数据库

SQLite 认识 SQLite简介 轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据库用于管理多端设备,更加复杂 SQLite是一个无服务器的数据库,是自包含的。这也称为嵌入式数据库&…

在Linux系统中,禁止有线以太网使用NTP服务器进行时间校准的几种方法

目录标题 方法 1:修改NTP配置以禁止所有同步方法 2:通过网络配置禁用NTP同步方法 3:禁用NTP服务 在Linux系统中,如果想要禁止有线以太网使用NTP服务器进行时间校准,可以通过以下几种方法之一来实现: 方法 …

107页 | 企业数字化转型规划设计(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 【企业数字化转型规划设计】 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT解决方案&…

xpath的使用以及原理-元素定位

# 查找文本框输入文本 driver.find_element(By.CLASS_NAME,"nav-search-input").send_keys("i_cecream查找到了") #查找到之后点击 driver.find_element(By.CLASS_NAME,"nav-search-btn").click()time.sleep(30)selenium4的解析。 client调用se…

Vue 中 mixins(混入)的介绍和使用

目录 前言 什么是 mixins? 如何创建 mixins? 如何使用 mixins mixins 的特点 方法和参数在各组件中不共享 mixins 与组件冲突 冲突之 合并覆盖 冲突之 合并 全局 mixins mixins 中有异步请求的情况 与 vuex 的区别 与公共组件的区别 前言 在项目开发的时候&…

论文笔记:Time-LLM: Time Series Forecasting by Reprogramming Large Language Models

iclr 2024 reviewer 评分 3888 1 方法 提出了 Time-LLM, 是一个通用的大模型重编程(LLM Reprogramming)框架将 LLM 轻松用于一般时间序列预测,而无需对大语言模型本身做任何训练 为什么需要时序数据和文本数据对齐:时…

个人电脑信息安全注意事项

个人电脑信息安全注意事项 一、密码安全: 设置复杂且独特的密码,避免使用容易猜测或常见的密码。 定期更换密码,特别是在重要账户或应用上。 不要在多个账户上重复使用相同的密码。 使用密码管理工具来安全地存储和访问密码。 二、软件安…

ElasticSearch中使用向量和关键词联合检索

注:案例测试数据及其索引构建详见:ElasticSearch中使用bge-large-zh-v1.5进行向量检索(一)-CSDN博客 中的第三部分。 假设任务场景为:用“新疆”向量检索相关的数据,同时需要匹配关键词“巴州”。 首先获取…

前端表单input的简单使用

1.代码结构介绍 2.实战效果

DASCTF X GFCTF 2024|四月开启第一局 —— re前三题wp

四月安恒月赛 prese 平坦化混淆 经过输入测试和代码分析可发现,核心加密是这一句的逻辑,这一句会根据输入的长度生成temp数组 尝试得到输入与输出的映射关系后解: cipher [0x86, 0x83, 0x91, 0x81, 0x96, 0x84, 0xB9, 0xA5, 0xAD, 0xAD…

【机器学习】《ChatGPT速通手册》笔记

文章目录 第0章 前言第1章 ChatGPT的由来(一)自然语言处理任务(二)ChatGPT所用数据数据大小(三)ChatGPT的神经网络模型有175亿个参数(四)模型压缩 方案 第2章 ChatGPT页面功能介绍&a…