% A BP network for MINST data
% Author: Guo chengfeng
% Version 1.0
% date: 2018-3-15
%神经网络的层次
ntrain = length(y_train);
arch = [784,30,10];
nlayer = length(arch);
mini_batch_size = 100;
max_epochs = 5000;
zeta = 2;
% mini = 20, zeta = 6 eps= 5000. 可以达到0.946
%神经网络参数初始化
weight = cell(1,nlayer);
bias = cell(1,nlayer);
nabla_weight = cell(1,nlayer);
nabla_bias = cell(1,nlayer);
a = cell(1,nlayer);
z = cell(1,nlayer);
for in = 2:nlayer
weight{in} = rand(arch(in),arch(in-1))-0.5;
bias{in} = rand(arch(in),1)-0.5;
nabla_weight{in} = rand(arch(in),arch(in-1));
nabla_bias{in} = rand(arch(in),1);
end
for in = 1:nlayer
a{in} = zeros(arch(in),mini_batch_size);
z{in} = zeros(arch(in),mini_batch_size);
end
accuracy = zeros(1,max_epochs);
for ip = 1:max_epochs
pos = randi(ntrain-mini_batch_size);
x = x_train(:,pos+1:pos+mini_batch_size);
y = y_train(:,pos+1:pos+mini_batch_size);
%正向计算
a{1} = x;
[a,z]=feedforward(@acti_relu,@acti_sigmoid,weight,bias,nlayer,mini_batch_size,a,z);
[weight,bias] = SGD(@acti_relu_prime,@acti_sigmoid_prime,weight,bias,...
nabla_weight,nabla_bias,nlayer,mini_batch_size,zeta,a,z,y);
accuracy(ip) = evaluateminst(@acti_relu,@acti_sigmoid,x_valid,y_valid,weight,bias,nlayer);
plot(accuracy);
title(['Accuracy:',num2str(accuracy(ip))]);
getframe;
end
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
MINISTMatlab程序.zip (12个子文件)
MINIST
networksminst.m 1KB
evaluateminst.m 499B
SGD.m 621B
showdigit.m 400B
relu-z2-m100-p5000-30-30.png 13KB
acti_relu_prime.m 124B
feedforward.m 563B
acti_sigmoid.m 77B
relu-z2-m100-p5000.png 13KB
acti_relu.m 86B
loadMinstDataScript.m 178B
acti_sigmoid_prime.m 105B
共 12 条
- 1
资源评论
- 郭小皮2018-11-12需要进行简单调试
oio328Loio
- 粉丝: 551
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功