日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

tf2: Gradients do not exist for variables when minimizing the loss.

發布時間:2024/7/5 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tf2: Gradients do not exist for variables when minimizing the loss. 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WARNING:tensorflow:Gradients do not exist for variables when minimizing the loss.

  • 情況一
    該變量沒有參與最后loss的計算

    (1)如果直接沒有參與計算,其實很好就能找出來,刪掉無用變量即可;
    (2)有時直接參與計算了,但是由于程序中的 if 等條件語句,在某個batch的數據恰巧不適用某個變量,而其他batch可能就是使用了該變量,這種情況下,忽略該警告即可。

  • 情況二
    該變量在 model 的 call 之前就進行了運算,或者在 tf.GradientTape() 之外進行了運算,比如:concat,dense之類的都不行。

  • 情況三
    錯誤寫法:
    創建一個變量或者常量,將計算出的結果一行一行 assign 進去
    修改后的寫法:
    創建一個空 list,每次將計算出的結果 append 加入,最后使用 tf.stack() 操作

import tensorflow as tfoptimizer = tf.keras.optimizers.Adam(learning_rate=0.001) w1 = tf.Variable([[1.0]]) w2 = tf.Variable([[3.0]])w = tf.concat([w1, w2], 0) # 變量在tf.GradientTape()范圍之外就進行了計算x = tf.random.normal((1,2)) y = tf.reduce_sum(x,1) with tf.GradientTape() as tape:# w = tf.concat([w1, w2], 0) # 這里使用就不會報錯了r = tf.matmul(w,x)loss = tf.metrics.mse(y, r)gradients = tape.gradient(loss, [w1,w2])print(gradients) # [None, None]optimizer.apply_gradients(zip(gradients, [w1,w2])) # 沒有梯度,這行就會報錯

最后:這類型問題百度沒什么解答,github上討論的人很多。

總結

以上是生活随笔為你收集整理的tf2: Gradients do not exist for variables when minimizing the loss.的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。