Я пытаюсь реализовать гетероскедастическую алеаторическую неопределенность в кератах.У моей модели есть два последних слоя:
# Classification block
x = layers.Flatten(name='flatten')(x)
x = layers.Dense(4096, activation='relu', name='fc1')(x)
x = layers.Dense(4096, activation='relu', name='fc2')(x)
# Good old output
linear_output = layers.Dense(units=1, activation="linear", name='linear_output')(x)
# Data-dependent uncertainty outainty
variance_output = layers.Dense(units=1, activation='linear', name='variance_output')(x)
Я хотел бы объединить эти выводы в одну потерю:
loss = K.sum(0.5 * K.exp(-1 * variance_output) * K.square(K.abs(input_label - linear_output)) + 0.5 * variance_output)
Мне удалось заставить его работать с
model.add_loss(loss)
но, к сожалению, это создает проблему с сохранением и загрузкой модели.Я хотел бы найти другой способ реализовать его так, чтобы сохранение и загрузка модели работали.