javascript – 关于TensorFlow.js中的tf.Model的内存管理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 关于TensorFlow.js中的tf.Model的内存管理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1592字,纯文字阅读大概需要3分钟。
内容图文
我是TensorFlow的新手.
https://js.tensorflow.org/tutorials/core-concepts.html中的“Memory Management:dispose and tf.tidy”部分说我们必须以特殊的方式管理记忆.
但是,tfjs-layers中的类(例如tf.Model和Layer)似乎没有dispose,并且tf.tidy不接受这些作为返回值.
所以我的问题是:
> tf.Model会自动管理记忆吗?
>如果不是,我该如何正确管理记忆?
示例代码:
function defineModel(
regularizerRate: number,
learningRate: number,
stateSize: number,
actionSize: number,
): tf.Model {
return tf.tidy(() => { // Compile error here, I couldn't return model.
const input = tf.input({
name: "INPUT",
shape: [stateSize],
dtype: "int32" as any, // TODO(mysticatea): https://github.com/tensorflow/tfjs/issues/120
})
const temp = applyHiddenLayers(input, regularizerRate)
const valueOutput = applyValueLayer(temp, regularizerRate)
const policyOutput = applyPolicyLayer(temp, actionSize, regularizerRate)
const model = tf.model({
inputs: [input],
outputs: [valueOutput, policyOutput],
})
// TODO(mysticatea): https://github.com/tensorflow/tfjs/issues/98
model.compile({
optimizer: tf.train.sgd(LEARNING_RATE),
loss: ["meanSquaredError", "meanSquaredError"],
})
model.lossFunctions[1] = softmaxCrossEntropy
return model
})
}
解决方法:
你应该只在直接操纵张量时使用tf.tidy().
在构建模型时,您尚未直接操纵张量,而是设置层如何组合在一起的结构.这意味着您无需将模型创建包装在tf.tidy()中.
只有当你调用“predict()”或“fit()”时,我们才会处理具体的Tensor值并需要处理内存管理.
当调用“predict()”时,它返回一个Tensor,你必须处理它,或者用“tidy()”包围.
在“fit()”的情况下,我们在内部为您完成所有内存管理. “fit()”的返回值是普通数字,因此您不需要将其包装在“tidy()”中.
内容总结
以上是互联网集市为您收集整理的javascript – 关于TensorFlow.js中的tf.Model的内存管理全部内容,希望文章能够帮你解决javascript – 关于TensorFlow.js中的tf.Model的内存管理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。