Python 3.8.11 (default, Aug 3 2021, 15:09:35)

Type "copyright", "credits" or "license" for more information.


IPython 7.22.0 -- An enhanced Interactive Python.


Restarting kernel...




In [1]: runfile('/home/min/a/tibrayev/RESEARCH/active_fable/fable_v2_falcon/FALcon_collect_samples_cub_imagenet.py', wdir='/home/min/a/tibrayev/RESEARCH/active_fable/fable_v2_falcon')

/home/min/a/tibrayev/miniconda3/envs/torch_1.9_torchvision_10.0/lib/python3.8/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html

from .autonotebook import tqdm as notebook_tqdm

conv1.weight

bn1.weight

bn1.bias

bn1.running_mean

bn1.running_var

bn1.num_batches_tracked

layer1.0.conv1.weight

layer1.0.bn1.weight

layer1.0.bn1.bias

layer1.0.bn1.running_mean

layer1.0.bn1.running_var

layer1.0.bn1.num_batches_tracked

layer1.0.conv2.weight

layer1.0.bn2.weight

layer1.0.bn2.bias

layer1.0.bn2.running_mean

layer1.0.bn2.running_var

layer1.0.bn2.num_batches_tracked

layer1.0.conv3.weight

layer1.0.bn3.weight

layer1.0.bn3.bias

layer1.0.bn3.running_mean

layer1.0.bn3.running_var

layer1.0.bn3.num_batches_tracked

layer1.0.downsample.0.weight

layer1.0.downsample.1.weight

layer1.0.downsample.1.bias

layer1.0.downsample.1.running_mean

layer1.0.downsample.1.running_var

layer1.0.downsample.1.num_batches_tracked

layer1.1.conv1.weight

layer1.1.bn1.weight

layer1.1.bn1.bias

layer1.1.bn1.running_mean

layer1.1.bn1.running_var

layer1.1.bn1.num_batches_tracked

layer1.1.conv2.weight

layer1.1.bn2.weight

layer1.1.bn2.bias

layer1.1.bn2.running_mean

layer1.1.bn2.running_var

layer1.1.bn2.num_batches_tracked

layer1.1.conv3.weight

layer1.1.bn3.weight

layer1.1.bn3.bias

layer1.1.bn3.running_mean

layer1.1.bn3.running_var

layer1.1.bn3.num_batches_tracked

layer1.2.conv1.weight

layer1.2.bn1.weight

layer1.2.bn1.bias

layer1.2.bn1.running_mean

layer1.2.bn1.running_var

layer1.2.bn1.num_batches_tracked

layer1.2.conv2.weight

layer1.2.bn2.weight

layer1.2.bn2.bias

layer1.2.bn2.running_mean

layer1.2.bn2.running_var

layer1.2.bn2.num_batches_tracked

layer1.2.conv3.weight

layer1.2.bn3.weight

layer1.2.bn3.bias

layer1.2.bn3.running_mean

layer1.2.bn3.running_var

layer1.2.bn3.num_batches_tracked

layer2.0.conv1.weight

layer2.0.bn1.weight

layer2.0.bn1.bias

layer2.0.bn1.running_mean

layer2.0.bn1.running_var

layer2.0.bn1.num_batches_tracked

layer2.0.conv2.weight

layer2.0.bn2.weight

layer2.0.bn2.bias

layer2.0.bn2.running_mean

layer2.0.bn2.running_var

layer2.0.bn2.num_batches_tracked

layer2.0.conv3.weight

layer2.0.bn3.weight

layer2.0.bn3.bias

layer2.0.bn3.running_mean

layer2.0.bn3.running_var

layer2.0.bn3.num_batches_tracked

layer2.0.downsample.0.weight

layer2.0.downsample.1.weight

layer2.0.downsample.1.bias

layer2.0.downsample.1.running_mean

layer2.0.downsample.1.running_var

layer2.0.downsample.1.num_batches_tracked

layer2.1.conv1.weight

layer2.1.bn1.weight

layer2.1.bn1.bias

layer2.1.bn1.running_mean

layer2.1.bn1.running_var

layer2.1.bn1.num_batches_tracked

layer2.1.conv2.weight

