[PYTHON] Introduction à la définition de la fonction Thano et à la différenciation automatique

Ceci est l'article sur le 6ème jour du Calendrier de l'Avent 2019 des ingénieurs informatiques de l'Université d'Hiroshima.

Je suis Yuto Araki, étudiant de 4e année à la Faculté d'ingénierie de l'Université d'Hiroshima! Je serai ingénieur informatique à Fukuoka à partir de l'année prochaine! Je fais Twitter avec le pseudonyme Imikoto, alors veuillez vérifier cela également. (https://twitter.com/es__135 )

Premiers pas avec 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.)Est sortie.

(Extrait de http://deeplearning.net/software/theano/tutorial/adding.html#exercise)

Définissez les variables utilisées dans la fonction ci-dessous sur les 5ème et 6ème lignes, et créez la fonction sur les 7ème et 8ème lignes. Cela peut sembler un peu étrange avant de vous y habituer, mais une fois que vous vous y serez habitué, cela deviendra plus facile à écrire.

Écrivons le théorème des trois carrés en appliquant ceci.

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 est émis.

Différenciation automatique

Pour plus d'informations, lisez Wikipedia, mais vous pouvez calculer le différentiel de la fonction définie.

x = T.dscalar('x')

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

#Signification de différencier y par rapport à x
gy = T.grad(cost=y, wrt=x)

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

#Trouvez le coefficient différentiel en donnant un x concret
print (f(0))        #1.0
print (f(np.pi / 4))#1.1102230246251565e-16
print (f(np.pi))    #-1.0000000000000002

(Cet article a été utilisé comme référence. Cet article est recommandé car de nombreux autres exemples sont présentés.)

Aussi,

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

#Signification de différencier y par rapport à 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)
#Trouvez le coefficient différentiel en donnant un x concret
pi = math.pi
dz_dx(pi/2,pi/2) #array(6.123234e-17)
dz_dy(0,pi/2)    #array(-1.)

De cette manière, vous pouvez également calculer la différenciation de deux variables. Pourriez-vous comprendre comment l'utiliser?

Résumé

C'est une manière un peu spéciale d'écrire, mais une fois que je m'y suis habitué, j'ai trouvé que c'était étonnamment facile à écrire et à utiliser. Si j'ai le temps, j'aimerais écrire un article sur la mise en œuvre d'un réseau neuronal à l'aide de Thano. C'est la bibliothèque utilisée au début du Deep Learning, et je ne peux pas imaginer comment elle a évolué pour devenir une bibliothèque moderne. Étudiera

Les références

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

Un record d'intelligence artificielle http://aidiary.hatenablog.com/entry/20150518/1431954329

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

Recommended Posts

Introduction à la définition de la fonction Thano et à la différenciation automatique
Introduction à PyTorch (1) Différenciation automatique
[Introduction à l'application Udemy Python3 +] 48. Définition des fonctions
Introduction à l'apprentissage profond ~ Fonction de localisation et de perte ~
[Introduction à Python3 Jour 1] Programmation et Python
Introduction et mise en œuvre de la fonction d'activation
Introduction à l'apprentissage en profondeur ~ Approximation des fonctions ~
[Introduction à Udemy Python3 + Application] 49. Citation de fonction et déclaration de valeur de retour
Introduction au Deep Learning ~ Pliage et mise en commun ~
[Introduction à l'application Udemy Python3 +] 45. fonction enumerate
[Introduction à l'application Udemy Python3 +] 41. fonction d'entrée
[Introduction à l'application Udemy Python3 +] 44. fonction range
[Introduction à l'application Udemy Python3 +] 46. fonction zip
Fonction tyrolienne pour acheter et vendre des actions
[Introduction à AWS] Conversion de texte-voix et lecture ♪
[Introduction à Python3 Jour 12] Chapitre 6 Objets et classes (6.3-6.15)
[Introduction à Python3, jour 22] Chapitre 11 Traitement parallèle et mise en réseau (11.1 à 11.3)
[Introduction à l'application Udemy Python3 +] 64. Espace de noms et portée
[Introduction à Python3 Jour 11] Chapitre 6 Objets et classes (6.1-6.2)
[Python] Comment utiliser la fonction de hachage et taple.
[Introduction au PID] J'ai essayé de contrôler et de jouer ♬
Introduction à MQTT (Introduction)
Introduction à Scrapy (1)
Introduction à Scrapy (3)
Premiers pas avec Supervisor
Introduction à Tkinter 1: Introduction
Introduction à PyQt
Introduction à Scrapy (2)
[Linux] Introduction à Linux
Introduction à Scrapy (4)
Introduction à discord.py (2)
[Introduction à l'application Udemy Python3 +] 35. Opérateurs de comparaison et opérateurs logiques
[Introduction à Python] Comment itérer avec la fonction range?
Comment définir Decorator et Decomaker avec une seule fonction
Introduire l'opérateur pipe et la composition de fonction à Python (provisoire)
Essayez le didacticiel MXNet (2): graphique Symbol-Neuralnet et différenciation automatique
[Introduction à StyleGAN] Mayuyu et l'anime ont souri ♬
[Introduction à Udemy Python3 + Application] 68. Instruction d'importation et AS