首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >tensorflow中的紧急执行在第二次迭代时停止记录梯度

tensorflow中的紧急执行在第二次迭代时停止记录梯度
EN

Stack Overflow用户
提问于 2019-06-19 15:17:03
回答 1查看 108关注 0票数 1

不知何故,我在训练循环中得不到梯度。下面是一个简单的例子。

代码语言:javascript
运行
复制
import tensorflow as tf
import tensorflow_probability as tfp
tf.enable_eager_execution()

hidden_size = 32
output_size = 1
m = tf.keras.Sequential(
[
            tfp.layers.DenseLocalReparameterization(hidden_size, tf.nn.leaky_relu),
            tfp.layers.DenseLocalReparameterization(hidden_size, tf.nn.leaky_relu),
            tfp.layers.DenseLocalReparameterization(output_size)
        ]
)

如果我运行梯度记录步骤两次,第二次没有显示任何梯度。返回一个包含None类型的列表。

代码语言:javascript
运行
复制
for _ in range(2):
    with tf.GradientTape() as tape:
        loss_value = m(tf.ones((1, 2))) * 2
        print(tape.gradient(loss_value, m.trainable_variables))

如果我们用一个“标准的”tensorflow模型替换模型m,情况就不是这样了。

m = tf.keras.Sequential([tf.keras.layers.Dense(1)])

我使用的是tensorflow=1.13.1和tensorflow-probability=0.6.0

EN

回答 1

Stack Overflow用户

发布于 2019-06-19 15:51:33

这似乎是一个暂时的bug。我上传了tensorflow和tensorflow probability的夜间版本,问题就解决了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56662065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档