首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow.js混淆内存泄漏问题?

Tensorflow.js混淆内存泄漏问题?
EN

Stack Overflow用户
提问于 2020-07-21 13:45:06
回答 1查看 345关注 0票数 1

似乎这个程序导致内存leak.when执行这个,内存不断增加到2 2GB和OOM。我是一个新的tfjs开发人员,我发现简单的例如。在我的电脑中导致OOM

代码语言:javascript
复制
let tf=require("@tensorflow/tfjs");
let leak=()=>{

        let model=tf.sequential();

        tf.tidy(()=>{
            model.add(tf.layers.dense({
                units: 6,
                inputShape: [3]
            }));

        })

        model.dispose();

        console.log(tf.memory().numTensors);
}

let loop=()=>{

    for(let i=0;i<100;i++){
        leak();
    }   

    setTimeout(loop,1);
};

setTimeout(loop,1);
EN

回答 1

Stack Overflow用户

发布于 2020-07-24 18:31:50

没有有效使用张量,因此tf.memory().numTensors将返回0,这意味着没有数据由tf后端保存。

即使不考虑使用tfjs,下面的代码也会在一段时间后崩溃。

代码语言:javascript
复制
let leak = () => {

    console.log("tf.memory().numTensors");
}

let loop = () => {

    for (let i = 0; i < 100; i++) {
        leak();
        console.log('i', i)
    }
  
    setTimeout(loop, 1);
};

setTimeout(loop, 1);

有两个许多回调堆叠在事件循环中。随着每毫秒调用setTimeout的次数不断增加。在上面的代码中,使用的内存并不是很重要。而且需要更长时间才能注意到这个问题。但当使用tf对象时,堆叠的对象会更大。

增加执行前的时间,可以允许在下一次调用回调之前执行回调并进行垃圾回收,或者只会减少事件循环中堆叠的项数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63008119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档