我希望在前进后通过预训练的ResNet在每一层获得激活。对于大多数图层,我可以使用Module的输出参数来查询激活,但是对于CAddTable,输出参数只包含0或1个值,对应于正向传递期间真实输出的符号。 CAddTable后面的ReLU单元包含非整数值,表明在正向传递期间,CAddTable返回了正确的值。
例如,对于单个要素图,我有2个CAddTable输入:
输入1:
(1,1,.,.) =
-0.4010 -0.4658 -0.2517 -0.2863 -0.2731 -0.3428 -0.2685
-1.1177 -1.3387 -0.7699 -0.5595 -0.5505 -0.7473 -0.6121
-1.7965 -1.8100 -0.7766 -0.2923 -0.2297 -0.8788 -0.9094
-1.5759 -0.7506 0.5790 0.8329 0.0072 -1.5523 -1.5252
0.1142 1.1772 1.6391 1.2629 -0.2074 -2.1833 -1.9419
0.9352 1.8757 1.5200 0.8178 -0.5817 -2.1865 -1.7899
1.1880 2.0332 1.3987 0.3307 -1.0040 -2.0327 -1.5910
[torch.CudaTensor of size 1x1x7x7]
输入2:
(1,1,.,.) =
0.0000 0.0000 0.1688 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
1.1719 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
2.3147 0.0000 0.0000 0.0000 0.0000 0.0000 0.6100
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
1.0300 0.4141 1.2499 0.1507 0.0000 0.0000 0.0000
3.0425 1.5787 0.5076 0.7407 0.8804 0.0000 0.0000
[torch.CudaTensor of size 1x1x7x7]
CAddTable输出(我希望这是输入的总和,但它实际上是总和的单位阶跃函数)
(1,1,.,.) =
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 0 1 1 1 0 0
1 1 1 1 0 0 0
1 1 1 1 0 0 0
1 1 1 1 0 0 0
[torch.CudaTensor of size 1x1x7x7]
在CAddTable之后从ReLU单元输出
(1,1,.,.) =
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.7388 0.0000 0.5790 0.8329 0.0072 0.0000 0.0000
0.1142 1.1772 1.6391 1.2629 0.0000 0.0000 0.0000
1.9651 2.2899 2.7700 0.9686 0.0000 0.0000 0.0000
4.2305 3.6119 1.9063 1.0714 0.0000 0.0000 0.0000
[torch.CudaTensor of size 1x1x7x7]
有谁知道为什么会这样?