为什么在反向传播期间我的权重矩阵中缺少一行?

问题描述

添加了下面的代码,直到出现错误为止。

    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 (将#修改为@)