#pytorch #libtorch
Вопрос:
У меня есть ядро размера [3,3] и изображение размера [B, 3, H, W]
Я хочу применить одно и то же ядро параллельно через эти 3 канала. Они не обмениваются данными по каналам
Это мой код
auto module = torch::nn::Conv2d(
torch::nn::Conv2dOptions(3, 3, {3, 3}).padding(1).bias(false));
module->weight = kernel.unsqueeze(0)
.unsqueeze(0)
.repeat({1, 3, 1, 1})
.to(in_image.device());
return module(in_image);
Размер выходного сигнала составляет [1, 1, Ч, Вт]
Но тот же код реализован на Python
conv = torch.nn.Conv2d(in_channels=3, out_channels=3, groups=1, kernel_size= (3,3), padding=3//2, bias=False)
conv.weights = x_kernel.unsqueeze(0).unsqueeze(0).repeat(1,3,1,1)
out = conv(rgb_image)
Это дает [1, 3, Ч, Ш]. Что это дает?
Комментарии:
1. Можете ли вы привести фиктивные примеры для
kernel
,x_kernel
,in_image
иrgb_image
? Чтобы нам было легче воспроизвести проблему ?