yolov3源码解读--未上传
yolov3源码解读--未上传
hyperparams = module_defs.pop(0)
这里的pop的意思是基础参数都在第一个字典字典段字典段里
self.yolo_layers = [layer[0] for layer in self.module_list if hasattr(layer[0], "metrics")]
为什么要这行代码的yolo层?
self.modules()和和self.children()的区别
https://blog.csdn.net/dss_dssssd/article/details/83958518
一个是遍历所有(深度优先方式),一个只遍历第一代children()
model.apply(weight_init),将weight_init初始化方式应用到submodels上
- # 1. 根据网络层的不同定义不同的初始化方式
- def weight_init(m):
- if isinstance(m, nn.Linear):
- nn.init.xavier_normal_(m.weight)
- nn.init.constant_(m.bias, 0)
- # 也可以判断是否为conv2d,使用相应的初始化方式
- elif isinstance(m, nn.Conv2d):
- nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
- # 是否为批归一化层
- elif isinstance(m, nn.BatchNorm2d):
- nn.init.constant_(m.weight, 1)
- nn.init.constant_(m.bias, 0)
- # 2. 初始化网络结构
- model = Net(in_dim, n_hidden_1, n_hidden_2, out_dim)
- # 3. 将weight_init应用在子模块上
- model.apply(weight_init)
此种初始化方式采用的递归,而在python中,对递归层数是有限制的,所以当网络结构很深时,可能会递归层数过深的错误
锁页内存,不能用于虚拟内存的内存交换
https://blog.csdn.net/tsq292978891/article/details/80454568
dataset.collate_fn
https://blog.csdn.net/weixin_42028364/article/details/81675021