在文档中,我们训练了10个不同的神经网络,每个神经网络都使用不同的权重和偏置进行初始化。net
是用于构建神经网络的变量,x1
是训练数据集,t1
是训练中使用的已知标签,x2
是测试数据集,t2
是测试标签。每个神经网络存储在单元变量 NN{}
中。
训练后,使用测试集 t2
和 x2
进行评估。然而,mse计算使用的是 mse(net, t2, y2)
。我认为正确的语句应该是 mse(NN{i}, t2, y2)
,因为 NN{}
是训练后的模型,而 net
只是一个结构。下面是链接中给出的代码。
函数调用应该是 mse(NN{i}, t2, y2)
而不是 mse(net, t2, y2)
吗?
net = feedforwardnet(10);numNN = 10;NN = cell(1, numNN);perfs = zeros(1, numNN);for i = 1:numNN fprintf('Training %d/%d\n', i, numNN); NN{i} = train(net, x1, t1); y2 = NN{i}(x2); perfs(i) = mse(net, t2, y2);end
回答:
mse
是一个网络性能函数。它根据均方误差来衡量网络的性能。
perf = mse(net,t,y,ew)
接受以下参数:
net
神经网络t
目标的矩阵或单元数组y
输出的矩阵或单元数组ew
错误权重(可选)
根据 mse
的文档。因此,第一个参数应该是 neural network
类型的一个结构,在该示例中 NN{i}
包含在 y2
中,因此是输出的矩阵。