如何在公式中使用TensorFlow张量值?

我有一个快速的问题。我正在开发一个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))

我想在更新权重之前在公式中使用epoch值。我该如何以最佳方式实现这一点?我有一个sess.run()部分,并且希望将epoch编号传递给模型,但不能直接使用张量。在我的运行调用中

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

我想传递epoch编号。您通常是如何做的?

提前感谢,Umberto

编辑

感谢您的提示。看起来似乎有效

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定义一个操作来进行增加,并在每个epoch结束时运行它。

您还需要使用tf.random_normal代替rnd.normal

示例:

epoch = tf.Variable(0, trainable=False) # 0 是初始值# 当下一个操作运行时增加1epoch_incr_op = tf.assign_add(epoch, 1, name='incr_epoch')# 定义任何依赖于'epoch'的操作# 注意我们需要将整数'epoch'转换为浮点数以便在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))# 训练循环while running_epoch:    _, _, cost_ = sess.run([new_W, new_b ,cost],        feed_dict = {X_: X_train_tr, Y: labels_, learning_rate: learning_r})# 在epoch结束时,增加epoch计数器sess.run(epoch_incr_op)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注