Я пересмотрел текст Chollet Deep Learning с Python после завершения нескольких курсов по ML и нашел его гораздо более доступным.
Однако в главе, посвященной передаче стилей в предварительно обученной сети VGG19,Я не понимаю, как автор манипулирует различными параметрами layer_features для получения потерь содержимого, стиля и изменения.
Отрезанный код (стр. 292) отображается ниже
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)
for layer_name in style_layers:
layer_features = outputs_dict[layer_name]
style_reference_features = layer_features[1, :, :, :]
combination_features = layer_features[2, :, :, :]
sl = style_loss(style_reference_features, combination_features)
loss += (style_weight / len(style_layers)) * sl
loss += total_variation_weight * total_variation_loss(combination_image)
, учитывая, чтоавтор объединил три тензора изображения вместе, представляющих эталон стиля, эталон контента и выходные выходные изображения. Я считаю, что эти изображения представлены различными индексами переменной layer_features.
Эти функции полученыкак только тензор конкатенированного изображения пройдет через сеть, правильно?
Но я все еще не понимаю, что на самом деле представляет layer_features - мы просто вычитаем выходные карты активации разных изображений друг с другом, чтобы измерить сходство?у