19/02/2017 Python> Lien> Redirection immédiate vers le fichier de sortie> sys.stdout.flush ()

Environnement d'exploitation


GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 14.04 LTS desktop amd64
TensorFlow v0.11
cuDNN v5.1 for Linux
CUDA v8.0
Python 2.7.6
IPython 5.1.0 -- An enhanced Interactive Python.
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4

La sortie d'erreur du processus d'apprentissage de TensorFlow est effectuée par print ().

J'exécute du code TensorFlow avec redirection (> res), mais la taille du fichier de destination (res) n'a pas augmenté immédiatement. C'était une action qui a considérablement augmenté à un moment donné.

Je me suis demandé si je devais rincer et j'ai trouvé ce qui suit.

http://7rpn.hatenablog.com/entry/2015/11/29/131601

sys.stdout.flush()

En ajoutant sys.stdout.flush () à la 92ème ligne comme indiqué ci-dessous, la sortie d'erreur du processus d'apprentissage peut être effectuée en temps opportun.

Merci pour l'information.

learn_in100out100.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import tensorflow as tf
import tensorflow.contrib.slim as slim
import numpy as np

'''
v0.6 Feb. 19, 2017
    - add sys.stdout.flush() to immediately print 
v0.5 Feb. 18, 2017
    - add fc_drop()
v0.4 Feb. 15, 2017
    - fix bug > ZeroDivisionError: float division by zero @ shuffle_batch()
v0.3 Feb. 15, 2017
    - tweak [batch_size] for shuffle_batch()
v0.2 Feb. 15, 2017
    - fix bug > different dimensions for placeholder and network
v0.1 Feb. 06, 2017
    - read [test_in.csv],[test_out.csv]
'''

'''
codingrule:PEP8
'''


def fc_drop(inputs, *args, **kwargs):
    # Thanks to: http://qiita.com/shngt/items/f532601b4f059ce8584f
    net = slim.fully_connected(inputs, *args, **kwargs)
    return slim.dropout(net, 0.5)

filename_inp = tf.train.string_input_producer(["test_in.csv"])
filename_out = tf.train.string_input_producer(["test_out.csv"])
NUM_INP_NODE = 100
NUM_OUT_NODE = 100

# parse csv
# a. input node
reader = tf.TextLineReader()
key, value = reader.read(filename_inp)
deflist = [[0.] for idx in range(NUM_INP_NODE)]
input1 = tf.decode_csv(value, record_defaults=deflist)
# b. output node
key, value = reader.read(filename_out)
deflist = [[0.] for idx in range(NUM_OUT_NODE)]
output1 = tf.decode_csv(value, record_defaults=deflist)
# c. pack
# inputs = tf.pack([input1])
inputs = input1
# outputs = tf.pack([output1])
outputs = output1

batch_size = 2
inputs_batch, output_batch = tf.train.shuffle_batch(
    [inputs, outputs], batch_size, capacity=10, min_after_dequeue=batch_size)

input_ph = tf.placeholder("float", [None, 100])
output_ph = tf.placeholder("float", [None, 100])

# network
hiddens = slim.stack(input_ph, slim.fully_connected, [7, 7, 7],
                     activation_fn=tf.nn.sigmoid, scope="hidden")
# a. without dropout
# prediction = slim.fully_connected(
#    hiddens, 100, activation_fn=None, scope="output")
# b. with dropout
drpout = slim.stack(hiddens, fc_drop, [100, 100], scope='fc')
prediction = slim.fully_connected(
    drpout, 100, activation_fn=None, scope="output")
loss = tf.contrib.losses.mean_squared_error(prediction, output_ph)

train_op = slim.learning.create_train_op(loss, tf.train.AdamOptimizer(0.001))

init_op = tf.initialize_all_variables()

with tf.Session() as sess:
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(sess=sess, coord=coord)

    try:
        sess.run(init_op)
        # for idx in range(10000):
        for idx in range(100000):
            inpbt, outbt = sess.run([inputs_batch, output_batch])
            _, t_loss = sess.run(
                [train_op, loss],
                feed_dict={input_ph: inpbt, output_ph: outbt})

            if (idx+1) % 100 == 0:
                print("%d,%f" % (idx+1, t_loss))
                sys.stdout.flush()
    finally:
        coord.request_stop()

    coord.join(threads)
$ python learn_in100out100.py > res.learn.N\=1000_dropout@output_longrun_170218

res.learn.N \ = 1000_dropout @ output_longrun_170218 a été mis à jour en conséquence, ce qui facilite la vérification du graphique d'erreur dans Jupyter.

qiita.png

Voici le résultat lors de l'apprentissage. Il est vite devenu clair que le résultat était complètement inutile. .. ..

qiita.png

Recommended Posts

19/02/2017 Python> Lien> Redirection immédiate vers le fichier de sortie> sys.stdout.flush ()
Sortie vers un fichier csv avec Python
Changer la destination de sortie standard en un fichier en Python
[Python] Comment générer une table pandas dans un fichier Excel
Lien pour commencer avec python
Conseils sur l'entrée / la sortie de fichier Python
[Python] Ecrire dans un fichier csv avec Python
Écrire la sortie standard dans un fichier
Notes pour l'entrée / sortie de fichier Python
Téléchargement de fichiers vers Azure Storage (Python)
[Python] Comment convertir un fichier db en csv
Sortir les caractères de couleur en joli avec python
Comment convertir Python en fichier exe
Convertir un fichier psd en png en Python
Sortie du journal Python vers la console avec GAE
Python> Numéros de sortie de 1 à 100, 501 à 600> Pour csv
[Route vers Python intermédiaire] Résumé du lien de l'article
Python / subprocess> Implémentation de lien symbolique pour obtenir uniquement le nom du fichier de destination> os.readlink ()
La synchronisation de la sortie est incorrecte lorsque la sortie standard (erreur) est convertie en fichier en Python
Comment lire un fichier CSV avec Python 2/3
MessagePack-Try pour lier Java et Python avec RPC
Importer un fichier Excel depuis Python (enregistré dans DB)
Du dessin de fichier au graphique en Python. Élémentaire élémentaire
Comment créer un fichier JSON en Python
[Python] Comment lire des fichiers Excel avec des pandas
Convertir un fichier svg en png / ico avec Python
Écriture de journaux dans un fichier CSV (Python, langage C)
J'ai essayé de sortir LLVM IR avec Python
Comment effacer les caractères générés par Python
Exporter la version Python3 OpenCV KeyPoint dans un fichier
Comment générer "Ketsumaimo" en standard en Python
Je veux écrire dans un fichier avec Python
Exemple pour mettre Python Kivy dans un fichier
[CentOS8] Comment afficher la sortie Python standard dans le journal systemd
Évaluation de la vitesse de sortie du fichier CSV en Python
Fichier python de script
Traitement de fichiers Python
Sortie de la table spécifiée de la base de données Oracle en Python vers Excel pour chaque fichier
"Backport" vers python 2
Analyser une chaîne JSON écrite dans un fichier en Python
Modèle de script python pour lire le contenu du fichier
python> Changer le propriétaire du fichier> os.chown ("chemin / vers / fichier", uid, gid)
J'ai essayé de toucher un fichier CSV avec Python
[python] option pour désactiver la sortie de click.progressbar
Comment mesurer le temps de lecture d'un fichier mp3 avec python
Lisez le fichier xml en vous référant au didacticiel Python
Je veux échantillonner au hasard un fichier avec Python
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
[Python] Changer l'entrée standard du clavier en fichier texte
Lire le fichier json avec Python, le formater et générer le json
Procédure pour convertir un fichier python en exe à partir de la construction de l'environnement Ubunts
[Python-pptx] Afficher les informations de police PowerPoint au format csv avec python
Sortie sur "LED 7 segments" en utilisant python avec Raspberry Pi 3!
Sortie d'un vidage binaire en binaire et retour dans un fichier binaire
[Python] Comment afficher les valeurs de liste dans l'ordre