stackoverflow.com/questions/46207211/...
е: Использование нового tf.contrib.data.Dataset удваивает размер моего файла протофаффа графика, и я не могу визуализировать график в Tensorboard.
Детали:
Я пробую новый TensorFlowtf.contrib.data.Dataset
функциональность вместе сtf.contrib.learn.Experiment
фреймворк. Мои входные данные определены какфункции ввода которые возвращают тензоры функций и меток.
Если я создаю свою функцию ввода сtf.train.slice_input_producer
функционировать как в следующем кодовом блоке (полный кодВот), то мой результатgraph.pbtxt
файл 620M и.meta
файлы размером около 165M.
def train_inputs():
with tf.name_scope('Training_data'):
x = tf.constant(mnist.train.images.reshape([-1, 28, 28, 1]))
y = tf.constant(mnist.train.labels)
sliced_input = tf.train.slice_input_producer(
tensor_list=[x, y], shuffle=True)
return tf.train.shuffle_batch(
sliced_input, batch_size=batch_size,
capacity=10000, min_after_dequeue=batch_size*10)
Теперь, если я создаю свою функцию ввода с новымtf.contrib.data.Dataset.from_tensor_slices
как в следующем кодовом блоке (полный кодВот), то мой результатgraph.pbtxt
файл удваивается в размере до 1,3G и.meta
файлы удваиваются в размере до 330M.
def train_inputs():
with tf.name_scope('Training_data'):
images = mnist.train.images.reshape([-1, 28, 28, 1])
labels = mnist.train.labels
dataset = tf.contrib.data.Dataset.from_tensor_slices(
(images, labels))
dataset = dataset.repeat(None) # Infinite
dataset = dataset.shuffle(buffer_size=10000)
dataset = dataset.batch(batch_size)
iterator = dataset.make_one_shot_iterator()
next_example, next_label = iterator.get_next()
return next_example, next_label
Теперь, потому чтоgraph.pbtxt
Файл настолько большой, что TensorBoard анализирует этот файл годами, и я не могу визуально отладить график модели. Я нашел вДокументация по набору данных что это увеличение в размерах происходит от:«содержимое массива будет скопировано несколько раз» ирешение будет использовать заполнители. Однако в этом случае для инициализации итератора мне понадобится передать пустые массивы в заполнители с активным сеансом:
sess.run(iterator.initializer, feed_dict={features_placeholder: features, labels_placeholder: labels})
Это кажется, однако, вне моего контроля при использованииtf.contrib.learn.Experiment
фреймворк.
Как я могу инициализировать инициализатор итератора с помощью инфраструктуры эксперимента? Или найти обходной путь к использованию API набора данных без увеличения размера моего графика?