【问题标题】:How to scale the gradient during batch update in keras?如何在keras批量更新期间缩放梯度?
【发布时间】:2019-05-08 17:41:02
【问题描述】:

我正在使用标准的 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

【问题讨论】:

  • 在拟合模型时可以只传递权重。

标签: python tensorflow keras gradient-descent


【解决方案1】:
  • 在模型的fit 方法中使用sample_weights 参数。
  • 或者,如果使用生成器,使生成器不仅返回X_train, y_train,还返回X_train, y_train, sample_weights

在这两种情况下,sample_weights 应该是一个与数据具有相同样本数的一维向量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 2020-06-03
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2011-08-22
    相关资源
    最近更新 更多