Как создать функцию потери чувствительности канала? - PullRequest
0 голосов
/ 11 мая 2018

Я работаю над рекурсивным авто-кодером. Нейронная сеть берет два 2D-изображения, каждое из которых имеет форму (28,28,1) и объединено для создания входного сигнала (28,28,2). Они кодируются в форме (28,28,1) и возвращаются в исходную форму (28,28,2). Таким образом, закодированная форма данных может быть подана в авто-кодер для рекурсивной работы.

Можно предположить, что канал 1 - это новое изображение, а канал 2 - это ранее закодированные данные. Как мне создать функцию потерь, которая в большей степени штрафует за ошибки при восстановлении канала 2 (поскольку он будет переносить ранее закодированные данные)?

Я работаю в Керасе с бэкэндом Tensorflow.

В качестве альтернативы, есть ли способ обучить сеть как целостное дерево, в отличие от того, чтобы делать это только для одного, двух входных - двух выходных блоков одновременно?

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете разделить свои декодированные (28, 28, 2) обратно на 2 изображения в качестве вывода и использовать loss_weights, чтобы назначить вес важности.Из документации :

model.compile(optimizer='rmsprop', loss='binary_crossentropy',
              loss_weights=[1., 0.2])

И да, все модели в Keras похожи на слои, поэтому вы можете, например, связать их вместе, чтобы построить дерево.Затем вы можете обучить сеть за один раз и решить, хотите ли вы делиться весами и т. Д. Однако, это может быть более трудным для обучения.Я бы порекомендовал использовать функциональный API для создания этих более сложных структур, чтобы у вас было больше контроля.

...