layer2.1.bn2.weight

layer2.1.bn2.bias

layer2.1.bn2.running_mean

layer2.1.bn2.running_var

layer2.1.bn2.num_batches_tracked

layer2.1.conv3.weight

layer2.1.bn3.weight

layer2.1.bn3.bias

layer2.1.bn3.running_mean

layer2.1.bn3.running_var

layer2.1.bn3.num_batches_tracked

layer2.2.conv1.weight

layer2.2.bn1.weight

layer2.2.bn1.bias

layer2.2.bn1.running_mean

layer2.2.bn1.running_var

layer2.2.bn1.num_batches_tracked

layer2.2.conv2.weight

layer2.2.bn2.weight

layer2.2.bn2.bias

layer2.2.bn2.running_mean

layer2.2.bn2.running_var

layer2.2.bn2.num_batches_tracked

layer2.2.conv3.weight

layer2.2.bn3.weight

layer2.2.bn3.bias

layer2.2.bn3.running_mean

layer2.2.bn3.running_var

layer2.2.bn3.num_batches_tracked

layer2.3.conv1.weight

layer2.3.bn1.weight

layer2.3.bn1.bias

layer2.3.bn1.running_mean

layer2.3.bn1.running_var

layer2.3.bn1.num_batches_tracked

layer2.3.conv2.weight

layer2.3.bn2.weight

layer2.3.bn2.bias

layer2.3.bn2.running_mean

layer2.3.bn2.running_var

layer2.3.bn2.num_batches_tracked

layer2.3.conv3.weight

layer2.3.bn3.weight

layer2.3.bn3.bias

layer2.3.bn3.running_mean

layer2.3.bn3.running_var

layer2.3.bn3.num_batches_tracked

layer3.0.conv1.weight

layer3.0.bn1.weight

layer3.0.bn1.bias

layer3.0.bn1.running_mean

layer3.0.bn1.running_var

layer3.0.bn1.num_batches_tracked

layer3.0.conv2.weight

layer3.0.bn2.weight

layer3.0.bn2.bias

layer3.0.bn2.running_mean

layer3.0.bn2.running_var

layer3.0.bn2.num_batches_tracked

layer3.0.conv3.weight

layer3.0.bn3.weight

layer3.0.bn3.bias

layer3.0.bn3.running_mean

layer3.0.bn3.running_var

layer3.0.bn3.num_batches_tracked

layer3.0.downsample.0.weight

layer3.0.downsample.1.weight

layer3.0.downsample.1.bias

layer3.0.downsample.1.running_mean

layer3.0.downsample.1.running_var

layer3.0.downsample.1.num_batches_tracked

layer3.1.conv1.weight

layer3.1.bn1.weight

layer3.1.bn1.bias

layer3.1.bn1.running_mean

layer3.1.bn1.running_var

layer3.1.bn1.num_batches_tracked

layer3.1.conv2.weight

layer3.1.bn2.weight

layer3.1.bn2.bias

layer3.1.bn2.running_mean

layer3.1.bn2.running_var

layer3.1.bn2.num_batches_tracked

layer3.1.conv3.weight

layer3.1.bn3.weight

layer3.1.bn3.bias

layer3.1.bn3.running_mean

layer3.1.bn3.running_var

layer3.1.bn3.num_batches_tracked

layer3.2.conv1.weight

layer3.2.bn1.weight

layer3.2.bn1.bias

layer3.2.bn1.running_mean

layer3.2.bn1.running_var

layer3.2.bn1.num_batches_tracked

layer3.2.conv2.weight

layer3.2.bn2.weight

layer3.2.bn2.bias

layer3.2.bn2.running_mean

layer3.2.bn2.running_var

layer3.2.bn2.num_batches_tracked

layer3.2.conv3.weight

layer3.2.bn3.weight

layer3.2.bn3.bias

layer3.2.bn3.running_mean

layer3.2.bn3.running_var

layer3.2.bn3.num_batches_tracked

layer3.3.conv1.weight

layer3.3.bn1.weight

layer3.3.bn1.bias

layer3.3.bn1.running_mean

layer3.3.bn1.running_var

layer3.3.bn1.num_batches_tracked

