从TensorFlow.JS层中删除(修剪)神经元

时间:2019-02-04 20:18:00

标签: neural-network tensorflow.js

我是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

1 个答案:

答案 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])
      }
    }})