У меня есть один файл с данными обучения, около 100 тыс. Строк, и я использую простой tf.train.GradientDescentOptimizer на каждом этапе обучения. Настройка по существу взята непосредственно из примера MNIST Tensorflow. Код воспроизведен ниже:

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)

Учитывая, что я читаю данные обучения из файла, я использую tf.train.string_input_producer и tf.decode_csv для чтения строк из CSV, а затем tf.train.shuffle_batch для создания пакетов, на которых я затем тренируюсь.

Я не понимаю, какими должны быть мои параметры для tf.train.shuffle_batch. Я прочитал документацию Tensorflow, но все еще не уверен, каковы «оптимальные» значения batch_size, capacity и min_after_dequeue. Может ли кто-нибудь помочь пролить свет на то, как я подхожу к выбору правильных значений для этих параметров, или связать меня с ресурсом, где я могу узнать больше? Спасибо--

Вот ссылка на API: https: //www.tensorflow. org / versions / r0.9 / api_docs / python / io_ops.html # shuffle_batch

5
sir_thursday 25 Июн 2016 в 23:59

1 ответ

Лучший ответ

Немного о количестве потоков, используемых в

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

К сожалению, я не думаю, что есть простой ответ на размер партии. Эффективный размер пакета для сети зависит от множества деталей о сети. На практике, если вы заботитесь об оптимальной производительности, вам нужно будет провести кучу проб и ошибок (возможно, начиная со значений, используемых в аналогичной сети).

2
Josh11b 28 Июн 2016 в 18:01