gpt4 book ai didi

matlab - 从 Octave 的 fminunc 到 Julia 的带参数梯度函数优化

转载 作者:行者123 更新时间:2023-12-04 13:32:06 26 4
gpt4 key购买 nike

我将我的代码从 Octave 传递给 julia,在这种情况下是逻辑回归。梯度函数除了初始 theta 之外,还需要 X 与我的特征和 Y 与寻求值。
在 Octave 作品中function [J, grad] = costFunction(theta, X, y)options = optimset('GradObj', 'on', 'MaxIter', 400);[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options); Julia 第一次尝试

optimize(t->CostFunction(t, X1, y), initial_theta, BFGS())
MethodError: 没有方法匹配 -(::Tuple{Float64,Array{Float64,2}},::Tuple{Float64,Array{Float64,2}})
所以我将函数分为两部分:Cost 和 Gradient
function CostFunction2(theta, X, y)
J = 0;
#m = length(y);
m = size(y,1);
grad = zeros(size(theta));
J = 1/m * sum( (-y .* log.(sigmoid(X*theta))) - ((1.0 .- y) .* log.(1.0 .- sigmoid(X*theta))) );
return J;
end


function Gradient2(X, y, theta)
grad = zeros(size(theta));
grad = (1/m) .* (sum((sigmoid(X*theta).-y) .* X, dims=1))';
return grad;
end
我只输入了成本函数并且它起作用了,但是我没有 theta 的最后一个值。我不知道如何得到它
optimize(t->CostFunction2(t, X1, y), initial_theta, BFGS())
我试过了,但没有用,我找不到任何说明如何或带来示例的引用资料
optimize(t->CostFunction2(t, X1, y), Gradient2(X, y, t), initial_theta, BFGS())
UndefVarError: t 未定义
如何获得获得的 theta 值?以及如何包含我自己的具有各种参数的梯度函数?
我希望你能帮助我,非常感谢

最佳答案

我已经清理了您代码中的拼写错误,添加了缺失的定义,并删除了不必要的操作。
这些更改后,以下工作:

using DelimitedFiles

Data = readdlm("ex2data1.txt", ',', Float64)
X = Data[:,1:2]
y = Data[:,3]
m, n = size(X)
X = [ones(m) X]
initial_theta = zeros(n + 1)

sigmoid(x) = 1 / (1 + exp(-x))

function CostFunction2(theta, X, y)
Xt = X*theta # do this step outside as it is repeated twice otherwise
return sum(-y .* log.(sigmoid.(Xt)) .- (1.0 .- y) .* log.(1.0 .- sigmoid.(Xt)))
end

using Optim
optimize(t->CostFunction2(t, X, Y), initial_theta, BFGS())

关于matlab - 从 Octave 的 fminunc 到 Julia 的带参数梯度函数优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64503638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com