我使用的是一个预先训练好的(用Python语言编写的) Keras模型,方法是使用tensorflow.js将其加载到JavaScript中,并使用tensorflow.js库。该模型有一个GaussianNoise输入层和一个GaussianDropout层,分别具有stddev和rate属性。
加载模型后,请执行以下操作:
let model;
(async function () {
model = await tf.loadLayersModel("TensorFlowModels/dnn_fscav.json");
})();在同一路径中,我将权重保存在一个.bin文件中。现在,我的问题是,我需要在加载模型后更改GaussianNoise层的stddev和GaussianDropout的速率,最好是直接从模型中更改。我研究了模型tensorflow对象和它的层,但我找不到这些属性。
我还知道我可以直接从JSON文件更改这些属性,但这意味着读取JSON,修改它,然后使用tensorflow读取它。这并不理想。我还查看了tensorflow.js应用程序接口参考,但没有找到关于如何做到这一点的解释。
有没有人知道一种更干净的方法来改变已加载模型中的图层属性?
发布于 2021-01-03 19:43:55
如果这对任何人有帮助,在仔细查看Tensorflow模型对象后,我意识到它具有环形结构。这意味着,一些对象属性调用其他对象属性,而其他对象属性同时调用以前的对象属性。我可以在以下对象属性中找到图层属性:
model.layers[layer_number].outboundNodes[0].outboundLayer.property = new_value在我的例子中,神经网络的GaussianNoise层的属性是stddev,GaussianDropout层的属性是rate。通过将该属性更改为新值并保存模型,我可以确认层的属性已更改。我猜您还可以从对象中的任何其他圆形特征访问属性,因为它们都指向相同的值。
https://stackoverflow.com/questions/65543056
复制相似问题