/
vuron
/
adept
Обзор
Документация
Войти
/
vuron
/
adept
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/maxpool2d_tests.cpp
37 строк
2 KB
kolkir
MaxPool2d cpu backend stub and test
09 фев 2025, 12:27
09 фев 2025, 12:27
d0343a3
Код
Авторство
О чём код?
#include <adept/nn/maxpool2d.hpp> #include "catch.hpp" using namespace adept; TEST_CASE("MaxPool2d construction", "[maxpool2d]") { MaxPool2d pool(MaxPool2dOptions(3)); } TEST_CASE("MaxPool2d im3x3", "[maxpool2d]") { std::vector<float32_t> im_data = {1, 2, 3, 4, 5, 6, 7, 8, 9}; auto im = Variable(Tensor::from_blob( im_data.data(), {.shape = {1, 1, 3, 3}, .device = device_t::CPU, .dtype = to_dtype<float32_t>()})); MaxPool2d pool(MaxPool2dOptions(2).with_stride(1)); auto res = pool(im); REQUIRE_THAT(res.data().at<float32_t>({0, 0, 0, 0}), Catch::WithinRel(5.f, 0.001f)); REQUIRE_THAT(res.data().at<float32_t>({0, 0, 0, 1}), Catch::WithinRel(6.f, 0.001f)); REQUIRE_THAT(res.data().at<float32_t>({0, 0, 1, 0}), Catch::WithinRel(8.f, 0.001f)); REQUIRE_THAT(res.data().at<float32_t>({0, 0, 1, 1}), Catch::WithinRel(9.f, 0.001f)); mean(res).backward(); REQUIRE_THAT(im.grad().at<float32_t>({0, 0, 0, 0}), Catch::WithinRel(0.0f, 0.001f)); REQUIRE_THAT(im.grad().at<float32_t>({0, 0, 0, 1}), Catch::WithinRel(0.0f, 0.001f)); REQUIRE_THAT(im.grad().at<float32_t>({0, 0, 0, 2}), Catch::WithinRel(0.0f, 0.001f)); REQUIRE_THAT(im.grad().at<float32_t>({0, 0, 1, 0}), Catch::WithinRel(0.0f, 0.001f)); REQUIRE_THAT(im.grad().at<float32_t>({0, 0, 1, 1}), Catch::WithinRel(0.25f, 0.001f)); REQUIRE_THAT(im.grad().at<float32_t>({0, 0, 1, 2}), Catch::WithinRel(0.25f, 0.001f)); REQUIRE_THAT(im.grad().at<float32_t>({0, 0, 2, 0}), Catch::WithinRel(0.0f, 0.001f)); REQUIRE_THAT(im.grad().at<float32_t>({0, 0, 2, 1}), Catch::WithinRel(0.25f, 0.001f)); REQUIRE_THAT(im.grad().at<float32_t>({0, 0, 2, 2}), Catch::WithinRel(0.25f, 0.001f)); }