Техблог Александра Куракина
Если все вводные данные помещаются в память, тогда простейший путь создать Dataset из данных — это конвертировать их в tf.Tensor объекты и использовать Dataset.from_tensor_slices().
Следует отметить, что пример кода выше встроит массивы свойств и меток в TensorFlow граф как tf.constant() операции. Это работает хорошо на небольших датасетах, но тратит напрасно память, потому что содержимое массива будет скопировано много раз, и может достичь 2GB лимита для буфера tf.GraphDef протокола.
В качестве альтернативы, можно определить Dataset с точки зрения tf.placeholder() тензоров и передать NumPy массивы при инициализации Iterator для датасета.
Получение TFRecord данных
tf.data API поддерживает различные форматы файлов, так можно обрабатывать большие наборы данных, которые не помещаются в память. Например, TFRecord формат — это простой ориентированный на записи бинарный формат, который многие TensorFlow приложения используют для тренировочных данных. tf.data.TFRecordDataset класс позволяет проходить по содержимому одного или нескольких TFRecord файлов как часть пайплайна ввода.
filenames (имена файлов) аргумент для TFRecordDataset инициализатора может быть строкой, списком строк, или tf.Tensor строк. Таким образом можно иметь два набора файлов для целей тренировки и валидации, можно использовать tf.placeholder(tf.string) для представления filenames (имен файлов), и инициализировать итератор из подходящих имен файлов:
Получение текстовых данных
Многие наборы данных поставляются как один или несколько текстовых файлов. tf.data.TextLineDataset предоставляет легкий путь извлечения строк из одного или нескольких файлов. Получив одно или несколько имен файлов, TextLineDataset производит один элемент строкового значения на каждую строку этих файлов. Как TFRecordDataset, TextLineDataset принимает имена файлов как tf.Tensor, таким образом можно параметризировать его передавая tf.placeholder(tf.string).
По умолчанию, TextLineDataset выводит каждую строку каждого файла, что может быть нежелательным, например если файл начинается с линии заголовка или содержит комментарии. Эти строки могут быть удалены использованием Dataset.skip() и Dataset.filter() преобразований. Для применения преобразований к каждому файлу отдельно используем Dataset.flat_map() для создания вложенного Dataset для каждого файла.
Получение CSV данных
CSV формат файлов — популярный формат для сохранения табличных данных в простой текст. tf.contrib.data.CsvDataset класс предоставляет путь извлечения записей из одного или нескольких CSV файлов, которые соотвествуют RFC 4180. Получив одно или несколько имен файлов и лист типа данных по умолчанию, CsvDataset производит tuple элементов, типы которых соответствуют типам, предоставленным по умолчанию, для каждой CSV записи. Как TFRecordDataset и TextLineDataset, CsvDataset принимает имена файлов как tf.Tensor, таким образом можно параметризировать его передавая tf.placeholder(tf.string).
Если некоторые колонки пустые можно предоставить значения по умолчанию.
По умолчанию CsvDataset выводит каждую колонку каждой строки файла, что может быть нежелательным, например если файл начинается с линии заголовка, которая должна быть пропущена, или некоторые колонки не требуются во вводе. Эти строки и поля могут быть удалены с header и select_cols аргументами соответственно.
TensorFlow — Importing data from a TensorBoard TFEvent file?
I’ve run several training sessions with different graphs in TensorFlow. The summaries I set up show interesting results in the training and validation. Now, I’d like to take the data I’ve saved in the summary logs and perform some statistical analysis and in general plot and look at the summary data in different ways. Is there any existing way to easily access this data?
More specifically, is there any built in way to read a TFEvent record back into Python?
If there is no simple way to do this, TensorFlow states that all its file formats are protobuf files. From my understanding of protobufs (which is limited), I think I’d be able to extract this data if I have the TFEvent protocol specification. Is there an easy way to get ahold of this? Thank you much.
9 Answers 9
As Fabrizio says, TensorBoard is a great tool for visualizing the contents of your summary logs. However, if you want to perform a custom analysis, you can use tf.train.summary_iterator() function to loop over all of the tf.Event and tf.Summary protocol buffers in the log:
You need to import it, that module level is not currently imported by default. On 2.0.0-rc2
Начать работу с TensorBoard
В машинном обучении, чтобы что-то улучшить, вам часто нужно уметь это измерять. TensorBoard — это инструмент для обеспечения измерений и визуализаций, необходимых во время рабочего процесса машинного обучения. Он позволяет отслеживать такие показатели эксперимента, как потери и точность, визуализировать график модели, проецировать вложения в пространство с более низкими измерениями и многое другое.
Это краткое руководство покажет, как быстро начать работу с TensorBoard. Остальные руководства на этом веб-сайте предоставляют более подробную информацию о конкретных возможностях, многие из которых здесь не включены.
Использование MNIST набора данных в качестве примера, нормализовать данные и написать функцию , которая создает простую Keras модель для классификации изображений в 10 -х классов.
Использование TensorBoard с Keras Model.fit ()
При обучении с Keras в Model.fit () , добавив tf.keras.callbacks.TensorBoard обратного вызова гарантирует , что журналы создаются и хранятся. Кроме того, позволяет гистограмма вычисление каждой эпоха с histogram_freq=1 (это по умолчанию отключено)
Поместите журналы в подкаталог с отметками времени, чтобы можно было легко выбирать различные тренировочные прогоны.
Запустите TensorBoard из командной строки или в записной книжке. Два интерфейса в целом одинаковые. В ноутбуках, используйте %tensorboard магии линии. В командной строке выполните ту же команду без "%".

