Ich habe ein Tensorflow DNN-Modell in mit ich feed_dict
verwenden, um den Eingang Training and Test
Daten und die Etiketten, die zu ihnen gehört. diese Dinge einfach der wichtigste Teil des Codes zu halten:So verwenden Sie Tensorflow-Warteschlangen in realen Beispiel
def feed_dict(train):
"""Make a TensorFlow feed_dict: maps data onto Tensor placeholders."""
if train == True :
xs,ys = next_Training_Batch()
drop_out_value = 0.9
else:
#Run a test
xs,ys= Testing_Data,Testing_Labels
drop_out_value = 1
return {x:xs,y_:ys,keep_prob:drop_out_value}
for i in range(max_steps):
if i%5 ==0: # Record summarie and Test-set accruracy
summary, acc = sess.run([merged,accuracy], feed_dict=feed_dict(False))
test_writer.add_summary(summary,i)
#print('Accuracy at steps%s: %s '%(i,acc))
else:# Record train set summaries and train
if i%10==0:
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()
summary, _ = sess.run([merged, train_steps],
feed_dict=feed_dict(True),
options=run_options,
run_metadata=run_metadata)
train_writer.add_run_metadata(run_metadata, 'step%03d' % i)
train_writer.add_summary(summary, i)
else:
summary,_ = sess.run([merged, train_steps], feed_dict=feed_dict(True))
train_writer.add_summary(summary,i)
Ich habe über die TF-Warteschlange zu lesen sind eine Möglichkeit, effizienter zu gestalten, habe ich haben große Schwierigkeiten bekommen sie laufen, hier ist das, was ich habe so weit:
import tensorflow as tf
'''
# Both Training.csv and Test.csv include the features values and the and labels as follows :
Feature0 Feature1 Feature2 Feature3 Feature4 Feature5 ....... ClassID(Labels) onehot
0.200985 1.000000 0.064534 0.415348 0.005391 1.000000 1000 1
0.151232 1.000000 0.048849 0.312474 0.007160 1.000000 2001 2
0.061576 1.000000 0.026125 0.127097 0.017450 1.000000 1000 3
...............................................................................
Each file has > 2500 rows
'''
fileNames = ["Training.csv","Test.csv"]
BATCH_SIZE = 20
number_OF_features = 450
def batch_generator(fileNames):
fileNames_queue = tf.train.string_input_producer(fileNames)
reader = tf.TextLineReader(skip_header_lines=1)
key , values = reader.read(fileNames_queue)
record_defaults = [[1.0] for _ in range(number_OF_features)]
content = tf.decode_csv(values,record_defaults = record_defaults)
features = tf.stack(content[:-2])
labels = content[-1]
min_after_dequeue =10 * BATCH_SIZE
capacity = 20*BATCH_SIZE
# suffle the data
data_batch, label_batch = tf.train.shuffle_batch([features, labels], batch_size=BATCH_SIZE,
capacity =capacity , min_after_dequeue = min_after_dequeue)
return data_batch , label_batch
with tf.Session() as sess:
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
for _ in range(100): # generating 100 batch
sess.run(batch_generator(fileNames))
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# I just don'T get how to proceed from this point
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
coord.request_stop()
coord.join(threads)
Meine Frage ist, wie kann ich Daten in Zug und Test "feed". Ich habe TF-Dokumente gelesen, aber es hat nicht geholfen.
Ref: Der Code, den ich schrieb basiert dieser auf great tutorials
1. Dank für die Beantwortung, aber wie separates Test und Training-Set, brauche ich zwei Warteschlangen? – Engine
Es ist wirklich an Sie, aber die einfachste und 2 verschiedene Warteschlangen (telefonisch vom 'batch_generator' zweimal) verwenden könnte in der Tat sein, um Ihre Daten in zwei Listen von Dateien zu trennen (für die Zwecke Training und Test). – npf
Siehe zum Beispiel Abschnitt Multiple Input-Pipelines von https://www.tensorflow.org/programmers_guide/reading_data – npf