2017-03-02 3 views
1

Der folgende Code geschrieben wird in Octave Programmiersprachesigmoid in Python, den Skalar, Vektor oder eine Matrix

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

Es berechnet eine Sigmoid-Funktion übernehmen kann und Skalar, Vektor oder eine Matrix nehmen. Zum Beispiel wenn ich die oben in eine Funktion sigmoid setzen (z), wobei z = 0 ist, wird das Ergebnis sein:

result=sigmoid(0) 

Das Ergebnis wird Skalar sein (0,5) wenn die einen Vektor passieren sagen z = [0,2, 0,4, 0,1], es würde ein Ausgangsvektor für die Ergebnisse als: -

result=sigmoid(z) 

Ergebnis ist ein Vektor:

0.54983 0.59869 0.52498 

wenn z eine Matrix wie

012.
z=[ 0.2 0.4; 0.5 0.7; 0.9 .004] 

result = sigmoid(z) 

das Ergebnis =

0.54983 0.59869 
    0.62246 0.66819 
    0.71095 0.50100 

Nun, wie ich ein ähnliches Verfahren in Python implementieren ?. Ich habe den folgenden Code versucht,

g=1./ (1 + math.exp(-z)) 

Aber es funktioniert nur für Skalar. Nicht für Vektor und Matrix. Was mache ich falsch. Entschuldigung meine Frage vor war nicht sehr klar. Ich habe es neu bearbeitet.

+0

Vielleicht war ich nicht klar, wie ich mehr Dinge in einem einzigen Satz hinzuzufügen versuchte. – sunny

+0

Ich habe meine Frage neu bearbeitet. Danke, dass du es aufgezeigt hast. – sunny

Antwort

2

Das numpige Modul, das in vielen Python-Distributionen enthalten ist und einfach zu anderen hinzugefügt werden kann, verfügt über Array-Funktionen. Hier ist, wie Sie in Python mit numpy tun, was Sie wollen. Beachten Sie, dass das Definieren eines Arrays in numpy etwas anders ist als in Octave, aber der Sigmoid-Ausdruck ist fast genau derselbe.

from numpy import array, exp 

z = array([ 0.2, 0.4, 0.1]) 
print('z = \n', z) 
g = 1/(1 + exp(-z)) 
print('g =\n', g) 

print() 

z = array([[0.2, 0.4], [0.5, 0.7], [0.9, .004]]) 
print('z = \n', z) 
g = 1/(1 + exp(-z)) 
print('g =\n', g) 

Die Ergebnisse dieser Code (in IPython läuft) sind:

z = 
[ 0.2 0.4 0.1] 
g = 
[ 0.549834 0.59868766 0.52497919] 

z = 
[[ 0.2 0.4 ] 
[ 0.5 0.7 ] 
[ 0.9 0.004]] 
g = 
[[ 0.549834 0.59868766] 
[ 0.62245933 0.66818777] 
[ 0.7109495 0.501  ]] 
+0

Super! Das hat wirklich funktioniert. Ich hätte wissen müssen, dass numpy alle erforderlichen mathematischen Funktionen wie Log, e unterstützt. – sunny

Verwandte Themen