Представьте типичную модель авто-кодера-декодера. Однако вместо обычного декодера, где деконволюции вместе с повышением масштаба используются для создания / синтеза тензора, аналогичного входу модели, мне нужно реализовать структурированный / нестандартный декодер.
Здесь мне нужно, чтобы декодер взял свои входные данные, например, тензор 10x2, где каждая строка представляет x,y
позиции или координаты, и визуализировал изображение фиксированного предопределенного размера, где в указанном местоположении генерируется 10 гауссовых распределений по входу.
По-другому, мне нужно создать пустой тензор фиксированного размера, заполнить местоположения, заданные координатами 10, значением 1, а затем развернуть гауссово ядро по всему тензору. Например, представьте следующий 1-й сценарий. пусть вход для всей модели будет вектором размера 10. если вход для декодера равен [3, 7]
, которые представляют собой две x-координаты (индексирование 0), и гауссово ядро размера 3, которое мы хотим использовать, это [0.28, 0.44, 0.28]
, тогда выходной сигнал декодера должен выглядеть следующим образом (должен быть того же размера, что и исходный вход модели, равный 10):
[0, 0, 0.28, 0.44, 0.28, 0, 0.28, 0.44, 0.28, 0]
, что совпадает с [0, 0, 0, 1, 0, 0, 0, 1, 0, 0]*[0.28, 0.44, 0.28]
где *
представляет оператор свертки. обратите внимание, что в первом векторе 1 или расположены в позициях 3 и 7, учитывая формат индексации 0.
Наконец, будет вычислена типичная потеря пикселей, такая как MSE. Важной частью является то, что этот модуль рендеринга должен иметь возможность обратного распространения ошибок от потери к его входам, которые являются координатами.
Этот модуль сам не имеет никаких обучаемых параметров. Кроме того, я не хочу менять слои перед этим модулем рендеринга, и они должны оставаться такими, как есть. В более продвинутой настройке я также хотел бы предоставить 4 значения ковариации в качестве входных данных, то есть вход для рендерера будет иметь вид [num_points, 5]
, где каждая строка [x_coord, y_coord, cov(x,x), cov(x,y), cov(y,y)]
.
Как Могу ли я реализовать такой модуль в любой из доступных структур глубокого обучения? намек на что-то похожее также был бы очень полезен.