有没有大哥会的,有偿讲解都可以
上网找的代码不会用,知道这个代码是输入图片数据的,想自己改一下,但是自己输入的数组,显示矩阵乘法的维度不正确。
function adealData()
clc
clear all
load('adata.mat','train_digitdata','train_targets');
X = train_digitdata;
Y = train_targets;
Xmin = min(X);
Xmax = max(X);
X = bsxfun(@rdivide,bsxfun(@minus,X,Xmin),(Xmax-Xmin));
rbm1 = rbm([784,400]);
rbm1 = checkrbmtrain(@rbmtrain1,rbm1,X,50,0.1);
net_rbm1 = rbm2nnet(rbm1,'up');
h1 = nnetfw(net_rbm1,X);
rbm2 = rbm([400,200]);
rbm2 = checkrbmtrain(@rbmtrain1,rbm2,h1,50,0.1);
net_rbm2 = rbm2nnet(rbm2,'up');
h2 = nnetfw(net_rbm2,h1);
rbm3 = rbm([200,100]);
rbm3 = checkrbmtrain(@rbmtrain1,rbm3,h2,50,0.1);
net_rbm3 = rbm2nnet(rbm3,'up');
h3 = nnetfw(net_rbm3,h2);
rbm4 = rbm([100,50]);
rbm4 = checkrbmtrain(@rbmtrain1,rbm4,h3,50,0.1);
net_rbm4 = rbm2nnet(rbm4,'up');
h4 = nnetfw(net_rbm4,h3);
rbm5 = rbm([50,20]);
rbm5 = checkrbmtrain(@rbmtrain1,rbm5,h4,50,0.1);
net_rbm5 = rbm2nnet(rbm5,'up');
h5 = nnetfw(net_rbm5,h4);
net1 = nnet([784,400,200,100,50,20,10],'softmax');
net1.w{1} = net_rbm1.w{1};
net1.w{2} = net_rbm2.w{1};
net1.w{3} = net_rbm3.w{1};
net1.w{4} = net_rbm4.w{1};
net1.w{5} = net_rbm5.w{1};
net2 = nnettrain(net1,X,Y,1000);
Y= nnetfw(net2,X);