1

我一直在尝试让一个简单的 sigmoid 函数在 matlab 中工作,它似乎只适用于矩阵的第一个元素。

我的代码是:

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

现在它适用于简单的值,例如:

>>sigmoid(0)
ans = 0.5000

但是对于:`

>>k = [0; 0; 0; 0; 0];
>>sigmoid(k)`

它给了我:

ans = 0.5000 0 0 0 0

调查 'exp' 它说它是一个元素操作,所以我不确定我哪里出错了。任何帮助,将不胜感激。:)

4

1 回答 1

1

这里有几个问题。

  1. 您无需预先分配g即可在下一行重新分配它。

  2. 您需要使用逐元素除法./而不是矩阵除法/

所以正确的功能是:

function g = sigmoid(z)
    g = 1 ./ (1 + exp(-z));
end
于 2016-09-14T15:06:41.213 回答