我一直试图让一个简单的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'它说它是一个元素操作,所以我不确定我哪里出错了。任何帮助,将不胜感激。 :)
答案 0 :(得分:1)
这里有一些问题。
您无需预先分配g
,只需在下一行重新分配。
您需要使用元素划分./
而不是矩阵划分/
所以正确的功能是:
function g = sigmoid(z)
g = 1 ./ (1 + exp(-z));
end