0
我使用tensorflow建立一個簡單的自動編碼模型負輸出,但是有這個奇怪的錯誤,我不能診斷 我有一個看起來像這樣的損失函數:tensorflow:戰俘給
def loss_func(x,y):
return 0.5 * tf.reduce_mean(tf.pow(x-y, 2))
總損耗然後通過計算:
return self.loss_func(x , input) + self.reg_fac * reg
現在的問題是,當設置reg_fac
到0
損失收益爲正數和車型似乎練好,但reg_fac損失減少,再增加時,痠痛負值和持續下降
reg
如此計算中使用的每個自動編碼器:
return tf.reduce_mean(tf.pow(self.w1, 2)) + tf.reduce_mean(tf.pow(self.w2, 2))
其中w1
是編碼器權重和w2
是解碼器的權重。 我知道這是一個愚蠢的錯誤,但我找不到它。
我完整的代碼在這裏上傳: https://github.com/javaWarrior/dltest
important files:
ae.py: autoencoders model,
sae.py: stacked autoencoders model,
mew.py: testing model on extracted features of nus_wide images using SIFT,
nus_wide.py: just an interface for nuswide
我使用adamoptimizer與成本正則化術語。但我不認爲reduce_sum會有所作爲,因爲它只是規模上的差異? – mohRamadan
然後我道歉。如果我使用Adagrad或其他擴展名,我通常會允許算法處理正則化。區別僅僅在於規模,但它是正確的frobenius規範。我假設你的模型有問題(這就是爲什麼我只包含一個例子)。你能用全模型更新這個問題嗎? –
這是一種意大利麪條代碼,因爲我只是在測試自動編碼器,但無論如何我都會上傳它 – mohRamadan