Pytorch的文档网站
https://pytorch.org/docs/stable/nn.html
'''
Pytorch的文档网站
https://pytorch.org/docs/stable/nn.html
'''
import torch
from torch import nn
class test_nn(nn.Module):
'''
Module:
Base class for all neural network modules.
Module也是最常用的一个模块
'''
def __init__(self):
super().__init__()
def forward(self, input):
output = input + 1
return output
test_modal = test_nn()
x = torch.tensor(1.0) # x = tensor(1.)
output = test_modal(x)
print(output) # tensor(2.)
nn.Module
import torch.nn as nn
import torch.nn.functional as F
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.conv1 = nn.Conv2d(1, 20, 5)
self.conv2 = nn.Conv2d(20, 20, 5)
def forward(self, x):
x = F.relu(self.conv1(x))
return F.relu(self.conv2(x))
卷积
Stride
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]])
'''这里, 1: 表示batch size =1, 1:表示一个channel,这里其实就是RGB,如果是彩色的,这里就是3
5*5: 表示一张图片的size'''
input = torch.reshape(input, (1, 1, 5, 5))
kernel = torch.reshape(kernel, (1, 1, 3, 3))
print('input size: ', input.shape)
print('kernel size: ', kernel.shape)
output = F.conv2d(input=input, weight=kernel, stride=1)
print('output: ', output)
'''
output: tensor([[[[10, 12, 12],
[18, 16, 16],
[13, 9, 3]]]])
'''
output2 = F.conv2d(input=input, weight=kernel, stride=2)
print('output2: ', output2)
'''
output2: tensor([[[[10, 12],
[13, 3]]]])
'''
padding
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]])
'''这里, 1: 表示batch size =1, 1:表示一个channel,这里其实就是RGB,如果是彩色的,这里就是3
5*5: 表示一张图片的size'''
input = torch.reshape(input, (1, 1, 5, 5))
kernel = torch.reshape(kernel, (1, 1, 3, 3))
print('input size: ', input.shape)
print('kernel size: ', kernel.shape)
output = F.conv2d(input=input, weight=kernel, stride=1)
print('output: ', output)
'''
output: tensor([[[[10, 12, 12],
[18, 16, 16],
[13, 9, 3]]]])
'''
output2 = F.conv2d(input=input, weight=kernel, stride=2)
print('output2: ', output2)
'''
output2: tensor([[[[10, 12],
[13, 3]]]])
'''
output3 = F.conv2d(input=input, weight=kernel, stride=1, padding=1)
print('output3: ', output3)
'''
output3: tensor([[[[ 1, 3, 4, 10, 8],
[ 5, 10, 12, 12, 6],
[ 7, 18, 16, 16, 8],
[11, 13, 9, 3, 4],
[14, 13, 9, 7, 4]]]])
'''