लागत समारोह अभिकलन तंत्रिका नेटवर्क के लिए

0

सवाल

मैं में हूँ सप्ताह 5 के एंड्रयू एनजी की मशीन सीखने के पाठ्यक्रम पर Coursera. मैं काम कर रहा हूँ के माध्यम से प्रोग्रामिंग काम में Matlab के लिए इस सप्ताह है, और मैं चुना है का उपयोग करने के लिए पाश के लिए एक कार्यान्वयन की गणना करने के लिए लागत जे यहाँ है अपने समारोह.

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 कार्यान्वयन के लिए यह आसान हो जाएगा, लेकिन मैं क्यों नहीं समझते इस कार्यान्वयन गलत है । जब num_labels = 10, इस समारोह outputs जम्मू = 8.47, लेकिन उम्मीद की लागत है 0.287629. मैं गणना जम्मू से इस सूत्र. मैं गलतफहमी गणना? मेरी समझ यह है कि प्रत्येक प्रशिक्षण उदाहरण के लिए लागत में से प्रत्येक के 10 वर्गों में गणना कर रहे हैं तो लागत के लिए सभी 10 वर्गों में से प्रत्येक के लिए उदाहरण के लिए अभिव्यक्त कर रहे हैं । है कि गलत? या किया था, मैं लागू नहीं यह कोड ठीक से? धन्यवाद अग्रिम में.

2
0

समस्या है, सूत्र में आप को लागू कर रहे हैं

इस अभिव्यक्ति ((-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

आप सही होना चाहिए नुकसान के समारोह के कार्यान्वयन इतना है कि आप केवल खाते में लेने की संभावना लक्ष्य वर्ग ही नहीं, अन्य सभी वर्गों.

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ý
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में