
import torch
from torch import nn
class Tudui(nn.Module):
    def __init__(self):
        super().__init__()
    def forward(self, input):
        output = input + 1
        return output
    def __call__(self, input):
        return self.forward(input)
tudui = Tudui()
x = torch.tensor(1.0)
output = tudui(x)
print(output)
        疑问:tudui = Tudui()
output=tudui(x) 为何写成output = Tudui(x)就会报错
PyTorch 的标准做法(先创建实例,再调用实例)
tudui = Tudui()创建了Tudui类的一个实例。- 这个实例可以被多次使用,而不需要每次都创建新的对象。
 - 写 
output = Tudui(x)时,Python 实际上在做两件事:
a) 创建Tudui类的实例
b) 尝试用x作为参数调用这个新创建的实例 
卷积操作
import torch
import torch.nn.functional as F
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]])
kernel = torch.tensor([[1, 2, 1],
                       [0, 1, 0],
                       [2, 1, 0]])
input = torch.reshape(input,shape=(1,1,5,5))
kernel = torch.reshape(kernel, (1, 1, 3, 3))
print(input.shape)
print(kernel.shape)
output = F.conv2d(input, kernel, stride=1)
print(output)
output2 = F.conv2d(input, kernel, stride=2)
print(output2)
output3 = F.conv2d(input, kernel, stride=1, padding=1)
print(output3)
        padding = 1 就是 在原卷积层周围一圈补0