layer3.3.conv2.weight

layer3.3.bn2.weight

layer3.3.bn2.bias

layer3.3.bn2.running_mean

layer3.3.bn2.running_var

layer3.3.bn2.num_batches_tracked

layer3.3.conv3.weight

layer3.3.bn3.weight

layer3.3.bn3.bias

layer3.3.bn3.running_mean

layer3.3.bn3.running_var

layer3.3.bn3.num_batches_tracked

layer3.4.conv1.weight

layer3.4.bn1.weight

layer3.4.bn1.bias

layer3.4.bn1.running_mean

layer3.4.bn1.running_var

layer3.4.bn1.num_batches_tracked

layer3.4.conv2.weight

layer3.4.bn2.weight

layer3.4.bn2.bias

layer3.4.bn2.running_mean

layer3.4.bn2.running_var

layer3.4.bn2.num_batches_tracked

layer3.4.conv3.weight

layer3.4.bn3.weight

layer3.4.bn3.bias

layer3.4.bn3.running_mean

layer3.4.bn3.running_var

layer3.4.bn3.num_batches_tracked

layer3.5.conv1.weight

layer3.5.bn1.weight

layer3.5.bn1.bias

layer3.5.bn1.running_mean

layer3.5.bn1.running_var

layer3.5.bn1.num_batches_tracked

layer3.5.conv2.weight

layer3.5.bn2.weight

layer3.5.bn2.bias

layer3.5.bn2.running_mean

layer3.5.bn2.running_var

layer3.5.bn2.num_batches_tracked

layer3.5.conv3.weight

layer3.5.bn3.weight

layer3.5.bn3.bias

layer3.5.bn3.running_mean

layer3.5.bn3.running_var

layer3.5.bn3.num_batches_tracked

layer4.0.conv1.weight

layer4.0.bn1.weight

layer4.0.bn1.bias

layer4.0.bn1.running_mean

layer4.0.bn1.running_var

layer4.0.bn1.num_batches_tracked

layer4.0.conv2.weight

layer4.0.bn2.weight

layer4.0.bn2.bias

layer4.0.bn2.running_mean

layer4.0.bn2.running_var

layer4.0.bn2.num_batches_tracked

layer4.0.conv3.weight

layer4.0.bn3.weight

layer4.0.bn3.bias

layer4.0.bn3.running_mean

layer4.0.bn3.running_var

layer4.0.bn3.num_batches_tracked

layer4.0.downsample.0.weight

layer4.0.downsample.1.weight

layer4.0.downsample.1.bias

layer4.0.downsample.1.running_mean

layer4.0.downsample.1.running_var

layer4.0.downsample.1.num_batches_tracked

layer4.1.conv1.weight

layer4.1.bn1.weight

layer4.1.bn1.bias

layer4.1.bn1.running_mean

layer4.1.bn1.running_var

layer4.1.bn1.num_batches_tracked

layer4.1.conv2.weight

layer4.1.bn2.weight

layer4.1.bn2.bias

layer4.1.bn2.running_mean

layer4.1.bn2.running_var

layer4.1.bn2.num_batches_tracked

layer4.1.conv3.weight

layer4.1.bn3.weight

layer4.1.bn3.bias

layer4.1.bn3.running_mean

layer4.1.bn3.running_var

layer4.1.bn3.num_batches_tracked

layer4.2.conv1.weight

layer4.2.bn1.weight

layer4.2.bn1.bias

layer4.2.bn1.running_mean

layer4.2.bn1.running_var

layer4.2.bn1.num_batches_tracked

layer4.2.conv2.weight

layer4.2.bn2.weight

layer4.2.bn2.bias

layer4.2.bn2.running_mean

layer4.2.bn2.running_var

layer4.2.bn2.num_batches_tracked

layer4.2.conv3.weight

layer4.2.bn3.weight

layer4.2.bn3.bias

layer4.2.bn3.running_mean

layer4.2.bn3.running_var

layer4.2.bn3.num_batches_tracked

fc.weight

fc.bias

Classification model:


