2017-02-19 Python> Link> Sofort zur Ausgabedatei umleiten> sys.stdout.flush ()

Betriebsumgebung


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

Die Fehlerausgabe des Lernprozesses von TensorFlow erfolgt über print ().

Ich führe TensorFlow-Code mit Umleitung (> res) aus, aber die Größe der Zieldatei (res) hat sich nicht sofort erhöht. Es war eine Aktion, die zu einem bestimmten Zeitpunkt stark zunahm.

Ich fragte mich, ob ich spülen sollte und fand folgendes.

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

sys.stdout.flush()

Durch Hinzufügen von "sys.stdout.flush ()" zur 92. Zeile, wie unten gezeigt, kann die Fehlerausgabe des Lernprozesses zeitnah ausgeführt werden.

Danke für die 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 wurde entsprechend aktualisiert, um das Überprüfen des Fehlerdiagramms in Jupyter zu vereinfachen.

qiita.png

Unten ist das Ergebnis während des Lernens. Es wurde schnell klar, dass das Ergebnis völlig nutzlos war. .. ..

qiita.png

Recommended Posts

2017-02-19 Python> Link> Sofort zur Ausgabedatei umleiten> sys.stdout.flush ()
Ausgabe in eine CSV-Datei mit Python
Ändern Sie das Standardausgabeziel in eine Datei in Python
[Python] So geben Sie eine Pandas-Tabelle in eine Excel-Datei aus
Link, um mit Python zu beginnen
Tipps zur Eingabe / Ausgabe von Python-Dateien
[Python] Mit Python in eine CSV-Datei schreiben
Schreiben Sie die Standardausgabe in eine Datei
Hinweise zur Eingabe / Ausgabe von Python-Dateien
Datei-Upload in Azure Storage (Python)
[Python] So konvertieren Sie eine Datenbankdatei in CSV
Geben Sie Farbzeichen mit Python zu hübsch aus
So konvertieren Sie Python in eine exe-Datei
Konvertieren Sie die psd-Datei in Python in png
Python-Protokoll mit GAE an die Konsole ausgeben
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV
[Road to Intermediate Python] Zusammenfassung der Artikelverknüpfungen
Python / Unterprozess> Symbolischer Link Implementierung, um nur den Zieldateinamen abzurufen> os.readlink ()
Das Ausgabe-Timing ist falsch, wenn die Standardausgabe (Fehlerausgabe) in eine Datei in Python konvertiert wird
Lesen einer CSV-Datei mit Python 2/3
MessagePack-Versuchen Sie, Java und Python mit RPC zu verbinden
Excel-Datei aus Python importieren (in DB registriert)
Von der Datei zur Diagrammzeichnung in Python. Grundstufe Grundstufe
So erstellen Sie eine JSON-Datei in Python
[Python] Wie man Excel-Dateien mit Pandas liest
Konvertieren Sie die SVG-Datei mit Python in png / ico
Schreiben von Protokollen in eine CSV-Datei (Python, C-Sprache)
Ich habe versucht, LLVM IR mit Python auszugeben
So löschen Sie die von Python ausgegebenen Zeichen
Exportieren Sie PythonC Version OpenCV KeyPoint in eine Datei
So geben Sie "Ketsumaimo" standardmäßig in Python aus
Ich möchte mit Python in eine Datei schreiben
Beispiel, um Python Kivy in eine Datei zu packen
[CentOS8] So geben Sie die Standard-Python-Ausgabe in das Systemd-Protokoll aus
Geschwindigkeitsbewertung der Ausgabe von CSV-Dateien in Python
Skript-Python-Datei
Python-Dateiverarbeitung
Geben Sie für jede Datei die angegebene Tabelle der Oracle-Datenbank in Python in Excel aus
"Backport" zu Python 2
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
Vorlage des Python-Skripts zum Lesen des Inhalts der Datei
Python> Dateieigentümer ändern> os.chown ("Pfad / zu / Datei", UID, GID)
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Option [Python] zum Deaktivieren der Ausgabe von click.progressbar
So messen Sie die Wiedergabezeit von MP3-Dateien mit Python
Lesen Sie die XML-Datei anhand des Python-Tutorials
Ich möchte eine Datei mit Python zufällig testen
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
[Python] Ändern Sie die Standardeingabe von der Tastatur in eine Textdatei
Lesen Sie die json-Datei mit Python, formatieren Sie sie und geben Sie json aus
Verfahren zum Konvertieren einer Python-Datei in eine Exe aus der Ubunts-Umgebungskonstruktion
[Python-pptx] Gibt PowerPoint-Schriftinformationen mit Python in CSV aus
Ausgabe auf "7 Segment LED" mit Python mit Raspberry Pi 3!
Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
[Python] So geben Sie Listenwerte der Reihe nach aus