Keras学习笔记12——keras.initializers

PyTorch、TensorFlow、Keras底层原理与工程选型指南 深度学习框架不仅是API集合,更是计算图构建、内存管理与硬件协同的系统性工程。理解动态图(PyTorch Eager Mode)与静态图(TensorFlow @tf.function)的本质差异,是定位loss异常、梯度消失等调试难题的关键;掌握Autograd引擎与XLA编译器的工作机制,才能在混合精度训练、TPU加速等场景中规避显存泄漏与版本漂移风险。Keras的高阶抽象虽提升开发效率,但其API契约也隐含设备放置、训练/推理模式切换等运行时约束。本文从计算图执行模型出发,解析三大框架在数据加载、模型 阅读详情

初始化器的用法

初始化定义了设置 Keras 各层权重随机初始值的方法。
用来将初始化器传入 Keras 层的参数名取决于具体的层。通常关键字为 kernel_initializer 和 bias_initializer:

model.add(Dense(64,
                kernel_initializer='random_uniform',
                bias_initializer='zeros'))

一个初始化器可以作为一个字符串传递(必须匹配上面的一个可用的初始化器),或者作为一个可调用函数传递:

from keras import initializers
# 可调用函数传递
model.add(Dense(64, kernel_initializer=initializers.random_normal(stddev=0.01)))

# 字符串传递,同样有效;将使用默认参数。
model.add(Dense(64, kernel_initializer='random_normal'))

可用的初始化器

下面这些是可用的内置初始化器,是 keras.initializers 模块的一部分:

Initializer

keras.initializers.Initializer()

初始化器基类:所有初始化器继承这个类。

Zeros

keras.initializers.Zeros()

将张量初始值设为 0 的初始化器。

Ones

keras.initializers.Ones()

将张量初始值设为 1 的初始化器。

Constant

keras.initializers.Constant(value=0)

将张量初始值设为一个常数的初始化器。

参数
value: 浮点数,生成的张量的值。

RandomNormal

按照正态分布生成随机张量的初始化器。

keras.initializers.RandomNormal(mean=0.0, stddev=0.05, seed=None)

参数

  • mean: 一个 Python 标量或者一个标量张量。要生成的随机值的平均数。
  • stddev: 一个 Python 标量或者一个标量张量。要生成的随机值的标准差。
  • seed: 一个 Python 整数。用于设置随机数种子。

RandomUniform

按照均匀分布生成随机张量的初始化器。

keras.initializers.RandomUniform(minval=-0.05, maxval=0.05, seed=None)

参数

  • minval: 一个 Python 标量或者一个标量张量。要生成的随机值的范围下限。
  • maxval: 一个 Python 标量或者一个标量张量。要生成的随机值的范围下限。默认为浮点类型的 1。
  • seed: 一个 Python 整数。用于设置随机数种子。

TruncatedNormal

按照截尾正态分布生成随机张量的初始化器。

keras.initializers.TruncatedNormal(mean=0.0, stddev=0.05, seed=None)

生成的随机值与 RandomNormal 生成的类似,但是在距离平均值两个标准差之外的随机值将被丢弃并重新生成。这是用来生成神经网络权重和滤波器的推荐初始化器。

参数:

  • mean: 一个 Python 标量或者一个标量张量。要生成的随机值的平均数。
  • stddev: 一个 Python 标量或者一个标量张量。要生成的随机值的标准差。
  • seed: 一个 Python 整数。用于设置随机数种子。

VarianceScaling

初始化器能够根据权值的尺寸调整其规模。

keras.initializers.VarianceScaling(scale=1.0, mode='fan_in', 
distribution='normal', seed=None)

