Nano Hash - криптовалюты, майнинг, программирование

извлечь из пакета {raster}, используя слишком много памяти

Я использовал функцию extract из пакета raster для извлечения данных из растровых файлов, используя область, определенную шейп-файлами. Однако у меня проблемы с объемом памяти, который сейчас требуется для этого процесса. У меня есть большое количество шейп-файлов (~ 1000). Растровые файлы большие (~ 1,6 ГБ)

Мой процесс:

shp <- mclapply(list.files(pattern="*.shp",full.names=TRUE), readShapePoly,mc.cores=6)
ndvi <- raster("NDVI.dat")
mc<- function(y) {
temp <- gUnionCascaded(y)
extract <- extract(ndvi,temp)
mean <- range(extract, na.rm=T )[1:2]
leng <- length(output)
}
output <- lapply(shp, mc)

Могу ли я внести какие-нибудь изменения, чтобы уменьшить нагрузку на память? Я попытался загрузить меньше шейп-файлов, которые работали около 5 минут, прежде чем объем памяти снова увеличился. Это четырехъядерный компьютер 2,4 ГГц с оперативной памятью 8 ГБ.

29.03.2013

  • Не загружайте их все сразу, просто перебирайте шейп-файлы по отдельности. (Шиш). -1, поскольку вы не продемонстрировали относительное использование памяти, хотя утверждаете, что виноват extract (). 29.03.2013
  • Кстати, использование mclapply является подделкой, поскольку все файлы находятся на одном диске. 29.03.2013
  • что выводится в mc ()? 29.03.2013

Ответы:


1

Я бы сделал это (непроверено):

## Clearly we need these packages, and their dependencies
library(raster)
library(rgeos)
shpfiles <- list.files(pattern="*.shp",full.names=TRUE)
ndvi <- raster("NDVI.dat")
## initialize an object to store the results for each shpfile
res <- vector("list", length(shpfiles))
names(res) <- shpfiles
## loop over files
for (i in seq_along(shpfiles)) {
  ## do the union
  temp <- gUnionCascaded(shpfiles[i])
  ## extract for this shape data (and don't call it "extract")
  extracted <- extract(ndvi,temp)
  ## further processing, save result
  mean <- range(extracted, na.rm = TRUE )[1:2]
  res[[i]] <- mean  ## plus whatever else you need
}

Совершенно не ясно, каким должно быть возвращаемое значение mc () выше, поэтому я игнорирую его. Это будет намного эффективнее и быстрее, чем то, что вы пробовали изначально. Я сомневаюсь, что здесь вообще стоит использовать параллельные вещи.

29.03.2013
  • Функция extract фактически является многоядерной внутри при использовании многоугольников. Вам не нужно ничего делать, чтобы воспользоваться этим фактом, кроме require( parallel ); beginCluster( detectCores()-1 ). При извлечении по 1000 полигонов вы можете получить значительное преимущество в скорости, сделав это (но этот вопрос касается памяти, а не скорости). 29.03.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..