Haskell Repa означает BoundFixed?

В пакете Repa есть Boundary тип данных:

data Boundary a
        = BoundFixed !a
        | BoundConst !a
        | BoundClamp
        deriving (Show)

Я понимаю, что подразумевается под BoundConst (ячейки вне массива обрабатываются как одно значение), и я понимаю, что подразумевается под BoundClamp (ячейки вне массива имеют те же значения, что и ближайшая ячейка массива).

Что подразумевается под BoundFixed? Описание: Использовать фиксированное значение для пограничных регионов. Что такое "пограничный регион"? Это все краевые клетки?

1 ответ

Решение

Чтение исходного кода для mapStencil2 а также partitionForStencil похоже, что область границы - это любая ячейка, значение которой будет вычислено с использованием ячеек вне входного массива. BoundConst использует постоянное значение вне массива в качестве входных данных для свертки при выборке ячеек вне массива. BoundFixed использует постоянное значение в качестве результата в любое время, когда свертка будет зависеть от значения вне массива.

Вы можете легко проверить это с помощью свертки 3х3 на маленьком изображении. BoundConst а также BoundClamp не должно менять изображение вообще. BoundFixed a нарисовал бы одну клетку a границы на изображении. BoundFixed при свертке 2х2 следует нарисовать границу только на двух сторонах изображения. Я не могу рекомендовать использовать BoundFixed для чего-либо, кроме рисования границ, поскольку одна и та же свертка будет давать разные результаты только из-за размера трафарета.

Другие вопросы по тегам