У меня есть большой CSV-файл с типами данных ячейки text и int и float.Например:
joe@example.com | some text | 1 | 1.1
joe2@example.com | some other text | 2 | 1.2
...
Я конвертирую его в формат tfrecord в соответствии с рекомендациями, чтобы уменьшить размер данных и увеличить скорость чтения.
Каждая строка в файле csv анализируется и преобразуется вtf.Example, который затем сериализуется в tfrecord.Каждое поле в строке преобразуется в tf.Feature.
Однако результирующий файл tfrecord примерно в два раза больше исходного файла csv, вместо обещанного меньшего размера.
Думая о том, как определяется tf.Feature, каждая запись объекта имеет как ключ, так и значение как часть структуры, в основном мы повторяем ключ (он же имя столбца) для каждой ячейки данных, что довольноизлишний.
Мой вопрос заключается в том, является ли это ожидаемым способом построения tf.example и tfrecord, и здесь не следует ожидать уменьшения размера.
Одна вещь, которую я заметил, это то, что каждое значение tf.Feature является списком, в то время как я всегда помещаю только одно значение в список.Должен ли я пакетировать несколько строк CSV-файла в один пример и заполнить список несколькими значениями, чтобы уменьшить количество повторений имен столбцов.