tensorflow - 只学习 Tensorflow 中的非零元素
问题描述
对于一个项目,我只想与特定数量的神经元而不是完全连接的层建立连接。为了实现这一点,我创建了一个类似掩码的权重初始化,其中我将不需要的连接设置为 0,通过使用 matmul 我可以实现我的目标,但我现在遇到的问题是我希望这些连接不参与学习过程以及(例如,零连接保持为零,并且不会妨碍学习非零元素)。有关如何解决此问题的任何建议?
解决方案
您可以通过在应用渐变之前手动重置渐变来实现。替换通常的优化操作,如:
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
手动梯度计算和应用:
grads = tf.gradients(loss, ['name-of-your-neurons-variable'])
# ... here put code for gradient resetting using the mask
grads_and_vars = list(zip(grads, ['name-of-your-neurons-variable']))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train_op = optimizer.apply_gradients(grads_and_vars)
推荐阅读
- kubernetes - Kubernetes Private Repo Imagepullbackoff 错误
- r - 主数据表中的另一个数据表
- java - install4j - 自动更新期间的问题,因为 install4j 尝试更新注册表项
- aws-lambda - 我的 lambda 函数需要哪些权限才能从 AWS Secrets Manager 检索密钥
- bootstrap-4 - 如何在 Bootstrap 中实现以下布局?
- java - 如何正确迭代两个循环
- javascript - 带有钩子的useEffect中的Promise函数内的setState?
- brainfuck - 在brainfuck中将指针移动给定数量
- r - 每 2 列添加 1 个空白列
- c# - 将字符串数组解析/转换为 int