J'ai essayé le Tutoriel officiel de TensorFlow C'est juste un simple graphique de calcul. Assurez-vous que TensorFlow est installé.
Exécutez python
dans le terminal (ci-après dans l'interpréteur)
>>>import tensorflow as tf
>>>node1 = tf.constant(3.0, dtype=tf.float32) #Constante 3.Mettre à 0
>>>node2 = tf.constant(4.0)
>>>print(node1, node2)
Les nœuds génèrent 3.0 et 4.0 lorsqu'ils sont évalués. Pour évaluer réellement un nœud, vous devez exécuter un graphe de calcul dans la session.
sortie d'impression
Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)
Créez un objet Session et appelez la méthode d'exécution pour exécuter le graphe de calcul (nœud1, nœud2) pour évaluation.
>>>sess = tf.Session()
>>>print(sess.run([node1, node2]))
sortie d'impression
[3.0, 4.0]
Un calcul complexe (nouveau graphe de calcul) est créé en combinant ces nœuds (nœud1, nœud2). Ajouter (créer un ajout) pour le moment
>>>node3 = tf.add(node1, node2) # node1 + node2
>>>print("node3:", node3)
>>>print("sess.run(node3):", sess.run(node3))
sortie d'impression
node3: Tensor("Add:0", shape=(), dtype=float32)
sess.run(node3): 7.0
Puisque les constantes sont définies dans ce graphique telles quelles, utilisez placeholder
pour accepter l'entrée externe.
>>>a = tf.placeholder(tf.float32)
>>>b = tf.placeholder(tf.float32)
>>>adder_node = a + b # + provides a shortcut for tf.add(a, b)
>>>print(sess.run(adder_node, {a: 3, b: 4.5}))
>>>print(sess.run(adder_node, {a: [1, 3], b: [2, 4]}))
sortie d'impression
7.5
[ 3. 7.]
Rendons le graphique de calcul plus compliqué.
>>>add_and_triple = adder_node * 3.
>>>print(sess.run(add_and_triple, {a: 3, b: 4.5}))
Lorsque je le convertis en une formule, il effectue le calcul suivant. «(a + b) * 3»
sortie d'impression
22.5
L'apprentissage automatique doit pouvoir modifier le graphique pour obtenir une nouvelle sortie avec la même entrée. Les variables vous permettent d'ajouter des paramètres entraînables à votre graphique.
Lorsque tf.constant
est appelé, il est initialisé et une constante est définie, donc elle ne peut pas être modifiée.
tf.Variable
peut être mis à jour sans initialiser la variable même si la variable est appelée.
>>>W = tf.Variable([.3], dtype=tf.float32)
>>>b = tf.Variable([-.3], dtype=tf.float32)
>>>x = tf.placeholder(tf.float32)
>>>linear_model = W * x + b
>>>init = tf.global_variables_initializer()
>>>sess.run(init)
>>>print(sess.run(linear_model, {x: [1, 2, 3, 4]}))
ʻInit = .. ~ ʻest une variable pour initialiser toutes les variables du programme TensorFlow. Les variables ne sont initialisées que lorsque vous appelez sess.run (init)
sortie d'impression
[ 0. 0.30000001 0.60000002 0.90000004]
Nous avons besoin d'un espace réservé pour fournir la valeur de la valeur souhaitée (données de l'enseignant), et nous avons également besoin d'une fonction de perte.
Mesure la distance entre la valeur produite par le modèle actuel et les données de l'enseignant. Utilisez le modèle de perte standard pour la régression linéaire des valeurs produites par le modèle et les données d'apprentissage. linear_model --y
calcule le vecteur de l'erreur que chaque élément tyers, et met l'erreur au carré avec tf.square
. Appelez ensuite tf.reduce_sum
pour générer un seul scalaire qui résume toutes les erreurs.
>>>y = tf.placeholder(tf.float32)
>>>squared_deltas = tf.square(linear_model - y)
>>>loss = tf.reduce_sum(squared_deltas)
>>>print(sess.run(loss, {x: [1, 2, 3, 4], y: [0, -1, -2, -3]}))
La sortie d'impression renvoie la valeur de la fonction de perte.
sortie d'impression
23.66
{x: [1, 2, 3, 4], y: [0, -1, -2, -3]}
En regardant les deux valeurs de l'entrée, quand W = -1 b = 1
La perte est probablement nulle.
Vous pouvez utiliser tf.assign
pour changer le poids et le biais.
>>>fixW = tf.assign(W, [-1.])
>>>fixb = tf.assign(b, [1.])
>>>sess.run([fixW, fixb])
>>>print(sess.run(loss, {x: [1, 2, 3, 4], y: [0, -1, -2, -3]}))
sortie d'impression
0.0
Recommended Posts