深度学习【3】keras:保存keras学习好的深度神经网络模型参数为二进制和txt文件

本文介绍了如何将Keras中训练好的深度神经网络模型权重保存为二进制和TXT文件,特别关注了带有批量归一化(Batch Normalization)的网络。通过分析Keras模型的内部结构,特别是`layers`变量,揭示了每一层的权重、偏置以及BN层的参数。利用theano的`get_params()`和`get_value()`函数,将权重转换为numpy数组并使用numpy的`tofile()`和`savetxt()`函数进行保存。
摘要由CSDN通过智能技术生成

http://blog.csdn.net/linmingan/article/details/50906141

由于工程需要,保存为hdf5的keras权值在c/c++中的读取比较不方便。因此将keras中的权值剥离出来,并保存为二进制文件或者txt文件。在进行代码的编写之前我们必须先知道keras中model类对于每一层的参数如何表示的。以下,我将以加入Batch Normalization的5层神经网络(每层的节点数为[500 400 300 200 100],输入为:39)作为例子,来解读keras的参数表示。

假设我们已经学习好了上述的神经网络,怎么我们可以得到一个包含有各种对象的keras对象:model。model的具体内容如下图(model内部结构的显示由Pycharm调试功能中的观察变量功能得来)。图中有非常多变量,但是我们只关心其中的layers变量。

我们可以展开layers变量,得到下图。从_len_={int} 17,知道我们的模型共有17层(按正常理解应该只有5层,但是在keras中,将上一层的输出乘以该层的权值,以及通过激活函数这两个都看做是一层。因为我们的模型加入了BN操作,所有BN操作也看做一层。这样一来我们理解的一层就扩展到了三层。),接下来的00,01,...16就是里面具体的层的内容了,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值