如何将BP神经网络的权值和阈值保存下来

本文详细介绍了一种在MATLAB中保存和加载神经网络权重的有效方法。通过使用formwb和separatewb函数,可以将训练好的网络权重转换为矩阵形式进行保存,并在需要时重新加载至网络中,避免了重复训练的麻烦。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题1,当训练好的网络,如果下次想调用,怎么办?


回答:
当然是保存网络。
那么保存网络的核心部分是?
当然是关于神经网络的权值保存的问题了。

解决方案一
很多时候,大部分的回答是:
直接把训练好的net电脑中(如下图)。

F8N7T0Z140W_}{​{$$@C)_IY.png
登录/注册后可看大图

F8N7T0Z140W_}{{$$@C)_IY.png (13.57 KB, 下载次数: 13)

下载附件  保存到相册

2016-5-15 08:28 上传




这个可以保存整个网络的参数。
下次只需要load 下就可以再次调用网络了。
但是这个方案保存太多不知名的东西,总感觉没得骨。

解决方案二
这个论坛很少谈到,就是直接把权值保存为矩阵,下次调用。
虽然有人问了,但回答的很少。
但解决方法不难,使用MATLAB中的2个函数就可以解决。


步骤如下:
首先训练好网络(默认网络的名字叫net),调用函数formwb,
CODE 如下:

wb = formwb(net,net.b,net.iw,net.lw)%将训练好的值转为矩阵

这样你的工作区中就出现了一个wb的矩阵,它就是包括网络的所有权值及阈值!

QQ截图20160515084005.png
登录/注册后可看大图

QQ截图20160515084005.png (6.16 KB, 下载次数: 7)

下载附件  保存到相册

2016-5-15 08:34 上传


你可以save一下这个wb矩阵,下次调用。

现在就来说说如何调用这个wb矩阵,方法很简单,用到separatewb函数就可以解决,
code如下:

[net.b,net.iw,net.lw] = separatewb(net,wb)%将保存的wb值输入到net的权值中

上面的代码需在train函数前,如下:

QQ截图20160515084651.png
登录/注册后可看大图

QQ截图20160515084651.png (3.86 KB, 下载次数: 8)

下载附件  保存到相册

2016-5-15 08:40 上传



这样就可以把之前辛苦训练好的网络呼唤回来了。

问题二【待续。。。】

转载:http://www.ilovematlab.cn/thread-468039-1-1.html


 

分享到:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值