使用TensorFlow訓練神經網絡的時候,出現以下報錯信息:
Traceback (most recent call last):
File "gan.py", line 147, in
var_list=G_PARAMS
File "C:\Python35\lib\site-packages\tensorflow\python\training\optimizer.py", line 322, in minimize
([str(v) for _, v in grads_and_vars], loss))
ValueError: No gradients provided for any variable, check your graph for ops that do not support gradients, between variables ["", "", "", "", "", ""] and loss Tensor("Mean_2:0", shape=(), dtype=float32).
報錯信息的意思是,提供給minimize函數的var_list參數中的變量沒有梯度,需要檢查你的圖的操作是否在這些變量中支持梯度。
經過檢查,發現優化器指定的loss參數中,與var_list參數中的變量無任何關系導致了上述錯誤,因此,
需要檢查loss和var_list兩個參數的關聯性,確保loss由指定的var_list中的變量來計算
----------------------------------------------------
實驗問題暫記:
使用DDPG的Actor輸出action,包含兩個act:
act1.VM位置,是離散的,范圍為[0, n],n為網絡節點數;
act2:能量使用率,是連續的,范圍為[0, 1]
但使用DDPG沒能訓練出結果,個人猜測是DDPG輸出的act1都是連續的,很難收斂,
於是考慮用DQN來學習act1,但DDPG的critic(s,a1,a2)來指導DQN的參數(a1_loss = -q)
如果DQN只傳a1給critic的話會造成以上error,