Pour ceux qui ne sont pas familiarisés avec l'apprentissage automatique mais qui souhaitent calculer dans la plage qu'ils peuvent comprendre, essayons la séquence de nombres de Fibonacci avec TensorFlow.
Séquence de Fibonacci
Par exemple, pour calculer
u = 1
v = 0
for i in range(100):
print i, v
u = u + v
v = u - v
Vous pouvez le faire comme ça.
TensorFlow
import tensorflow as tf
Supposons que vous vouliez lire avec.
Variable Commençons par changer les variables u et v en variables TensorFlow. Pour ce faire, utilisez Variable comme suit:
u = tf.Variable(1, "int64")
v = tf.Variable(0, "int64")
J'ai choisi int64 comme contre-mesure de débordement, mais malheureusement, un débordement se produit à la section 93. Si cela est omis, il sera traité comme int32.
On dirait que vous pouvez l'imprimer avec print u
, mais malheureusement vous n'obtiendrez pas ce que vous attendez. TensorFlow est divisé en une phase de définition de variables, de fonctions et de procédures, et une phase de traitement effectif des données.
Utilisez tf.Session pour traiter réellement les données. Les variables doivent être initialisées au début de la session. Utilisez tf.initialize_all_variables pour cela. Et vous pouvez obtenir les valeurs de u et v en procédant comme suit.
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
print sess.run(v)
Prenez des valeurs et exécutez des procédures avec sess.run.
Le reste est la partie mise à jour de la valeur. Utilisez tf.assign pour l'affectation. Utilisez tf.add et tf.sub pour l'addition et la soustraction. Et définissons une procédure appelée substitution.
update_u = tf.assign(u, tf.add(u, v)) # u = u + v
update_v = tf.assign(v, tf.sub(u, v)) # v = u - v
Pour résumer l'histoire ci-dessus,
import tensorflow as tf
u = tf.Variable(tf.cast(1,"int64"))
v = tf.Variable(tf.cast(0,"int64"))
update_u = tf.assign(u, tf.add(u,v))
update_v = tf.assign(v, tf.sub(u,v))
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
for i in range(100):
print i, sess.run(v)
sess.run(update_u)
sess.run(update_v)
Quand je l'exécute, je vois un journal qui commence par I, mais je m'en fiche car c'est Info.
Si vous n'avez pas encore touché TensorFlow, faisons quelque chose.
Recommended Posts