TensorFlow
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
前置き
original code
実装途中のコード。TensorFlowで100ノード(input)、100ノード(output)の学習予定。
#!/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 = 4
inputs_batch, output_batch = tf.train.shuffle_batch([inputs, outputs], batch_size, capacity=40, min_after_dequeue = batch_size)
input_ph = tf.placeholder("float", [None, 1])
output_ph = tf.placeholder("float", [None, 1])
# network
PEP8でチェックしたら、以下のエラーが出た。
$ pep8 learn_in100out100.py
learn_in100out100.py:38:80: E501 line too long (127 > 79 characters)
改行してみた
inputs_batch, output_batch = tf.train.shuffle_batch([inputs, outputs], batch_size, capacity=40, min_after_dequeue = batch_size)
を以下のように改行した。
inputs_batch, output_batch = tf.train.shuffle_batch(
[inputs, outputs], batch_size, capacity=40, min_after_dequeue = batch_size)
2行目はSublime Text2ではTabになった。
$ pep8 learn_in100out100.py
learn_in100out100.py:39:1: E101 indentation contains mixed spaces and tabs
learn_in100out100.py:39:1: W191 indentation contains tabs
Tabをやめた
Tabをやめて4つの空白にした。
inputs_batch, output_batch = tf.train.shuffle_batch(
[inputs, outputs], batch_size, capacity=40, min_after_dequeue = batch_size)
$ pep8 learn_in100out100.py
learn_in100out100.py:39:66: E251 unexpected spaces around keyword / parameter equals
learn_in100out100.py:39:68: E251 unexpected spaces around keyword / parameter equals
改行する引数の位置を変更した
1つ目のリストでなく、2つ目のbatch_sizeから2行目にした。
inputs_batch, output_batch = tf.train.shuffle_batch([inputs, outputs],
batch_size, capacity=40, min_after_dequeue = batch_size)
$ pep8 learn_in100out100.py
learn_in100out100.py:39:5: E128 continuation line under-indented for visual indent
本題
learn_in100out100.py:39:5: E128 continuation line under-indented for visual indent
の対処。
引数の位置は括弧に合わせるとのこと。
inputs_batch, output_batch = tf.train.shuffle_batch([inputs, outputs],
batch_size, capacity=40, min_after_dequeue = batch_size)
$ pep8 learn_in100out100.py
learn_in100out100.py:39:80: E501 line too long (108 > 79 characters)
learn_in100out100.py:39:95: E251 unexpected spaces around keyword / parameter equals
learn_in100out100.py:39:97: E251 unexpected spaces around keyword / parameter equals
本題のエラーは解消されたが、1行が80文字以上になり、最初に戻る。
カーズは考えるのをやめた