当前位置: 首页 > news >正文

TensorFlow入门(二十四、初始化学习参数)

参数的初始化关系到网络能否训练出好的结果或者是以多快的速度收敛,对训练结果有着重要的影响。

初始化学习参数需要注意的规则

        不可以将网络中的所有参数初始化为0,也不能全部初始化为同一个值。如果参数全部初始化为0或者是同一个值,会使得所有神经元的输出都是相同的,进而造成反向传播时,梯度和权重的变化相同,同一层内每个神经元的计算也相同。这显然是不正确的

        尽量保证参数初始化的均值为0,正负交错,且正负参数在数量上大致相等

        参数初始化的值不可以太大或是太小。初始值如果太大,会使得数据在每层间传递的过程中逐渐放大,导致梯度消失发散,训练失败;初始值如果太小,会使得特征值在每层间传递的过程中逐渐缩小,难以产生作用

TensorFlow中常用的参数初始化方法

        TensorFlow提供了一些具有不同特性的初始化函数,如全零初始化(Zero Initialization)、随机初始化(Random Initialization)、Xavier初始化(Xavier Initialization)、He初始化(He Initialization)、迁移学习初始化(Pre-train Initialization)、数据敏感初始化等。

        1.把参数初始化为常量的方法:

                ①tf.constant_initializer(value,dtype) : 可简写为tf.Constant(value,dtype),该方法将参数初始化为常数,通过常用于初始化偏置项(bias)。其中参数value为指定的常量,dtype为设置的数据类型

                ②tf.zeros_initializer(dtype) : 可简写为tf.Zeros(dtype),该方法生成一个初始值全为0的tensor对象

                ③tf.ones_initializer(dtype) : 可简写为tf.Ones(dtype),该方法生成一个初始值全为1的tensor对象

        2.把参数初始化为正态分布的方法:

                ①tf.random_normal_initializer(mean,stddev,seed,dtype):可简写为tf.RandomNormal(...),该方法生成一组符合标准正态分布的tensor对象。参数mean为正态分布的均值,默认值是0;stddev为正态分布的标准差,默认值为1;seed为随机数种子,是一个整数,设置后,每次生成的随机数都为seed的值;dtype为设置的数据类型。

                ②tf.truncated_normal_initializer(mean,stddev,seed,dtype):可简写为tf.truncatedNormal(...),该方法生成一组符合截断正态分布的tensor对象。每个参数的含义与tf.random_normal_initializer方法的相同。由于该函数有截断功能,可以生成相对比较温和的初始值,在TensorFlow中经常使用该方法进行参数的初始化。

        3.把参数初始化为均匀分布的方法:

                ①tf.random_uniform_initializer(minval.maxval,seed,dtype):可简写为tf.RandomUniform(...),该方法生成一组符合均匀分布的tensor对象,参数minval为指定的最小值,maxval为指定的最大值。使用该方法生成的随机数不是从小到大或者从大到小均匀分布的,而是每次从一组服从均匀分布的数里边随机抽取一个数。

                ②tf.uniform_unit_scaling_initializer(factor,seed,dtype):可简写为tf.UniformUnitScaling(...),该方法与tf.random_uniform_initializer()一样,生成一组符合均匀分布的tensor对象。不同的是,不需要指定最大值和最小值,而是通过公式计算。

                        max_val = math.sqrt(3/input_size)*factor

                        min_val = - max_val

                        其中input_size是生成数据的维度,factor是系数

        4.初始化为变尺度正态、均匀分布的方法:

                ①tf.variance_scaling_initializer(scale,mode,distribution,seed,dtype):可简写为tf.VarianceScaling(...),该方法生成一组截断正态分布和均匀分布的tensor对象,增加了更多的控制参数。参数scale用于缩放尺度,为正浮点数。mode的值为"fan_in","fan_out","fan_avg"中的一个,用于计算标准差stddev的值。distribution是分布类型,值为"normal"或"uniform",当distribution = "normal"时,生成截断正态分布的随机数,其中stddev = sqrt(scale/n),n的计算与mode参数有关。如果mode = "fan_in",n为输入单元的节点数,如果mode = "fan_out",n为输出单元的节点数,如果mode = "fan_avg",n为输入和输出单元节点数的平均值。当distribution = "uniform"时,生成均匀分布的随机数,假设分布区间为[-limit,limit],则limit = sqrt(3*scale/n)。

        5.正态矩阵初始化方法:

                ①tf.orthogonal_initializer(gain,dtype,seed):可简写为tf.Orthogonal(...),该方法生成正交矩阵的随机数,形状最少需要是2维的。如果要初始化的张量的形状是2维的,则用从均匀随机数矩阵的奇异值分解(SVD)得到的正交矩阵进行初始化;如果大于2维,则初始化形状为(shape[0] ... shape[n - 2],shape[n -1])的矩阵,其中n是形状向量的长度。随后对矩阵进行重新调整以给出所需形状的张量。参数gain为适用于正交矩阵的乘法因子。

        6.Glorot初始化方法:

                ①Glorot正常初始化方法,即tf.glorot_normal_initializer(seed,dtype):也称之为Xavier正常初始化器,该方法可以生成与输入输出节点数相关的截断正态分布随机数。它从以0为中心的截断正态分布中抽取样本,计算公式为:

                        stddev = sqrt(2/(fan_in + fan_out))

                        其中fan_in是权重张量中的输入单元数,fan_out是权重张量中的输出单元数。

                ②Glorot均匀初始化方法,即tf.glorot_uniform_initializer(seed,dtype):也称之为Xavier均匀初始化器。该方法可以生成与输入输出节点数相关的均匀分布随机数。它从一个均匀分布的[-limit,limit]区间中抽取样本,其中limit的计算公式为:

                        stddev = sqrt(6/(fan_in + fan_out))

                        fan_in和fan_out与Glorot正常初始化方法中的相同。

