Пользовательская функция потерь для 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.
Есть предложения по решению проблемы?