参数

  • scale: 缩放因子(正浮点数)。
  • distribution: 使用的随机分布。“normal”, “uniform” 之一。
    • 使用 distribution=“normal” 时,样本是从一个以 0 为中心的截断正态分布中抽取的,stddev = sqrt(scale / n)。
    • 使用 distribution=“uniform” 时,样本是从 [-limit,limit] 内的均匀分布中抽取的,其中 limit = sqrt(3 * scale / n)。
  • mode: “fan_in”, “fan_out”, “fan_avg” 之一。
    • n = 权值张量中输入单元的数量,如果 mode = “fan_in”。
    • n = 输出单元的数量,如果 mode = “fan_out”。
    • n = 输入和输出单位数量的平均数,如果 mode = “fan_avg”。
  • seed: 一个 Python 整数。作为随机发生器的种子。

Orthogonal

生成一个随机正交矩阵的初始化器。

keras.initializers.Orthogonal(gain=1.0, seed=None)

参数

  • gain: 适用于正交矩阵的乘法因子。
  • seed: 一个 Python 整数。作为随机发生器的种子。

Identity

生成单位矩阵的初始化器。仅用于 2D 方阵

keras.initializers.Identity(gain=1.0)

参数:
gain: 适用于单位矩阵的乘法因子。

lecun_uniform

LeCun 均匀初始化器。

keras.initializers.lecun_uniform(seed=None)

它从 [-limit,limit] 中的均匀分布中抽取样本, 其中 limit 是 sqrt(3 / fan_in), fan_in 是权值张量中的输入单位的数量。

参数
seed: 一个 Python 整数。作为随机发生器的种子。

返回
一个初始化器。

lecun_normal

LeCun 正态分布初始化器。

keras.initializers.lecun_normal(seed=None)

它从以 0 为中心,标准差为 stddev = sqrt(1 / fan_in) 的截断正态分布中抽取样本, 其中 fan_in 是权值张量中的输入单位的数量。

参数
seed: 一个 Python 整数。作为随机发生器的种子。

返回
一个初始化器。

glorot_normal

Glorot 正态分布初始化器,也称为 Xavier 正态分布初始化器。

keras.initializers.glorot_normal(seed=None)

它从以 0 为中心,标准差为 stddev = sqrt(2 / (fan_in + fan_out)) 的截断正态分布中抽取样本, 其中 fan_in 是权值张量中的输入单位的数量, fan_out 是权值张量中的输出单位的数量。

参数
seed: 一个 Python 整数。作为随机发生器的种子。

返回
一个初始化器。

glorot_uniform

Glorot 均匀分布初始化器,也称为 Xavier 均匀分布初始化器。

keras.initializers.glorot_uniform(seed=None)

它从 [-limit,limit] 中的均匀分布中抽取样本, 其中 limit 是 sqrt(6 / (fan_in + fan_out)), fan_in 是权值张量中的输入单位的数量, fan_out 是权值张量中的输出单位的数量。

参数
seed: 一个 Python 整数。作为随机发生器的种子。

返回
一个初始化器。

he_normal

He 正态分布初始化器。

keras.initializers.he_normal(seed=None)

它从以 0 为中心,标准差为 stddev = sqrt(2 / fan_in) 的截断正态分布中抽取样本, 其中 fan_in 是权值张量中的输入单位的数量,

参数
seed: 一个 Python 整数。作为随机发生器的种子。

返回
一个初始化器。

he_uniform

He 均匀方差缩放初始化器。

keras.initializers.he_uniform(seed=None)

它从 [-limit,limit] 中的均匀分布中抽取样本, 其中 limit 是 sqrt(6 / fan_in), 其中 fan_in 是权值张量中的输入单位的数量。

参数
seed: 一个 Python 整数。作为随机发生器的种子。

返回
一个初始化器。

使用自定义初始化器

如果传递一个自定义的可调用函数,那么它必须使用参数 shape(需要初始化的变量的尺寸)和 dtype(数据类型):

from keras import backend as K

def my_init(shape, dtype=None):
    return K.random_normal(shape, dtype=dtype)

