淘宝做基础销量怎么网站,汕头seo不错,株洲网站网络推广怎么做,云南建设厅网站安全员报名入口神经网络的基本骨架 1. nn.Module的使用
所有的模型都要继承 Module 类需要重写初始化函数和运算步骤函数
eg#xff1a;
import torch.nn as nn
import torch.nn.functional as Fclass Model(nn.Module): # 继承父类Module def __init__(self): # 重写初始化函数super()…神经网络的基本骨架 1. nn.Module的使用
所有的模型都要继承 Module 类需要重写初始化函数和运算步骤函数
eg
import torch.nn as nn
import torch.nn.functional as Fclass Model(nn.Module): # 继承父类Module def __init__(self): # 重写初始化函数super().__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)) # x-卷积-非线性return F.relu(self.conv2(x)) # x-卷积-非线性代码示例
import torch
from torch import nnclass Kun(nn.Module):def __init__(self):super().__init__()def forward(self, input):output input1 # 实现输出加1return outputkun Kun()
x torch.tensor(1.0)
output kun(x)
print(output) # tensor(2.)2. 卷积
conv2可选参数 卷积计算过程示意 import torch# 输入图像5*5
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]]) # 输入tensor数据类型的二维矩阵# 卷积核
kernel torch.tensor([[1, 2, 1],[0, 1, 0],[2, 1, 0]])print(input.shape)
print(kernel.shape)torch.Size([5, 5])
torch.Size([3, 3])如果不调整尺寸会报错Expected 3D(unbatched) or 4D(batched) input to conv2d, but got input of size: [5, 5]
所以需要调整
input torch.reshape(input, (1, 1, 5, 5))
kernel torch.reshape(kernel, (1, 1, 3, 3))output F.conv2d(input, kernel, stride1)
print(output)--------------------------------------------------------------------------
tensor([[[[10, 12, 12],[18, 16, 16],[13, 9, 3]]]])stride可以选择移动的步长
output2 F.conv2d(input, kernel, stride2)
print(output2)
----------------------------------------------------------------------------
tensor([[[[10, 12],[13, 3]]]])padding进行填充(默认填充0)
output3 F.conv2d(input, kernel, stride1, padding1)
print(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]]]])示例代码
import torch
import torch.nn.functional as F
# 输入图像5*5
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]]) # 输入tensor数据类型的二维矩阵# 卷积核
kernel torch.tensor([[1, 2, 1],[0, 1, 0],[2, 1, 0]])
# 调整输入的尺寸
# 如果不调整尺寸会报错
# Expected 3D(unbatched) or 4D(batched) input to conv2d, but got input of size: [5, 5]
input torch.reshape(input, (1, 1, 5, 5))
kernel torch.reshape(kernel, (1, 1, 3, 3))
# print(input.shape) # torch.Size([1, 1, 5, 5])
# print(kernel.shape) # torch.Size([1, 1, 3, 3])output F.conv2d(input, kernel, stride1)
print(output)output2 F.conv2d(input, kernel, stride2)
print(output2)output3 F.conv2d(input, kernel, stride1, padding1)
print(output3)