目录
自建一个tensor理解卷积
import torch
from torch import nn
input = torch.tensor([[[1, 2, 0, 3, 1],
[0, 1, 2, 3, 1],
[1, 2, 1, 0, 0],
[5, 2, 3, 1, 1],
[2, 1, 0, 1, 1]],
[[1, 2, 0, 3, 1],
[0, 1, 2, 3, 1],
[1, 2, 1, 0, 0],
[5, 2, 3, 1, 1],
[2, 1, 0, 1, 1]],
[[1, 2, 0, 3, 1],
[0, 1, 2, 3, 1],
[1, 2, 1, 0, 0],
[5, 2, 3, 1, 1],
[2, 1, 0, 1, 1]]], dtype=torch.float32)
print(input.shape)
input = torch.reshape(input, (-1, 3, 5, 5))
print(input.shape)
class ZiDingYi(nn.Module):
def __init__(self):
super(ZiDingYi, self).__init__()
self.conv1 = nn.Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=(1, 1), padding=0)
def forward(self, x):
x = self.conv1(x)
return x
zidingyi = ZiDingYi()
print(zidingyi)
output = zidingyi(input)
print(output)
自创一个tensor张量,为了与图像相符合,采用了三通道、高与宽的形式。
input = torch.tensor([[[1, 2, 0, 3, 1],
[0, 1, 2, 3, 1],
[1, 2, 1, 0, 0],
[5, 2, 3, 1, 1],
[2, 1, 0, 1, 1]],
[[1, 2, 0, 3, 1],
[0, 1, 2, 3, 1],
[1, 2, 1, 0, 0],
[5, 2, 3, 1, 1],
[2, 1, 0, 1, 1]],
[[1, 2, 0, 3, 1],
[0, 1, 2, 3, 1],
[1, 2, 1, 0, 0],
[5, 2, 3, 1, 1],
[2, 1, 0, 1, 1]]], dtype=torch.float32)
print(input.shape)
input = torch.reshape(input, (-1, 3, 5, 5))
print(input.shape)
注意的点1:
输入的整数系统默认识别为长整型(long),这种数据类型神经网络不能接收,必须强制转换为浮点型,其中torch下给出了浮点型的数据类型。
dtype=torch.float32
注意的点2:
不知道新增维度的值时可以给-1让系统自己运算。