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
Verwandte http://qiita.com/7of9/items/872d80d2a1cc36b5a053
Ich habe versucht, autopep8 von @ shiracamus Kommentar zu lehren.
$sudo apt-get install python-autopep8
TensorFlow-Code wird ausgeführt
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.1 Feb. 06, 2017
- read [test_in.csv],[test_out.csv]
'''
'''
codingrule:PEP8
'''
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])
outputs = tf.pack([output1])
batch_size = 1
inputs_batch, output_batch = tf.train.shuffle_batch([inputs, outputs], batch_size, capacity=1, min_after_dequeue=batch_size)
input_ph = tf.placeholder("float", [None, 1])
output_ph = tf.placeholder("float", [None, 1])
# network
hiddens = slim.stack(input_ph, slim.fully_connected, [7,7,7],
activation_fn=tf.nn.sigmoid, scope="hidden")
prediction = slim.fully_connected(hiddens, 1, 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(10):
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))
finally:
coord.request_stop()
Da das Verarbeitungsergebnis standardmäßig ausgegeben wird, wurde es unter einem geeigneten Dateinamen gespeichert.
$autopep8 learn_in100out100.py > res.py
$ diff learn_in100out100.py res.py
38c38,39
< inputs_batch, output_batch = tf.train.shuffle_batch([inputs, outputs], batch_size, capacity=1, min_after_dequeue=batch_size)
---
> inputs_batch, output_batch = tf.train.shuffle_batch(
> [inputs, outputs], batch_size, capacity=1, min_after_dequeue=batch_size)
44,46c45,48
< hiddens = slim.stack(input_ph, slim.fully_connected, [7,7,7],
< activation_fn=tf.nn.sigmoid, scope="hidden")
< prediction = slim.fully_connected(hiddens, 1, activation_fn=None, scope="output")
---
> hiddens = slim.stack(input_ph, slim.fully_connected, [7, 7, 7],
> activation_fn=tf.nn.sigmoid, scope="hidden")
> prediction = slim.fully_connected(
> hiddens, 1, activation_fn=None, scope="output")
61c63,64
< _, t_loss = sess.run([train_op, loss], feed_dict={input_ph:inpbt, output_ph:outbt})
---
> _, t_loss = sess.run(
> [train_op, loss], feed_dict={input_ph: inpbt, output_ph: outbt})
63,64c66,67
< if (idx+1) % 100 == 0:
< print("%d,%f" % (idx+1, t_loss))
---
> if (idx + 1) % 100 == 0:
> print("%d,%f" % (idx + 1, t_loss))
67d69
<
Wenn das Argument eine Liste ist, ist die Regel der Anpassung an die Position (
ausgeschlossen?
(Der Teil von tf.train.shuffle_batch ()
und _, t_loss = sess.run ()
)
$ pep8 learn_in100out100.py
learn_in100out100.py:38:80: E501 line too long (124 > 79 characters)
learn_in100out100.py:44:56: E231 missing whitespace after ','
learn_in100out100.py:44:58: E231 missing whitespace after ','
learn_in100out100.py:45:5: E128 continuation line under-indented for visual indent
learn_in100out100.py:46:80: E501 line too long (81 > 79 characters)
learn_in100out100.py:61:71: E231 missing whitespace after ':'
learn_in100out100.py:61:80: E501 line too long (95 > 79 characters)
learn_in100out100.py:61:88: E231 missing whitespace after ':'
learn_in100out100.py:64:13: E101 indentation contains mixed spaces and tabs
learn_in100out100.py:64:13: W191 indentation contains tabs
learn_in100out100.py:67:1: W391 blank line at end of file
$ pep8 res.py
res.py:64:80: E501 line too long (80 > 79 characters)
Nur einer bleibt unten.
_, t_loss = sess.run(
[train_op, loss], feed_dict={input_ph: inpbt, output_ph: outbt})
Sie können Ihre Codierung verbessern, indem Sie sich auf das von autopep8 verarbeitete Teil beziehen.
Wenn Sie es über autopep8 weitergeben, ist es vorerst nicht gut, es als OK zu verwenden.
Recommended Posts