[PYTHON] Einführung in die Thano-Funktionsdefinition und automatische Differenzierung

Dies ist der Artikel am 6. Tag des Adventskalenders für IT-Ingenieure der Hiroshima-Universität 2019.

Ich bin Yuto Araki, ein Student im 4. Jahr an der Fakultät für Ingenieurwissenschaften der Hiroshima-Universität! Ich werde ab nächstem Jahr IT-Ingenieur in Fukuoka sein! Ich mache Twitter mit dem Handle-Namen Imikoto, also überprüfen Sie das bitte auch. (https://twitter.com/es__135 )

Erste Schritte mit Thano

python


import numpy as np
import theano.tensor as T
from theano import function

x = T.dscalar('x')
y = T.dscalar('y')
z = x + y
f = function([x,y],z)
f(2,3) #array(5.)Wird ausgegeben.

(Zitiert aus http://deeplearning.net/software/theano/tutorial/adding.html#exercise)

Definieren Sie die in der folgenden Funktion verwendeten Variablen in den Zeilen 5 und 6 und erstellen Sie die Funktion in den Zeilen 7 und 8. Es mag etwas seltsam erscheinen, bevor Sie sich daran gewöhnen, aber sobald Sie sich daran gewöhnt haben, wird es einfacher, zu schreiben.

Schreiben wir den Drei-Quadrat-Satz, indem wir dies anwenden.

x = T.dscalar('x')
y = T.dscalar('y')
Pythagoras = ( x**2 + y**2 )**(1/2)
length     = function([x,y],Pythagoras)
length(3,4) #5.0 wird ausgegeben.

Automatische Differenzierung

Weitere Informationen finden Sie in Wikipedia. Sie können jedoch das Differential der definierten Funktion berechnen.

x = T.dscalar('x')

#y = sin(x) + cos(x)
y = T.sin(x) + T.cos(x)

#Bedeutung der Differenzierung von y in Bezug auf x
gy = T.grad(cost=y, wrt=x)

f = function(inputs=[x], outputs=gy)

#Finden Sie den Differentialkoeffizienten, indem Sie ein konkretes x angeben
print (f(0))        #1.0
print (f(np.pi / 4))#1.1102230246251565e-16
print (f(np.pi))    #-1.0000000000000002

(Dieser Artikel wurde als Referenz verwendet. Dieser Artikel enthält viele andere Beispiele, daher empfehle ich ihn.)

Ebenfalls,

x = T.dscalar('x')
y = T.dscalar('y')
z =  T.sin(x) + T.cos(y)
#z = sin(x) + cos(y)

#Bedeutung der Differenzierung von y in Bezug auf x
dx    = T.grad(cost=z, wrt=x)
dy    = T.grad(cost=z, wrt=y)
dz_dx = function(inputs=[x,y], outputs=dx)
dz_dy = function(inputs=[x,y], outputs=dy)
#Finden Sie den Differentialkoeffizienten, indem Sie ein konkretes x angeben
pi = math.pi
dz_dx(pi/2,pi/2) #array(6.123234e-17)
dz_dy(0,pi/2)    #array(-1.)

Auf diese Weise können Sie auch die Differenzierung zweier Variablen berechnen. Könnten Sie irgendwie verstehen, wie man es benutzt?

Zusammenfassung

Es ist ein etwas besonderer Schreibstil, aber als ich mich daran gewöhnt hatte, fand ich es überraschend einfach zu schreiben und zu verwenden. Wenn ich Zeit habe, möchte ich einen Artikel über die Implementierung eines neuronalen Netzwerks mit Thano schreiben. Dies ist die Bibliothek, die im frühen Deep Learning verwendet wurde, und ich kann mir nicht vorstellen, wie sie sich zu einer modernen Bibliothek entwickelt hat. Wird studieren

Verweise

theano Dokumentation http://deeplearning.net/software/theano/tutorial/adding.html#exercise

Eine Aufzeichnung künstlicher Intelligenz http://aidiary.hatenablog.com/entry/20150518/1431954329

github https://github.com/Theano/Theano

Recommended Posts

Einführung in die Thano-Funktionsdefinition und automatische Differenzierung
Einführung in PyTorch (1) Automatische Differenzierung
[Einführung in die Udemy Python3 + -Anwendung] 48. Funktionsdefinition
Einführung in Deep Learning ~ Lokalisierungs- und Verlustfunktion ~
[Einführung in Python3 Tag 1] Programmierung und Python
Einführung und Implementierung der Aktivierungsfunktion
Einführung in das tiefe Lernen ~ Funktionsnäherung ~
[Einführung in die Udemy Python3 + -Anwendung] 49. Funktionszitat und Rückgabewertdeklaration
Einführung in Deep Learning ~ Falten und Pooling ~
[Einführung in die Udemy Python3 + -Anwendung] 45. Aufzählungsfunktion
[Einführung in die Udemy Python3 + -Anwendung] 41. Eingabefunktion
[Einführung in die Udemy Python3 + -Anwendung] 44. Bereichsfunktion
[Einführung in die Udemy Python3 + -Anwendung] 46. Zip-Funktion
Zipline Funktion zum Kaufen und Verkaufen von Aktien
[Einführung in AWS] Text-Voice-Konvertierung und Wiedergabe ♪
[Einführung in Python3 Tag 12] Kapitel 6 Objekte und Klassen (6.3-6.15)
[Einführung in Python3, Tag 22] Kapitel 11 Parallele Verarbeitung und Vernetzung (11.1 bis 11.3)
[Einführung in die Udemy Python3 + -Anwendung] 64. Namespace und Gültigkeitsbereich
[Einführung in Python3 Tag 11] Kapitel 6 Objekte und Klassen (6.1-6.2)
[Python] Verwendung von Hash-Funktion und Taple.
[Einführung in PID] Ich habe versucht, ♬ zu steuern und zu spielen
Einführung in MQTT (Einführung)
Einführung in Scrapy (1)
Einführung in Scrapy (3)
Erste Schritte mit Supervisor
Einführung in Tkinter 1: Einführung
Einführung in PyQt
Einführung in Scrapy (2)
[Linux] Einführung in Linux
Einführung in Scrapy (4)
Einführung in discord.py (2)
[Einführung in die Udemy Python3 + -Anwendung] 35. Vergleichsoperatoren und logische Operatoren
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
So definieren Sie Decorator und Decomaker mit einer Funktion
Einführung in Pipe Operator und Funktionszusammensetzung in Python (vorläufig)
Probieren Sie das MXNet-Tutorial (2) aus: Symbol-Neuralnet-Diagramm und automatische Differenzierung
[Einführung in StyleGAN] Mayuyu und Anime lächelten ♬
[Einführung in die Udemy Python3 + -Anwendung] 68. Importanweisung und AS