5

Ich habe eine einzige Datei mit Trainingsdaten, etwa 100K Zeilen, und ich habe eine einfache tf.train.GradientDescentOptimizer auf jedem Trainingsschritt ausgeführt. Das Setup wird im Wesentlichen direkt vom Tensorflow-MNIST-Beispiel übernommen. Code reproduziert unter:Tensorflow Verständnis tf.train.shuffle_batch

x = tf.placeholder(tf.float32, [None, 21]) 
W = tf.Variable(tf.zeros([21, 2])) 
b = tf.Variable(tf.zeros([2])) 
y = tf.nn.softmax(tf.matmul(x, W) + b) 

y_ = tf.placeholder(tf.float32, [None, 2]) 
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) 
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) 

Da ich aus einer Datei Trainingsdaten gerade lese, ich bin tf.train.string_input_producer und tf.decode_csv mit Zeilen aus der csv zu lesen, und dann tf.train.shuffle_batch Chargen zu erstellen, die ich trainieren dann.

Ich bin verwirrt, was meine Parameter für tf.train.shuffle_batch sein sollten. Ich lese Tensorflow-Dokumentation, und ich bin mir immer noch nicht sicher, was die "optimale" Batch_size, Kapazität und Min_after_dequeue Werte sind. Kann jemand helfen, etwas Licht in die Frage zu bringen, wie ich die richtigen Werte für diese Parameter wählen kann, oder mich mit einer Ressource verbinden, von der ich mehr lernen kann? Thanks--

Hier ist die API-Link: https://www.tensorflow.org/versions/r0.9/api_docs/python/io_ops.html#shuffle_batch

Antwort

2

Es ist ein wenig über die Anzahl der Threads an

https://www.tensorflow.org/versions/r0.9/how_tos/reading_data/index.html#batching

Leider zu verwenden, ich glaube nicht, es ist ein einfaches Antwort für Losgrößen. Die effiziente Stapelgröße für ein Netzwerk hängt von vielen Details über das Netzwerk ab. In der Praxis, wenn Sie sich um die optimale Leistung kümmern, werden Sie eine Reihe von Versuch und Irrtum (möglicherweise beginnend aus den Werten von einem ähnlichen Netzwerk verwendet).