相关文章:

TensorFlow入门(二十四、初始化学习参数)

参数的初始化关系到网络能否训练出好的结果或者是以多快的速度收敛,对训练结果有着重要的影响。 初始化学习参数需要注意的规则 不可以将网络中的所有参数初始化为0,也不能全部初始化为同一个值。如果参数全部初始化为0或者是同一个值,会使得所有神经元的输出都是相同的,进而造…...

工厂WMS系统货架位管理:优化仓储效率

货架位管理作为WMS系统中的重要环节,对于提高工厂的仓储效率和精确库存管理至关重要。本文将从多个角度全方位介绍工厂的WMS系统货架位管理,探讨其重要性以及如何优化、应用该系统,提升工厂的仓储效率和运营水平。 1. 优化仓库空间利用&…...

[C++随想录] 继承

继承 继承的引言基类和子类的赋值转换继承中的作用域派生类中的默认成员函数继承与友元继承与静态成员多继承的结构棱形继承的结构棱形虚拟继承的结构继承与组合 继承的引言 概念 继承(inheritance)机制是面向对象程序设计使代码可以 复用的最重要的手段,它允许程序…...

ARM-day9

按键控制小灯、蜂鸣器、风扇&#xff0c;按一次启动&#xff0c;第二次关闭 key_it.c #include "key_it.h"//按键3的配置 void key3_it_config() {//RCC使能GPIOF时钟RCC->MP_AHB4ENSETR | (0x1<<5);GPIOF->MODER & (~(0x3<<16));EXTI->E…...

2386: [余姚2015] 幸运数字(luck)

目录 题目描述 输入 输出 样例输入 样例输出 提示 来源: 代码&#xff1a; 题目描述 今年圣诞节&#xff0c;小明收到了很多礼物&#xff0c;每个礼物上都有一个数字&#xff0c;表示对小明的祝福。可是小明有自己的想法&#xff0c;对小明来说&#xff0c;4或者7的倍数…...

【JUC系列-13】深入理解DelayQueue延迟队列的底层原理

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…...

Leetcode---365周赛

题目列表 2873. 有序三元组中的最大值 I 2874. 有序三元组中的最大值 II 2875. 无限数组的最短子数组 2876. 有向图访问计数 一、有序三元组中的最大值I 看一眼该题的数据范围&#xff0c;直接三层for循环暴力枚举&#xff0c;时间复杂度O(n^3)&#xff0c;代码如下 class…...

Java使用opencv实现人脸识别、人脸比对

1. opencv概述 OpenCV是一个开源的计算机视觉库&#xff0c;它提供了一系列丰富的图像处理和计算机视觉算法&#xff0c;包括图像读取、显示、滤波、特征检测、目标跟踪等功能。 opencv官网&#xff1a;https://opencv.org/ opencv官网文档&#xff1a;https://docs.opencv.or…...

