ใช้ฟังก์ชัน computation สำหรับ neural เครือข่าย

0

คำถาม

ฉันอยู่ในสัปดาห์ก่อน 5 ของแอนดรู drrider@gmail. com,narachai@gmail. comemail of translators เป็นเครื่องเรียนรู้แน่นอนบน Coursera. ฉันทำงานผ่านทางโปรแกรงานในเอกสาร matlablanguage สำหรับสัปดาห์นี้และฉันเลือกที่จะใช้สำหรับวง implementation ต้องสะทกสะทานเลยละสิต้องแลกด้วยเจนนี่เป็นของฉันฟังก์ชัน.

function [J grad] = nnCostFunction(nn_params, ...
                                   input_layer_size, ...
                                   hidden_layer_size, ...
                                   num_labels, ...
                                   X, y, lambda)
%NNCOSTFUNCTION Implements the neural network cost function for a two layer
%neural network which performs classification
%   [J grad] = NNCOSTFUNCTON(nn_params, hidden_layer_size, num_labels, ...
%   X, y, lambda) computes the cost and gradient of the neural network. The
%   parameters for the neural network are "unrolled" into the vector
%   nn_params and need to be converted back into the weight matrices. 

% Reshape nn_params back into the parameters Theta1 and Theta2, the weight matrices
% for our 2 layer neural network

Theta1 = reshape(nn_params(1:hidden_layer_size * (input_layer_size + 1)), ...
                 hidden_layer_size, (input_layer_size + 1));

Theta2 = reshape(nn_params((1 + (hidden_layer_size * (input_layer_size + 1))):end), ...
                 num_labels, (hidden_layer_size + 1));


% Setup some useful variables
m = size(X, 1);

% add bias to X to create 5000x401 matrix
X = [ones(m, 1) X];
         
% You need to return the following variables correctly 
J = 0;
Theta1_grad = zeros(size(Theta1));
Theta2_grad = zeros(size(Theta2));


% initialize summing terms used in cost expression
sum_i = 0.0;

% loop through each sample to calculate the cost
for i = 1:m

    % logical vector output for 1 example
    y_i = zeros(num_labels, 1);
    class = y(m);
    y_i(class) = 1;
    
    % first layer just equals features in one example 1x401
    a1 = X(i, :);
    
    % compute z2, a 25x1 vector
    z2 = Theta1*a1';
    
    % compute activation of z2
    a2 = sigmoid(z2);
    
    % add bias to a2 to create a 26x1 vector
    a2 = [1; a2];
    
    % compute z3, a 10x1 vector
    z3 = Theta2*a2;
    
    %compute activation of z3. returns output vector of size 10x1
    a3 = sigmoid(z3);
    h = a3;
    
    % loop through each class k to sum cost over each class
    for k = 1:num_labels        
        
        % sum_i returns cost summed over each class
        sum_i = sum_i + ((-1*y_i(k) * log(h(k))) - ((1 - y_i(k)) * log(1 - h(k))));
        
    end
        
end

J = sum_i/m;

ฉันเข้าใจว่าเป็น vectorized implementaion ของมันจะง่ายแต่ฉันไม่เข้าใจทำไมนี่ implementation ผิดพลาด ตอนที่ num_labels=10,ฟังก์ชันนี้แสดงผลเจ=8.47 แต่คาดหวังแลก 0.287629. ฉันส่วนที่คำนวณแล้วเจอกจาก สูตรนี้. ฉันเรื่องเข้าใจผิดที่ computation? ฉันเข้าใจว่านั่นกันและฝึกตัวอย่างเป็นค่าใช้จ่ายสำหรับแต่ละคน 10 ชั้นเรียนเป็นส่วนที่คำนวณแล้วงั้นก็ต้องแลกด้วยสำหรับทุก 10 เรียนสำหรับแต่ละตัวอย่างเป็น summed อยู่ด้วยกัน นั่นไม่ถูกต้อง? หรือฉันไม่ได้ด้วยอะไรซักอย่างมันในรหัสของฉันเหมาะสม? ขอบคุณล่วงหน้า

2
0

ปัญหาคือมอยู่ในสูตรคุณ implementing

นี่แสดง ((-1*y_i(k) * log(h(k))) - ((1 - y_i(k)) * log(1 - h(k)))); เป็นตัวแทนของการสูญเสียในกรณีที่อยู่ในไบนารี(ภาษาเครื่อง)การแบ่งประเภทเพราะคุณเป็นเพียงต้อง 2 ชั้นเรียนงั้นเหมือนกัน

  1. y_i is 0 so (1 - yi) = 1
  2. y_i is 1 so (1 - yi) = 0

ดังนั้นคุณก็พาเข้าไปในบัญชีเดียวที่เป้าหมายห้องความเป็นไปได้

ยังเคยอยู่ในกรณีของ 10 บป้ายยี่ห้อย่างที่คุณพูดถึง(y_i)หรือ(1-ยี)ไม่จำเป็นหนึ่งของพวกเขาจะเป็น 0 และอีกคนต้องเป็น 1

คุณควรจะถูกต้องการสูญเสียฟังก์ชัน implementation เพื่อที่คุณใช้เข้าไปในบัญชีของความน่าจะเป็นของเป้าหมายเรียนเดียวไม่ใช่ทั้งหมอีกชั้นเรียนเรียน

2021-11-22 23:54:56
0

ปัญหาของฉันกับกำลังทำดัชนี. มากกว่าพูด class = y(m) มันควรจะเป็น class = y(i) ตั้งแต่ i เป็นดัชนีแล้ว m คือ 5000 จากจำนวนแถวในการฝึกข้อมูล

2021-11-23 03:53:01

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่