У меня есть два довольно больших PyTables EArrays, которые содержат входы и метки для задачи регрессии. Входной массив равен 4d (55k x 128 x 128 x 3), а массив меток - 1d (55k). У меня есть архитектура NN, указанная в Keras, которую я хочу обучать этим данным, но есть две проблемы.Как научить нейронную сеть в Keras по данным, хранящимся в файлах HDF5?
- Входной массив, по крайней мере, слишком большой, чтобы вставлять его в память сразу.
- Я только хочу тренироваться на каком-то случайном подмножестве полных данных, так как я хочу провести поезда, испытания и валидации. Я выбираю расщепления, разбивая на случайные подмножества индексов.
Как выбрать подмножества массивов HDF5 (ввод и вывод) в соответствии с показаниями поезда/теста и поезда на обучающих подмножествах, не считывая их сразу в памяти? Есть ли способ создать «представление» массива на диске, который можно отрезать и что Keras увидит в качестве обычного NumPy ndarray?
Что я пробовал до сих пор, это преобразовать мои массивы в объекты Keras HDF5Matrix (например, X = keras.utils.io_utils.HDF5Matrix(X)
), но когда я затем нарезаю это, чтобы получить раскол обучения, полный фрагмент (80% от полного массива) помещенный в память, который дает мне MemoryError
.