gpt4 book ai didi

python - 如何在公式中使用 tensorflow 张量值?

转载 作者:行者123 更新时间:2023-11-30 09:48:30 25 4
gpt4 key购买 nike

我有一个简单的问题。我正在 tensorflow 中开发模型,需要在构建阶段在公式中使用迭代次数。我知道如何使用 global_step,但我没有使用现有的优化器。我正在计算自己的梯度

grad_W, grad_b = tf.gradients(xs=[W, b], ys=cost)
grad_W = grad_W +rnd.normal(0,1.0/(1+epoch)**0.55)

然后使用

new_W = W.assign(W - learning_rate * (grad_W))
new_b = b.assign(b - learning_rate * (grad_b))

并且想在更新我的权重之前在公式中使用纪元值。我怎样才能以最好的方式做到这一点?我有一个 sess.run() 部分,想将纪元号传递给模型,但不能直接使用张量。来 self 的运行通话

_, _, cost_ = sess.run([new_W, new_b ,cost], 
feed_dict = {X_: X_train_tr, Y: labels_, learning_rate: learning_r})

我想传递纪元号。你通常怎么做?

提前致谢,翁贝托

编辑:

感谢您的提示。看来可行

grad_W = grad_W + tf.random_normal(grad_W.shape, 
0.0,1.0/tf.pow(0.01+tf.cast(epochv, tf.float32),0.55))

但我仍然需要看看这是否是我所需要的以及是否按预期工作。想法和反馈会很棒!

最佳答案

您可以在图表中将epoch定义为不可训练的tf.Variable,并在每个epoch结束时递增它。您可以使用 tf.assign_add 定义操作进行增量并在每个时期结束时运行它。

您还需要使用 tf.random_normal 而不是 rnd.normal那么。

示例:

epoch = tf.Variable(0, trainable=False) # 0 is initial value
# increment by 1 when the next op is run
epoch_incr_op = tf.assign_add(epoch, 1, name='incr_epoch')

# Define any operations that depend on 'epoch'
# Note we need to cast the integer 'epoch' to float to use in tf.pow
grad_W = grad_W + tf.random_normal(grad_W.shape, 0.0,
1.0/tf.pow(1+tf.cast(epoch, tf.float32), 0.55))

# Training loop
while running_epoch:
_, _, cost_ = sess.run([new_W, new_b ,cost],
feed_dict = {X_: X_train_tr, Y: labels_, learning_rate: learning_r})

# At end of epoch, increment epoch counter
sess.run(epoch_incr_op)

关于python - 如何在公式中使用 tensorflow 张量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49115416/

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