基本上,您不希望描述器的损失达到零,因为那意味着描述器做得太好了(最重要的是,发电机太糟糕了),即它可以很容易地区分假数据和真实数据(即发电机的创建不够近,不足以使真实的数据足够接近真实的数据)。
总而言之,重要的是要以这种方式定义描述器的损失,因为我们确实希望描述器尝试减少这种损失,但是整个GAN系统的最终目标是使损失平衡。因此,如果一个损失达到零,则失败模式(不再发生学习)。要避免这种情况,您必须确保您的最后一个描述层不是Sigmoid层,并且您的损失在[0,1]之间不受限制。您可以尝试使用
BCE
对于我来说,GAN网络是移动网络,对大多数网络的培训和损失价值行为行为,上一个答案是正确的,确切的小损失评估值并不能保证结果。 仅与培训步骤,目标估计和学习权重相比,wloss评估值仅与损失数量计算非常大的样本相比,但分类的任务正在起作用。
以前的答案不再使用Sigmoids功能,而是您可以在这里扮演的角色更多。 sandwer:当损失评估值要达到0或超过5或以后的情况下,这还不错,但这与您选择函数有关。
[样品二进制序列]:
group_1_ShoryuKen_Left = tf.constant([ 0,0,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,1,0,1,0,0,0,0, 0,0,0,0,0,0,0,1,0,0,0,0, 0,0,0,0,0,0,0,0,0,1,0,0 ], shape=(1, 1, 1, 48))
group_1_ShoryuKen_Right = tf.constant([ 0,0,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,1,1,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,1,0,0 ], shape=(1, 1, 1, 48))
group_2_HadoKen_Left = tf.constant([ 0,0,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,1,0,1,0,0,0,0, 0,0,0,0,0,0,0,1,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,1,0 ], shape=(1, 1, 1, 48))
group_2_HadoKen_Right = tf.constant([ 0,0,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,1,1,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,1,0 ], shape=(1, 1, 1, 48))
group_2_Heriken_kick_Left = tf.constant([ 0,0,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,1,1,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,0,0, 0,0,0,0,0,0,0,0,1,0,0,0 ], shape=(1, 1, 1, 48))
group_2_Heriken_kick_Right = tf.constant([ 0,0,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,1,0,1,0,0,0,0, 0,0,0,0,0,0,0,1,0,0,0,0, 0,0,0,0,0,0,0,0,1,0,0,0 ], shape=(1, 1, 1, 48))