如何在keras批量更新期间缩放梯度?
How to scale the gradient during batch update in keras?
我正在使用标准的 keras 模型,并且正在批量训练(使用 train_on_batch
函数)。现在,我想获取批次中每个元素的梯度并对其进行缩放(将每个样本梯度乘以我拥有的样本特定值),在缩放每个梯度后,可以将其相加并用于更新现有权重。反正有没有给定的keras功能呢?如果没有,我有没有办法使用 tensorflow 来操纵它? (给定模型,其余部分是用keras编写的)
函数看起来像这样:(循环是为了说明它发生在批次中的所有样本上)
grad = 0, w= #array of size batch_size
for i in batch_size:
grad <- grad + w_i*grad_i
- 在模型的
fit
方法中使用 sample_weights
参数。
- 或者,如果使用生成器,则使生成器 return 不仅
X_train, y_train
,而且 X_train, y_train, sample_weights
。
在这两种情况下,sample_weights
应该是一维向量,样本数与数据相同。
我正在使用标准的 keras 模型,并且正在批量训练(使用 train_on_batch
函数)。现在,我想获取批次中每个元素的梯度并对其进行缩放(将每个样本梯度乘以我拥有的样本特定值),在缩放每个梯度后,可以将其相加并用于更新现有权重。反正有没有给定的keras功能呢?如果没有,我有没有办法使用 tensorflow 来操纵它? (给定模型,其余部分是用keras编写的)
函数看起来像这样:(循环是为了说明它发生在批次中的所有样本上)
grad = 0, w= #array of size batch_size
for i in batch_size:
grad <- grad + w_i*grad_i
- 在模型的
fit
方法中使用sample_weights
参数。 - 或者,如果使用生成器,则使生成器 return 不仅
X_train, y_train
,而且X_train, y_train, sample_weights
。
在这两种情况下,sample_weights
应该是一维向量,样本数与数据相同。