1 网络模型的设计原则
1.1 归一化原则
对于深度神经网络来说,其输入最好进行归一化的设计,也就是目标值(的encoding)最好归一化到[0,1]的区间内;
参考模型:
YOLOV5——YOLO模型的标注使用的是yolo格式,yolo格式的数据是进行了归一化之后的数据,
2 数据载入
2.3 图像文件无法读取?——需要修改当前的工作目录
可以参考下面的代码:
os.chdir(path.dirname(__file__))
其中函数的作用是,
path.dirname(__file__)
:获取当前文件的工作目录。
3 定义模型整体结构
3.1 定义网络结构
Step 1:PyTorch本身不会自动检查网络的自洽性,所以需要采取一定的措施,看看能不能实现用代码实现检查网络的自洽性;
我们使用nn.Module容器来定义整个网络;
Step 2:使用模块化的思想来进行网络的构建,这样利于我们对信息和结构进行封装;
下面写作模块初始化的代码,
4.2.1 初始化函数
def __init__(self) -> None:
super(CNN, self).__init__()
# 我们需要在父类的初始化函数中传入自身的class
# Rest of init code
可以看到,在对父类进行初始化时,我们需要在父类的初始化函数中传入自身的class,
听上海高等研究院的朱海浩同学说:“这是为了不用父类名称就可以调用父类函数。”
4.2 模型训练的PyTorch相关设置——model.enter_train_mode()
初始化检测器,记得将网络设置为train模式,
net.train()
将梯度重置为0;
optimizer.zero_grad()