我正在为Keras编写一个优化器,并希望某些参数的更新依赖于中的渐变的统计信息。因此,我需要一些方法来访问minibatch中每个示例的渐变。
有没有一种优雅的方式来做到这一点,例如,Theano?我现在不知道怎么样。 theano.gradients.grad
将完整的小批量张量作为输入/输出,但没有明确的方法可以单独访问每个渐变,而无需完全重新定义所有操作和grad
。
或者,在Keras有一种不太优雅的方式吗?我可以在优化器的keras.model.train_on_batch
内调用get_gradients
,但这需要我可以访问优化器中的输入数据。目前情况并非如此;输入不是model
的属性,无法访问。因此,代理问题如何从优化器中访问小批量输入/输出?
目前,不优雅的方式可能效率极低。更重要的是,我弄清楚这种优化算法是否真的有效。