Matlab 如何使用MatConvNet训练网络学习函数?
我试图了解如何使用MatConvNet学习给定I/O对的函数,以便进行培训 我想发现一个函数,它将486维的输入向量映射为1D的输出值。但是,我无法使网络正常工作,我需要帮助查找我的错误。以下是我所做工作的细节,如果需要其他信息,请告诉我 以下是我的培训数据布局,如matlab commpand提示符所示(我有100万个培训数据样本): 我使用的是一个多层完全连接的神经网络,一个输入层有486个神经元,一个隐藏层有100个神经元,一个输出层有1个神经元 我使用完全连接的层定义了网络,如下所示:Matlab 如何使用MatConvNet训练网络学习函数?,matlab,neural-network,Matlab,Neural Network,我试图了解如何使用MatConvNet学习给定I/O对的函数,以便进行培训 我想发现一个函数,它将486维的输入向量映射为1D的输出值。但是,我无法使网络正常工作,我需要帮助查找我的错误。以下是我所做工作的细节,如果需要其他信息,请告诉我 以下是我的培训数据布局,如matlab commpand提示符所示(我有100万个培训数据样本): 我使用的是一个多层完全连接的神经网络,一个输入层有486个神经元,一个隐藏层有100个神经元,一个输出层有1个神经元 我使用完全连接的层定义了网络,如下所示:
trainOpts.batchSize = 10000 ;
trainOpts.numEpochs = 100 ;
trainOpts.continue = false ;
trainOpts.gpus = [1];
trainOpts.learningRate = 0.001 ;
trainOpts.numEpochs = 100 ;
trainOpts.expDir = 'xyz' ;
f = 1/100;
net.layers = {};
net.layers{end+1} = struct('type','conv','weights'{{frandn(1,1,486,100,'single'),zeros(1,100,'single')}},'stride',1,'pad',0);
net.layers{end+1} = struct('type','sigmoid');
net.layers{end+1} = struct('type','conv', 'weights', {{frandn(1,1,100,1,'single'), zeros(1,1,'single')}}, 'stride',1,'pad',0);
net.layers{end+1} = struct('type','sigmoid');
net.layers{end+1} = struct('type','nnL2');
损耗层“vl_nnL2”中的函数是L2损耗函数。我已按照中的建议将其添加到vl_simplenn中。我还将cnn_列车中的误差估计更改为:
function err = error_sqerror(opts, labels, res)
predictions = gather(res(end-1).x) ;
if numel(labels) == size(predictions, 4)
labels = reshape(labels,1,1,1,[]) ;
end
error = (abs(labels-predictions).^2);
err = sum(squeeze(error));
以下是培训中的情节:
有人能指出我遗漏了什么吗
谢谢,,
埃克塔
function err = error_sqerror(opts, labels, res)
predictions = gather(res(end-1).x) ;
if numel(labels) == size(predictions, 4)
labels = reshape(labels,1,1,1,[]) ;
end
error = (abs(labels-predictions).^2);
err = sum(squeeze(error));