Google a publié un outil d'apprentissage automatique "TensorFlow", j'ai donc immédiatement essayé un tutoriel.
Installez comme suit.
$ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
Jusqu'à présent, il semble ne prendre en charge que Python2, et lorsque j'ai essayé de l'installer également dans Python3, cela a échoué. Les dépendances telles que numpy sont également installées automatiquement.
Ci-dessous, j'ai essayé de l'implémenter en écrivant ce qui se trouve dans "MNIST For ML Beginners" sur le site officiel. (Notez que input_data n'est pas une fonction de tensorflow, mais celui de here est input_data. Doit être enregistré sous .py.)
# -*- coding : utf-8 -*-
import tensorflow as tf
import input_data
#acquisition de données mnist)
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
#Définissez un espace réservé pour avoir des informations d'entrée.
# shape(2ème argument)Si Aucun est spécifié pour la dimension de, n'importe quel nombre de dimensions de n'importe quelle longueur peut être pris en charge.
x = tf.placeholder("float", [None, 784])
#Définissez une variable qui contient des pondérations et des biais.
#La variable est une variable dont la valeur peut être modifiée par opération.
W = tf.Variable(tf.zeros([784, 10])) #Weight 784 Prend une entrée dimensionnelle et renvoie une sortie à 10 dimensions
b = tf.Variable(tf.zeros([10])) #Biais appliqué à la sortie en 10 dimensions
#Définissez un modèle de réseau neuronal.
#Produit matriciel de l'entrée x et du poids W(tf.matmul)Le biais b est ajouté à la sortie de, et la sortie finale est déterminée par softmax.
y = tf.nn.softmax(tf.matmul(x, W) + b)
#C'est la fin de la définition du modèle de réseau neuronal.
#Voici la mise en œuvre de la formation et de l'évaluation
# (Dans cet échantillon, nous apprenons en évaluant avec l'entropie croisée.)
#Données des enseignants(Bonne réponse)Définissez un espace réservé à conserver.
y_ = tf.placeholder("float", [None, 10])
#Définissez la formule de calcul de l'entropie croisée.
#Données de l'enseignant y_Et la logarithmique de la sortie y du modèle, et calculez la somme totale
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
#Définissez comment mettre à jour le modèle à chaque étape.
#0 pour chaque étape.Minimisez l'entropie croisée avec un taux de mise à jour de 01.
# (La méthode de propagation des erreurs est utilisée pour apprendre le réseau neuronal, mais cela semble être jugé par le modèle.)
# (Ici, y= tf.nn.softmax(...)Par conséquent, il semble que la méthode de propagation des erreurs en retour soit adoptée pour mettre à jour le réseau neuronal.)
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
#Préparez-vous à initialiser toutes les variables.
init = tf.initialize_all_variables()
#Définissez une session et initialisez toutes les variables.
sess = tf.Session()
sess.run(init)
#Faire de la formation
#Transmettre les données mnist à Session pour l'entraînement_Mettez à jour le modèle en fonction de la définition de l'étape.
for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
#Définissez une formule d'évaluation pour l'évaluation des performances.
#Modèle sortie y et données enseignant y pour les données d'entrée_Vérifiez s'ils correspondent.
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
#Il est défini que l'évaluation finale des performances est déterminée par la valeur moyenne.
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
#Évaluez les performances à l'aide des données de test et de leurs étiquettes.
print sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})
Ce que j'ai pensé de sa mise en œuvre était excellent en tant qu'outil d'apprentissage automatique, mais je pensais que c'était assez excellent en tant qu'outil d'analyse numérique. Impression que le calcul matriciel peut être facilement défini et que la vitesse de calcul est rapide. La mise en œuvre de la machine d'apprentissage est assez simple par rapport à d'autres bibliothèques, mais ce tutoriel à lui seul contient beaucoup de boîtes noires, ce qui m'a un peu inquiété. Certains tutoriels officiels concernent l'apprentissage en profondeur, alors j'aimerais également essayer cela.