FC2カウンター FPGAの部屋 2019年02月25日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

DeepLearningのモデル軽量化 Distiller を試す5

DeepLearningのモデル軽量化 Distiller を試す4”の続き。

GitHub のNervanaSystems/distiller の量子化サンプルをやってみよう。

Post-training quantization
ResNet20 for CIFAR10 を 8 ビットに量子化するサンプルだ。
python3 compress_classifier.py -a resnet20_cifar ../../../data.cifar10 --resume ../ssl/checkpoints/checkpoint_trained_dense.pth.tar --quantize-eval --evaluate
distiller_33_190225.png
distiller_34_190225.png

ログを示す。

root@f3527f089871:/workspace/distiller/examples/classifier_compression# python3 compress_classifier.py -a resnet20_cifar ../../../data.cifar10 --resume ../ssl/checkpoints/checkpoint_trained_dense.pth.tar --quantize-eval --evaluate
Log file for this run: /workspace/distiller/examples/classifier_compression/logs/2019.02.24-195538/2019.02.24-195538.log
==> using cifar10 dataset
=> creating resnet20_cifar model for CIFAR10

--------------------------------------------------------
Logging to TensorBoard - remember to execute the server:
> tensorboard --logdir='./logs'

=> loading checkpoint ../ssl/checkpoints/checkpoint_trained_dense.pth.tar
   best top@1: 92.540
Loaded compression schedule from checkpoint (epoch 179)
=> loaded checkpoint '../ssl/checkpoints/checkpoint_trained_dense.pth.tar' (epoch 179)
Optimizer Type: <class 'torch.optim.sgd.SGD'>
Optimizer Args: {'lr': 0.1, 'momentum': 0.9, 'dampening': 0, 'weight_decay': 0.0001, 'nesterov': False}
Files already downloaded and verified
Files already downloaded and verified
Dataset sizes:
 training=45000
 validation=5000
 test=10000
Preparing model for quantization using PostTrainLinearQuantizer
Parameter 'conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.0.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.0.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.1.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.1.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.2.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.2.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.0.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.0.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.0.downsample.0.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.1.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.1.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.2.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.2.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.0.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.0.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.0.downsample.0.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.1.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.1.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.2.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.2.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'fc.wrapped_module.weight' will be quantized to 8 bits
Quantized model:

