问题描述
clear; close; clc;
lambda = 1;
in= 3;
h1 = 9;
h2 = 6;
h3 = 4;
h4 = 1;
m = 50;
% We generate some 'random' test data
Theta1 = rand(9,4);
Theta2 = rand(6,10);
Theta3 = rand(4,7);
Theta4 = rand(1,5);
% generate X
X = rand(m,in);
y = 1 + mod(1:m,h4)';
% Setup some useful variables
m = size(X,1);
J = 0;
Theta1_grad = zeros(size(Theta1));
Theta2_grad = zeros(size(Theta2));
Theta3_grad = zeros(size(Theta3));
Theta4_grad = zeros(size(Theta4));
% forward propagation
a1 = [ones(size(X,1),1) X];
z2 = a1 * Theta1';
a2 = [ones(size(z2),1) 1.0 ./ (1.0 + exp(-z2))];
z3 = a2 * Theta2';
a3 = [ones(size(z3),1) 1.0 ./ (1.0 + exp(-z3))];
z4 = a3 * Theta3';
a4 = [ones(size(z4),1) 1.0 ./ (1.0 + exp(-z4))];
z5 = a4 * Theta4';
a5 = 1.0 ./ (1.0 + exp(-z5));
J = 1/m * sum(sum((-y.*log(a5)-(1-y).*log(1-a5))));
J = J + (lambda/(2*m)*(sum(sum(Theta1(:,2:end).^2))+sum(sum(Theta2(:,2:end).^2)) ...
+sum(sum(Theta3(:,2:end).^2))+sum(sum(Theta4(:,2:end).^2))));
% back propagation
d5 = (a5 .- y);
d4 = (d5 * Theta4).*1.0 ./ (1.0 + exp(-a4)).*(1-1.0 ./ (1.0 + exp(-a4)));
d3 = (d4 * Theta3).*1.0 ./ (1.0 + exp(-a3)).*(1-1.0 ./ (1.0 + exp(-a3)));
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)