Visualization - Saliency, Grad-CAM
Visualizing Structure
๊ฐ layer์ parameter์ ํฌ๊ธฐ๋ฅผ ๊ตฌํด์ ์ ์ฒด parameter์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
module.named_parameters๋ฅผ ์ด์ฉํด์ param์ธ์์ ์๋ ์ ๋ณด๋ฅผ ์ด์ฉํด์ ๊ตฌํ๋ค.
def get_module_params_num(module):
param_num = 0
for _, param in module.named_parameters():
size = 1
for i in range(len(param.shape)):
size = size * param.shape[i]
param_size = size
param_num += param_size
return param_num
def get_model_params_num(model):
module_num = 0
for name, module in model._modules.items():
module_num += get_module_params_num(module)
return module_num
num_params = get_model_params_num(model)
print(f"Number of parameters in customed-VGG11: {num_params}")
Visualizing conv1 filters
VGG์ ์ฒซ๋ฒ์งธ convolution layer๋ ํด๋น filter์ ์ฑ๋ ์๊ฐ RGB ์ฑ๋ ์(3)์ ๊ฐ๊ธฐ ๋๋ฌธ์ filter๋ฅผ visualizing ํ๊ธฐ ์ฝ๋ค.
conv1_filters_data = model.backbone.conv1.weight.data
plot_filters(conv1_filters_data, title="Filters in conv1 layer")