gpt4 book ai didi

python - tf.GradientTape() 返回 None

转载 作者:行者123 更新时间:2023-12-01 09:06:36 41 4
gpt4 key购买 nike

我正在尝试使用 tf.GradientTape 计算梯度。当我尝试使用损失和 Model.variables (tf.keras.Model) 作为输入时,结果以 None 数组的形式返回给我。我究竟做错了什么?我使用的tensorflow版本是1.9。

Model = CubeValModel(TrainingCurves)

LearningRate = 0.0005
TrainOpe = tf.train.AdamOptimizer(LearningRate, name="MainTrainingOpe")

for i in range (5):
with tf.GradientTape() as t:
Predictions = tf.nn.softmax(Model.FinalFC, name="SoftmaxPredictions")
Cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=Predictions, labels=TrainingLabels, name="CrossEntropy")
Loss = tf.reduce_mean(Cross_entropy, name="Loss")
print (Loss)
print (Model.variables)
Gradients = t.gradient(Loss, Model.variables)
print(Gradients)

输出:

tf.Tensor(0.84878147, shape=(), dtype=float32)

[<tf.Variable 'LayerBlock1/Weights1:0' shape=(1, 3, 1, 3) dtype=float32, numpy=

[None, None, None, None, None, None, None, None, None]

最佳答案

我假设您正在使用 TensorFlow Eager Execution,不是吗?如果我没记错的话,在 tf.GradientTape() 下,您应该调用计算模型的方法,而不是调用其成员之一。此计算执行将允许 t 找出稍后需要生成哪些梯度。我希望这有帮助

关于python - tf.GradientTape() 返回 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51994043/

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