Обычный способ сделать это — добавить ваш VGG в конец вашей модели, убедившись, что все его слои имеют trainable=False
перед компиляцией.
Затем вы пересчитываете свой Y_train.
Предположим, у вас есть эти модели:
mainModel - the one you want to apply a loss function
lossModel - the one that is part of the loss function you want
Создайте новую модель, присоединив одну к другой:
from keras.models import Model
lossOut = lossModel(mainModel.output) #you pass the output of one model to the other
fullModel = Model(mainModel.input,lossOut) #you create a model for training following a certain path in the graph.
Эта модель будет иметь те же веса, что и mainModel и lossModel, и обучение этой модели повлияет на другие модели.
Перед компиляцией убедитесь, что lossModel не поддается обучению:
lossModel.trainable = False
for l in lossModel.layers:
l.trainable = False
fullModel.compile(loss='mse',optimizer=....)
Теперь настройте свои данные для обучения:
fullYTrain = lossModel.predict(originalYTrain)
И, наконец, пройти обучение:
fullModel.fit(xTrain, fullYTrain, ....)
person
Daniel Möller
schedule
11.05.2017
a=model(y_pred)
. - person Daniel Möller   schedule 11.05.2017