function rbm = rbmtrain(rbm, x, opts)
%矩阵x中的元素必须是浮点数,且取值为[0,1]
%assert(isfloat(x), 'x must be a float');
%assert(all(x(:)>=0) && all(x(:)<=1), 'all data in x must be in [0:1]');
%m为样本数量,这里m = 60000
m = size(x, 1);
%训练批次,每一批是opts.batchsize个样本,注意这里opts.batchsize必须整除m
numbatches = m / opts.batchsize;
%opts.batchsize必须能整除m
% assert(rem(numbatches, 1) == 0, 'numbatches not integer');
%opts.numepochs,训练次数
for i = 1 : opts.numepochs
%随机打乱1-m的数,也就是1-m的随机数,kk是1-m的随机数向量
kk = randperm(m);
%训练结果的eer
err = 0;
%对每一批数据进行训练
for l = 1 : numbatches
%取出opts.batchsize个待训练的样本
%循环结束后所有样本都进行过训练,且仅训练了一次
batch = x(kk((l - 1) * opts.batchsize + 1 : l * opts.batchsize), :);
%赋值给v1
%这里v1是100*784的矩阵
v1 = batch;
%通过v1计算h1的概率,吉布斯抽样
h1 = sigmrnd(repmat(rbm.c', opts.batchsize, 1) + v1 * rbm.W');
%通过h1计算v1的概率,吉布斯抽样
v2 = sigmrnd(repmat(rbm.b', opts.batchsize, 1) + h1 * rbm.W);
%通过v2计算h2的概率,吉布斯抽样
h2 = sigm(repmat(rbm.c', opts.batchsize, 1) + v2 * rbm.W');
%至此,h1,v1,h2,v2均已计算出来,即完成了对比散度算法的大半,只剩下相应权重的更新
%权重更新的差值计算
c1 = h1' * v1;
c2 = h2' * v2;
rbm.vW = rbm.momentum * rbm.vW + rbm.alpha * (c1 - c2) / opts.batchsize;
rbm.vb = rbm.momentum * rbm.vb + rbm.alpha * sum(v1 - v2)' / opts.batchsize;
rbm.vc = rbm.momentum * rbm.vc + rbm.alpha * sum(h1 - h2)' / opts.batchsize;
%更新权重
rbm.W = rbm.W + rbm.vW;
rbm.b = rbm.b + rbm.vb;
rbm.c = rbm.c + rbm.vc;
%计算err
err = err + sum(sum((v1 - v2) .^ 2)) / opts.batchsize;
end
%打印结果
disp(['epoch ' num2str(i) '/' num2str(opts.numepochs) '. Average reconstruction error is: ' num2str(err / numbatches)]);
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
DBN_rbm_DBNmatlab_dbn_dbn预训练
共5个文件
m:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 145 浏览量
2021-09-11
09:54:51
上传
评论
收藏 3KB ZIP 举报
温馨提示
通过第一个rbm,依次训练后续的rbm
资源推荐
资源详情
资源评论
收起资源包目录
DBN_rbm_DBNmatlab_dbn_dbn预训练_源码.zip (5个子文件)
rbmup.m 139B
rbmtrain.m 2KB
dbnsetup.m 1KB
test_example_DBN.m 1KB
dbntrain.m 442B
共 5 条
- 1
资源评论
- weixin_502015352022-04-07好用,且简单实用。
心梓
- 粉丝: 820
- 资源: 8055
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功