日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

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

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

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

  • 情況三
    錯誤寫法:
    創(chuàng)建一個變量或者常量,將計算出的結(jié)果一行一行 assign 進去
    修改后的寫法:
    創(chuàng)建一個空 list,每次將計算出的結(jié)果 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上討論的人很多。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。