gpt4 book ai didi

python - 在风格迁移中使用 L2 标准化 - 不涉及权重?

转载 作者:行者123 更新时间:2023-12-01 01:31:07 28 4
gpt4 key购买 nike

我一直在阅读 Chollet 的《Python 深度学习》,其中他简要介绍了与 Keras 相关的 L2 标准化。据我所知,它通过向层的成本函数添加与权重平方和成比例的惩罚来防止过度拟合,从而有助于保持权重较小。

但是,在涉及艺术风格转移的部分中,内容损失作为衡量标准被描述为:

the L2 norm between the activations of an upper layer in a pretrained convnet, computed over the target image, and the activations of the same layer computed over the generated image. This guarantees that, as seen from the upper layer, the generated image will look similar.

风格损失也与 L2 范数有关,但现在让我们关注内容损失。

因此,相关代码片段(p.292):

def content_loss(base, combination):
return K.sum(K.square(combination - base))



outputs_dict = dict([(layer.name, layer.output) for layer in model.layers])
content_layer = 'block5_conv2'
style_layers = ['block1_conv1',
'block2_conv1',
'block3_conv1',
'block4_conv1',
'block5_conv1']
total_variation_weight = 1e-4
style_weight = 1.
content_weight = 0.025
#K here refers to the keras backend
loss = K.variable(0.)

layer_features = outputs_dict[content_layer]
target_image_features = layer_features[0, :, :, :]
combination_features = layer_features[2, :, :, :]
loss += content_weight * content_loss(target_image_features,
combination_features)

我不明白为什么我们使用每层的输出(即图像特征图),而不是 Keras 的 get_weights() 方法来获取权重以执行标准化。我不明白在这些特征图上使用 L2 归一化在训练期间如何受到惩罚,或者它到底在惩罚什么?

最佳答案

I understand that it prevents overfitting by adding a penalty proportionate to the sum of the square of the weights to the cost function of the layer, helping to keep weights small.

您指的是(权重)正则化,在本例中,它是 L2 正则化。向量的 L2 范数是其元素的平方和,因此当您对层的权重(即参数)应用 L2 正则化时,它将在损失函数中被考虑(即添加)。由于我们正在最小化损失函数,因此副作用是权重的 L2 范数也会减小,这反过来意味着权重的值已减小(即较小的权重)。

但是,在风格迁移示例中,内容损失被定义为特定层(即 content_layer)的激活(而不是权重)之间差异的 L2 范数(或本例中的 L2 损失) )当应用于目标图像和组合图像(即目标图像+样式)时:

return K.sum(K.square(combination - base)) # that's exactly the definition of L2-norm

所以这里不涉及权重正则化。相反,使用的损失函数是 L2 范数,它用作两个数组相似性的度量(即内容层的激活)。 L2 范数越小,激活越相似。

为什么激活层而不是其权重?因为我们要确保目标图像和组合图像的内容(即content_layer给出的表示)是相似的。请注意,层的权重是固定的,并且相对于输入图像不会改变(当然是在训练之后);相反,它们用于描述表示特定的输入图像,并且该表示称为该特定图像的该层的激活

关于python - 在风格迁移中使用 L2 标准化 - 不涉及权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52853080/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com