微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

    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 举报,一经查实,本站将立刻删除。