0
私はCSVファイルのデータを使用してニューラルネットワークを訓練しようとしています。これは、CSVからデータを取り出し、リストに格納し、このリストを配列に変換し、xとyの値として2つの配列を使用してニューラルネットワークを訓練します。エラー:テンソルフローを使用しているときに閉じたファイルに対する入出力操作
import numpy as np
import tensorflow as tf
import csv
from collections import defaultdict
columns = defaultdict(list) # each value in each column is appended to a list
# Declare list of features, we only have one real-valued feature
def model_fn(features, labels, mode):
with open('C:\\Users\\joe\\Documents\\EURUSD learn.txt') as f:
reader = csv.DictReader(f) # read rows into a dictionary format
for row in reader: # read a row as {column1: value1, column2: value2,...}
for (k,v) in row.items(): # go over each column name and value
columns[k].append(v) # append the value into the appropriate list
# based on column name k
openarray = np.asarray('<OPEN>')
closearray = np.asarray('<CLOSE>')
higharray = np.asarray('<HIGH>')
lowarray = np.asarray('<LOW>')
# Build a linear model and predict values
W = tf.get_variable("W", [1], dtype=tf.float64)
b = tf.get_variable("b", [1], dtype=tf.float64)
y = W*features['x'] + b
# Loss sub-graph
loss = tf.reduce_sum(tf.square(y - labels))
# Training sub-graph
global_step = tf.train.get_global_step()
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = tf.group(optimizer.minimize(loss),
tf.assign_add(global_step, 1))
# EstimatorSpec connects subgraphs we built to the
# appropriate functionality.
return tf.estimator.EstimatorSpec(
mode=mode,
predictions=y,
loss=loss,
train_op=train)
with open('C:\\Users\\joe\\Documents\\EURUSD learn.txt') as f:
estimator = tf.estimator.Estimator(model_fn=model_fn)
# define our data sets
x_train = np.array(['openarray'])
y_train = np.array(['closearray'])
x_eval = np.array(['higharray'])
y_eval = np.array(['lowarray'])
input_fn = tf.estimator.inputs.numpy_input_fn(
{"x": x_train}, y_train, batch_size=4, num_epochs=None, shuffle=True)
train_input_fn = tf.estimator.inputs.numpy_input_fn(
{"x": x_train}, y_train, batch_size=4, num_epochs=1000, shuffle=False)
eval_input_fn = tf.estimator.inputs.numpy_input_fn(
{"x": x_eval}, y_eval, batch_size=4, num_epochs=1000, shuffle=False)
# train
estimator.train(input_fn=input_fn, steps=1000)
# Here we evaluate how well our model did.
train_metrics = estimator.evaluate(input_fn=train_input_fn)
eval_metrics = estimator.evaluate(input_fn=eval_input_fn)
print("train metrics: %r"% train_metrics)
print("eval metrics: %r"% eval_metrics)
私は、コードを実行すると、私は次のエラーを取得:
WARNING:tensorflow:Using temporary folder as model directory: C:\Users\joe\AppData\Local\Temp\tmp3yj2dh4d
Traceback (most recent call last):
File "C:\Users\joe\AppData\Local\Programs\Python\Python35\stocks closing+opening.py", line 54, in <module>
estimator.train(input_fn=input_fn, steps=1000)
File "C:\Users\joe\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\estimator\estimator.py", line 302, in train
loss = self._train_model(input_fn, hooks, saving_listeners)
File "C:\Users\joe\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\estimator\estimator.py", line 711, in _train_model
features, labels, model_fn_lib.ModeKeys.TRAIN, self.config)
File "C:\Users\joe\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\estimator\estimator.py", line 694, in _call_model_fn
model_fn_results = self._model_fn(features=features, **kwargs)
File "C:\Users\joe\AppData\Local\Programs\Python\Python35\stocks closing+opening.py", line 14, in model_fn
for row in reader: # read a row as {column1: value1, column2: value2,...}
File "C:\Users\joe\AppData\Local\Programs\Python\Python35\lib\csv.py", line 109, in __next__
self.fieldnames
File "C:\Users\joe\AppData\Local\Programs\Python\Python35\lib\csv.py", line 96, in fieldnames
self._fieldnames = next(self.reader)
ValueError: I/O operation on closed file.
を、私はこのエラーを見上げ、あることのようですそれは閉じたファイルを実行するつもりですが、私はそのファイルを開いています。これは、モデルディレクトリとして一時フォルダを使用しているためですか?