如何查看cmdstanr采样输出的environment对象占用的内存?
查看cmdstanr拟合结果(环境对象)的内存占用
调用cmdstanr的sample()方法返回的fit是环境对象,RStudio环境浏览器不会自动显示它的内存占用,你可以用下面几种方法查看:
用pryr包的object_size():这个函数会递归计算环境及其包含的所有对象的总内存,比base R的工具更准确,因为它会处理环境里的嵌套内容。
# 先装包(没装过的话) install.packages("pryr") library(pryr) # 计算内存 object_size(fit)用lobstr包的obj_size():和pryr的工具类似,结果展示更清晰,同样会递归统计所有关联对象的内存:
install.packages("lobstr") library(lobstr) obj_size(fit)base R手动递归计算:base R自带的
object.size()默认不会遍历环境内容,得自己写个小函数来递归统计:# 定义递归计算环境内存的函数 env_size <- function(e) { sum(sapply(ls(e), function(x) object.size(get(x, e)))) + object.size(e) } # 计算fit的内存占用 env_size(fit)
小提示
pryr和lobstr的工具会自动处理共享对象,不会重复计算内存;如果fit里引用了原始数据这类大对象,结果会包含这部分内存,要是只想看拟合结果本身的大小,可能需要先把数据从环境里移除再计算。
内容的提问来源于stack exchange,提问作者socialscientist
相关产品推荐
相关产品推荐

