fmincg比optimx更快更好?

时间:2014-12-17 11:10:30

标签: r octave

我正在训练一个神经网络,用于讨人喜欢的手写数字比赛。为了练习R,我将Andrew Ng的神经网络八度音程编译成了R.所以我需要找到fmincg的替代品。

我找到了optimx并且使用了很多方法。我观察到fmincg比optimx更快更准确。

这是我的测试:

让我们在没有约束的情况下最小化y = x^4。每个人都知道x应该等于零。

这是我的matlab程序:

clc;
clear all;
close all;
options = optimset('MaxIter', 50);
init = 1:.1:50;
init = init';
newFunc = @(p) costFunc(p);
tic
[nn_params, cost] = fmincg(newFunc, init, options);
toc 

costFunc函数:

function [cost grad] = costFunc(x)
  cost = sum(x.^4);
  grad = 4*x.^3;
end

和R脚本:

costFunc = function (x)
{
  return(sum(x^4))
}

grad = function(x) {
  return(4*x^3)
}

startTime = proc.time()
results = optimx(seq(1, 50,.1), fn=costFunc, gr=grad,
                 itnmax=50, method=c("Rcgmin"))
proc.time() - startTime

Octave在0.064秒后完成,准确度为10^-8。 R在1.8秒内完成,准确度仅为10^-4

当然这个问题太容易了。当我训练神经网络时,对于某些计算,八度音程可以在几分钟内给出结果,但R似乎永远在运行。

我想知道是否有人遇到过这个问题,谁能在R中建议更好的最小化函数作为八度音阶中fmincg的替代?

0 个答案:

没有答案
相关问题