gpt4 book ai didi

matlab - 提供的目标函数必须返回标量值

转载 作者:行者123 更新时间:2023-12-02 10:58:08 25 4
gpt4 key购买 nike

我正在尝试在Matlab中编写ML算法。这些是我的不同功能:

sigmoid.m:

function g = sigmoid(z)
g = zeros(size(z));
g = 1 ./ (1+exp(z));

costFunction.m
function [J, grad ] = costFunction(theta, X, y)

m = length(y); % number of training examples
z = -X * theta;
g = sigmoid(z);
J = 1/m * ((-y * log(g)') - ((1 - y) * log(1 - g)'));

grad = zeros(size(theta'));
grad = (1/m) * (X' * (g - y));

ex2.m(这是我的项目的主文件,我把相对的行我得到了此错误消息)
options = optimset('GradObj', 'on', 'MaxIter', 400);

[theta, cost] = ...
fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);

错误信息:

Error using fminunc (line 348) Supplied objective function must return a scalar value.

Error in ex2 (line 97) fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);



我不知道上面是否有足够的信息?如果没有,请告知我以添加其他信息。

最佳答案

我更改了以下代码行:

J = 1/m * ((-y * log(g)') - ((1 - y) * log(1 - g)'));

到下面的代码行:
J = 1/m * (((-y)' * log(g)) - ((1 - y)' * log(1 - g)));

问题解决了! yg100*1矩阵,对于以前的代码,我具有 J=100*100矩阵,但是对于新代码,我具有 J=1*1矩阵或标量数,并且已解决了问题!

关于matlab - 提供的目标函数必须返回标量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54275574/

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