model.add(Dense(64, kernel_initializer=my_init))
极化码理论及算法研究4-巴氏参数、GA算法以及matlab仿真 目录 (如要找其他内容,欢迎访问我的主页寻找) #前言 #极化码概述 #极化码定义 #极化码编码 #极化码译码 #5G标准中极化码的编译码概述 #5G标准中极化码的编码 #5G标准中极化码的译码 #总结 极化码编码 ... 阅读详情

相关推荐

深入探索 SEED-VII:情感脑电图研究的新利器

SEED-VII是上海交通大学最新发布的多模态情感脑电图数据集,在传统EEG数据基础上增加了眼动、生理信号等多维信息,支持更精细的情感识别研究。该数据集提供了丰富的情感维度标注(效价和唤醒度),可用于算法基准测试、跨模态情感融合及个性化模型开发等研究场景。在应用层面,SEED-VII可推动人机交互、心理健康监测、教育娱乐等领域的情感计算技术发展。文章还提供了PyTorch加载该数据集的代码示例,为研究者使用该数据集提供了技术参考。

qq_32516809的博客 1746

Keras教学(6):Keras的初始化Initializers,看这一篇就够了

卷积神经网络的初始化,看这一篇就够了。内容包括初始化器的用法、可用的所有初始化器、自定义初始化器的方法

my_name_is_learn的博客 2万+

Understand-Anything:AI驱动的代码知识图谱,实现项目全局洞察与高效导航

在软件开发中,理解复杂代码库的结构和依赖关系是提升开发效率的关键。传统代码阅读方式往往陷入局部视角,难以快速把握系统全貌。知识图谱技术通过将代码实体(如文件、类、函数)及其关系(调用、继承、依赖)可视化,为代码理解提供了全局视角。这项技术的核心价值在于将静态代码转化为动态、可交互的认知地图,极大降低了系统学习与维护成本。在实际工程中,它广泛应用于新成员快速入职、遗留系统梳理、架构影响分析等场景。本文介绍的Understand-Anything工具,正是基于这一理念,通过多智能体分析管道,自动构建代码的结构图

weixin_42615290的博客 882

深度学习 - 3.TF x Keras 常见参数初始化方法

上篇文章自定义 metrics 用到了 add_weights 方法,这个方法会初始化一个变量,维度不定。下面就常见的初始化方法,进行介绍。

BITDDD小栈 1万+

LVGL 9.4 性能调优实战:如何通过脏区合并与tile分块,让你的嵌入式UI流畅度翻倍

本文深入探讨LVGL 9.4中的性能优化技术,重点介绍脏区合并与tile分块如何显著提升嵌入式UI流畅度。通过实战案例和源码分析,详细解析局部刷新策略、显示框架调优及性能瓶颈诊断方法,帮助开发者在STM32、ESP32等资源受限设备上实现丝滑的UI体验。

weixin_28678831的博客 450

FreeRTOS移植实战:从零开始在STM32上搭建多任务系统(含Proteus仿真配置)

本文详细介绍了如何在STM32平台上从零开始移植FreeRTOS,并搭建多任务系统,包含Proteus仿真配置。通过环境准备、源码移植、多任务设计到仿真调试的全流程实战,帮助开发者快速掌握FreeRTOS在STM32上的应用技巧,提升嵌入式开发效率。

weixin_33737134的博客 232

Keras中initializers模块常见模型初始化方法详解

本文详细介绍了Keras中initializers模块常见模型初始化方法的含义,文章大部分内容来源于官网参考文档:[Keras初始化器的用法](https://keras-zh.readthedocs.io/initializers/) ,部分内容为笔者单独研究进行的补充,有助于深入理解各个初始化器的用法。最后使用keras提供了一个完整的简单模型进行训练的例子。

老猿Python 1950

粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解

粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization),缩写为 PSO, 是近年来由J. Kennedy和R. C. Eberhart等开发的一种新的进化算法(Evolutionary Algorithm - EA)。

猫敷雪 893

常见的参数初始化方法

