TensorFlow: понимание аргумента «коллекции» в tf.summary.scalar

Я работаю с TensorBoard, в частности tf.summary.scalar. В документации у него есть аргумент collections=None, который описывается как:

collections: Необязательный список ключей коллекций графов. В эти коллекции добавлена ​​новая сводная операция. По умолчанию [GraphKeys.SUMMARIES].

Я не понимаю этого описания и того, для чего используется collections. Может кто-нибудь объяснить мне это и, возможно, указать мне на хороший пример использования?


person Toke Faurby    schedule 30.01.2017    source источник


Ответы (1)


Это скрытая жемчужина! Вы можете предоставить ему список строк по вашему выбору, которые обозначают узел сводки, например.

tf.summary.scalar('learning_rate', p_lr, collections=['train'])
tf.summary.scalar('loss', t_loss, collections=['train', 'test'])

а затем получить сводки по их метке, например. вот так:

s_training = tf.summary.merge_all('train')
s_test = tf.summary.merge_all('test')

Я делаю это так, потому что мне часто нужно регистрировать дополнительную информацию на этапе проверки; в приведенном выше примере мне не нужно указывать значение для заполнителя скорости обучения p_lr при оценке (и записи) точности, например, - или что-либо действительно, на что опирается часть вывода графика.

Предоставление (только) пользовательских категорий также имеет приятный побочный эффект, например, скрытие узла от Supervisor. Если вы действительно хотите контролировать, когда именно вы пишете резюме (например, используя sv.summary_computed() в случае Supervisor), это простой способ.

person sunside    schedule 30.01.2017
comment
Отличное описание! collections можно использовать в более широком смысле, когда вы хотите получить доступ ко всему, что разбросано повсюду, например. если вам нужны все смещения на графике, это можно использовать. Обсуждалось здесь. См. get_collection документацию здесь. - person Toke Faurby; 01.02.2017