#python #numpy #machine-learning #pytorch #conv-neural-network
#python #numpy #машинное обучение #пыторч #conv-neural-network
Вопрос:
Я создаю кодер-декодер CNN для некоторых изображений. Каждое изображение имеет геометрическую форму вокруг центра — круг, эллипс и т.д.
Я хочу, чтобы мой CNN игнорировал все значения, которые находятся в этой форме. Все мои значения входных данных были нормализованы примерно до 0-1. Я устанавливаю все значения формы равными 0.
Я думал, что установка их на ноль будет означать, что они не будут обновляться, однако выходные данные моего кодировщика-декодера CNN меняют форму.
Что я могу сделать, чтобы убедиться, что эти значения остаются неизменными и не обновляются?
Спасибо!
Комментарии:
1. Что вы подразумеваете под «игнорированием» значений? И под кодировщиком-декодером вы подразумеваете автоэнкодер? Например, вы пытаетесь восстановить изображение после того, как протолкнули его через скрытое пространство с узким местом?
2. Я хочу, чтобы геометрия оставалась фиксированной. Я реконструирую будущий временной шаг потока мимо разных форм. Таким образом, я хочу, чтобы автоэнкодер просто изучал функции вокруг фигуры.
3. Я хочу, чтобы выходные данные имели форму в том же месте, нетронутую. В отличие от автоэнкодера, который воссоздает входные данные, этот автоэнкодер создает другой временной шаг ввода. итак, данные вокруг фигуры должны измениться, а не фактическая форма.
Ответ №1:
Я думаю, вы ищете «частичную свертку». Это работа, опубликованная Guilin Liu и коллегами, которая расширяет свертку, чтобы использовать маску ввода, а также карту входных объектов и применять свертку только к незащищенным пикселям. Они также предлагают, как компенсировать пиксели на границе маски, где ядро «видит» как действительные, так и замаскированные пиксели.
Пожалуйста, обратите внимание, что их реализация может иметь проблемы с автоматической смешанной точностью (AMP).
Комментарии:
1. Большое вам спасибо! У меня возникли некоторые проблемы с пониманием того, как это работает. Передаю ли я другой канал в своих входных данных только те пиксели, которые я хотел бы замаскировать? а затем использовать ‘PartialConv2d’? Как мне указать замаскированный канал?