常见的参数初始化方法 我们常见的几种初始化方法是按照“正态分布随机初始化——对应为normal”和按照“均匀分布随机初始化——对应为uniform”,这里就不再多说了,这里介绍几种遇见较少的初始化方法。 1、Glorot初始化方法 (1)正态化的Glorot初始化——glorot_normal Glorot 正态分布初始化器,也称为 Xavier 正态分布初始化器。它从以 ...

bestxyj的专栏 1万+

深度学习驱动的股票波动率预测:LSTM和Transformer模型的实战解析

股票市场的波动率一直是金融领域关注的焦点之一。波动率预测对于风险管理、期权定价和资产配置至关重要。深度学习模型,如长短时记忆网络(LSTM)和Transformer,已经在时间序列数据分析领域取得了显著的成就。本博客将向您展示如何使用这两种深度学习模型来进行股票波动率预测,提供清晰的思路和相应的Python代码,以帮助您理解和应用这一重要任务。

斌擎科技 974

OSPF规划两大模型:双塔奇兵、犬牙交错

大家好,今天给大家带来的是OSPF规划两大模型:双塔奇兵、犬牙交错,让我们直接开始吧! OSPF规划之双塔奇兵 说明: OSPF 如果某个区域存在两个 ABR,并且在两个 ABR 上都对 area n 内的路由做了聚合操作。 最佳配置: 两台ABR之间的红线应该使用以太网的子接口技术,一个子接口属于area0,另一个属于 area n;或者该链路规划为 area n,同时配置虚连接; ABR 的 loopback0 规划入 area 0 OSPF 规划之犬牙交错 说明: 有时接入层的设备会以乱序的

网络技术联盟站 2423

keras系列(一):参数设置

常用的 权重/偏置 初始化 常数初始化 为了在伪代码中形象化,让我们考虑一个具有64个输入和32个输出的神经网络的任意一层。 W = np.zeros((64, 32)) W = np.ones((64, 32)) W = np.ones((64, 32)) * C 虽然常量初始化很容易理解和理解,但使用这种方法的问题是,我们几乎不可能打破激活的对称性。因此,它很少被用作神经网...

hanzy88的博客 2万+

[SVA]SystemVerilog Assertion Property开发技巧总结

SystemVerilog Assertion开发技巧总结 一、在property中可以使用if-else条件语句 如下面的例子,根据misc_phy_12g_rx的取值,选择不同的判断语句 property ck1_en_rose_chk(); @(posedge clk) disable iff(~rst_n) ad_pn_ck1en & (current_state !== ST_IDLE) |->...

元直的博客 5924

Keras的初始化Initializers

初始化

weixin_51652691的博客 2532

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Keras官方中文文档:初始化方法Initializers

