Пользовательская функция потерь для MSE на Matconvnet

Проблема при создании пользовательской функции потерь. Извините, я немного новичок в matconvnet

Таким образом, по сути, выходные данные для моей нейронной сети должны быть вектором с 2 элементами (например, [1,2]) с функцией ошибок, основанной на RMSE

Поэтому я изменил cnn_train так, чтобы метки были вместо обучающих примеров размером 2 на #. В приведенном ниже коде x = 1 x 1 x 2 x batchSize установлен и c обозначает метки.

function y = wf_rmse(x, c, varargin)
% Custom loss function for MSE Error
org = size(x);
x = reshape(x, size(c));

if ~isempty(varargin) && ~ischar(varargin{1})  % passed in dzdy
    dzdy = varargin{1} ;
    varargin(1) = [] ;
else
    dzdy = [] ;
end

% Forward pass
if(nargin <= 2 || isempty(dzdy))
    y = sum(sum(((x-c).^2))/2));

% Back pass  
elseif(nargin == 3 && ~isempty(dzdy))
    y = 2 * dzdy * (x - c);
    y = reshape(y, org);
end

Когда я включаю это как часть сети, сеть инициализируется нормально, но я получаю ошибку во время обучения, даже если размеры выходного градиента должны совпадать с размерами других.

Error using vl_nnconv
DEROUTPUT dimensions are incompatible with X and FILTERS.

Есть предложения по решению проблемы?

0 ответов

Другие вопросы по тегам