簡體   English   中英

是什么導致我的“向量 memory 已用盡”錯誤?

[英]What is causing my “vector memory exhausted” error?

對於上下文:我正在運行一個需要數小時和 30 多次迭代的大型模擬。 每次,看似隨機地在 16 到 23 次迭代之間,我都會收到以下錯誤:

在此處輸入圖像描述

我相信我已經將問題縮小到以下代碼塊(這並不奇怪,因為這是算法中最慢的步驟之一):


adj_mat <- dists_mat
  
  a <- (adj_mat <= cutoff)
  b <- (adj_mat > cutoff)
  
  adj_mat[a] <- TRUE
  adj_mat[b] <- FALSE

adj_mat是一個非常大的 2,000 x 40,000 距離矩陣。 在代碼塊中,我試圖使用截止值對該矩陣的所有單元格進行二值化。 第 1 步是將所有 1 和 0 單元格的坐標分別分配給變量ab 第 2 步然后將 1 和 0 分配給矩陣中的這些坐標。

我只是不明白為什么這段代碼可以進行 10 次以上的迭代,然后耗盡向量 memory。 每次迭代后,我不會在 function 中保存太多數據。

是否有更高效/計算要求更低的方法來對該矩陣進行二值化?

我不確定這是否會有所幫助,但您可以將其減少到只有兩行。 這將避免創建所有臨時變量並刪除額外的步驟。

adj_mat <- dists_mat
adj_mat <- adj_mat <= cutoff

我們可以使用split並在一行中創建 output 的list

lst1 <- split(adj_mat, adj_mat <= cutoff)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM