如何规范损失函数?

时间:2019-03-06 18:15:30

标签: python tensorflow machine-learning

我正在学习张量流,并且在理解如何规范成本函数方面遇到一些麻烦。我看了看,发现很多不同的答案。有人可以告诉我如何规范成本函数吗?

我在Coursera上学习了Andrew Ng的机器学习课程,当我在论坛上看时,似乎有一点不同。似乎大多数人都将每个权重以及最终成本函数进行正则化,但是在此过程中没有提及这一点。哪个是正确的?

2 个答案:

答案 0 :(得分:0)

基本上,您只需在所需图层中定义正则化函数即可。

tf.keras.layers.Conv2D(filters,
                       kernel_size,
                       strides=strides,
                       padding=padding,
                       ...
                       kernel_regularizer=tf.keras.regularizers.l2()
                       )

使用Estimator API或低级张量流,您可以将所有正则化器求和至损失值。您可以使用tf.losses.get_regularization_loss()来获得它,或者只是将其添加到损失中,或者使用tf.losses.get_total_loss() Keras会在内部对其进行处理。

答案 1 :(得分:0)

TensorFlow L2(Tikhonov)中,具有正则化参数lambda_的正则化可以这样写:

# Assuming you defined a graph, placeholders and logits layer.
# Using cross entropy loss:
lambda_ = 0.1
xentropy = tf.nn.softmax_cross_entropy_with_logits_v2(labels=y, logits=logits)
ys = tf.reduce_mean(xentropy)
l2_norms = [tf.nn.l2_loss(v) for v in tf.trainable_variables()]
l2_norm = tf.reduce_sum(l2_norms)
cost = ys + lambda_*l2_norm
# from here, define optimizer, train operation and train ... :-)