1

単純なシグモイド関数を 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 に答える