我正在使用tf.losses.sparse_softmax_cross_entropy
作为最后一层的分类函数来训练我的网络,一切都工作正常。
我现在只是在权重上添加了L2正则化,并且损失不再得到优化。会发生什么?
reg = tf.nn.l2_loss(w1) + tf.nn.l2_loss(w2)
loss = tf.reduce_mean(tf.losses.sparse_softmax_cross_entropy(y, logits)) + reg*beta
train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)
答案 0 :(得分:1)
鉴于所提供的信息很难确定答案,但这是可能的原因:
tf.nn.l2_loss
计算为元素上的总和,而交叉熵损失减少到其平均值(参见tf.reduce_mean
),因此这两个项之间的数值不平衡。
例如,尝试将每个L2损耗除以计算得出的元素数量(例如tf.size(w1)
)。