Redis HyperLogLog的使用

Redis HyperLogLog知识总结 一、简介二、使用 一、简介 Redis HyperLogLog是一种数据结构&#xff0c;用于高效地计算基数&#xff08;集合中唯一元素的数量&#xff09;。它的主要作用是用于在内存中高效地存储和计算大量数据的基数&#xff0c;而无需完全存储所有的数据。Hy…...

Apisix-Ingress服务发现详解

apisix Apache APISIX 是一个基于微服务 API 网关&#xff0c;其不仅可以处理南北向的流量&#xff0c;也可以处理东西向的流量即服务之间的流量。Apache APISIX 集成了控制面板和数据面&#xff0c;与其他 API 网关相比&#xff0c;Apache APISIX 的上游、路由、插件全是动态的…...

spring6-事务

文章目录 1、JdbcTemplate1.1、简介1.2、准备工作1.3、实现CURD①装配 JdbcTemplate②测试增删改功能③查询数据返回对象④查询数据返回list集合⑤查询返回单个的值 2、声明式事务概念2.1、事务基本概念①什么是事务②事务的特性 2.2、编程式事务2.3、声明式事务 3、基于注解的…...

JavaFx学习问题2--音频、视频播放失败情况

文章目录 一、路径注意事项&#xff1a;① 用相对路径的时候别忘了前面的斜杠② uri问题 二、播放不了的问题① 获取的媒体文件路径本身就是不对的② 必须是uri③ 特殊情况 额外收获: 一、路径注意事项&#xff1a; 完整代码如下: import javafx.application.Application; im…...

第55节—— redux-toolkit中的createReducer——了解

一、概念 当我们使用 Redux 开发应用程序时&#xff0c;一个非常重要的概念就是 reducer。一个 reducer 是一个纯函数&#xff0c;它接受先前的状态和一个动作&#xff0c;然后返回一个新状态。每个动作都会引起状态的变化&#xff0c;从而使应用程序状态管理更加清晰和可控。…...

JUC并发编程——JUC并发编程概述及Lock锁(重点)(基于狂神说的学习笔记)

基于bilibili狂神说JUC并发编程视频所做笔记 概述 什么是JUC JUC时java.util工具包中的三个包的简称 java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks 业务&#xff1a;普通的线程代码中&#xff0c;我们常使用Runnable接口 但Runnable没有返…...

深入了解 Java 中的时间信息定义、转换、比较和操作

1. 简介 在过去的传统Java日期处理中&#xff0c;经常面临着一些问题。比如&#xff0c;java.util.Date和java.util.Calendar在表示日期和时间时存在着一些奇怪的行为&#xff0c;如月份从0开始计数、对日期进行格式化的方式繁琐不直观等。这些问题给开发带来了一定的困扰。 …...

2023年中国智能矿山发展历程及趋势分析:智能矿山健康有序发展[图]

智能矿山系统对矿山生产提质增效的效果已经开始显现&#xff1a;对不合规、有风险的行动进行及时预警&#xff0c;减少安全事故发生概率&#xff0c;避免因停产整顿产生的巨额亏损&#xff1b;精细化管理整个生产流程&#xff0c;避免过往传统粗放的流程导致的浪费&#xff0c;…...

acwing算法基础之基础算法--整数离散化算法

目录 1 知识点2 模板 1 知识点 整个范围很大&#xff0c;但存在的数据点很少。比如从 − 1 0 9 -10^9 −109到 1 0 9 10^9 109&#xff0c;但总共只有 1 0 6 10^6 106个数。 可以采用离散化的思想来做&#xff0c;即将离散的大数值映射成连续的小数值&#xff08;一般是 1 , …...

基于SSM框架的安全教育平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…...

Kafka生产者使用案例

1.生产者发送消息的过程 首先介绍一下 Kafka 生产者发送消息的过程&#xff1a; 1)Kafka 会将发送消息包装为 ProducerRecord 对象&#xff0c; ProducerRecord 对象包含了目标主题和要发送的内容&#xff0c;同时还可以指定键和分区。在发送 ProducerRecord 对象前&#xff0c…...

EasyX图形库实现贪吃蛇游戏

⭐大家好&#xff0c;我是Dark Falme Masker,学习了动画制作及键盘交互之后&#xff0c;我们就可以开动利用图形库写一个简单的贪吃蛇小游戏&#xff0c;增加学习乐趣。 ⭐专栏&#xff1a;EasyX部分小游戏实现详细讲解 最终效果如下 首先包含头文件 #include<stdio.h> #…...

