Почему torch.nn.Conv2d(in_channels=3, out_channels=4, kernel_size=(3,2)) имеет вес.форму (4,3,3,2), но выводит (4,3,3)?Python

Программы на Python
Anonymous
Почему torch.nn.Conv2d(in_channels=3, out_channels=4, kernel_size=(3,2)) имеет вес.форму (4,3,3,2), но выводит (4,3,3)?

Сообщение Anonymous »

Моя цель — понять torch.nn.Conv2d. Сейчас меня смущает размер ядра.
Предположим, есть изображение высотой 5 пикселей и шириной 4 пикселя. Мы собираемся применить 2D-свертку с out_channels=4, kernel_size=(3,2) и stride=1 к входным данным с шириной 4 пикселя, высотой 5 пикселей ( 4, 3, 3) где (канал, высота, ширина). stride=1 переместит ядро ​​на 1 пиксель. Таким образом, изображение шириной 4 пикселя, высотой 5 пикселей создаст новое изображение шириной 3 пикселя и высотой 3 пикселя.
На этом этапе все проверяется.
Однако когда я запускаю m.weight.shape, он возвращает (4, 3, 3, 2). Разве он не должен возвращать (4, 3, 2)?
Мои предположения о том, почему m.weight.shape возвращает (4, 3, 3, 2), это правильно?:
  • Каждый канал имеет собственное ядро.
  • Поскольку out_channels=4, будут созданы 4 карты объектов.
  • Каждая карта объектов имеет 3 канала (красный, зеленый, синий).
  • Каждая карта объектов имеет 3 канала (красный, зеленый, синий).
    li>
Однако это не объясняет, как 12 ядер и m(input).shape возвращают (4, 3, 3)
Код
import torch.nn as nn
from torchvision.io import read_image

# Define the Conv2d layer
m = nn.Conv2d(in_channels=3, out_channels=4, kernel_size=(3,2))

# Reads a JPG image into a 3 dimensional RGB. The values of the output tensor are uint8 in [0, 255].
input = read_image("2-rgb4x5.jpg")
print("input[0] with [0, 255] range")
print(input[0])
# Normalize the values to [0, 1] range
input = input.float() / 255.0

# Perform the convolution
output = m(input)

# Print the input and output
print("m.weight.shape or kernel")
print(m.weight.shape)
print("m.weight[0]")
print(m.weight[0][0])
print("input.shape")
print(input.shape)
print("output.shape")
print(output.shape)
print(output)


Подробнее здесь: https://stackoverflow.com/questions/786 ... have-a-wei

Вернуться в «Python»