Джулия М.Л.: Есть ли рекомендуемый формат данных для загрузки данных в библиотеки Flux, Knet, Deep Learning
Я использую Tensorflow для глубокой учебной работы, но меня интересовали некоторые особенности Julia для ML. Теперь в Tensorflow существует четкий стандарт, согласно которому протоколные буферы - это означает, что формат TFRecords - лучший способ загрузки значительных наборов данных в графические процессоры для обучения модели. Я читал Flux, KNET, документацию, а также другие сообщения на форуме, чтобы узнать, есть ли какие-либо конкретные рекомендации по наиболее эффективному формату данных. Но я не нашел ни одного.
Мой вопрос: есть ли рекомендуемый формат данных для библиотек Julia ML, чтобы облегчить обучение? Другими словами, существуют ли какие-либо четкие форматы наборов данных, которых мне следует избегать из-за плохой производительности?
Теперь я знаю, что есть Protobuf.jl
библиотека, так что пользователи все еще могут использовать буферы протокола. Я планировал использовать буферы протокола на данный момент, так как тогда я могу использовать один и тот же формат данных для Tensorflow и Julia. Тем не менее, я также нашел этот интересный пост в Reddit о том, как пользователь не использует буферы протокола, а просто использует прямые Julia Vectors.
https://www.reddit.com/r/MachineLearning/comments/994dl7/d_hows_julia_language_mit_for_ml/
Я понял, что библиотеки Julia ML, скорее всего, не зависят от формата хранения данных. Это означает, что независимо от того, в каком формате хранятся данные, данные все равно декодируются в какой-либо векторный или матричный формат. Так что в этом случае я могу использовать любой формат. Но просто хотел убедиться, что я ничего не пропустил в документации или что-то подобное о проблемах или низкой производительности из-за использования неправильного формата хранения данных.
0 ответов
Для использования в памяти просто используйте массивы и векторы. Это просто большие непрерывные блоки памяти с некоторыми метаданными. Вы не можете найти лучшего, чем это.
Для сериализации в другой процесс Julia Джулия сделает это за вас и использует модуль сериализации stdlib.
Для сериализации на диск вы должны либо просто использовать Serialization.serialize (возможно, сжатый), либо, если вы думаете, что вам может потребоваться чтение из другой программы, или если вы думаете, что измените версию Julia, прежде чем закончите с данными, которые вы можете использовать BSON.jl или Feather.jl.
В ближайшем будущем JLSO.jl станет хорошим вариантом для замены сериализации.