Pikachu靶场实战:File Inclusion漏洞利用与防御全解析

1. File Inclusion漏洞初探&#xff1a;从理论到靶场实战 文件包含&#xff08;File Inclusion&#xff09;漏洞是Web安全领域最常见的漏洞类型之一&#xff0c;它允许攻击者通过参数控制加载服务器上的任意文件。想象一下&#xff0c;你家的门锁如果设计不当&#xff0c;小偷只…...

3大突破策略:Bypass Paywalls Clean 2024全场景应用指南

3大突破策略&#xff1a;Bypass Paywalls Clean 2024全场景应用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代&#xff0c;付费墙已成为知识获取的主要障碍…...

SunnyUI的UITreeView控件实战:从拖拽到动态加载的完整指南

SunnyUI的UITreeView控件实战&#xff1a;从拖拽到动态加载的完整指南 在企业级应用开发中&#xff0c;树形结构数据展示几乎是每个.NET开发者都会遇到的场景。传统的WinForms TreeView控件虽然基础功能完善&#xff0c;但在现代UI体验和开发效率上逐渐显得力不从心。SunnyUI框…...

告别笨重电感!用这颗TI的TPS60503电荷泵芯片,给你的便携设备做个高效小体积电源

无电感电源革命&#xff1a;TPS60503电荷泵在便携设备中的极致能效设计 当智能手表在清晨用震动唤醒你&#xff0c;当无线耳机在通勤路上播放音乐&#xff0c;这些贴身电子设备背后都藏着一个关键矛盾——如何在指甲盖大小的空间里实现高效供电&#xff1f;传统电感式DCDC转换器…...

DirectX兼容性解决方案:让经典游戏在Windows 10重获新生

DirectX兼容性解决方案&#xff1a;让经典游戏在Windows 10重获新生 【免费下载链接】dxwrapper Fixes compatibility issues with older games running on Windows 10 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into gam…...

维普检测升级被卡延毕?2026论文降AI急救包:4招人工微调SOP与5大工具硬核横评

论文初稿快要交了&#xff0c;维普却突然搞了个大动作&#xff0c;把系统给升级了。说实话&#xff0c;这事真挺让人头疼的&#xff0c;有人前两天查还是绿的&#xff0c;以为稳了&#xff0c;结果升级完再一测&#xff0c;AI率直接飙红。 但别慌&#xff0c;也别怀疑自己是不…...

无线通信天线与MIMO技术解析

1. 无线通信中的天线基础认知所有依赖无线通信的电子设备&#xff0c;其信号传输质量都取决于一个核心部件——天线。作为电磁波与电信号之间的转换器&#xff0c;天线性能直接决定了数据传输的稳定性和速率。在消费电子领域&#xff0c;我们最常见的天线形态主要有三种&#x…...

DiffBIR实战:用Stable Diffusion 2.1修复模糊老照片(附完整配置流程)

DiffBIR实战&#xff1a;用Stable Diffusion 2.1修复模糊老照片&#xff08;附完整配置流程&#xff09; 翻开泛黄的相册&#xff0c;那些承载着珍贵记忆的老照片往往因年代久远而变得模糊、褪色甚至破损。传统修复方法需要专业设计师耗费数小时手动修复&#xff0c;而如今&…...

谷歌威胁情报报告:威胁行为者已将AI直接融入实际网络攻击流程

谷歌威胁情报小组&#xff08;GTIG&#xff09;最新报告警示&#xff0c;威胁行为者不再局限于对人工智能的简单试验&#xff0c;而是开始将生成式AI直接整合到真实攻击工作流程中。报告特别聚焦对谷歌自家Gemini模型的滥用与针对性攻击&#xff0c;表明生成式AI系统正日益成为…...

Jimeng LoRA在人工智能领域的创新应用:从理论到实践

Jimeng LoRA在人工智能领域的创新应用&#xff1a;从理论到实践 当AI模型能够像数字滤镜一样精准适配不同风格&#xff0c;人工智能的创作边界正在被重新定义。 1. 重新认识Jimeng LoRA&#xff1a;不只是微调&#xff0c;而是风格进化 Jimeng LoRA的出现彻底改变了我们对模型…...