TensorFlow - 如何在忽略零权重的情况下计算梯度?

2024-01-13

我想通过将一些权重设置为 0.0(每层中的特定权重,以此处讨论不重要的方式选择)来实现剪枝,以(1)在推理过程中忽略它们,(2)在训练过程中忽略它们。

我知道我可以在推理过程中忽略它们,方法是对每一层应用一个掩码,其中 1 位于我想要保留的权重索引处,否则为零。

然而,在训练过程中,我希望忽略的权重继续被忽略。也就是说,我希望它们(1)不更新并且(2)不影响其余梯度的计算。

我可以通过在应用渐变之前屏蔽渐变来做到(1)。但我做不到(2)。

我尝试过这样的事情:

# Create an optimizer.
opt = GradientDescentOptimizer(learning_rate=0.1)

# Compute the gradients for a list of variables.
# This returns a list of tuples, each tuple containing gradients and
# the corresponding variable
[(var, grad)] = opt.compute_gradients(loss)

# Ask the optimizer to apply the capped gradients.
train_op = optimizer.apply_gradients([(grad * mask, var)])

但这并不能达到我的目的,因为optimizer.compute_gradients(loss)会计算损失基于所有权重,包括零权重。换句话说,grad将具有一些对应于权重为零的索引的梯度。应用掩模会“浪费”这些本应用于更新非零权重的梯度。

我希望它根据非零权重计算损失。

有任何想法吗?


None

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

TensorFlow - 如何在忽略零权重的情况下计算梯度? 的相关文章

  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 如何从 R keras 中的类似生成器的数据中评估()和预测()

    我有以下代码 数据集可以下载here https www dropbox com s qjt5o31oyqj10m8 data tar gz dl 0 or here https www kaggle com c dogs vs cats
  • 酸洗过程是确定性的吗?

    对于特定的输入值 Pickle 是否总是产生相同的输出 我想当腌制具有相同内容但不同插入 删除历史记录的字典时可能会出现问题 我的目标是使用 Pickle 和 SHA1 创建函数参数的 签名 以实现 memoize 我想当腌制具有相同内容但
  • 如何将数组列表转换为 Spark 数据帧

    假设我有一个列表 x 1 10 2 14 3 17 我想转换x具有两列的 Spark 数据框id 1 2 3 和value 10 14 17 我怎么能这么做呢 Thanks x 1 10 2 14 3 17 df sc paralleliz
  • 如何将列表列表中的元素转换为小写? [复制]

    这个问题在这里已经有答案了 我正在尝试将列表列表的元素转换为小写 这就是看起来的样子 print dataset It went Through my shirt And came out The back and hit the kid
  • 使用 SQLAlchemy 时出现“NoneType”对象没有属性“get”错误

    我一直在尝试使用 SQLAlchemy 将对象映射到数据库 但遇到了障碍 Edit Basically changed a whole bunch of stuff 版本信息 如果方便的话 操作系统 Mac OSX 10 5 8 Pytho
  • 如何向 scikit-learn KD 树添加/删除数据点?

    我想知道是否可以在创建 scikit learn KDTree 实例后添加或删除数据点 例如 from sklearn neighbors import KDTree import numpy as np X np array 1 1 2
  • 在python中实现COM接口类型库

    我有一个插件 我正在尝试为我工作的公司的应用程序创建一个示例 我正在尝试用 Python 编写这个插件 插件架构的工作方式是插件需要实现在提供的 COM 类型库中定义的接口 因此 它是该类型库的 COM 客户端 并最终通过应用程序为其提供后
  • 如何使用Python和h5py读取HDF5属性(元数据)

    我有一个 HDF5 文件 里面有多个文件夹 每个文件夹都添加了属性 有些将属性称为 元数据 我知道如何访问文件夹内的键 但不知道如何使用 Python 提取属性h5py包裹 以下是 HDFView 的属性 Folder1 800 4 Gro
  • Python str.format() 方法的默认 kwarg 值

    我希望尝试使现有字符串的复数化尽可能简单 并且想知道是否有可能得到str format 在查找 kwargs 时解释默认值 这是一个例子 string number of sheep sheep has run away dict comp
  • Celery 任务分析

    正如我所看到的top公用事业celery进程消耗大量CPU时间 所以我想介绍一下它 我可以在开发人员机器上手动执行此操作 如下所示 python m cProfile o test date Y m d T prof manage py c
  • 跨行对 Pandas 数据框进行分组 - 2.0

    进一步这个问题跨行对 Pandas 数据框进行分组 https stackoverflow com questions 46995997 grouping pandas dataframe across rows 操作是 amount cl
  • 使用 pythonbrew 编译 Python 3.2 和 2.7 时出现问题

    我正在尝试使用构建多个版本的 python蟒蛇酿造 http pypi python org pypi pythonbrew 0 7 3 但我遇到了一些测试失败 这是在运行的虚拟机上 Ubuntu 8 04 32 位 当我使用时会发生这种情
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other

随机推荐