被逼无奈,越来越多公司需要SLAM和深度学习或者相机结合
import torch
import torch.nn as nn
import torch.nn.functional as F#包含 torch.nn 库中所有函数
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
# 1 input image channel, 6 output channels, 5x5 square convolution 通道数就是上图中的切片数
# kernel
self.conv1 = nn.Conv2d(1, 6, 5)#输入1通道输出6通道 5*5的卷积核
self.conv2 = nn.Conv2d(6, 16, 5)#输入6通道输出16通道 5*5的卷积核
# an affine operation: y = Wx + b 这就是relu激活函数 输出结果为max(0,Wx + b)
self.fc1 = nn.Linear(16 * 5 * 5, 120) # 5*5 from image dimension 全连接层 输入为卷积和降采样(池化)后的图片 16通道 5*5大小
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)#对应图片中的全连接层 也就是最后的那一部分
def forward(self, x):
# Max pooling over a (2, 2) window
x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2)) #relu激活 然后进行池化
# 如果池化平面二维度长度相同 则(2, 2)可以用 2 来替代 如下:
x = F.max_pool2d(F.relu(self.conv2(x)), 2) #relu激活 然后进行池化
x = torch.flatten(x, 1) # flatten all dimensions except the batch dimension 推平合并
x = F.relu(self.fc1(x)) #relu激活
x = F.relu(self.fc2(x)) #relu激活
x = self.fc3(x) #relu激活
return x
#激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。 激活函数是对原始数据进行相应的变换,以用同一个模型解决不同的问题。如果说网络是模板,则激活函数则是模板的特化。
net = Net()
print(net)