Files
CUDANet/tools/pooling_test.py
2024-05-30 13:18:51 +02:00

155 lines
4.0 KiB
Python

import torch
from utils import print_cpp_vector
def _get_pool_input():
# fmt: off
return torch.tensor([
0.573, 0.619, 0.732, 0.055,
0.243, 0.316, 0.573, 0.619,
0.712, 0.055, 0.243, 0.316,
0.573, 0.619, 0.742, 0.055,
0.473, 0.919, 0.107, 0.073,
0.073, 0.362, 0.973, 0.059,
0.473, 0.455, 0.283, 0.416,
0.532, 0.819, 0.732, 0.850
]).reshape(1, 2, 4, 4)
# fmt: on
def _get_pool_input_non_square():
# fmt: off
return torch.Tensor([
0.573, 0.619, 0.732, 0.055, 0.123, 0.234,
0.243, 0.316, 0.573, 0.619, 0.456, 0.789,
0.712, 0.055, 0.243, 0.316, 0.654, 0.987,
0.573, 0.619, 0.742, 0.055, 0.321, 0.654,
0.473, 0.919, 0.107, 0.073, 0.321, 0.654,
0.073, 0.362, 0.973, 0.059, 0.654, 0.987,
0.473, 0.455, 0.283, 0.416, 0.789, 0.123,
0.532, 0.819, 0.732, 0.850, 0.987, 0.321
]).reshape(1, 2, 4, 6)
# fmt: on
def gen_max_pool_test_result():
input = _get_pool_input()
output = torch.nn.MaxPool2d(kernel_size=2, stride=2)(input)
output = torch.flatten(output)
print_cpp_vector(output)
def gen_max_pool_non_square_input_test_result():
input = _get_pool_input_non_square()
output = torch.nn.MaxPool2d(kernel_size=2, stride=2)(input)
output = torch.flatten(output)
print_cpp_vector(output)
def gen_max_non_square_pool_test_result():
input = _get_pool_input()
output = torch.nn.MaxPool2d(kernel_size=(2, 3), stride=2)(input)
output = torch.flatten(output)
print_cpp_vector(output)
def gen_max_pool_non_square_stride_test_result():
input = _get_pool_input()
output = torch.nn.MaxPool2d(kernel_size=2, stride=(1, 2))(input)
output = torch.flatten(output)
print_cpp_vector(output)
def gen_max_pool_non_square_padding_test_result():
input = _get_pool_input()
output = torch.nn.MaxPool2d(kernel_size=2, stride=2, padding=(0, 1))(input)
output = torch.flatten(output)
print_cpp_vector(output)
def gen_avg_pool_test_result():
input = _get_pool_input()
output = torch.nn.AvgPool2d(kernel_size=2, stride=2)(input)
output = torch.flatten(output)
print_cpp_vector(output)
def gen_avg_pool_non_square_input_test_result():
input = _get_pool_input_non_square()
output = torch.nn.AvgPool2d(kernel_size=2, stride=2)(input)
output = torch.flatten(output)
print_cpp_vector(output)
def gen_avg_non_square_pool_test_result():
input = _get_pool_input()
output = torch.nn.AvgPool2d(kernel_size=(2, 3), stride=2)(input)
output = torch.flatten(output)
print_cpp_vector(output)
def gen_avg_pool_non_square_stride_test_result():
input = _get_pool_input()
output = torch.nn.AvgPool2d(kernel_size=2, stride=(1, 2))(input)
output = torch.flatten(output)
print_cpp_vector(output)
def gen_avg_pool_non_square_padding_test_result():
input = _get_pool_input()
output = torch.nn.AvgPool2d(kernel_size=2, stride=2, padding=(1, 0))(input)
output = torch.flatten(output)
print_cpp_vector(output)
if __name__ == "__main__":
print("Generating test results...")
print("Max pool test:")
gen_max_pool_test_result()
print("Max pool non square input test:")
gen_max_pool_non_square_input_test_result()
print("Max non square pool test:")
gen_max_non_square_pool_test_result()
print("Max pool non square stride test:")
gen_max_pool_non_square_stride_test_result()
print("Max pool non square padding test:")
gen_max_pool_non_square_padding_test_result()
print("--------------")
print("Avg pool test:")
gen_avg_pool_test_result()
print("Avg pool non square input test:")
gen_avg_pool_non_square_input_test_result()
print("Avg non square pool test:")
gen_avg_non_square_pool_test_result()
print("Avg pool non square stride test:")
gen_avg_pool_non_square_stride_test_result()
print("Avg pool non square padding test:")
gen_avg_pool_non_square_padding_test_result()