如何在Keras中使用fit_generator访问和更新每层的权重?

时间:2019-07-02 06:01:12

标签: tensorflow image-processing optimization keras conv-neural-network

我想在优化过程中尝试每一层的权重和偏差。我目前正在Cats Vs Dogs dataset上工作 。在这里,编译后,模型数据通过 model.fit_generator() 传递。

我想获取每个图层的权重和渐变,同时更新以应用阈值(如果渐变值小于阈值,则权重不会更新)。

我尝试实现自定义的 fit_generator ,但我也希望 fit_generator 的并行性可以提高效率,同时在CPU上对图像进行实时数据增强,从而在GPU上训练模型。

1 个答案:

答案 0 :(得分:2)

您不需要自定义的fit_generator方法。只是一个自定义优化器。 优化器定义权重更新操作。因此,您可以定义一个自定义优化器,该优化器将在权重削减后实施与sgd或Adam相似的策略。

关键是定义一个从keras.optimizers.Optimizer派生的类,并实现一个get_updates方法。此方法确定如何更改毕业生的权重。在您的版本中,您可以剪切渐变。

我可以为您提供一些示例代码:我编写了一个自定义优化器,该优化器允许使用SciPy优化器而不是sgd(https://github.com/pedro-r-marques/keras-opt)。只是几行代码,因此使用它作为示例应该是合理的。