Я выполняю регрессионное обучение, используя искусственную нейронную сеть в кератах с бэкэндом тензорного потока.
Моя входная форма [100,3] ([нет образцов, нет объектов]).
Моя выходная форма [100,3] ([нет образцов, нет выходов]) .
Я хочу передать 4-мерные данные вместе с каждой входной выборкой (форма этих данных будет [100,4]), чтобы я мог получить к ней доступ для написания пользовательской функции потерь. Я не хочу, чтобы это вовлекалось в процесс обучения.
Примерно так:
def wrapper(input_tensor):
def custom_loss(y_true, y_pred):
return binary_crossentropy(y_true, y_pred) + mean(last 4 elements of the input_tensor)
return custom_loss
Я довольно много исследовал функциональный API и то, как кера можно использовать с несколькими входами. и несколько выходов для обучения сети. Но, поскольку я не хочу, чтобы он участвовал в фазе обучения, и все еще должен быть переведен в пользовательскую функцию потерь - я не думаю, что это послужит моей цели.
Моя интуиция для решения этой проблемы :
1. Добавьте 4-мерные данные к входу, замаскируйте эти 4 входных нейрона при обучении сети, передавая только часть входного слоя (исключая последние 4 элемента) на следующий уровень. - Проблема в том, что я не думаю, что мы можем замаскировать такие нейроны.
2. Получите 4-мерные данные в качестве дополнительного входа в сеть, используя функциональные API. - Проблема в том, что я не могу передать 4-мерные данные в функцию пользовательских потерь, не вовлекая их в процесс обучения.
Может кто-нибудь помочь мне решить эту проблему? Пожалуйста, дайте мне знать, если понадобится какая-либо дополнительная информация.
Я думаю, что даже этот вопрос - Как использовать часть входных данных для обучения, но отдых для функции потери в Keras следует моей потребности. Но это не ответ: (