创建自定义损失函数时出现问题。抱歉,我对 matconvnet 有点陌生
所以本质上,我的神经网络的输出旨在成为一个具有 2 个元素(例如:[1,2])的向量,其误差函数基于 RMSE
因此,我更改了 cnn_train,以便标签改为 2 x # 的训练示例。在下面的代码中 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.
关于解决问题的任何建议?