Mon nom est Cho. Je développe généralement des applications Web en utilisant CakePHP3.
Récemment, je m'intéresse à Python et je l'ai touché personnellement.
Cette fois, j'aimerais écrire une histoire sur la création d'un apprentissage automatique simple à l'aide de TensorFlow.
・ Débutant de TensorFlow
-Développer en utilisant docker sur mac.
・ Puissance expressive utilisant le graphique de flux de données ・ Fonctionne en mode CPU / GPU sans modification de code ・ Disponible du test d'idée au service ・ Prise en charge ** Python ** / C ++
Commençons par installer à partir de l'environnement docker. Veuillez définir l'environnement en vous référant à l'URL suivante. https://docs.docker.com/engine/installation/mac/#/docker-for-mac
Appuyez sur la commande suivante pour exécuter le conteneur à partir de l'image du docker
docker run -it b.gcr.io/tensorflow/tensorflow-full
Vérifiez le fonctionnement
$ python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
>>>
À ce stade, l'environnement de développement a été défini.
Maintenant que l'environnement est défini Apprenez les termes utilisés dans TensorFlow. Operation Les nœuds sur le graphe sont appelés Operation (op). L'opération peut recevoir un ou plusieurs Tensors. Operation renvoie le résultat de l'exécution du calcul sous la forme d'un ou plusieurs tenseurs.
Tensor En interne, toutes les données sont représentées via Tensor. Tensor est comme un tableau multidimensionnel, où seul Tensor interagit entre les opérations du graphique.
Session Vous avez besoin d'un objet Session pour exécuter le graphique. Session encapsule l'environnement d'exécution d'Operation.
Variables Les variables sont utilisées pour enregistrer et mettre à jour les paramètres après l'exécution du graphique. C'est le rôle de buffer qui stocke Tensor en mémoire.
Maintenant, utilisons TensorFlow personnellement.
Veuillez consulter l'URL suivante pour les détails de la méthode de descente la plus raide https://ja.wikipedia.org/wiki/%E6%9C%80%E6%80%A5%E9%99%8D%E4%B8%8B%E6%B3%95
Matrice pondérée «W» et biais «b»
import tensorflow as tf
import numpy as np
#Mettez 100 données avec Numpy aléatoire.
x_data = np.float32(np.random.rand(2, 100))
#L'objectif d'apprentissage est calculé par la formule suivante. (W = [0.1, 0.2], b = 0.3)
y_data = np.dot([0.100, 0.200], x_data) + 0.300
Définissez un modèle en utilisant les données d'entrée et W, b
#b vaut 0,
b = tf.Variable(tf.zeros([1]))
#W est une variable de poids 1x2(Initialiser avec une valeur aléatoire égale)
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b
#Définition de la fonction de perte
loss = tf.reduce_mean(tf.square(y - y_data))
#Initialiser la fonction de perte avec la méthode de descente la plus raide(0.5 est le ratio d'apprentissage)
optimizer = tf.train.GradientDescentOptimizer(0.5)
#Définition de l'opération d'apprentissage
train = optimizer.minimize(loss)
Début de la session d'apprentissage
#Initialiser toutes les variables.
init = tf.initialize_all_variables()
# Session start
sess = tf.Session()
sess.run(init)
#Apprenez 200 fois.
for step in xrange(0, 201):
sess.run(train)
if step % 20 == 0:
print step, sess.run(W), sess.run(b)
résultat
0 [[ 0.8228116 0.25179306]] [-0.21591029]
20 [[ 0.31065419 0.22789511]] [ 0.17903577]
40 [[ 0.15808699 0.20829338]] [ 0.26633102]
60 [[ 0.11601268 0.20247138]] [ 0.29062203]
80 [[ 0.10441278 0.20073807]] [ 0.2973859]
100 [[ 0.10121564 0.20022091]] [ 0.29927069]
120 [[ 0.10033476 0.20006624]] [ 0.29979634]
140 [[ 0.10009213 0.20001991]] [ 0.29994306]
160 [[ 0.10002533 0.20000601]] [ 0.29998407]
180 [[ 0.10000696 0.20000178]] [ 0.29999554]
200 [[ 0.10000192 0.20000054]] [ 0.29999873]
・ Pour le moment, Python est incroyable et TensorFlow est incroyable. ・ Cette fois, j'ai senti que je devais étudier plus de mathématiques tout en essayant de résoudre le problème que j'avais donné comme tâche d'exemple. ・ Cette fois, j'ai essayé de toucher un peu l'apprentissage automatique avec Python, alors j'aimerais aussi toucher d'autres endroits.
Recommended Posts