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