如何保持火车步骤之间的状态?

2023-12-27

我的计算图中有一个张量,我想在每个训练步骤之后添加一行。我怎样才能做到这一点?

更详细:我正在获取渐变optimizer.compute_gradients,我想根据渐变历史修改这些渐变。这是我尝试使用的代码:

def process_gradient(gradient, optimizer, name):
  reshaped_gradient = flatten(gradient)

  if gradient.name in optimizer._slots:
    optimizer._slots[gradient.name] += [reshaped_gradient]
  else:
    optimizer._slots[gradient.name] = [reshaped_gradient]

  # each 
  gradients_over_time = tf.stack(optimizer._slots[gradient.name])

  print('gradients_over_time.get_shape()', gradients_over_time.get_shape())

  return gradient

...

grads_and_vars = optimizer.compute_gradients(cost_function)
train_step = optimizer.apply_gradients([(process_gradient(grad, optimizer, str(i)), var) for i, (grad, var) in enumerate(grads_and_vars)])

我还尝试保留一个变量,用于通过连接新行来跟踪行,但这不起作用。


我最终使用了tf.py_func来实现这一点。我在 Python 函数中访问的全局列表中跟踪状态。这里应用了渐变:

# process each individual gradient before applying it
train_step = optimizer.apply_gradients([(process_gradient(grad, str(i)), var) for i, (grad, var) in enumerate(grads_and_vars)])

这是我随着时间的推移跟踪状态的地方,并将使用构建的状态:

def construct_processor(name):
  global_gradients_over_time = {}

  def python_process_gradient(gradient):
    reshaped_gradient = gradient.flatten()

    if name in global_gradients_over_time:
      global_gradients_over_time[name].append(reshaped_gradient)
    else:
      global_gradients_over_time[name] = [reshaped_gradient]

    # process gradients somehow

    return gradient

  return python_process_gradient

def process_gradient(gradient, name):
  return tf.py_func(construct_processor(name), [gradient], tf.float32)

construct_processor只是允许您一次处理一个渐变,为每组渐变命名,以便我可以在全局字典中找到它们。我认为,这种方法还可以使内存远离 GPU。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何保持火车步骤之间的状态? 的相关文章

随机推荐

  • 您需要使用不同的包名称,因为“com.example”受到限制

    我已经在这里找到了很多关于这个问题的线程 但没有一个对我有用 我使用的是Android Studio 2 1 2 并且我仍然有com example域名 在清单或任何其他文件中更改它会导致出现大量错误 而我的 build gradle 仅显
  • SwiftUI:两指滑动(滚动)手势

    我对 2 指滑动 滚动 手势感兴趣 不是两指拖动 而是两指滑动 无需按下 就像在 Safari 中用来向上和向下滚动一样 据我所知 没有一个基本手势可以用于此目的 TapGesture 不是 LongPressGesture 不 DragG
  • 防止多次登录

    我试图在我的应用程序中阻止同一用户的多次登录 我的想法是在用户登录时更新安全标记并将其添加为声明 然后在每个请求中将 cookie 中的标记与数据库中的标记进行比较 这就是我的实现方式 public virtual async Task
  • 滚动条没有出现?

    我正在为 Tumblr 开发主题 但由于某种原因滚动条没有出现 这是博客的网址 http infinitethemedewitt tumblr com 主题的代码可以通过右键单击在页面源代码中找到 除了 html 之外的所有代码 因为它被
  • fopen 不显示内容

    不知道为什么我的即时通讯页面出现空白 txt 中有数据 php 中没有错误 这是 txt Product txt ID OID Title Description Option Price 01 01JAP Japanese Mod
  • CarrierWave + RMagick 方形裁剪?

    我正在尝试使用 Ruby on Rails CarrierWave 和 RMagick 制作固定的方形图像裁剪 我尝试过以下两种方法 但没有运气 version thumb do process resize to fit gt 200 2
  • C# 十进制格式化查询

    我正在尝试格式化小数 以便它显示如下 14 5 应显示为 14 50 14 50 应显示为 14 50 14 05 应显示为 14 05 14 00 应显示为 14 是否可以使用单一字符串格式 即不使用条件格式 我尝试过 0 不满足第一个示
  • 水平滚动列表

    我希望将图像显示在水平列表中 这就是我到目前为止所做的 var list Ext create Ext List store store itemTpl new Ext XTemplate img src icon inline true
  • 设置解析注册的默认个人资料图片

    我试图在注册时在解析中设置默认的个人资料图片 该图片位于我的项目文件夹中 有什么办法可以设置不上传照片吗 var user new Parse User user set username username val user set pas
  • 在 HyperLedger Composer 查询中获取资产计数?

    我想在 HyperLedger Composer 中编写一个查询 返回我在超级账本中拥有的资产数量 我有数千条记录 我不想将它们全部获取并计算计数 数据传输会很慢 我希望查询返回计数 不幸的是 这儿没有count使用作曲家查询语言 您必须创
  • cocos2d 计算给定起点、角度和距离的目的地点

    我想快点吧 Cocos2d 和 xcode 中的 2d 问题 I have CGPoint currPoint float lineLength float angle 现在 我需要找到距离 currPoint 角度为 lineLength
  • 大量数据的数据库设计[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开展一个项目 涉及来自美味网站的大量数据 可用数据为 日期 用户 ID 网址 标签 针对每个书签 我将数据库规范化为 3NF 并且由于我们
  • 是否需要“设置字符集utf8”?

    我正在重写我们的数据库类 基于 PDO 并陷入困境 我被教导要同时使用SET NAMES utf8 and SET CHARACTER SET utf8在 PHP 和 MySQL 中使用 UTF 8 时 在 PDO 中我现在想使用PDO M
  • PHP 日期比较

    如何检查 2008 02 16 12 59 57 格式的日期是否小于 24 小时前 if strtotime 2008 02 16 12 59 57 gt time 24 60 60 LESS
  • 如何确定 _POSIX_PATH_MAX 的系统值

    谁能告诉我如何找到系统值 POSIX PATH MAX在 Linux 薄荷中 我知道它在 文件中可用 但我不知道如何找到它的值 根据 POSIX 要使用的工具被命名为getconf http pubs opengroup org onlin
  • React Router Lazy 组件不起作用

    所以这有效 import Page from components Page render return
  • 有选择地将 C++ 核心逻辑暴露给 QML 的最佳方法

    我想设置特定 QML 组件的上下文属性 而不是在根上下文中 我不希望在组件外部访问该属性 C 有没有一种方法可以访问组件的上下文 只允许从组件的上下文中访问命名属性 而不是从全局命名空间中访问 我想保持 QML 声明性 而不是在 C 中创建
  • Seaborn 群图和点图躲避对齐

    有没有办法将点图的平均值 SEM 与相应的群图对齐 这是我的代码 import seaborn as sns import numpy as np import pandas as pd import matplotlib pyplot a
  • 如何在pyspark中自动删除常量列?

    我在 pyspark 中有一个 Spark 数据框 我需要从数据框中删除所有常量列 由于我不知道哪些列是常量 因此我无法手动取消选择常量列 即我需要一个自动过程 我很惊讶我无法在 stackoverflow 上找到简单的解决方案 Examp
  • 如何保持火车步骤之间的状态?

    我的计算图中有一个张量 我想在每个训练步骤之后添加一行 我怎样才能做到这一点 更详细 我正在获取渐变optimizer compute gradients 我想根据渐变历史修改这些渐变 这是我尝试使用的代码 def process grad