第一次使用pytorch,从FishNet代码中学习
- 主要文件:
- net_factory:网络参数
各层输入通道数 'network_planes': [64, 128, 256, 512, 512, 512, 384, 256, 320, 832, 1600], bottle_neck数 'num_res_blks': [2, 2, 6, 2, 1, 1, 1, 1, 2, 2], 待研究:'num_trans_blks': [1, 1, 1, 1, 1, 4], 'num_cls': 1000, 分隔tail和body 'num_down_sample': 3, 分隔body和head (down+up+1=depth)'num_up_sample': 3,
- fish_block:实现了Bottle_neck类(残差块)
def __init__(self, inplanes输入, planes输出, stride=1步长, mode='NORM'池化还是反卷积, k=1, dilation=1):
基本层:与resnet一样,先降维再升维
残差块:只有【输入和输出维度不一样】or 【步长大于1】时,才加入shortcut层
梯度传播顺序:首先将原始数据复制一份到residual,一份传入bottle,一份看是残差层还是上采样。
如果是残差层:传入残差层
上采样层:用view降维,,c是通道,view的第二个参数控制输出通道数,然后通道互加获得新的通道。