ResNetCifar(
  (conv1): RangeLinearQuantParamLayerWrapper(
    mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
    preset_activation_stats=False
    w_scale=67.0449, w_zero_point=0.0000
    (wrapped_module): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
  )
  (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
  (relu): ReLU(inplace)
  (layer1): Sequential(
    (0): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=107.7180, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=144.9845, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (1): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=180.5892, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=183.1618, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (2): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=122.4423, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=152.7345, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
  )
  (layer2): Sequential(
    (0): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=181.2943, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=238.1681, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
      (downsample): Sequential(
        (0): RangeLinearQuantParamLayerWrapper(
          mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
          preset_activation_stats=False
          w_scale=88.9728, w_zero_point=0.0000
          (wrapped_module): Conv2d(16, 32, kernel_size=(1, 1), stride=(2, 2), bias=False)
        )
        (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (1): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=206.7310, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=266.5453, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (2): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=152.4554, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=240.0073, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
  )
  (layer3): Sequential(
    (0): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=215.9280, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=235.3784, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
      (downsample): Sequential(
        (0): RangeLinearQuantParamLayerWrapper(
          mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
          preset_activation_stats=False
          w_scale=225.9492, w_zero_point=0.0000
          (wrapped_module): Conv2d(32, 64, kernel_size=(1, 1), stride=(2, 2), bias=False)
        )
        (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (1): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=261.7885, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=295.0370, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (2): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=212.4505, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=450.7900, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
  )
  (avgpool): AvgPool2d(kernel_size=8, stride=1, padding=0)
  (fc): RangeLinearQuantParamLayerWrapper(
    mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
    preset_activation_stats=False
    w_scale=83.8628, w_zero_point=0.0000
    base_b_scale=261.5564, base_b_zero_point=0.0000
    (wrapped_module): Linear(in_features=64, out_features=10, bias=True)
  )
)

--- test ---------------------
10000 samples (256 per mini-batch)
Test: [   10/   39]    Loss 0.350214    Top1 92.187500    Top5 99.687500    
Test: [   20/   39]    Loss 0.340852    Top1 92.167969    Top5 99.707031    
Test: [   30/   39]    Loss 0.351019    Top1 91.953125    Top5 99.661458    
Test: [   40/   39]    Loss 0.354121    Top1 91.770000    Top5 99.610000    
==> Top1: 91.770    Top5: 99.610    Loss: 0.354

Saving checkpoint to: logs/2019.02.24-195538/quantized_checkpoint.pth.tar

Log file for this run: /workspace/distiller/examples/classifier_compression/logs/2019.02.24-195538/2019.02.24-195538.log
root@f3527f089871:/workspace/distiller/examples/classifier_compression# 



スパース率を見てみよう。
まずは、resnet20_cifar ディレクトリを作成して、quantized_checkpoint.pth.tar をそこにコピーする。
mkdir resnet20_cifar
cp logs/2019.02.24-195538/quantized_checkpoint.pth.tar resnet20_cifar/


python3 compress_classifier.py --resume=resnet20_cifar/quantized_checkpoint.pth.tar -a=resnet20_cifar ../../../data.cifar10 --summary=sparsity
distiller_35_190225.png

ログを示す。

root@f3527f089871:/workspace/distiller/examples/classifier_compression# python3 compress_classifier.py --resume=resnet20_cifar/quantized_checkpoint.pth.tar -a=resnet20_cifar ../../../data.cifar10 --summary=sparsity
Log file for this run: /workspace/distiller/examples/classifier_compression/logs/2019.02.24-200303/2019.02.24-200303.log
==> using cifar10 dataset
=> creating resnet20_cifar model for CIFAR10

--------------------------------------------------------
Logging to TensorBoard - remember to execute the server:
> tensorboard --logdir='./logs'

=> loading checkpoint resnet20_cifar/quantized_checkpoint.pth.tar
   best top@1: 91.770
Loaded compression schedule from checkpoint (epoch 0)
Loaded quantizer metadata from the checkpoint
Preparing model for quantization using PostTrainLinearQuantizer
Parameter 'conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.0.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.0.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.1.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.1.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.2.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.2.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.0.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.0.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.0.downsample.0.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.1.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.1.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.2.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.2.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.0.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.0.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.0.downsample.0.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.1.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.1.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.2.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.2.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'fc.wrapped_module.weight' will be quantized to 8 bits
Quantized model:

ResNetCifar(
  (conv1): RangeLinearQuantParamLayerWrapper(
    mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
    preset_activation_stats=False
    w_scale=350.8756, w_zero_point=0.0000
    (wrapped_module): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
  )
  (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
  (relu): ReLU(inplace)
  (layer1): Sequential(
    (0): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=312.6898, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=271.3224, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (1): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=231.3102, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=301.7677, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (2): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=305.3219, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=282.7444, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
  )
  (layer2): Sequential(
    (0): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=390.4178, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=364.4760, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
      (downsample): Sequential(
        (0): RangeLinearQuantParamLayerWrapper(
          mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
          preset_activation_stats=False
          w_scale=167.9384, w_zero_point=0.0000
          (wrapped_module): Conv2d(16, 32, kernel_size=(1, 1), stride=(2, 2), bias=False)
        )
        (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (1): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=366.3052, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=382.9035, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (2): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=362.4750, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=391.2636, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
  )
  (layer3): Sequential(
    (0): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=537.1642, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=531.2303, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
      (downsample): Sequential(
        (0): RangeLinearQuantParamLayerWrapper(
          mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
          preset_activation_stats=False
          w_scale=193.8010, w_zero_point=0.0000
          (wrapped_module): Conv2d(32, 64, kernel_size=(1, 1), stride=(2, 2), bias=False)
        )
        (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (1): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=444.0079, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=544.6738, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (2): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=524.7949, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=514.5536, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
  )
  (avgpool): AvgPool2d(kernel_size=8, stride=1, padding=0)
  (fc): RangeLinearQuantParamLayerWrapper(
    mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
    preset_activation_stats=False
    w_scale=1020.4681, w_zero_point=0.0000
    base_b_scale=1211.1595, base_b_zero_point=0.0000
    (wrapped_module): Linear(in_features=64, out_features=10, bias=True)
  )
)

=> loaded checkpoint 'resnet20_cifar/quantized_checkpoint.pth.tar' (epoch 0)
Optimizer Type: <class 'torch.optim.sgd.SGD'>
Optimizer Args: {'lr': 0.1, 'momentum': 0.9, 'dampening': 0, 'weight_decay': 0.0001, 'nesterov': False}

Parameters:
+----+---------------------------------------------+----------------+---------------+----------------+------------+------------+----------+----------+----------+------------+----------+----------+------------+
|    | Name                                        | Shape          |   NNZ (dense) |   NNZ (sparse) |   Cols (%) |   Rows (%) |   Ch (%) |   2D (%) |   3D (%) |   Fine (%) |      Std |     Mean |   Abs-Mean |
|----+---------------------------------------------+----------------+---------------+----------------+------------+------------+----------+----------+----------+------------+----------+----------+------------|
|  0 | conv1.wrapped_module.weight                 | (16, 3, 3, 3)  |           432 |            423 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    2.08333 | 28.75588 | -0.63426 |   20.47685 |
|  1 | layer1.0.conv1.wrapped_module.weight        | (16, 16, 3, 3) |          2304 |           2202 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    4.42708 | 16.98713 | -1.12153 |   12.02691 |
|  2 | layer1.0.conv2.wrapped_module.weight        | (16, 16, 3, 3) |          2304 |           2260 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    1.90972 | 22.50954 | -0.29210 |   16.26259 |
|  3 | layer1.1.conv1.wrapped_module.weight        | (16, 16, 3, 3) |          2304 |           2255 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    2.12674 | 24.41840 | -2.58550 |   18.58637 |
|  4 | layer1.1.conv2.wrapped_module.weight        | (16, 16, 3, 3) |          2304 |           2260 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    1.90972 | 23.33428 | -0.94010 |   17.67795 |
|  5 | layer1.2.conv1.wrapped_module.weight        | (16, 16, 3, 3) |          2304 |           2247 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    2.47396 | 21.48796 | -1.00347 |   15.57726 |
|  6 | layer1.2.conv2.wrapped_module.weight        | (16, 16, 3, 3) |          2304 |           2248 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    2.43056 | 21.59341 |  0.07943 |   16.16710 |
|  7 | layer2.0.conv1.wrapped_module.weight        | (32, 16, 3, 3) |          4608 |           4528 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    1.73611 | 25.68778 | -0.13411 |   19.85069 |
|  8 | layer2.0.conv2.wrapped_module.weight        | (32, 32, 3, 3) |          9216 |           9076 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    1.51910 | 28.72585 | -1.76801 |   22.54427 |
|  9 | layer2.0.downsample.0.wrapped_module.weight | (32, 16, 1, 1) |           512 |            502 |    0.00000 |    0.00000 |  0.00000 |  1.95312 |  0.00000 |    1.95312 | 23.43659 | -0.99414 |   16.49414 |
| 10 | layer2.1.conv1.wrapped_module.weight        | (32, 32, 3, 3) |          9216 |           9013 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    2.20269 | 21.76668 | -2.07650 |   17.18414 |
| 11 | layer2.1.conv2.wrapped_module.weight        | (32, 32, 3, 3) |          9216 |           9042 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    1.88802 | 24.62638 | -1.73253 |   19.44021 |
| 12 | layer2.2.conv1.wrapped_module.weight        | (32, 32, 3, 3) |          9216 |           8967 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    2.70182 | 15.97449 | -1.79373 |   12.49447 |
| 13 | layer2.2.conv2.wrapped_module.weight        | (32, 32, 3, 3) |          9216 |           9031 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    2.00738 | 20.47896 | -0.12066 |   16.13780 |
| 14 | layer3.0.conv1.wrapped_module.weight        | (64, 32, 3, 3) |         18432 |          18093 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    1.83919 | 22.38574 | -1.24680 |   17.73107 |
| 15 | layer3.0.conv2.wrapped_module.weight        | (64, 64, 3, 3) |         36864 |          36218 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    1.75239 | 22.71294 | -1.07943 |   18.02051 |
| 16 | layer3.0.downsample.0.wrapped_module.weight | (64, 32, 1, 1) |          2048 |           2020 |    0.00000 |    0.00000 |  0.00000 |  1.36719 |  0.00000 |    1.36719 | 33.22110 | -2.75146 |   26.28564 |
| 17 | layer3.1.conv1.wrapped_module.weight        | (64, 64, 3, 3) |         36864 |          36239 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    1.69542 | 24.10124 | -1.99618 |   19.11982 |
| 18 | layer3.1.conv2.wrapped_module.weight        | (64, 64, 3, 3) |         36864 |          36213 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    1.76595 | 24.02485 | -2.30968 |   18.97195 |
| 19 | layer3.2.conv1.wrapped_module.weight        | (64, 64, 3, 3) |         36864 |          35969 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    2.42784 | 17.23314 | -1.77412 |   13.64255 |
| 20 | layer3.2.conv2.wrapped_module.weight        | (64, 64, 3, 3) |         36864 |          36093 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    2.09147 | 22.90270 | -0.40156 |   17.74607 |
| 21 | fc.wrapped_module.weight                    | (10, 64)       |           640 |            640 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    0.00000 | 48.12321 | -0.01875 |   41.37500 |
| 22 | Total sparsity:                             | -              |        270896 |         265539 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    1.97751 |  0.00000 |  0.00000 |    0.00000 |
+----+---------------------------------------------+----------------+---------------+----------------+------------+------------+----------+----------+----------+------------+----------+----------+------------+
Total sparsity: 1.98


Log file for this run: /workspace/distiller/examples/classifier_compression/logs/2019.02.24-200303/2019.02.24-200303.log
root@f3527f089871:/workspace/distiller/examples/classifier_compression# 


modules を見てみよう。
python3 compress_classifier.py --resume=resnet20_cifar/quantized_checkpoint.pth.tar -a=resnet20_cifar ../../../data.cifar10 --summary=modules
distiller_36_190225.png

ログを示す。

root@f3527f089871:/workspace/distiller/examples/classifier_compression# python3 compress_classifier.py --resume=resnet20_cifar/quantized_checkpoint.pth.tar -a=resnet20_cifar ../../../data.cifar10 --summary=modules
Log file for this run: /workspace/distiller/examples/classifier_compression/logs/2019.02.24-200528/2019.02.24-200528.log
==> using cifar10 dataset
=> creating resnet20_cifar model for CIFAR10

--------------------------------------------------------
Logging to TensorBoard - remember to execute the server:
> tensorboard --logdir='./logs'

=> loading checkpoint resnet20_cifar/quantized_checkpoint.pth.tar
   best top@1: 91.770
Loaded compression schedule from checkpoint (epoch 0)
Loaded quantizer metadata from the checkpoint
Preparing model for quantization using PostTrainLinearQuantizer
Parameter 'conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.0.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.0.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.1.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.1.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.2.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer1.2.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.0.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.0.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.0.downsample.0.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.1.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.1.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.2.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer2.2.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.0.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.0.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.0.downsample.0.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.1.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.1.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.2.conv1.wrapped_module.weight' will be quantized to 8 bits
Parameter 'layer3.2.conv2.wrapped_module.weight' will be quantized to 8 bits
Parameter 'fc.wrapped_module.weight' will be quantized to 8 bits
Quantized model:

ResNetCifar(
  (conv1): RangeLinearQuantParamLayerWrapper(
    mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
    preset_activation_stats=False
    w_scale=343.7104, w_zero_point=0.0000
    (wrapped_module): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
  )
  (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
  (relu): ReLU(inplace)
  (layer1): Sequential(
    (0): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=299.4469, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=316.5102, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (1): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=333.9775, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=306.0066, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (2): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=304.4463, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=246.7246, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
  )
  (layer2): Sequential(
    (0): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=401.2170, w_zero_point=0.0000
        (wrapped_module): Conv2d(16, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=405.1727, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
      (downsample): Sequential(
        (0): RangeLinearQuantParamLayerWrapper(
          mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
          preset_activation_stats=False
          w_scale=174.5428, w_zero_point=0.0000
          (wrapped_module): Conv2d(16, 32, kernel_size=(1, 1), stride=(2, 2), bias=False)
        )
        (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (1): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=346.6644, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=407.8266, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (2): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=337.9731, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=378.4581, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
  )
  (layer3): Sequential(
    (0): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=504.6201, w_zero_point=0.0000
        (wrapped_module): Conv2d(32, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=513.4936, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
      (downsample): Sequential(
        (0): RangeLinearQuantParamLayerWrapper(
          mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
          preset_activation_stats=False
          w_scale=212.4980, w_zero_point=0.0000
          (wrapped_module): Conv2d(32, 64, kernel_size=(1, 1), stride=(2, 2), bias=False)
        )
        (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (1): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=526.9995, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=486.5478, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
    (2): BasicBlock(
      (conv1): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=472.2161, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu1): ReLU()
      (conv2): RangeLinearQuantParamLayerWrapper(
        mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
        preset_activation_stats=False
        w_scale=459.6506, w_zero_point=0.0000
        (wrapped_module): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
      )
      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU()
    )
  )
  (avgpool): AvgPool2d(kernel_size=8, stride=1, padding=0)
  (fc): RangeLinearQuantParamLayerWrapper(
    mode=SYMMETRIC, num_bits_acts=8, num_bits_params=8, num_bits_accum=32, clip_acts=False, per_channel_wts=False
    preset_activation_stats=False
    w_scale=1017.0168, w_zero_point=0.0000
    base_b_scale=1095.1624, base_b_zero_point=0.0000
    (wrapped_module): Linear(in_features=64, out_features=10, bias=True)
  )
)

=> loaded checkpoint 'resnet20_cifar/quantized_checkpoint.pth.tar' (epoch 0)
Optimizer Type: <class 'torch.optim.sgd.SGD'>
Optimizer Args: {'lr': 0.1, 'momentum': 0.9, 'dampening': 0, 'weight_decay': 0.0001, 'nesterov': False}
Name                                  Type
------------------------------------  -----------
conv1.wrapped_module                  Conv2d
bn1                                   BatchNorm2d
relu                                  ReLU
layer1.0.conv1.wrapped_module         Conv2d
layer1.0.bn1                          BatchNorm2d
layer1.0.relu1                        ReLU
layer1.0.conv2.wrapped_module         Conv2d
layer1.0.bn2                          BatchNorm2d
layer1.0.relu2                        ReLU
layer1.1.conv1.wrapped_module         Conv2d
layer1.1.bn1                          BatchNorm2d
layer1.1.relu1                        ReLU
layer1.1.conv2.wrapped_module         Conv2d
layer1.1.bn2                          BatchNorm2d
layer1.1.relu2                        ReLU
layer1.2.conv1.wrapped_module         Conv2d
layer1.2.bn1                          BatchNorm2d
layer1.2.relu1                        ReLU
layer1.2.conv2.wrapped_module         Conv2d
layer1.2.bn2                          BatchNorm2d
layer1.2.relu2                        ReLU
layer2.0.conv1.wrapped_module         Conv2d
layer2.0.bn1                          BatchNorm2d
layer2.0.relu1                        ReLU
layer2.0.conv2.wrapped_module         Conv2d
layer2.0.bn2                          BatchNorm2d
layer2.0.relu2                        ReLU
layer2.0.downsample.0.wrapped_module  Conv2d
layer2.0.downsample.1                 BatchNorm2d
layer2.1.conv1.wrapped_module         Conv2d
layer2.1.bn1                          BatchNorm2d
layer2.1.relu1                        ReLU
layer2.1.conv2.wrapped_module         Conv2d
layer2.1.bn2                          BatchNorm2d
layer2.1.relu2                        ReLU
layer2.2.conv1.wrapped_module         Conv2d
layer2.2.bn1                          BatchNorm2d
layer2.2.relu1                        ReLU
layer2.2.conv2.wrapped_module         Conv2d
layer2.2.bn2                          BatchNorm2d
layer2.2.relu2                        ReLU
layer3.0.conv1.wrapped_module         Conv2d
layer3.0.bn1                          BatchNorm2d
layer3.0.relu1                        ReLU
layer3.0.conv2.wrapped_module         Conv2d
layer3.0.bn2                          BatchNorm2d
layer3.0.relu2                        ReLU
layer3.0.downsample.0.wrapped_module  Conv2d
layer3.0.downsample.1                 BatchNorm2d
layer3.1.conv1.wrapped_module         Conv2d
layer3.1.bn1                          BatchNorm2d
layer3.1.relu1                        ReLU
layer3.1.conv2.wrapped_module         Conv2d
layer3.1.bn2                          BatchNorm2d
layer3.1.relu2                        ReLU
layer3.2.conv1.wrapped_module         Conv2d
layer3.2.bn1                          BatchNorm2d
layer3.2.relu1                        ReLU
layer3.2.conv2.wrapped_module         Conv2d
layer3.2.bn2                          BatchNorm2d
layer3.2.relu2                        ReLU
avgpool                               AvgPool2d
fc.wrapped_module                     Linear

Log file for this run: /workspace/distiller/examples/classifier_compression/logs/2019.02.24-200528/2019.02.24-200528.log
root@f3527f089871:/workspace/distiller/examples/classifier_compression# 

  1. 2019年02月25日 05:21 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0