Функция стоимости нейронной сети, возвращающая Nan в Matlab - PullRequest
0 голосов
/ 11 ноября 2018

Я работаю над NN и пытаюсь создать кривые обучения и проверки.

Это моя векторизованная функция стоимости

sum(sum((-Y).*log(h) - (1-Y).*log(1-h), 2))/m + lambda*p/(2*m);

Однако ошибка проверки возвращает Nan, когда я обучаю параметры на небольших размерах обучающего набора перед вычислением ошибки проверки.

Это код, который я пытаюсь реализовать:

function [error_train, error_val, m] = ...
learningCurve(input_layer_size,hidden_layer_size,num_labels,X, y, Xval, yval, lambda)
% returns the train and
% cross validation set errors for a learning curve.
% Number of training examples
m = size(X,1);

% You need to return these values correctly
error_train = zeros(m, 1);
error_val   = zeros(m, 1);


for i = 1:m
    nn_params = trainNeural(input_layer_size, hidden_layer_size, num_labels,X(1:i, :), y(1:i), lambda); 
    [error_train(i), grad] = nnCostFunction(nn_params, ...
                                   input_layer_size, ...
                                   hidden_layer_size, ...
                                   num_labels, ...
                X(1:m), :), y(1:m), 0);

    [error_val(i), grad] = nnCostFunction(nn_params, ...
                                   input_layer_size, ...
                                   hidden_layer_size, ...
                                   num_labels, ...
                   Xval, yval,0);
end
...