gpt4 book ai didi

python - 如何在训练操作的每一步之间修剪密集层的权重

转载 作者:行者123 更新时间:2023-12-01 09:07:55 27 4
gpt4 key购买 nike

是否有任何可能的方法来执行自定义操作(例如,在每个训练步骤中手动剪辑密集层的权重值)

if mode == tf.estimator.ModeKeys.TRAIN:
optimizer = tf.train.AdamOptimizer(learning_rate=0.001)
weights = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='logits/kernel')[0]
clip_op = tf.assign(weights, tf.clip_by_value(weights, 0.01, 0.1))
train_op = optimizer.minimize(
loss=loss,
global_step=tf.train.get_global_step())
return tf.estimator.EstimatorSpec(mode=mode, loss=loss, train_op=train_op)

上面,我想在每个训练操作之间修剪 logits/kernel 层的权重,但它没有按预期工作,该层的权重仍然会漂移到 (0.01, 0.1) 的范围之外。我想知道我在这里缺少什么。

最佳答案

好吧,你永远不会在任何地方使用clip_op。由于您似乎正在使用 tf.layers,请注意,它们接受 kernel_constraint 参数(与偏差相同),这使得这很容易。该函数需要将内核作为参数并返回“受约束”的内核。
在您的情况下,您可以将 kernel_constraint=lambda x: tf.clip_by_value(x, 0.01, 0.1) 传递给图层定义。

关于python - 如何在训练操作的每一步之间修剪密集层的权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51897530/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com