При работе с TensorFlow и большими наборами данных использование TFRecords является почти само собой разумеющимся. Еще в 2015 году TensorFlow представила формат файла TFRecord, свой двоичный формат хранения. Использование TFRecords не только может занимать меньше места для хранения, но также может помочь ускорить обучение и тестирование ваших нейронных сетей. В этом сообщении блога я проведу вас через процесс создания TFRecord и покажу, как впоследствии редактировать их в TensorFlow 2.

Как создать TFRecords

Файл TFRecord — это формат, используемый для хранения последовательности двоичных записей. В результате ваши данные должны быть структурированы перед записью в файл TFRecord. TensorFlow предоставляет tf.train.Example, буфер протокола (также известный как protobuf), который представляет сопоставление {строка: значение} для структурирования и сериализации данных.

Первым шагом к созданию tf.train.Example является преобразование всех данных, которые вы хотите включить в TFRecord, в один из трех типов: tf.train.BytesList, tf.train.FloatList, или tf.train.Int64List. Затем эти значения будут использованы для создания tf.train.Feature как такового.

Затем создайте словарь Python с именами функций в качестве ключей и значениями tf.train.Feature в качестве значений и преобразуйте их в сообщение tf.train.Features.

Это сообщение tf.train.Features будет включено в наш tf.train.Example, основной компонент для структурирования TFRecord. Каждый tf.train.Example хранит один экземпляр набора данных, например, одно изображение и пару меток.

Наконец, чтобы записать tf.train.Example в файл .tfrecord, сериализуйте tf.train.Example в строку с помощью функции SerializeToString и используйте tf.io.TFRecordWriter для записи строки в файл. Напишите каждое из сообщений tf.train.Example, которые вы хотите включить в один файл, и, наконец, закройте средство записи после завершения.

Как редактировать TFRecords

Хотя невозможно напрямую редактировать одну или несколько функций в файле TFRecord, можно скопировать содержимое файла и создать новый файл TFRecord. Сначала десериализуйте tf.train.Example, содержащийся в файле TFRecord. Затем создайте копию результата, так как буферы протоколов не могут быть изменены напрямую. Кроме того, создайте tf.train.Feature с нужным значением и сопоставьте его тип (tf.train.BytesList, tf.train.FloatList или tf.train.Int64List). Наконец, используйте функцию CopyFrom, чтобы изменить значение скопированного десериализованного файла tf.train.Example.

Затем, как описано в разделе «Как создать TFRecords», запишите новую функцию в TFRecordWriter после сериализации функции.

Вот оно! Вы успешно отредактировали файл TFRecord.

Вывод

Я надеюсь, что эта запись в блоге помогла вам показать, как создавать и редактировать TFRecords. Хотя существует много документации о том, как создавать TFRecords, мало информации о том, как их редактировать. Существует множество других функций, которые вы можете использовать с TFRecords и TensorFlow, особенно связанных с загрузкой данных, о которых я не буду подробно рассказывать в этом посте. Однако с помощью поиска в Интернете вы можете быстро найти эти ресурсы и использовать их для обучения своей следующей нейронной сети. Спасибо за чтение!

Написано Саймоном, инженером Team SeeSo