argparse基本用法
命令行参数解析包,可以用来方便地读取命令行参数
参考:argparse基本用法_骑着蜗牛向前跑的博客-CSDN博客_argparse
Visdom
一款可视化工具,实质是一款在网页端的web服务器,在处理图像数据时,可以使用visdom对图像进行可视化
可以对损失等数据进行监听
参考:详解PyTorch可视化工具visdom(一)_奋斗の博客的博客-CSDN博客_visdom
深度学习可视化工具visdom使用_点亮~黑夜的博客-CSDN博客_visdom
BatchNorm2d
Batch Normalization的目的是使我们的一批(Batch)feature map满足均值为0,方差为1的分布规律
BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
1.num_features:一般输入参数的shape为batch_size*num_features*height*width,即为其中特征的数量,即为输入BN层的通道数;
2.eps:分母中添加的一个值,目的是为了计算的稳定性,默认为:1e-5,避免分母为0;
3.momentum:一个用于运行过程中均值和方差的一个估计参数(我的理解是一个稳定系数,类似于SGD中的momentum的系数);
4.affine:当设为true时,会给定可以学习的系数矩阵gamma和beta
一般来说pytorch中的模型都是继承nn.Module类的,都有一个属性trainning指定是否是训练状态,训练状态与否将会影响到某些层的参数是否是固定的,比如BN层或者Dropout层。通常用model.train()指定当前模型model为训练状态,model.eval()指定当前模型为测试状态。
同时,BN的API中有几个参数需要比较关心的,一个是affine指定是否需要仿射,还有个是track_running_stats指定是否跟踪当前batch的统计特性。容易出现问题也正好是这三个参数:trainning,affine,track_running_stats。
参考原文:BatchNorm2d原理、作用及其pytorch中BatchNorm2d函数的参数讲解_LS_learner的博客-CSDN博客
数据集
训练集
用于训练模型(拟合参数),即模型拟合的数据样本集合,如通过训练拟合一些参数来建立一个分类器
验证集
用于确定网络结构或者控制模型复杂度的超参数(拟合超参数),模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。 通常用来在模型迭代训练时,用以验证当前模型泛化能力(准确率,召回率等),防止过拟合的现象出现,以决定如何调整超参数。
测试集
用来评估模最终模型的性能如何(评价模型好坏):测试集没有参于训练,主要是测试训练好的模型的准确能力等
总结;在训练过程中可以有训练集(参数),验证集(超参数);验证集并不是所有的模型都会使用;测试集(评估);整体分为用于训练的和用于测试的