[英]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 單元格的坐標分別分配給變量a
和b
。 第 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.