我是Tensorflow,Neural Nets的新手,除了JavaScript版本的Tensorflow,我再也没有使用过。基本上,我正在尝试和研究所有这些内容。
阅读(Python)Tensorflow文档,我看到可以通过TF.CONTRIB.MODEL_PRUNING进行修剪,但据我所知,Tensorflow.JS没有类似之处。因此,我想尝试一下,并至少实现一个非常简单/基本的修剪方法。
这种“非常简单/基本的修剪方法”可以像是从隐藏层中删除权重非常接近0的那些神经元。然后我将对模型进行更多的训练,看看我是否可以弥补准确性上的损失
我知道我可以通过以下方式访问权重:
const weights = model.layers.map(layer => {
return layer.getWeights()[0].dataSync();
});
我想知道是否真的有可能找到并删除与这些权重相关的单位(以及我是否可以在训练期间进行此操作)。
谢谢!
Edu
答案 0 :(得分:1)
可以在模型上设置权重。使用get
检索模型权重的方法相同,可以使用set
更改模型的权重。
model.fit(x, y, {epochs: 1000,
callbacks: {
onEpochEnd: () => {
// check your weight
model.layers[0].getWeights()
// set your weiths
model.layers[0].setWeights([tensors])
}
}})