Краткий обзор показанных панелей мониторинга (вкладки на верхней панели навигации):
- Приборная панель показывает скаляры как потери и показатели меняются с каждой эпохой. Вы можете использовать его также для отслеживания скорости обучения, скорости обучения и других скалярных значений.
- Приборная панель Графы поможет вам визуализировать вашу модель. В этом случае отображается граф слоев Keras, который может помочь вам убедиться, что он построен правильно.
- В Щитки Распределения и Гистограммы показывают распределение тензорной с течением времени. Это может быть полезно для визуализации весов и смещений и проверки того, что они изменяются ожидаемым образом.
Дополнительные плагины TensorBoard автоматически включаются, когда вы регистрируете другие типы данных. Например, обратный вызов Keras TensorBoard позволяет также регистрировать изображения и вложения. Вы можете увидеть, какие другие плагины доступны в TensorBoard, щелкнув «неактивный» раскрывающийся список в правом верхнем углу.
Использование TensorBoard с другими методами
При обучении с такими методами, как tf.GradientTape() , использование tf.summary для входа необходимой информации.
Используйте один и тот же набор данных , как описано выше, но преобразовать его в tf.data.Dataset воспользоваться дозированием возможностями:
Код обучения следует передовой QUICKSTART учебник, но показывает , как войти метрики для TensorBoard. Выберите убыток и оптимизатор:
Создавайте показатели с отслеживанием состояния, которые можно использовать для накопления значений во время обучения и регистрировать в любой момент:
Определите функции обучения и тестирования:
Настройте составители сводок для записи сводок на диск в другом каталоге журналов:
Начать обучение. Используйте tf.summary.scalar() для регистрации показателей (потери и точности) в процессе обучения / тестирования в рамках кратких писателей писать аннотации к диску. У вас есть контроль над тем, какие показатели регистрировать и как часто это делать. Другие tf.summary функции дают возможность регистрации других типов данных.
Снова откройте TensorBoard, на этот раз указав его в новом каталоге журналов. Мы также могли бы запустить TensorBoard, чтобы отслеживать обучение по мере его выполнения.

Вот и все! Вы уже видели , как использовать TensorBoard как через обратный вызов Keras и через tf.summary для более пользовательских сценариев.
TensorBoard.dev: разместите и поделитесь результатами своего эксперимента машинного обучения
TensorBoard.dev бесплатная общественная служба , которая позволяет загружать журналы TensorBoard и получить постоянную ссылку , которая может использоваться совместно со всеми в научных статьях, блогах, социальных медиа и т.д. Это может дать лучшую воспроизводимость и сотрудничество.
Чтобы использовать TensorBoard.dev, выполните следующую команду:
Обратите внимание , что этот вызов использует восклицательный префикс ( ! ) , Чтобы вызвать оболочку , а не процент префикс ( % ) для вызова colab магии. При вызове этой команды из командной строки нет необходимости в префиксе.
Для получения более подробной информации о том , как использовать TensorBoard.dev см https://tensorboard.dev/#get-started
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.