在keras中批量更新期间如何缩放渐变?

时间:2018-12-06 23:45:23

标签: python tensorflow keras gradient-descent

我正在使用标准的keras模型,并且正在批量培训(使用train_on_batch函数)。现在,我要获取批次中每个元素的梯度并将其缩放(将每个样品梯度乘以我拥有的特定于样品的值),然后在对每个梯度进行缩放后,可以将其求和并用于更新现有的重量。无论如何,给定的keras功能可以做到这一点?如果没有,我是否有办法使用张量流来操纵它? (给定了模型,其余的都是用喀拉拉邦写的)

函数看起来像这样:(循环是为了说明批次中的所有样品都发生了这种情况)

grad = 0, w= #array of size batch_size
for i in batch_size:
    grad <- grad + w_i*grad_i

1 个答案:

答案 0 :(得分:1)

  • 在模型的sample_weights方法中使用fit参数。
  • 或者,如果使用生成器,则使生成器不仅返回X_train, y_train,而且返回X_train, y_train, sample_weights

在两种情况下,sample_weights应该是一维矢量,且采样数与数据相同。