文章:ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
因为最近想用这个文章的模型,但是不想把整个模型的参数加载到我的网络,想要把layer1和layer2等模块的参数逐个加载进我的模型中,因此苦苦摸索了一个比较笨的方法,大神勿喷。首先先查看ECA-Net中各个层的编号:
import torch
res_eca=torch.load('./eca_resnet50_k3557.pth.tar')
for i in range(len(list(res_eca['state_dict'].items()))):
print('i: ',i,' 1 list(res_eca.items())[i][1].data[:]:',list(res_eca['state_dict'].items())[i][0])
输出ECANet的各个层的名称及编号如下:
i: 0 1 list(res_eca.items())[i][1].data[:]: module.conv1.weight
i: 1 1 list(res_eca.items())[i][1].data[:]: module.bn1.weight
i: 2 1 list(res_eca.items())[i][1].data[:]: module.bn1.bias
i: 3 1 list(res_eca.items())[i][1].data[:]: module.bn1.running_mean
i: 4 1 list(res_eca.items())[i][1].data[:]: module.bn1.running_var
i: 5 1 list(res_eca.items())[i][1].data[:]: module.bn1.num_batches_tracked
i: 6 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.conv1.weight
i: 7 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn1.weight
i: 8 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn1.bias
i: 9 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn1.running_mean
i: 10 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn1.running_var
i: 11 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn1.num_batches_tracked
i: 12 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.conv2.weight
i: 13 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn2.weight
i: 14 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn2.bias
i: 15 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn2.running_mean
i: 16 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn2.running_var
i: 17 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn2.num_batches_tracked
i: 18 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.conv3.weight
i: 19 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn3.weight
i: 20 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn3.bias
i: 21 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn3.running_mean
i: 22 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn3.running_var
i: 23 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.bn3.num_batches_tracked
i: 24 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.eca.conv.weight
i: 25 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.downsample.0.weight
i: 26 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.downsample.1.weight
i: 27 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.downsample.1.bias
i: 28 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.downsample.1.running_mean
i: 29 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.downsample.1.running_var
i: 30 1 list(res_eca.items())[i][1].data[:]: module.layer1.0.downsample.1.num_batches_tracked
i: 31 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.conv1.weight
i: 32 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn1.weight
i: 33 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn1.bias
i: 34 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn1.running_mean
i: 35 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn1.running_var
i: 36 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn1.num_batches_tracked
i: 37 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.conv2.weight
i: 38 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn2.weight
i: 39 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn2.bias
i: 40 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn2.running_mean
i: 41 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn2.running_var
i: 42 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn2.num_batches_tracked
i: 43 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.conv3.weight
i: 44 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn3.weight
i: 45 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn3.bias
i: 46 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn3.running_mean
i: 47 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn3.running_var
i: 48 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.bn3.num_batches_tracked
i: 49 1 list(res_eca.items())[i][1].data[:]: module.layer1.1.eca.conv.weight
i: 50 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.conv1.weight
i: 51 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn1.weight
i: 52 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn1.bias
i: 53 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn1.running_mean
i: 54 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn1.running_var
i: 55 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn1.num_batches_tracked
i: 56 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.conv2.weight
i: 57 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn2.weight
i: 58 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn2.bias
i: 59 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn2.running_mean
i: 60 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn2.running_var
i: 61 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn2.num_batches_tracked
i: 62 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.conv3.weight
i: 63 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn3.weight
i: 64 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn3.bias
i: 65 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn3.running_mean
i: 66 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn3.running_var
i: 67 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.bn3.num_batches_tracked
i: 68 1 list(res_eca.items())[i][1].data[:]: module.layer1.2.eca.conv.weight
i: 69 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.conv1.weight
i: 70 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn1.weight
i: 71 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn1.bias
i: 72 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn1.running_mean
i: 73 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn1.running_var
i: 74 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn1.num_batches_tracked
i: 75 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.conv2.weight
i: 76 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn2.weight
i: 77 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn2.bias
i: 78 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn2.running_mean
i: 79 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn2.running_var
i: 80 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn2.num_batches_tracked
i: 81 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.conv3.weight
i: 82 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn3.weight
i: 83 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn3.bias
i: 84 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn3.running_mean
i: 85 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn3.running_var
i: 86 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.bn3.num_batches_tracked
i: 87 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.eca.conv.weight
i: 88 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.downsample.0.weight
i: 89 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.downsample.1.weight
i: 90 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.downsample.1.bias
i: 91 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.downsample.1.running_mean
i: 92 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.downsample.1.running_var
i: 93 1 list(res_eca.items())[i][1].data[:]: module.layer2.0.downsample.1.num_batches_tracked
i: 94 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.conv1.weight
i: 95 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn1.weight
i: 96 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn1.bias
i: 97 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn1.running_mean
i: 98 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn1.running_var
i: 99 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn1.num_batches_tracked
i: 100 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.conv2.weight
i: 101 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn2.weight
i: 102 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn2.bias
i: 103 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn2.running_mean
i: 104 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn2.running_var
i: 105 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn2.num_batches_tracked
i: 106 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.conv3.weight
i: 107 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn3.weight
i: 108 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn3.bias
i: 109 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn3.running_mean
i: 110 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn3.running_var
i: 111 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.bn3.num_batches_tracked
i: 112 1 list(res_eca.items())[i][1].data[:]: module.layer2.1.eca.conv.weight
i: 113 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.conv1.weight
i: 114 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn1.weight
i: 115 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn1.bias
i: 116 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn1.running_mean
i: 117 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn1.running_var
i: 118 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn1.num_batches_tracked
i: 119 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.conv2.weight
i: 120 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn2.weight
i: 121 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn2.bias
i: 122 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn2.running_mean
i: 123 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn2.running_var
i: 124 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn2.num_batches_tracked
i: 125 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.conv3.weight
i: 126 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn3.weight
i: 127 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn3.bias
i: 128 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn3.running_mean
i: 129 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn3.running_var
i: 130 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.bn3.num_batches_tracked
i: 131 1 list(res_eca.items())[i][1].data[:]: module.layer2.2.eca.conv.weight
i: 132 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.conv1.weight
i: 133 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn1.weight
i: 134 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn1.bias
i: 135 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn1.running_mean
i: 136 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn1.running_var
i: 137 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn1.num_batches_tracked
i: 138 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.conv2.weight
i: 139 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn2.weight
i: 140 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn2.bias
i: 141 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn2.running_mean
i: 142 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn2.running_var
i: 143 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn2.num_batches_tracked
i: 144 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.conv3.weight
i: 145 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn3.weight
i: 146 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn3.bias
i: 147 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn3.running_mean
i: 148 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn3.running_var
i: 149 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.bn3.num_batches_tracked
i: 150 1 list(res_eca.items())[i][1].data[:]: module.layer2.3.eca.conv.weight
i: 151 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.conv1.weight
i: 152 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn1.weight
i: 153 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn1.bias
i: 154 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn1.running_mean
i: 155 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn1.running_var
i: 156 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn1.num_batches_tracked
i: 157 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.conv2.weight
i: 158 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn2.weight
i: 159 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn2.bias
i: 160 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn2.running_mean
i: 161 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn2.running_var
i: 162 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn2.num_batches_tracked
i: 163 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.conv3.weight
i: 164 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn3.weight
i: 165 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn3.bias
i: 166 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn3.running_mean
i: 167 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn3.running_var
i: 168 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.bn3.num_batches_tracked
i: 169 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.eca.conv.weight
i: 170 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.downsample.0.weight
i: 171 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.downsample.1.weight
i: 172 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.downsample.1.bias
i: 173 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.downsample.1.running_mean
i: 174 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.downsample.1.running_var
i: 175 1 list(res_eca.items())[i][1].data[:]: module.layer3.0.downsample.1.num_batches_tracked
i: 176 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.conv1.weight
i: 177 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn1.weight
i: 178 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn1.bias
i: 179 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn1.running_mean
i: 180 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn1.running_var
i: 181 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn1.num_batches_tracked
i: 182 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.conv2.weight
i: 183 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn2.weight
i: 184 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn2.bias
i: 185 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn2.running_mean
i: 186 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn2.running_var
i: 187 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn2.num_batches_tracked
i: 188 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.conv3.weight
i: 189 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn3.weight
i: 190 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn3.bias
i: 191 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn3.running_mean
i: 192 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn3.running_var
i: 193 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.bn3.num_batches_tracked
i: 194 1 list(res_eca.items())[i][1].data[:]: module.layer3.1.eca.conv.weight
i: 195 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.conv1.weight
i: 196 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn1.weight
i: 197 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn1.bias
i: 198 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn1.running_mean
i: 199 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn1.running_var
i: 200 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn1.num_batches_tracked
i: 201 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.conv2.weight
i: 202 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn2.weight
i: 203 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn2.bias
i: 204 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn2.running_mean
i: 205 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn2.running_var
i: 206 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn2.num_batches_tracked
i: 207 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.conv3.weight
i: 208 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn3.weight
i: 209 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn3.bias
i: 210 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn3.running_mean
i: 211 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn3.running_var
i: 212 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.bn3.num_batches_tracked
i: 213 1 list(res_eca.items())[i][1].data[:]: module.layer3.2.eca.conv.weight
i: 214 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.conv1.weight
i: 215 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn1.weight
i: 216 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn1.bias
i: 217 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn1.running_mean
i: 218 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn1.running_var
i: 219 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn1.num_batches_tracked
i: 220 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.conv2.weight
i: 221 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn2.weight
i: 222 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn2.bias
i: 223 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn2.running_mean
i: 224 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn2.running_var
i: 225 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn2.num_batches_tracked
i: 226 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.conv3.weight
i: 227 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn3.weight
i: 228 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn3.bias
i: 229 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn3.running_mean
i: 230 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn3.running_var
i: 231 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.bn3.num_batches_tracked
i: 232 1 list(res_eca.items())[i][1].data[:]: module.layer3.3.eca.conv.weight
i: 233 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.conv1.weight
i: 234 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn1.weight
i: 235 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn1.bias
i: 236 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn1.running_mean
i: 237 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn1.running_var
i: 238 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn1.num_batches_tracked
i: 239 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.conv2.weight
i: 240 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn2.weight
i: 241 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn2.bias
i: 242 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn2.running_mean
i: 243 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn2.running_var
i: 244 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn2.num_batches_tracked
i: 245 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.conv3.weight
i: 246 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn3.weight
i: 247 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn3.bias
i: 248 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn3.running_mean
i: 249 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn3.running_var
i: 250 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.bn3.num_batches_tracked
i: 251 1 list(res_eca.items())[i][1].data[:]: module.layer3.4.eca.conv.weight
i: 252 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.conv1.weight
i: 253 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn1.weight
i: 254 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn1.bias
i: 255 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn1.running_mean
i: 256 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn1.running_var
i: 257 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn1.num_batches_tracked
i: 258 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.conv2.weight
i: 259 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn2.weight
i: 260 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn2.bias
i: 261 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn2.running_mean
i: 262 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn2.running_var
i: 263 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn2.num_batches_tracked
i: 264 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.conv3.weight
i: 265 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn3.weight
i: 266 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn3.bias
i: 267 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn3.running_mean
i: 268 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn3.running_var
i: 269 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.bn3.num_batches_tracked
i: 270 1 list(res_eca.items())[i][1].data[:]: module.layer3.5.eca.conv.weight
i: 271 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.conv1.weight
i: 272 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn1.weight
i: 273 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn1.bias
i: 274 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn1.running_mean
i: 275 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn1.running_var
i: 276 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn1.num_batches_tracked
i: 277 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.conv2.weight
i: 278 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn2.weight
i: 279 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn2.bias
i: 280 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn2.running_mean
i: 281 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn2.running_var
i: 282 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn2.num_batches_tracked
i: 283 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.conv3.weight
i: 284 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn3.weight
i: 285 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn3.bias
i: 286 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn3.running_mean
i: 287 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn3.running_var
i: 288 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.bn3.num_batches_tracked
i: 289 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.eca.conv.weight
i: 290 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.downsample.0.weight
i: 291 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.downsample.1.weight
i: 292 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.downsample.1.bias
i: 293 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.downsample.1.running_mean
i: 294 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.downsample.1.running_var
i: 295 1 list(res_eca.items())[i][1].data[:]: module.layer4.0.downsample.1.num_batches_tracked
i: 296 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.conv1.weight
i: 297 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn1.weight
i: 298 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn1.bias
i: 299 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn1.running_mean
i: 300 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn1.running_var
i: 301 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn1.num_batches_tracked
i: 302 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.conv2.weight
i: 303 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn2.weight
i: 304 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn2.bias
i: 305 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn2.running_mean
i: 306 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn2.running_var
i: 307 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn2.num_batches_tracked
i: 308 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.conv3.weight
i: 309 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn3.weight
i: 310 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn3.bias
i: 311 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn3.running_mean
i: 312 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn3.running_var
i: 313 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.bn3.num_batches_tracked
i: 314 1 list(res_eca.items())[i][1].data[:]: module.layer4.1.eca.conv.weight
i: 315 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.conv1.weight
i: 316 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn1.weight
i: 317 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn1.bias
i: 318 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn1.running_mean
i: 319 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn1.running_var
i: 320 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn1.num_batches_tracked
i: 321 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.conv2.weight
i: 322 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn2.weight
i: 323 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn2.bias
i: 324 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn2.running_mean
i: 325 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn2.running_var
i: 326 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn2.num_batches_tracked
i: 327 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.conv3.weight
i: 328 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn3.weight
i: 329 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn3.bias
i: 330 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn3.running_mean
i: 331 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn3.running_var
i: 332 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.bn3.num_batches_tracked
i: 333 1 list(res_eca.items())[i][1].data[:]: module.layer4.2.eca.conv.weight
i: 334 1 list(res_eca.items())[i][1].data[:]: module.fc.weight
i: 335 1 list(res_eca.items())[i][1].data[:]: module.fc.bias
假如,你定义的层如下:
self.own_layer=nn.Sequential(nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3,bias=False),
nn.BatchNorm2d(64),
nn.ReLU(inplace=True))
可以看出own_laye与ECANet的定义是相同的,因此按如下方式将ECANet的参数加载进来:
for i in range(len(self.own_layer.state_dict().items())):
if list(res_eca['state_dict'].items())[i][0].split('.')[-1]=='num_batches_tracked':
continue
#print('i: ',i,' 1 list(res_eca.items())[i][1].data[:]:',list(res_eca['state_dict'].items())[i][1].data[:])
list(self.own_layer.state_dict().items())[i][1].data[:] = list(res_eca['state_dict'].items())[i][1].data[:]
因为own_layer仅包含conv1.weight,bn1.weight,bn1.bias,bn1.running_mean,bn1.running_var,bn1.num_batches_tracked这些层,因此仅加载res_eca的前5层。由于own_layer的num_batches_tracked的tensor为0,因此跳过该层,否则出错。解决方案参考:https://blog.csdn.net/qq_34132310/article/details/107384294。
假如你想加载ECANet的layer1的参数,那么就应该从第6个参数开始加载,如下:
for i in range(len(self.own_layer1.state_dict().items())):
#print('i+6:',i+6)
if list(res_eca['state_dict'].items())[i+6][0].split('.')[-1]=='num_batches_tracked':
continue
#print('i: ',i+6,' 1 list(res_eca.items())[i][1].data[:]:',list(res_eca['state_dict'].items())[i+6][1].data[:])
list(self.own_layer1.state_dict().items())[i][1].data[:] = list(res_eca['state_dict'].items())[i+6][1].data[:]
#print('i: ',i+6,' 2 list(self.own_layer1.state_dict().items())[i][1].data[:]:',list(self.own_layer1.state_dict().items())[i][1].data[:])
最后的两个print可以验证是否将res_eca的参数加载进我们定义的层。