File size: 1,437 Bytes
adcc0ff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

from IPython.display import display
import matplotlib.pyplot as plt
from visualization import visualize_results

def comparative_visualization(results_list):
  """
 Visualize optimized inputs and loss curves across architectures and layers.

    Args:
        results_list (list): A list of dictionaries with results for each layer.

    Returns:
        matplotlib.figure.Figure: The created figure object with visualizations.
  """

  if len(results_list)==1:
    result = results_list[0]
    return visualize_results(
      input_tensor=result["optimized_input"],
      loss_history=result["loss_history"],
      neuron_id=result["adjusted_neurons"],
      layer_name=result["layer_name"],
      )
    
  fig, ax = plt.subplots(nrows=len(results_list), ncols=2, figsize=(12,5*len(results_list)))


  for i, result in enumerate(results_list):
    input_image = result["optimized_input"].squeeze().permute(1,2,0).detach().cpu().numpy()
    input_image_normalized = (input_image - input_image.min())/(input_image.max()-input_image.min())
    ax[i,0].imshow(input_image_normalized)
    ax[i,0].set_title(f"{result['architecture']}-{result['layer_name']}")
    ax[i,0].axis("Off")

    loss = result["loss_history"]
    ax[i,1].plot(loss, marker='o')
    ax[i,1].set_title(f"Loss History({result['architecture']}-{result['layer_name']})")
    ax[i,1].set_xlabel("Steps")
    ax[i,1].set_ylabel("Loss")

  plt.tight_layout()
  return fig