python - Tensorflow - 使用相同的梯度多次更新权重
问题描述
使用梯度下降的训练网络通常包括在一个小批量上运行前向、后向和更新传递,然后移动到下一个。我想运行此过程的修改版本:在运行初始前向和后向传递(获取损失和梯度)并进行初始更新后,我想向前运行并再次更新,直到满足停止条件。
正常的训练算法如下所示:
for mb in get_minibatches():
loss = forward(mb)
gradients = backwards()
weights.update(gradients, step)
我需要什么(注意梯度只计算一次):
for mb in get_minibatches():
loss = forward(mb)
gradients = backwards()
weights.update(gradients, step)
while (new_loss = forward(mb)) > loss:
step = step / 2 # actual formula is different
weights.update(gradients, step)
如何执行我的自定义转发+更新步骤序列?
解决方案
推荐阅读
- android - 位置开关后存在android应用程序
- bash - Bash 循环遍历文件过早结束
- node.js - 从 Nodejs (Docker) 调用 RabbitMQ
- excel - VBA 无法正确识别 Excel 的单元格内容(换行问题)
- java - 检索序列化的 JFrame 以在 MySql 中上传
- google-chrome-extension - 如何正确地将字体添加到 chrome 扩展?
- node.js - 我在安装 Vue Js 时收到以下 npm 错误
- sql - SQL/HANA 查询为每个 X 唯一值分配增量编号,而不使用存储过程
- docker - 如何在 docker daemon 中禁止 docker run 命令以及如何限制单个用户对 docker daemon 的访问
- excel - 使用 Office.js 从 Excel 加载项创建 Word 文档