keras_14_初始化Initializers
作者:@haozhang
本文为作者原创,转载请注明出处:https://www.cnblogs.com/LS1314/p/10380676.html
目录
1. 模型初始化
2. 自定义初始化器
1. 模型初始化
-
初始化定义了设置 Keras 各层权重随机初始值的方法。用来将初始化器传入 Keras 层的参数名取决于具体的层。通常关键字为
kernel_initializer
和bias_initializer
:model.add(Dense(64, kernel_initializer='random_uniform', bias_initializer='zeros'))
-
内置的初始化工具 (是
keras.initializers
模块的一部分)-
Initializer
- 初始化器基类:所有初始化器继承这个类。
-
Zeros
- 将张量初始值设为 0 的初始化器。
-
Ones
- 将张量初始值设为 1 的初始化器。
-
Constant
- 将张量初始值设为 constant的初始化器。
-
RandomNormal
- 按照正态分布生成随机张量
-
RandomUniform
- 按照均匀分布生成随机张量
-
TruncatedNormal
- 截尾正态分布。生成的随机值与
RandomNormal
生成的类似,但是在距离平均值两个标准差之外的随机值将被丢弃并重新生成。这是用来生成神经网络权重和滤波器的推荐初始化器。
- 截尾正态分布。生成的随机值与
-
VarianceScaling
-
初始化器能够根据权值的尺寸调整其规模。
使用
distribution="normal"
时,样本是从一个以 0 为中心的截断正态分布中抽取的,stddev = sqrt(scale / n)
,其中 n 是:- 权值张量中输入单元的数量,如果 mode = "fan_in"。
- 输出单元的数量,如果 mode = "fan_out"。
- 输入和输出单位数量的平均数,如果 mode = "fan_avg"。
使用
distribution="uniform"
时,样本是从 [-limit,limit] 内的均匀分布中抽取的,其中limit = sqrt(3 * scale / n)
。
-
-
Orthogonal
- 生成一个随机正交矩阵
-
Identity
- 生成单位矩阵
-
lecun_uniform
- LeCun 均匀初始化器。它从 [-limit,limit] 中的均匀分布中抽取样本, 其中
limit
是sqrt(3 / fan_in)
,fan_in
是权值张量中的输入单位的数量。
- LeCun 均匀初始化器。它从 [-limit,limit] 中的均匀分布中抽取样本, 其中
-
glorot_normal (cs231n推荐):也称为 Xavier 正态分布初始化器。
- 它从以 0 为中心,标准差为
stddev = sqrt(2 / (fan_in + fan_out))
的截断正态分布中抽取样本, 其中fan_in
是权值张量中的输入单位的数量,fan_out
是权值张量中的输出单位的数量。
- 它从以 0 为中心,标准差为
-
glorot_uniform:Glorot 均匀分布初始化器,也称为 Xavier 均匀分布初始化器。
- 它从 [-limit,limit] 中的均匀分布中抽取样本, 其中
limit
是sqrt(6 / (fan_in + fan_out))
,fan_in
是权值张量中的输入单位的数量,fan_out
是权值张量中的输出单位的数量。
- 它从 [-limit,limit] 中的均匀分布中抽取样本, 其中
-
he_normal
- He 正态分布初始化器。它从以 0 为中心,标准差为
stddev = sqrt(2 / fan_in)
的截断正态分布中抽取样本, 其中fan_in
是权值张量中的输入单位的数量,
- He 正态分布初始化器。它从以 0 为中心,标准差为
-
lecun_normal
- LeCun 正态分布初始化器。它从以 0 为中心,标准差为
stddev = sqrt(1 / fan_in)
的截断正态分布中抽取样本, 其中fan_in
是权值张量中的输入单位的数量。
- LeCun 正态分布初始化器。它从以 0 为中心,标准差为
-
he_uniform
- He 均匀方差缩放初始化器。它从 [-limit,limit] 中的均匀分布中抽取样本, 其中
limit
是sqrt(6 / fan_in)
, 其中fan_in
是权值张量中的输入单位的数量。
- He 均匀方差缩放初始化器。它从 [-limit,limit] 中的均匀分布中抽取样本, 其中
-
2. 自定义初始化器
-
如果传递一个自定义的可调用函数,那么它必须使用参数
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))
分类:
Tensorflow
标签:
keras Tensorflow
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