当前位置: 首页 > 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> #…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...

从实验室到产业:IndexTTS 在六大核心场景的落地实践

一、内容创作&#xff1a;重构数字内容生产范式 在短视频创作领域&#xff0c;IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色&#xff0c;生成的 “各位吴彦祖们大家好” 语音相似度达 97%&#xff0c;单条视频播放量突破百万…...