Keras默认权值初始化方式

20230117 -

在最初使用Keras进行神经网络编程的时候,除了设置神经元个数,层数,或者激活函数之后,基本上对神经网络内部就不怎么管了,所以最后很多参数都是默认的。这种情况一般遇到的数据集问题,都能轻易解决。一般不是层数非常深的神经网络,偶尔也遇到过梯度爆炸和消失的问题。

但最近遇到一个数据集,默认的情况下效果也还行,但希望更进一步。就希望通过权值初始化的角度来进行改进。Keras默认的权值初始化方式[1]是

Each layer has its own default value for initializing the weights. For most of the layers, such as Dense, convolution and RNN layers, the default kernel initializer is ‘glorot_uniform’ and the default bias intializer is ‘zeros’ (you can find this by going to the related section for each layer in the documentation; for example here is the Dense layer doc). You can find the definition of glorot_uniform initializer here in the Keras documentation.

这个从他官方的文档上也是能看出的:
在这里插入图片描述

在这个问答下,另外一个人提到了一个文章[2],具体讲述了两种初始化方式,Xavier和kaiming两种方式,从他的结论中得出,

I think this article is very interesting and it shows roughly that for “tanh” activations you should use ‘glorot_uniform’ and for “relu” layers you should use “he_uniform”

从文章的理论分析来看,确实是有用的。但是我这里并没有具体编程验证。同时,这里有一篇问答[3]对比了keras和torch两者对he_normal的实现对比。

参考

[1]Where to find a documentation about default weight initializer in Keras?
[2]Weight Initialization in Neural Networks: A Journey From the Basics to Kaiming
[3]he_normal (Keras) is truncated when kaiming_normal_ (pytorch) is not

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Keras中,VAE(Variational Autoencoder)是一种用于生成数据的生成模型,它结合了自动编码器(Autoencoder)和变分推断(Variational Inference)的概念。在Keras中使用VAE时,可以使用以下方法来初始化权重: 1. 随机初始化:可以使用Keras默认初始化方法,不需要显式地指定初始化函数。Keras会自动为网络中的每个参数随机选择初始化值。 2. 预训练模型初始化:可以使用预训练的模型来初始化VAE的权重。首先,通过训练一个自动编码器(Autoencoder)来获得优化的权重,然后将这些权重作为VAE的初始权重。 3. 自定义初始化方法:Keras还提供了一些自定义的初始化方法,使用它们可以根据需要自定义权重初始化方式。例如,可以使用keras.initializers.RandomNormal来从正态分布中随机选择初始化值,或者使用keras.initializers.Constant来指定一个常数初始化值。 无论使用哪种初始化方法,都应该根据具体的问题和数据集的特点进行选择。例如,如果已经有预训练的模型可以使用,并且与VAE的架构相似,则预训练模型初始化可能是一个不错的选择。如果没有预训练的模型,或者数据集非常大、复杂,那么随机初始化可能是更好的选择。 通过适当地调整初始化方法和参数,可以帮助模型更好地学习数据的特征,并提高VAE的生成效果。在初始化权重之后,可以使用Keras提供的优化器和损失函数来训练VAE模型,并根据需要生成新的数据样本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值