Конвертировать вывод модели Keras в разреженную матрицу без forloop - PullRequest
3 голосов
/ 02 мая 2019

У меня есть подготовленная keras модель, которая имеет выход с размером [n, 4000] (классификация по 4000 классам).

Мне нужно сделать прогноз по данным испытаний (300К наблюдений).

Но когда я вызываю метод model.predict(X_train), я получаю run-out memory error, потому что у меня недостаточно ОЗУ для хранения матрицы с формой (300K , 4000).

Следовательно, было бы логично преобразовать выходные данные модели в разреженную матрицу.

Но перенос predict method в scipy функцию sparse.csr_matrix не работает (sparse.csr_matrix(model.predict(X_train))), поскольку он сначала выделяет пространство в ОЗУ для прогноза, и только затем он преобразуется в разреженную матрицу.

Я также могу сделать прогноз для конкретной партии тестовых данных, а затем преобразовать его, используя forloop. Но мне кажется, что это не оптимальный и очень ресурсоемкий способ.

Пожалуйста, дайте мне совет, могут ли быть какие-либо другие способы преобразования вывода модели в разреженную матрицу?

1 Ответ

0 голосов
/ 02 мая 2019

Нет ли параметра batch_size в predict()?

Если я правильно понял, n означает номер образца, верно?

Предположим, что вашей системной памяти достаточно для хранения всех данных, но VRAM нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...