ResNet(

(conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)

(bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

(maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)

(layer1): Sequential(

(0): Bottleneck(

(conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): 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)

(conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

(downsample): Sequential(

(0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)

(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

)

)

(1): Bottleneck(

(conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): 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)

(conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

(2): Bottleneck(

(conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): 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)

(conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

)

(layer2): Sequential(

(0): Bottleneck(

(conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

(downsample): Sequential(

(0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)

(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

)

)

(1): Bottleneck(

(conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

(2): Bottleneck(

(conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

(3): Bottleneck(

(conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

)

(layer3): Sequential(

(0): Bottleneck(

(conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

(downsample): Sequential(

(0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)

(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

)

)

(1): Bottleneck(

(conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

(2): Bottleneck(

(conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

(3): Bottleneck(

(conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

(4): Bottleneck(

(conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

(5): Bottleneck(

(conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

)

(layer4): Sequential(

(0): Bottleneck(

(conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

(downsample): Sequential(

(0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)

(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

)

)

(1): Bottleneck(

(conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

(2): Bottleneck(

(conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)

(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)

(bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

(relu): ReLU(inplace=True)

)

)

(avgpool): AdaptiveAvgPool2d(output_size=(1, 1))

(fc): Linear(in_features=2048, out_features=200, bias=True)

)

Selected VGG configuration (vgg11) was loaded from checkpoint: ./results/cub/wsol_method_PSOL/trained_on_trainval_split_evaluated_on_test_split/arch_vgg11_pretrained_init_normalization_none_seed_16/model.pth


FALcon (localization) model:


VGG(

(features): Sequential(

(0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))

(1): ReLU(inplace=True)

(2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)

(3): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))

(4): ReLU(inplace=True)

(5): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)

(6): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))

(7): ReLU(inplace=True)

(8): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))

(9): ReLU(inplace=True)

(10): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)

(11): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))

(12): ReLU(inplace=True)

(13): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))

(14): ReLU(inplace=True)

(15): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)

(16): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))

(17): ReLU(inplace=True)

(18): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))

(19): ReLU(inplace=True)

(20): AdaptiveAvgPool2d(output_size=(1, 1))

)

(fovea_control): Sequential(

(0): Linear(in_features=512, out_features=256, bias=True)

(1): ReLU(inplace=True)

(2): Linear(in_features=256, out_features=128, bias=True)

(3): ReLU(inplace=True)

(4): Linear(in_features=128, out_features=4, bias=True)

)

(saccade_control): Sequential(

(0): Linear(in_features=512, out_features=256, bias=True)

(1): ReLU(inplace=True)

(2): Linear(in_features=256, out_features=1, bias=True)

)

)

/home/min/a/tibrayev/miniconda3/envs/torch_1.9_torchvision_10.0/lib/python3.8/site-packages/torch/nn/functional.py:718: UserWarning: Named tensors and all their associated APIs are an experimental feature and subject to change. Please do not use them for anything important until they are released as stable. (Triggered internally at /opt/conda/conda-bld/pytorch_1623448278899/work/c10/core/TensorImpl.h:1156.)

return torch.max_pool2d(input, kernel_size, stride, padding, dilation, ceil_mode)

100/5794 requested samples processed!


200/5794 requested samples processed!


300/5794 requested samples processed!


400/5794 requested samples processed!


500/5794 requested samples processed!


600/5794 requested samples processed!


700/5794 requested samples processed!


800/5794 requested samples processed!


900/5794 requested samples processed!


1000/5794 requested samples processed!


1100/5794 requested samples processed!


1200/5794 requested samples processed!


1300/5794 requested samples processed!


1400/5794 requested samples processed!


1500/5794 requested samples processed!


1600/5794 requested samples processed!


1700/5794 requested samples processed!


1800/5794 requested samples processed!


1900/5794 requested samples processed!


2000/5794 requested samples processed!


2100/5794 requested samples processed!


2200/5794 requested samples processed!


2300/5794 requested samples processed!


2400/5794 requested samples processed!


2500/5794 requested samples processed!


2600/5794 requested samples processed!


2700/5794 requested samples processed!


2800/5794 requested samples processed!


2900/5794 requested samples processed!


3000/5794 requested samples processed!


3100/5794 requested samples processed!


3200/5794 requested samples processed!


3300/5794 requested samples processed!


3400/5794 requested samples processed!


3500/5794 requested samples processed!


3600/5794 requested samples processed!


3700/5794 requested samples processed!


3800/5794 requested samples processed!


3900/5794 requested samples processed!


4000/5794 requested samples processed!


4100/5794 requested samples processed!


4200/5794 requested samples processed!


4300/5794 requested samples processed!


4400/5794 requested samples processed!


4500/5794 requested samples processed!


4600/5794 requested samples processed!


4700/5794 requested samples processed!


4800/5794 requested samples processed!


4900/5794 requested samples processed!


5000/5794 requested samples processed!


5100/5794 requested samples processed!


5200/5794 requested samples processed!


5300/5794 requested samples processed!


5400/5794 requested samples processed!


5500/5794 requested samples processed!


5600/5794 requested samples processed!


5700/5794 requested samples processed!


5794/5794 requested samples processed!



In [2]: config_3_copy

Out[2]:

{'seed': 16,

'dataset': 'cub',

'dataset_dir': '/home/nano01/a/tibrayev/CUB_200-2011_raw',

'num_classes': 200,

'in_num_channels': 3,

'full_res_img_size': (256, 256),

'correct_imbalance': False,

'selected_attributes': ['all'],

'num_attributes': 312,

'gt_bbox_dir': None,

'wsol_method': 'PSOL',

'pseudo_bbox_dir': '../PSOL/results/CUB_train_set/predicted_bounding_boxes/psol_predicted_bounding_boxes.txt',

'loader_type': 'test',

'cls_model_name': 'resnet50',

'cls_pretrained': True,

'cls_ckpt_dir': '../PSOL/results/PSOL/CUB/checkpoint_classification_cub_ddt_resnet50_99.pth.tar',

'save_dir': './results/cub/wsol_method_PSOL/trained_on_trainval_split_evaluated_on_test_split/arch_vgg11_pretrained_init_normalization_none_seed_16/',

'model_name': 'vgg11',

'initialize': 'resume',

'ckpt_dir': './results/cub/wsol_method_PSOL/trained_on_trainval_split_evaluated_on_test_split/arch_vgg11_pretrained_init_normalization_none_seed_16/model.pth',

'batch_size_eval': 50,

'init_factual': 'pretrained',

'downsampling': 'M',

'fc1': 256,

'fc2': 128,

'dropout': 0.5,

'norm': 'none',

'init_weights': True,

'adaptive_avg_pool_out': (1, 1),

'saccade_fc1': 256,

'saccade_dropout': False,

'num_glimpses': 16,

'fovea_control_neurons': 4,

'glimpse_size_grid': (40, 40),

'glimpse_size_init': (40, 40),

'glimpse_size_fixed': (96, 96),

'glimpse_size_step': (20, 20),

'glimpse_change_th': 0.5,

'iou_th': 0.5,

'ratio_wrong_init_glimpses': 0.5,

'switch_location_th': 0.2,

'objectness_based_nms_th': 0.5,

'confidence_based_nms_th': 0.5}


In [3]: len(collected_samples)

Out[3]: 5794


In [4]: ## For WSOL results: Top 1 predictions


In [5]: acc_correct_class = 0

   ...: acc_localization = 0

   ...: acc_class_localized = 0

   ...: total_samples = 0

   ...: for sample_id, sample_stats in collected_samples.items():

   ...: target_bbox = sample_stats["gt_bboxes"]

   ...: target_class = sample_stats["gt_labels"]

   ...:

   ...: # collect WSOL results statistics

   ...: total_samples += 1

   ...:

   ...: is_correct_label = []

   ...: is_correct_box = []

   ...: cnt_predictions = 0

   ...: for prediction in sample_stats["predictions"]:

   ...: for t_class, t_bbox in zip(target_class, target_bbox):

   ...: if prediction["prediction_label"] == t_class:

   ...: is_correct_label.append(True)

   ...: else:

   ...: is_correct_label.append(False)

   ...: iou = region_iou(prediction["final_glimpse_loc_and_dim"], t_bbox.unsqueeze(0))

   ...: if (iou >= 0.5).item():

   ...: is_correct_box.append(True)

   ...: else:

   ...: is_correct_box.append(False)

   ...: cnt_predictions += 1

   ...: if cnt_predictions == 1: # limit the number of predictions per image

   ...: break

   ...:

   ...: is_correct_label = torch.tensor(is_correct_label)

   ...: is_correct_box = torch.tensor(is_correct_box)

   ...: acc_correct_class += torch.any(is_correct_label).sum().item()

   ...: acc_localization += torch.any(is_correct_box).sum().item()

   ...: acc_class_localized += torch.any(torch.logical_and(is_correct_label, is_correct_box)).sum().item()

   ...: print("TEST (WSOL) STATS: Top-1 Cls: {:.4f} [{}/{}] | GT Loc: {:.4f} [{}/{}] | Top-1 Loc: {:.4f} [{}/{}]\n".format(

   ...: (100.*acc_correct_class/total_samples), acc_correct_class, total_samples,

   ...: (100.*acc_localization/total_samples), acc_localization, total_samples,

   ...: (100.*acc_class_localized/total_samples), acc_class_localized, total_samples))

TEST (WSOL) STATS: Top-1 Cls: 70.4522 [4082/5794] | GT Loc: 88.2982 [5116/5794] | Top-1 Loc: 62.8236 [3640/5794]



In [6]: ## For WSOL results: Top 3 predictions


In [7]: acc_correct_class = 0

   ...: acc_localization = 0

   ...: acc_class_localized = 0

   ...: total_samples = 0

   ...: for sample_id, sample_stats in collected_samples.items():

   ...: target_bbox = sample_stats["gt_bboxes"]

   ...: target_class = sample_stats["gt_labels"]

   ...:

   ...: # collect WSOL results statistics

   ...: total_samples += 1

   ...:

   ...: is_correct_label = []

   ...: is_correct_box = []

   ...: cnt_predictions = 0

   ...: for prediction in sample_stats["predictions"]:

   ...: for t_class, t_bbox in zip(target_class, target_bbox):

   ...: if prediction["prediction_label"] == t_class:

   ...: is_correct_label.append(True)

   ...: else:

   ...: is_correct_label.append(False)

   ...: iou = region_iou(prediction["final_glimpse_loc_and_dim"], t_bbox.unsqueeze(0))

   ...: if (iou >= 0.5).item():

   ...: is_correct_box.append(True)

   ...: else:

   ...: is_correct_box.append(False)

   ...: cnt_predictions += 1

   ...: if cnt_predictions == 3: # limit the number of predictions per image

   ...: break

   ...:

   ...: is_correct_label = torch.tensor(is_correct_label)

   ...: is_correct_box = torch.tensor(is_correct_box)

   ...: acc_correct_class += torch.any(is_correct_label).sum().item()

   ...: acc_localization += torch.any(is_correct_box).sum().item()

   ...: acc_class_localized += torch.any(torch.logical_and(is_correct_label, is_correct_box)).sum().item()

   ...: print("TEST (WSOL) STATS: Top-1 Cls: {:.4f} [{}/{}] | GT Loc: {:.4f} [{}/{}] | Top-1 Loc: {:.4f} [{}/{}]\n".format(

   ...: (100.*acc_correct_class/total_samples), acc_correct_class, total_samples,

   ...: (100.*acc_localization/total_samples), acc_localization, total_samples,

   ...: (100.*acc_class_localized/total_samples), acc_class_localized, total_samples))

TEST (WSOL) STATS: Top-1 Cls: 70.6938 [4096/5794] | GT Loc: 89.3511 [5177/5794] | Top-1 Loc: 63.4967 [3679/5794]



In [8]: ## For WSOL results: Top 5 predictions


In [9]: acc_correct_class = 0

   ...: acc_localization = 0

   ...: acc_class_localized = 0

   ...: total_samples = 0

   ...: for sample_id, sample_stats in collected_samples.items():

   ...: target_bbox = sample_stats["gt_bboxes"]

   ...: target_class = sample_stats["gt_labels"]

   ...:

   ...: # collect WSOL results statistics

   ...: total_samples += 1

   ...:

   ...: is_correct_label = []

   ...: is_correct_box = []

   ...: cnt_predictions = 0

   ...: for prediction in sample_stats["predictions"]:

   ...: for t_class, t_bbox in zip(target_class, target_bbox):

   ...: if prediction["prediction_label"] == t_class:

   ...: is_correct_label.append(True)

   ...: else:

   ...: is_correct_label.append(False)

   ...: iou = region_iou(prediction["final_glimpse_loc_and_dim"], t_bbox.unsqueeze(0))

   ...: if (iou >= 0.5).item():

   ...: is_correct_box.append(True)

   ...: else:

   ...: is_correct_box.append(False)

   ...: cnt_predictions += 1

   ...: if cnt_predictions == 5: # limit the number of predictions per image

   ...: break

   ...:

   ...: is_correct_label = torch.tensor(is_correct_label)

   ...: is_correct_box = torch.tensor(is_correct_box)

   ...: acc_correct_class += torch.any(is_correct_label).sum().item()

   ...: acc_localization += torch.any(is_correct_box).sum().item()

   ...: acc_class_localized += torch.any(torch.logical_and(is_correct_label, is_correct_box)).sum().item()

   ...: print("TEST (WSOL) STATS: Top-1 Cls: {:.4f} [{}/{}] | GT Loc: {:.4f} [{}/{}] | Top-1 Loc: {:.4f} [{}/{}]\n".format(

   ...: (100.*acc_correct_class/total_samples), acc_correct_class, total_samples,

   ...: (100.*acc_localization/total_samples), acc_localization, total_samples,

   ...: (100.*acc_class_localized/total_samples), acc_class_localized, total_samples))

TEST (WSOL) STATS: Top-1 Cls: 70.6938 [4096/5794] | GT Loc: 89.3511 [5177/5794] | Top-1 Loc: 63.4967 [3679/5794]



In [10]: ## For WSOL results: Unlimited predictions


In [11]: acc_correct_class = 0

    ...: acc_localization = 0

    ...: acc_class_localized = 0

    ...: total_samples = 0

    ...: for sample_id, sample_stats in collected_samples.items():

    ...: target_bbox = sample_stats["gt_bboxes"]

    ...: target_class = sample_stats["gt_labels"]

    ...:

    ...: # collect WSOL results statistics

    ...: total_samples += 1

    ...:

    ...: is_correct_label = []

    ...: is_correct_box = []

    ...: cnt_predictions = 0

    ...: for prediction in sample_stats["predictions"]:

    ...: for t_class, t_bbox in zip(target_class, target_bbox):

    ...: if prediction["prediction_label"] == t_class:

    ...: is_correct_label.append(True)

    ...: else:

    ...: is_correct_label.append(False)

    ...: iou = region_iou(prediction["final_glimpse_loc_and_dim"], t_bbox.unsqueeze(0))

    ...: if (iou >= 0.5).item():

    ...: is_correct_box.append(True)

    ...: else:

    ...: is_correct_box.append(False)

    ...: cnt_predictions += 1

    ...: #if cnt_predictions == 5: # limit the number of predictions per image

    ...: # break

    ...:

    ...: is_correct_label = torch.tensor(is_correct_label)

    ...: is_correct_box = torch.tensor(is_correct_box)

    ...: acc_correct_class += torch.any(is_correct_label).sum().item()

    ...: acc_localization += torch.any(is_correct_box).sum().item()

    ...: acc_class_localized += torch.any(torch.logical_and(is_correct_label, is_correct_box)).sum().item()

    ...: print("TEST (WSOL) STATS: Top-1 Cls: {:.4f} [{}/{}] | GT Loc: {:.4f} [{}/{}] | Top-1 Loc: {:.4f} [{}/{}]\n".format(

    ...: (100.*acc_correct_class/total_samples), acc_correct_class, total_samples,

    ...: (100.*acc_localization/total_samples), acc_localization, total_samples,

    ...: (100.*acc_class_localized/total_samples), acc_class_localized, total_samples))

TEST (WSOL) STATS: Top-1 Cls: 70.6938 [4096/5794] | GT Loc: 89.3511 [5177/5794] | Top-1 Loc: 63.4967 [3679/5794]



In [12]: