Как данные передаются между функцией потерь и моделью в кератах? - PullRequest
0 голосов
/ 20 сентября 2019

Я работаю над проблемой street2shop, которая включает в себя обработку изображений на keras.Это использует несколько изображений в качестве входных данных и пользовательских потерь (триплетная потеря).Я хочу знать, как именно данные передаются от модели к потере, потере процесса, если я использую пакеты (например, 10), а затем обновлять вес модели?

вот мой режим:

def get_model():
    no_top_model = InceptionV3(include_top=False, weights='imagenet', pooling='avg')

    x = no_top_model.output
    x = Dense(512, activation='elu', name='fc1')(x)
    x = Dense(128, name='fc2')(x)
    x = Lambda(lambda x: K.l2_normalize(x, axis=1), name='l2_norm')(x)
    return Model(no_top_model.inputs, x)

base_model = get_model()

def get_my_model(base_model):
    a_in = Input((img_size,img_size,3))
    p_in = Input((img_size,img_size,3))
    n_in = Input((img_size,img_size,3))


    a_out = base_model(a_in)
    p_out = base_model(p_in)
    n_out = base_model(n_in)

    merged_vector = concatenate([a_out, p_out, n_out], axis=-1)
    #print(merged_vector)

    model = Model(inputs=[a_in, p_in, n_in], outputs=merged_vector)

    return model

model=get_my_model(base_model)

и вот моя функция потерь:

def margin_triplet_loss(y_true, y_pred, margin=.3):
    loss1=0
    for i in range(0,batch_size):
      out_a = y_pred[:, 0:128]
      out_p = y_pred[:, 128:256]
      out_n = y_pred[:, 256:384]


      loss = K.maximum(margin
             + K.sum(K.square(out_a-out_p), axis=1)
             - K.sum(K.square(out_a-out_n), axis=1),
             0.0)
      loss1=loss1+loss
    return loss1/batch_size

В функции потерь я хочу взять вложение каждого изображения a_in, p_in и n_in и вычислить потери, но я немного уверен, что нарезкамассив неверен.Будет очень полезно, если кто-нибудь объяснит поток данных между моделью и потерей или пришлет мне ссылку, чтобы понять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...