我想在优化过程中尝试每一层的权重和偏差。我目前正在Cats Vs Dogs dataset上工作 。在这里,编译后,模型数据通过 model.fit_generator() 传递。
我想获取每个图层的权重和渐变,同时更新以应用阈值(如果渐变值小于阈值,则权重不会更新)。
我尝试实现自定义的 fit_generator ,但我也希望 fit_generator 的并行性可以提高效率,同时在CPU上对图像进行实时数据增强,从而在GPU上训练模型。
答案 0 :(得分:2)
您不需要自定义的fit_generator方法。只是一个自定义优化器。 优化器定义权重更新操作。因此,您可以定义一个自定义优化器,该优化器将在权重削减后实施与sgd或Adam相似的策略。
关键是定义一个从keras.optimizers.Optimizer
派生的类,并实现一个get_updates
方法。此方法确定如何更改毕业生的权重。在您的版本中,您可以剪切渐变。
我可以为您提供一些示例代码:我编写了一个自定义优化器,该优化器允许使用SciPy优化器而不是sgd(https://github.com/pedro-r-marques/keras-opt)。只是几行代码,因此使用它作为示例应该是合理的。