图像识别
图像分类
目标检测
语义分割
github代码:PositiveTom/Resnet18 (github.com)
残差网络构建易错点:
下面 红框一定要有,否则会报严重的error。
PyTorch中网络里面的inplace=True字段的意思_TravelingLight77的博客-CSDN博客_inplace=true
一. 原理
参见论文:何凯明:Deep Residual Learning for Image Recognition
网络结构之所以是18层(只算卷积层,全连接层),看下链接
经典CNN网络:Resnet18网络结构输入和输出_呆呆珝的博客-CSDN博客_resnet18
再来分析代码:
一个残差结构有两个卷积层
如下便是tensorboard里面显示的一个残差块的结构。
关于tensorboard的使用参考如下链接。
tensorboard使用记录_AutoGalaxy的博客-CSDN博客
小插曲:数据集训练的次数总结
训练集50000张图片:
总共训练135 幕(epoch)
每一幕都作相同的事:
每一幕做的事如下:
把50000张图片按照batch_size(128)分为390.625份
一幕中要计算390.625次误差,也意味着要更新390.625次参数
每一次误差的计算需要batch_size张图片
epoch代表第几幕
length表示391
iter表示迭代次数
一幕中迭代391次,两幕一共迭代782次,依次类推....
sum_loss / (i + 1)表示平均每迭代一次之后的平均损失correct / total total随着batch的增加而增加,128,256,384,512....这里表示,第几幕,第几次迭代时,的正确率。
这里的平均损失,平均正确率都是以一幕为基础考虑的。
小插曲:
神经网络epoch开始训练之前要用net.train()
for epoch in range(pre_epoch, EPOCH): print('\nEpoch: %d' % (epoch + 1)) net.train()
神经网络开始test之前要用net.eval()
for data in testloader: net.eval()
二. 代码
使用的库:
torchvision:处理图像数据,包含一些数据集,模型,转换函数,独立于pytorch,需要独立安装,主要由以下四部分组成(1)torchvision.models:提供深度学习中经典的网络结构(Alex-net,ResNet,VGG,Inception)
(2)torchvision.datasets:提供常用的数据集
(3)torchvision.transforme:常用的数据预处理操作
(4)torchvisi