Я из проекта deeplearning4j.Рабочие пространства с отображением в памяти созданы для встраивания да, и их следует рассматривать отдельно от нашей памяти без кучи.Память вне кучи - это концептуальная кроличья нора, которую я не буду здесь освещать (вам необходимо иметь представление о JVM, а тема здесь не актуальна)
Способ использования рабочих мест с отображением в памятиэто путем загрузки word2vec внутри области отображения памяти.Первый компонент - это конфигурация:
import org.nd4j.linalg.api.memory.MemoryWorkspace;
import org.nd4j.linalg.api.memory.conf.WorkspaceConfiguration;
import org.nd4j.linalg.api.memory.enums.LocationPolicy;
WorkspaceConfiguration mmap = WorkspaceConfiguration.builder()
.initialSize(initialSize)
.policyLocation(LocationPolicy.MMAP)
.build();
try (MemoryWorkspace ws =
Nd4j.getWorkspaceManager().getAndActivateWorkspace(mmap)) {
//load your word2vec here
}
Следует обратить внимание на то, как следует использовать рабочие области с отображением в памяти.Карта памяти предназначена только для доступа к большому массиву и извлечения его подмножеств из памяти.Вы должны использовать его только для извлечения подмножества векторов слов, необходимых для обучения.
При использовании word2vec (или любого другого метода встраивания) типичным шаблоном является поиск только тех словосочетаний, которые вы хотитеи объединить их в мини-пакет.Этот мини-пакет (и связанное с ним обучение) должен происходить в отдельном рабочем пространстве (или он должен быть отсоединен, что является значением по умолчанию).Причина, по которой вы можете отсоединить его, заключается в том, что мы уже делаем рабочие пространства и другие связанные с вами оптимизации внутри ComputationGraph и MultiLayerNetwork.Просто убедитесь, что передали все, что вам нужно.
Оттуда используйте методы INDArray get (..) и put (..), чтобы скопировать нужные вам строки в другой массив, который вы должны использовать для обучения.Подробнее об этом см .: https://deeplearning4j.org/docs/latest/nd4j-overview
Для получения дополнительной информации посмотрите плечо, плечо, отсоединение, .. в javadoc INDArray: https://deeplearning4j.org/api/latest/org/nd4j/linalg/api/ndarray/INDArray.html