Примечания:
этот вопрос распространяется на предыдущий мой вопрос . В этом вопросе я спрашиваю о наилучшем способе хранения фиктивных данных в виде Example
и SequenceExample
, чтобы выяснить, что лучше для данных, аналогичных предоставленным фиктивным данным. Я предоставляю как явные формулировки конструкции Example
и SequenceExample
, так и, в ответах, программный способ сделать это.
Поскольку это все еще много кода, я предоставляю файл Colab (интерактивный блокнот jupyter, размещенный в Google), в котором вы можете попробовать код самостоятельно, чтобы помочь. Весь необходимый код есть, и он щедро прокомментирован.
Я пытаюсь научиться конвертировать мои данные в TF Records, поскольку заявленные преимущества имеют смысл для моих данных. Тем не менее, документация оставляет желать лучшего, и учебники / блоги (которые я видел), которые пытаются углубиться, действительно касаются только поверхности или перефразируют редкие документы, которые существуют.
Для демонстрационных данных, рассмотренных в моем предыдущем вопросе - а также здесь - я написал приличный класс, который принимает:
- последовательность с n каналами (в этом примере она основана на целых числах, фиксированной длины и с n каналами)
- вероятности класса с мягкой меткой (в этом примере есть n классов и основанные на числах с плавающей точкой)
- некоторые метаданные (в этом примере строка и два числа с плавающей запятой)
и может кодировать данные в 1 из 6 форм:
- Пример: каналы / классы последовательностей разделены числовым типом (в данном случае
int64
) с метаданными, прикрепленными к
- Пример, с последовательными каналами / классами, отдельными в виде байтовой строки (через
numpy.ndarray.tostring()
) с метаданными, прикрепленными к
Пример, с последовательностью / классами, выгруженными в виде байтовой строки, с метаданными, прикрепленными к
SequenceExample с каналами / классами последовательностей, разделенными числовым типом, и метаданными в качестве контекста
- SequenceExample с каналами последовательности, разделенными в виде байтовой строки, и метаданными в качестве контекста
- SequenceExample, с последовательностью и классами, выгруженными в виде строки байтов, и метаданными в качестве контекста.
Это отлично работает.
В Colab я показываю, как записывать фиктивные данные в одном и том же файле, а также в отдельных файлах.
У меня вопрос, как я могу восстановить эти данные?
Я дал 4 попытки сделать это в связанном файле.
Почему TFReader отличается от подпакета от TFWriter?