Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何使用MatConvNet训练网络学习函数?_Matlab_Neural Network - Fatal编程技术网

Matlab 如何使用MatConvNet训练网络学习函数?

Matlab 如何使用MatConvNet训练网络学习函数?,matlab,neural-network,Matlab,Neural Network,我试图了解如何使用MatConvNet学习给定I/O对的函数,以便进行培训 我想发现一个函数,它将486维的输入向量映射为1D的输出值。但是,我无法使网络正常工作,我需要帮助查找我的错误。以下是我所做工作的细节,如果需要其他信息,请告诉我 以下是我的培训数据布局,如matlab commpand提示符所示(我有100万个培训数据样本): 我使用的是一个多层完全连接的神经网络,一个输入层有486个神经元,一个隐藏层有100个神经元,一个输出层有1个神经元 我使用完全连接的层定义了网络,如下所示:

我试图了解如何使用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));