У меня есть большой набор сгенерированных изображений из кода C #, и я хочу записать их в формат NumPy, чтобы я мог использовать их в Tensorflow. Я перешел к документации NumPy и проверил описание формата версии 1.0 NPY и обнаружил следующее:
Следующие байты HEADER_LEN формируют данные заголовка, описывающие формат массива. Это строка ASCII, которая содержит буквенное выражение Python словаря. Он завершается символом новой строки (\ n) и дополняется пробелами (\ x20), чтобы общая сумма len (магическая строка) + 2 + len (длина) + HEADER_LEN была равномерно разделена на 64 для выравниванияцелях.
Поэтому я пошел, чтобы следовать описанию, и использовал mnist.npz \ x_train.npy в качестве примера для проверки описания. Вот как выглядит заголовок:
Как показано выше, индекс newline
или 0x0a
равен 0x4f
, что является 80-мбайт от начала файла. 80 делится равномерно на 16, а не на 64.
Я также прошел в конец файла и получил index последнего байта, и это: 0x2cdc64f
, что составляет 47,040,079
и, следовательно, является байтом 47,040,080th
в файле. 47,040,080 - 80 (header) = 47,040,000 = 60,000x28x28 (data-size as determined by 'shape' and 'descr' which is unsigned 1-byte).
Я что-то упустил или документация неверна и evenly divisible by 64
следует заменить на evenly divisible by 16
?