初始化方法初始化方法定义了对Keras层设置初始化权重的方法不同的层可能使用不同的关键字来传递初始化方法,一般来说指定初始化方法的关键字是kernel_initializer 和 bias_initializer,例如:model.add(Dense(64, kernel_initializer='random_uniform', b...

macair123的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

keras_14_初始化Initializers

1. 模型初始化 初始化定义了设置 Keras 各层权重随机初始值的方法。用来将初始化器传入 Keras 层的参数名取决于具体的层。通常关键字为 kernel_initializer 和 bias_initializer: model.add(Dense(64, kernel_initializer='random_uniform', ...

weixin_30809173的博客 381

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

keras.initializers.Initializer

Class Initializer Initializer base class: all initializers inherit from this class. Aliases: Class tf.compat.v2.initializers.Initializer Class tf.compat.v2.keras.initializers.Initializer Class tf...

weixin_36670529的博客 632

ImportError: cannot import name ‘constraints‘ from ‘keras.layers‘

keras早期版本中,导入initializers,regularizers,constraints等模块为: from keras.layers import initializers,regularizers,constraints 现应为: from keras import initializers,regularizers,constraints 具体见keras中文文档

longshaonihaoa的博客 2177

ImportError: cannot import name ‘truncated_normal‘ from ‘tensorflow.keras.initializers‘

遇到ImportError: cannot import name 'truncated_normal' from 'tensorflow.keras.initializers'问题时。我的解决方法是pip install -U tensorflow-gpu。

m0_57778023的博客 942

Keras实现LSTM+Attention文本摘要模型详解

文本摘要是一种将长文本自动压缩为简洁、准确、信息完整的短文本的自然语言处理任务,其核心原理基于序列到序列(Seq2Seq)建模范式,通过编码器-解码器(encoder-decoder)结构实现语义理解与生成。LSTM因其对变长序列和局部依赖的强建模能力,成为轻量级摘要系统的可靠主干;而注意力机制则显著提升关键信息定位与可解释性,尤其在医疗、金融等需溯源的垂直领域价值突出。相比大模型,该技术路径具备内存友好、冷启动快、部署稳定等工程优势,适用于工单摘要、病历提炼、日志归因等真实业务场景。本文聚焦Keras框架

weixin_33843409的博客 340

keras实现自定义层的关键步骤解析

前言:Keras提供众多常见的已编写好的层对象,例如常见的卷积层、池化层等,我们可以直接通过以下代码调用。Keras中的层大致上分为两种类型: 第一种是带有训练参数的:比如Dense层、Conv2D层,等等,我们在训练的过程中需要训练层的权重和偏置项; 第二种是不带训练参数的:比如dropout层、flatten层、等等,我们不需要训练它的权重,只需要对输入进行加工处理再输出就行了。...

MIss-Y的博客 1万+

GAN学习小记录——keras版本不对怎么办?

闲来没事,就胡乱倒腾,感觉GAN挺好玩,就打算学一学,先找了一个DCGAN的源码跑了一下,但是鉴于原作者用的是keras=2.1 但是我的已经是最新版的了2.4.3,所以有些东西运行起来就会报错,比如: ‘kernel_initializer’: initializers.normal(mean=0., stddev=0.02), 这一行代码,再keras’2.1中没有任何问题,但是2.4.3就是报错,百度也百度不出来,我的直觉告诉我keras2.4关于initializers的函数发生了变化,于是我就直接

dreamlpx的博客 306

【Tensorflow2.0】tf.keras.initializers.GlorotUniform初始化

其实很简单,GlorotUniform初始化等同于Pytorch中的Xavier均匀初始化器!

sxl的博客 641

keras vscode没法补全问题

keras vscode没法补全问题

很吵请安静 951

Keras子类化:从Layer到Model的自定义层与模型开发指南

在深度学习框架中,自定义层和模型是扩展框架功能、实现特定算法需求的核心技术。其原理在于通过继承基类,重写关键方法,实现对前向传播、参数管理和训练流程的完全控制。这一技术的价值在于突破了预定义层的限制,使研究人员和工程师能够实现新颖的网络结构、激活函数或训练机制。在计算机视觉、自然语言处理等领域,自定义组件常用于实现注意力机制、特殊归一化层或生成对抗网络等复杂模型。本文以Keras框架为例,详细解析了子类化Layer和Model的实践方法,包括权重创建、序列化处理和训练模式区分等关键环节,并提供了可学习的Si

weixin_30735745的博客 423

kOps 集群加密落盘配置:`kops create secret encryptionconfig` 命令详解与 kube-apiserver 加密实践

`kops create secret encryptionconfig` 是 kOps 提供的加密配置管理命令,用于将 kube-apiserver 的静态加密(Encryption-at-Rest)配置以 Secret 形式写入集群状态存储(State Store),是启用 Kubernetes 数据落盘加密的关键前置步骤。本文将基于该命令的 CLI 参考文档,结合 kOps 仓库中的命令实现

gitblog_00835的博客 704
上一篇: Keras学习笔记11——keras.applications
下一篇: Keras学习笔记13——keras.regularizers
winter_python
博客等级 码龄10年 53粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值