TensorFlow > csv形式の読込み > decode_csv() / tf.InteractiveSession() / tf.train.start_queue_runners() / .eval() > 失敗

```txt:動作環境
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
```

http://qiita.com/7of9/items/ce3b6354d16875cfc362
の続き。

csv形式のファイルを読み込もうとしている。
ファイル形式は以下に変更した。

```
$ cat xydata.csv 
3,2
1,7
4,1
1,8
5,2
```

http://qiita.com/knok/items/2dd15189cbca5f9890c5
や
https://www.tensorflow.org/versions/r0.11/how_tos/reading_data/index.html#file-formats
を参考にした。

- decode_csv()を使う
- tf.Session()でなくtf.InteractiveSession()を使う
- tf.train.start_queue_runners(sess)を実行する
- .eval()を使う

```linreg_readcsv.py
import tensorflow as tf
import numpy as np
import random

x_data = np.float32(np.random.rand(100)) # Random input
y_data = np.sin(2*np.pi*x_data) + 0.3 * np.random.rand()

#filename_queue = tf.train.string_input_producer(["csvTest.csv"])
filename_queue = tf.train.string_input_producer(["xydata.csv"])
reader = tf.TextLineReader()
key, value = reader.read(filename_queue)

record_defaults = [[1], [1]]
x_data2, y_data2 = tf.decode_csv(
	value, record_defaults=record_defaults)

# Construct a linear model.
W3 = tf.Variable(random.random())
W2 = tf.Variable(random.random())
W1 = tf.Variable(random.random())
W0 = tf.Variable(random.random())
# y3 = W2*x_data*x_data + W1*x_data + W0
#y4 = W3*x_data*x_data*x_data+W2*x_data*x_data + W1*x_data + W0
y4 = W3*(x_data**3)+W2*(x_data**2) + W1*x_data + W0


# Minimize the squared errors.
loss = tf.reduce_mean(tf.square(y4 - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

# For initializing the variables.
init = tf.initialize_all_variables()

# Launch the graph
sess = tf.InteractiveSession() ### for .eval()
sess.run(init)

tf.train.start_queue_runners(sess)

#print 'key',key.eval()
#print 'value',value.eval()
print 'x_data2, y_data2', x_data2.eval(), y_data2.eval()
print 'x_data2, y_data2', x_data2.eval(), y_data2.eval()
print 'x_data2, y_data2', x_data2.eval(), y_data2.eval()

# Fit the plane.
for step in xrange(0, 5000):
    sess.run(train)
print step, sess.run(W3), sess.run(W2), sess.run(W1), sess.run(W0)
```

```txt:結果
$ python linreg_readcsv.py 
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcurand.so locally
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:925] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_device.cc:951] Found device 0 with properties: 
name: GeForce GTX 1070
major: 6 minor: 1 memoryClockRate (GHz) 1.7715
pciBusID 0000:01:00.0
Total memory: 7.91GiB
Free memory: 7.40GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:972] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:1041] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)
x_data2, y_data2 3 7
x_data2, y_data2 4 8
x_data2, y_data2 5 2
4999 8.07556 -11.302 1.92412 1.00516
```

以下の元ファイルと比較して、x_data2.eval(), y_data2.eval()の実行として
1行目の1列目表示、2行目の2列目表示、
3行目の1列目表示、4行目の2列目表示
になっている。

```
$ cat xydata.csv 
3,2
1,7
4,1
1,8
5,2
```

.eval()を実行した時点で次の行に移っている感じ。
同じ行の値を.eval()で表示する方法は未消化。