2016-07-31 22 views
-2

Ich lerne über maschinelles Lernen aus Courrera. Ich versuche, die sigmoid Funktion zu berechnen, und ich habe den folgenden Code:Berechne die Sigmoid-Funktion

function g = sigmoid(z) 
%SIGMOID Compute sigmoid functoon 
% J = SIGMOID(z) computes the sigmoid of z. 

% You need to return the following variables correctly 

g = zeros(size(z)); 

% ====================== YOUR CODE HERE ====================== 

% Instructions: Compute the sigmoid of each value of z (z can be a matrix, 
%    vector or scalar). 



g = (1 + exp(-1 * z)) .^ -1; 
g = 1/(1+ (1/exp(z))) 


% my question is why the first g calculation works for matrix(say 100*2) however the second only works for (100*1) as both are trying to do the same this. 


% ============================================================= 

end 

Antwort

0

.^Funktioniert für jedes Element in der Matrix./nicht. ./ kann (obwohl Sie möglicherweise einige der 1-Matrizen von 1 machen müssen)

0

Sie For-Schleifen verwenden müssen, um Sigmoid-Funktion auf jedes Element des Vektors oder der Matrix anzuwenden.

2

richtige Antwort

rt=-z; %changing sign of z 
rt=rt'; %transposing matrix 

g=1./(1+e.^(rt)); %you need to use dot(.) while dividing and also while finding power to apply those operation for every element in the matrix. 

Antwort für Ihre Frage

1.g = (1 + exp(-1 * z)) .^ -1; 
2.g = 1/(1+ (1/exp(z)))   

Sie Punktoperator verpasst haben (.) In der zweiten Funktion für die Teilung und die erste Funktion für exp().

2

Was Sie vielleicht ausprobieren möchten, ist, die Elementoperationen zu nutzen (mehr Informationen aus Octaves offizieller Dokumentation here).

Beachten Sie, dass mit den Element Operationen:

Wenn Sie zwei Matrizen der gleichen Größe haben, können Sie Element für Element Operationen auf ihnen

So wie definiert g und z durchführen können, sind von Bei gleicher Größe sollte der folgende Code die Sigmoid-Funktion zurückgeben.

g = (g.+1)./(1 + e.^-z); 

Also im Wesentlichen macht es 2 einfache Dinge. Zuerst wird die Nullenmatrix oder der Skalar in Eins mit Einsen "1" umgewandelt. Dann teilt es jedes Element für jedes entsprechende Element mit (1 + e z).