# Visual Guide to Applied Convolution Neural Networks

> A visual tour of the long reigning champions of computer vision.

**C**onvolutional **N**eural **N**etworks (CNNs) have been the undisputed champions of **C**omputer **V**ision (CV) for almost a decade. Their widespread adoption kickstarted the world of deep learning; without them, the field of AI would look very different today.

Before deep learning with CNNs, CV applications relied on brittle edge detection algorithms, color profiles, and a plethora of manually scripted processes. These could rarely be applied across different datasets or use cases.

The result is that every dataset and every use-case required significant manual intervention and domain-specific knowledge, rarely producing performance acceptable for broader use.

Deep-layered CNNs changed this. Rather than manual feature extraction, CNNs proved capable of doing this automatically for a vast number of datasets and use cases. All they needed was training data.

Big data with deep CNNs have remained the de-facto standard in computer vision. New models using vision transformers (ViT) and multi-modality may change this in the future, but for now CNNs still dominate state-of-the-art benchmarks in vision. In this hands-on article we will learn why.

[Video](https://www.youtube.com/watch?v=ZBfpkepdZlw)


---

## What Makes a CNN?

CNNs are neural networks known for their performance on image datasets. They are characterized by something called a _convolutional layer_ that can detect abstract features of an image. These images can be shifted, squashed, or rotated; if a human can still recognize the features, a CNN likely can too.

Because of their affinity to image-based applications, we find CNNs used for image classification, object detection, object recognition, and many more tasks within the realm of CV.

![The typical architecture of a CNN.](https://cdn.sanity.io/images/vr8gru94/production/b6337e9122efe9c56985302d3123951ddd237ee6-840x331.png)


Deep-layered CNNs are any neural network that satisfies two conditions; (1) they have many layers (deep), and (2) they contain convolutional layers. Beyond that, networks can have many features, including pooling, normalization, and linear layers.

### Convolutional Layers

An image is a big array of pixel activation values. These arrays are followed by more arrays of (initially random) values – the weights – that we call a _“filter”_ or _“kernel”_. A convolutional layer is an element-wise multiplication between these pixel values and the filter weights – _which are then summed_.

![Element-wise multiplication](https://cdn.sanity.io/images/vr8gru94/production/b4af58fedbdd1027bafa055c859b21a43c12d2f7-4203x663.png)


This element-wise operation **followed by the sum of the resulting values** is often referred to as the _“scalar product”_ because it results in a single _scalar_ value [2].

![element-wise operation](https://cdn.sanity.io/images/vr8gru94/production/9d1dfd24b59ee80ddf605093d78672001f711ec4-3430x953.png)


Considering the above example, when the 3x3 filter is applied to the input image starting from the top-left, the resulting value from the element-wise multiplication is 3.

We don’t return a single scalar value because we perform many of these operations on each layer. For each convolutional layer, the filter slides (or _“convolves”_) over the previous layer’s matrix (or image) from left-to-right and top-to-bottom.

[Video](https://d33wubrfki0l68.cloudfront.net/7ed7b7e252ef093f5a1f102eae64d54532fd6778/10e0f/images/cnn-4.mp4)


The filter can detect specific _local_ features such as edges, shapes, and textures by sliding over the image.

---

_This convolution has a parallel in signal processing. Given an input audio wave_ $f$_, we “convolve” a filter_ $g$ _over it to produce a modified audio wave. See the appendix for a more detailed explanation._

---

The convolution output is called a **“feature map”** or _“activation map”_ thanks to the representation or _activations_ of detected features from the input layer.

As the element-wise multiplication of the filter outputs a single value after processing multiple input values, we need to be mindful of excessive information loss via dimensionality reduction (i.e., compression).

We may want to increase or decrease the amount of compression our filters create. Compression is controlled using the filter _size_ and how quickly it moves across the image (the `stride`).

[Video](https://d33wubrfki0l68.cloudfront.net/0e66dce5c2f1272da5c0aeebdd4030decd987536/78ba8/images/cnn-5.mp4)


The `stride` defines the number of _pixels_ a filter moves after every calculation. By increasing the stride, the filter will travel across the entire input image in fewer steps, outputting fewer values and producing a more compressed feature map.

[Video](https://d33wubrfki0l68.cloudfront.net/e661cd676eee2272e5231acd7011f7aee7f43dcf/b851e/images/cnn-6.mp4)


There are some surprising effects of image compression, and one that we must be careful of is the filter’s interaction with the border areas of an input layer.

![Input layer border](https://cdn.sanity.io/images/vr8gru94/production/1a7570ddb67155c429d746a032573c547111455c-1631x932.png)


The border effects _on small images_ can result in a rapid loss of information for images containing too little information. To avoid this, we either reduce compression using the previously discussed techniques (filter size and `stride`) or add `padding`.

[Video](https://d33wubrfki0l68.cloudfront.net/b4d5a18dc4519216ad558b3daff80556096c2501/48cec/images/cnn-8.mp4)


Adding a set of zero-value pixels around the image allows us to limit or prevent compression between layers. In the example above, the operation _without_ padding causes compression of _10x10_ pixels into _8x8_ pixels. With padding, no compression occurs (a _10x10_ feature map is output). TK 10x10??

For larger images, compression is less likely to cause problems. However, when working with smaller images, `padding` acts as an easy and effective remedy to border effects,

### Depth

We mentioned that _deep-layered_ CNNs were what took CV to new heights. The AlexNet authors found the _depth_ of networks to be a key component for higher performance [1]. Each successive layer extracts features from the previous layer (and previously extracted features). This chain of consecutive extractions produces ever more _“abstract”_ features that can better represent images in more _“human”_ terms.

A shallow network may recognize that an image contains an animal, but as we add another layer, it may identify a dog. Adding another may result in identifying specific breeds like Staffordshire Bull Terrier or Husky. More layers generally result in recognition of more abstract and specific concepts.

### Activation Functions

Activation functions are a common feature in every type of neural network. They add _non-linearity_ to networks, enabling the representation of more complex patterns.

![Some of the most popular activation functions; ReLU, tanh, and sigmoid.](https://cdn.sanity.io/images/vr8gru94/production/3cecbbc6a32699801b6eafbad6105ab4dd83450d-3255x847.png)


In the past, CNNs often used hidden layer activation functions like sigmoid or tanh. However, in 2012 a new activation function called a **Re**ctified **L**inear **U**nit was popularized through its use in AlexNet, the best-performing CNN of its time.

![The authors of AlexNet noted that results from a four-layer CNN with ReLU activation functions reached a 25% error rate on the CIFAR-10 dataset six times faster than the equivalent with Tanh [1].](https://cdn.sanity.io/images/vr8gru94/production/73413b8619d05a1e99d117a74a116037b87b3d2e-1007x793.png)


Nowadays, ReLU is still a popular choice. It is simpler than tanh and sigmoid and does not require normalization to avoid saturation (i.e., activations congregating towards the min/max values).

### Pooling Layers

Output feature maps are highly sensitive to small changes in the location of input features [3]. To some degree, this can be useful, as it can tell us the difference between a cat’s face and a dog’s face. However, if an eye is two pixels further to the left than expected, the model should still be able to identify a face.

CNNs use pooling layers to handle this. Pooling layers are a downsampling method that compresses information from one layer into a smaller space in the next layer.

An effect of pooling is that information across several pixels is compressed into a single activation, essentially “smoothing out” variations across groups (or patches) of pixels.

The two most common pooling methods are average pooling and max pooling. Average pooling takes the average of activations in the window, whereas max pooling takes their maximum value.

![Average vs max pooling](https://cdn.sanity.io/images/vr8gru94/production/44b2e2a4965069c93ba88eabcc8694a460f08c05-1320x720.png)


### Fully-Connected Layers

Fully connected linear layers are another common feature of CNNs. They are neural networks in their most stripped-down form; the dot product between inputs $X$ and layer weights $W$ with a bias term $b$ and activation function.

![Fully-Connected Layers](https://cdn.sanity.io/images/vr8gru94/production/cdd66a0b07742d1442311f3358845690074337c2-1928x836.png)


These layers are usually found towards the end of a CNN and handle the transformation of CNN embeddings from 3D tensors to more understandable outputs like class predictions.

Often within these final layers, we will find the most _information-rich_ vector representations of the data being input to the model. In the next chapter of the ebook, we will explore these in more depth for use in content-based image retrieval (CBIR).

For now, let’s focus on the task of classification. Classifiers tend to apply a _softmax_ activation function that creates a probability distribution across the final output nodes — where each node represents a specific class.

![Softmax](https://cdn.sanity.io/images/vr8gru94/production/ce8c6219c2037987b1db6a5d02266350ed5971ff-2248x972.png)


After these final fully-connected layers, we have our predictions.

These are a few of the most common components of CNNs, but with time many different types of CNNs with different network architectures were designed. So there is no “specific” architecture, just a set of guideposts in the form of high-performing networks.

## Popular Architectures

Throughout the years, there have been several hugely successful CNN architectures. We will take a high-level look at a few of the most relevant.

### LeNet

LeNet is the earliest example of a “deep” CNN, developed in 1998 by Yann LeCun, et. al. [4]. Many of us have likely interacted with LeNet as Bell Labs licensed it to banks around the globe for reading the digits on handwritten cheques.

![LeNet model architecture [4].](https://cdn.sanity.io/images/vr8gru94/production/4b7a21bf063d18eff28342de11fe8ca7f0d1c0e2-1140x351.png)


This first example of a commercially successful deep CNN was surprisingly the only such example of a successful deep CNN for another 14 years.

### AlexNet

October 2012 is widely regarded as ground zero for the birth of deep learning. The catalyst was AlexNet winning the ImageNet ILSVRC challenge [1]. AlexNet can be seen as a continuation of LeNet, using a similar architecture but adding more layers, training data, and safeguards against overfitting.

![AlexNet model architecture [1].](https://cdn.sanity.io/images/vr8gru94/production/f70e81a93b9da237867fe682b5226bb298d5bc59-1339x503.png)


After AlexNet, the broader community of CV researchers began focusing on training deeper models with larger datasets. The following years saw variations of AlexNet continue winning ILSVRC and reaching ever more impressive performance.

### VGGNet

![VGGNet model architecture [5].](https://cdn.sanity.io/images/vr8gru94/production/eb656ed43940007d447f25f1077da03e08c79422-1976x1180.png)


AlexNet was dethroned as the winner of ILSVRC in 2014 with the introduction of VGGNet, developed at Oxford University [5]. Many variants of VGGNet were developed, characterized by the number of layers they contained, such as 16 total layers (13 convolutional) for VGGNet-16, and 19 total layers for VGGNet-19.

### ResNet

ResNet became the new champion of CV in 2015 [6]. The ResNet variants were much deeper than before, the first containing 34 layers. Since then, 50+ layer ResNet models have been developed and hold state-of-the-art results on many benchmarks.

![ResNet model architecture [6].](https://cdn.sanity.io/images/vr8gru94/production/9341c90f4e3873d50b047e4fdb71af0f526711d3-7178x1476.png)


ResNet was inspired by VGGNet but added smaller filters and a less complex network architecture. Shortcut connections between different layers were also added, giving the name of **Res**idual **Net**work (ResNet).

Without these shortcuts, the greater depth of ResNet results in information loss over the many layers of transformations. Adding the shortcuts enabled information to be maintained across these greater distances.

## Classification with CNNs

We’ve understood the standard components of CNNs and how these work together to extract abstract — but meaningful — features from images.

We also looked at a few of the most popular architectures. Let’s now put all of this together and work through an application of a CNN for image classification.

### Data Preprocessing

As usual, our first task is data preparation and preprocessing. We will use a popular image classification dataset called CIFAR-10 hosted on Hugging Face _datasets_.

```json
{
  "_key": "a44bee7969c1",
  "_type": "colabBlock",
  "jsonContent": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"id\": \"87510a3c-9382-4a39-a39b-ded727bf6f1d\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"Dataset({\\n\",\n       \"    features: ['img', 'label'],\\n\",\n       \"    num_rows: 50000\\n\",\n       \"})\"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# import CIFAR-10 dataset from HuggingFace\\n\",\n    \"from datasets import load_dataset\\n\",\n    \"\\n\",\n    \"dataset_train = load_dataset(\\n\",\n    \"    'cifar10',\\n\",\n    \"    split='train', # training dataset\\n\",\n    \"    ignore_verifications=True  # set to True if seeing splits Error\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"dataset_train\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"id\": \"8df80571-3e94-492c-8750-898464f7092c\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"10\"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# check how many labels/number of classes\\n\",\n    \"num_classes = len(set(dataset_train['label']))\\n\",\n    \"num_classes\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"id\": \"a5cc6158-181b-4790-92b2-073670bfc975\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<PIL.PngImagePlugin.PngImageFile image mode=RGB size=32x32>\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# let's view the image (it's very small)\\n\",\n    \"dataset_train[0]['img']\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"environment\": {\n   \"kernel\": \"python3\",\n   \"name\": \"common-cu110.m95\",\n   \"type\": \"gcloud\",\n   \"uri\": \"gcr.io/deeplearning-platform-release/base-cu110:m95\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.13\"\n  },\n  \"vscode\": {\n   \"interpreter\": {\n    \"hash\": \"b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e\"\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}"
}
```

Here we have specified that we want the _training_ split of the dataset with `split='train'`. We return _50K_ images split across ten classes from this.

Most CNNs can only accept images of a fixed size. To handle this, we will reshape all images to 32x32 pixels using `torchvision.transforms`; a pipeline built for image preprocessing.

```python
import torchvision.transforms as transforms

# image size
img_size = 32

# preprocess variable, to be used ahead
preprocess = transforms.Compose([
    transforms.Resize((img_size,img_size)),
    transforms.ToTensor()
])
```

The `preprocess` pipeline handles the height and width of our images but not the _depth_. Every image has a number of “color channels” that define its depth. For RGB images, there are three color channels; **r**ed, **g**reen, and **b**lue, whereas grayscale images have just one.

Datasets commonly contain images with different color profiles, so we must convert them into a set format. We will use RGB, and as our images are all Python PIL objects, the color format is stored in an attribute called `mode`. The mode will be `RGB` for RGB images and `L` for grayscale images.

We perform the conversion to RGB and also perform the `preprocess` transformations like so:

```json
{
  "_key": "fbea8f76ffcf",
  "_type": "colabBlock",
  "jsonContent": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"id\": \"5d55444c-60ec-4913-9771-93db4824b91d\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/vnd.jupyter.widget-view+json\": {\n       \"model_id\": \"12651b5e349748539b2c152c38a4ac15\",\n       \"version_major\": 2,\n       \"version_minor\": 0\n      },\n      \"text/plain\": [\n       \"  0%|          | 0/50000 [00:00<?, ?it/s]\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"from tqdm.auto import tqdm\\n\",\n    \"\\n\",\n    \"inputs_train = []\\n\",\n    \"\\n\",\n    \"for record in tqdm(dataset_train):\\n\",\n    \"    image = record['img']\\n\",\n    \"    label = record['label']\\n\",\n    \"\\n\",\n    \"    # convert from grayscale to RGB\\n\",\n    \"    if image.mode == 'L':\\n\",\n    \"        image = image.convert(\\\"RGB\\\")\\n\",\n    \"        \\n\",\n    \"    # prepocessing\\n\",\n    \"    input_tensor = preprocess(image)\\n\",\n    \"    \\n\",\n    \"    # append to batch list\\n\",\n    \"    inputs_train.append([input_tensor, label]) \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"id\": \"3eaf6075\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"50000 torch.Size([3, 32, 32])\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(len(inputs_train), inputs_train[0][0].shape)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"environment\": {\n   \"kernel\": \"python3\",\n   \"name\": \"common-cu110.m95\",\n   \"type\": \"gcloud\",\n   \"uri\": \"gcr.io/deeplearning-platform-release/base-cu110:m95\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3.8.13 ('image-embeds')\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.8.13\"\n  },\n  \"vscode\": {\n   \"interpreter\": {\n    \"hash\": \"9ec8fc8fb845fc3e050bf8bf651a355c069bbfeddee31167baf4bc42b6050476\"\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}"
}
```

Leaving us with _50,000_ training examples, each a _3x32x32_-dimensional tensor. The tensors are normalized to a [0,1][0,1] range by the `transforms.ToTensor()` step.

Right now, this normalization does not consider the pixel values of our overall set of images. Ideally, we should normalize by the mean and standard deviation values specific to this dataset. For this dataset, these are:

```python
mean = [0.4670, 0.4735, 0.4662]
std = [0.2496, 0.2489, 0.2521]
```

This normalization step is applied by another `transformers.Compose` step like so:

```python
preprocess = transforms.Compose([
    transforms.Normalize(mean=mean, std=std)
])

for i in tqdm(range(len(inputs_train))):
    # prepocessing
    input_tensor = preprocess(inputs_train[i][0])
    # replace with normalized tensor
    inputs_train[i][0] = input_tensor
```

We repeat the steps above for a test set that we will use for validating our CNN classifier performance. The validation set is also downloaded from Hugging Face datasets via `load_dataset` by switching the earlier `split` parameter to `'test'`:

```python
dataset_val = load_dataset(
    'cifar10',
    split='test',  # test set (used as validation set)
    ignore_verifications=False  # set to True if seeing splits Error
)
```

_The validation set must also be preprocessed,_ _[find the code for it here](https://github.com/pinecone-io/examples/tree/master/learn/search/image/image-retrieval-ebook/cnn/cifar10.ipynb)._

Both train and validation splits are added into `DataLoader` objects. The data loaders shuffle, batch, and load data into the model during training or inference (validation).

```python
batch_size = 64

# add to dataloaders
dloader_train = torch.utils.data.DataLoader(
  	inputs_train,
    batch_size=batch_size,
    shuffle=True
)

dloader_val = torch.utils.data.DataLoader(
  	inputs_val,
    batch_size=batch_size,
    shuffle=False
)
```

With that, our data is ready, and we can move on to building and then training our CNN.

### CNN Construction

We can start building our CNN by creating a `ConvNeuralNet` class that will contain all our network layers and define the order of transformations through the network. The network will look like this:

![CNN Construction Diagram](https://cdn.sanity.io/images/vr8gru94/production/6549da5fc6b215884ff98be730db6fdff84434a6-5969x1454.png)


```python
# creating a CNN class
class ConvNeuralNet(nn.Module):
	#  determine what layers and their order in CNN object 
    def __init__(self, num_classes):
        super(ConvNeuralNet, self).__init__()
        self.conv_layer1 = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=4, padding=1)
        self.relu1 = nn.ReLU()
        self.max_pool1 = nn.MaxPool2d(kernel_size=3, stride=2)

        self.conv_layer2 = nn.Conv2d(in_channels=64, out_channels=192, kernel_size=4, padding=1)
        self.relu2 = nn.ReLU()
        self.max_pool2 = nn.MaxPool2d(kernel_size=3, stride=2)

        self.conv_layer3 = nn.Conv2d(in_channels=192, out_channels=384, kernel_size=3, padding=1)
        self.relu3 = nn.ReLU()
        
        self.conv_layer4 = nn.Conv2d(in_channels=384, out_channels=256, kernel_size=3, padding=1)
        self.relu4 = nn.ReLU()

        self.conv_layer5 = nn.Conv2d(in_channels=256, out_channels=256, kernel_size=3, padding=1)
        self.relu5 = nn.ReLU()
        self.max_pool5 = nn.MaxPool2d(kernel_size=3, stride=2)
        
        self.dropout6 = nn.Dropout(p=0.5)
        self.fc6 = nn.Linear(1024, 512)
        self.relu6 = nn.ReLU()
        self.dropout7 = nn.Dropout(p=0.5)
        self.fc7 = nn.Linear(512, 256)
        self.relu7 = nn.ReLU()
        self.fc8 = nn.Linear(256, num_classes)
    
    # progresses data across layers    
    def forward(self, x):
        out = self.conv_layer1(x)
        out = self.relu1(out)
        out = self.max_pool1(out)
        
        out = self.conv_layer2(out)
        out = self.relu2(out)
        out = self.max_pool2(out)

        out = self.conv_layer3(out)
        out = self.relu3(out)

        out = self.conv_layer4(out)
        out = self.relu4(out)

        out = self.conv_layer5(out)
        out = self.relu5(out)
        out = self.max_pool5(out)
        
        out = out.reshape(out.size(0), -1)
        
        out = self.dropout6(out)
        out = self.fc6(out)
        out = self.relu6(out)

        out = self.dropout7(out)
        out = self.fc7(out)
        out = self.relu7(out)

        out = self.fc8(out)  # final logits
        return out
```

After designing the network architecture, we initialize it — and _if_ we have access to hardware acceleration (through CUDA or MPS), we move the model to that device.

```python
import torch

device = "cuda" if torch.cuda.is_available() else "cpu"
# set the model to device
model = ConvNeuralNet(num_classes).to(device)
```

Next, we set the loss and optimizer functions used during training.

```python
# set loss function
loss_func = nn.CrossEntropyLoss()
# set learning rate 
lr = 0.008
# set optimizer as SGD
optimizer = torch.optim.SGD(
    model.parameters(), lr=lr
) 
```

We will train the model for 50 epochs. To ensure we’re not overfitting to the training set, we pass the validation set through the model for _inference only_ at the end of each epoch. If we see validation set performance suddenly degrade while train set performance improves, we are likely overfitting.

The training and validation loops are written like so:

```python
num_epochs = 50
for epoch in range(num_epochs):
    model.train()
		# load in the data in batches
    for i, (images, labels) in enumerate(dloader_train):  
        # move tensors to the configured device
        images = images.to(device)
        labels = labels.to(device)
        
        # forward propagation
        outputs = model(images)
        loss = loss_func(outputs, labels)
        
        # backward propagation and optimize
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        
    # at end of epoch check validation loss and acc
    with torch.no_grad():
      	# switch model to eval (not train) model
        model.eval()
        correct = 0
        total = 0
        all_val_loss = []
        for images, labels in dloader_val:
            images = images.to(device)
            labels = labels.to(device)
            outputs = model(images)
            total += labels.size(0)
            # calculate predictions
            predicted = torch.argmax(outputs, dim=1)
            # calculate actual values
            correct += (predicted == labels).sum().item()
            # calculate the loss
            all_val_loss.append(loss_func(outputs, labels).item())
        # calculate val-loss
        mean_val_loss = sum(all_val_loss) / len(all_val_loss)
        # calculate val-accuracy
        mean_val_acc = 100 * (correct / total)
    print(
        'Epoch [{}/{}], Loss: {:.4f}, Val-loss: {:.4f}, Val-acc: {:.1f}%'.format(
            epoch+1, num_epochs, loss.item(), mean_val_loss, mean_val_acc
        )
    )
```

After training for 50 epochs, we should reach a validation accuracy of ~80%. We can save the model to file and load it again with the following:

```python
# save to file
torch.save(model, 'cnn.pt')
# load from file and switch to inference mode
model = torch.load('cnn.pt')
model.eval()
```

### Inference

Now that we have a fine-tuned CNN model let’s look at how we can do image classification. We will use the same test set of CIFAR-10 for this step (ideally, we would not use the same data in our validation and test sets).

First, we preprocess the images using the same `preprocess` pipeline as before and stack every processed image tensor into a single tensor batch.

```json
{
  "_key": "f735c925e6aa",
  "_type": "colabBlock",
  "jsonContent": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"id\": \"b144865d-c66d-4121-8925-a84cdb6574f0\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"input_tensors = []\\n\",\n    \"for image in dataset_test['img'][:10]:\\n\",\n    \"    tensor = preprocess(image)\\n\",\n    \"    input_tensors.append(tensor.to(device))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"id\": \"2d315e65-658b-4fa3-8c96-93eb9a05a8fe\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"10\"\n      ]\n     },\n     \"execution_count\": 24,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# we have 10 tensors\\n\",\n    \"len(input_tensors)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"id\": \"d12e0287-5d66-44a4-8a19-144fb5dba9c5\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"torch.Size([3, 32, 32])\"\n      ]\n     },\n     \"execution_count\": 28,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# all 32x32 dimensional with 3 color channels\\n\",\n    \"input_tensors[0].shape\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"id\": \"225dfd48-5a59-4b09-9e71-a0b7be377676\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"torch.Size([10, 3, 32, 32])\"\n      ]\n     },\n     \"execution_count\": 36,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# stack into a single tensor\\n\",\n    \"input_tensors = torch.stack(input_tensors)\\n\",\n    \"input_tensors.shape\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"environment\": {\n   \"kernel\": \"python3\",\n   \"name\": \"common-cu110.m95\",\n   \"type\": \"gcloud\",\n   \"uri\": \"gcr.io/deeplearning-platform-release/base-cu110:m95\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.13\"\n  },\n  \"vscode\": {\n   \"interpreter\": {\n    \"hash\": \"b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e\"\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}"
}
```

We process the tensors through the `model` and use an `argmax` function to retrieve the predictions. The predictions are all integer values, so we retrieve the textual names within the dataset `features`.

```json
{
  "_key": "3e3abd4bfa71",
  "_type": "colabBlock",
  "jsonContent": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 52,\n   \"id\": \"7c1a6d62-96f1-4436-8175-7e98788f8aa8\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"tensor([5, 8, 1, 0, 6, 6, 1, 6, 3, 1], device='cuda:0')\"\n      ]\n     },\n     \"execution_count\": 52,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# process through model to get output logits\\n\",\n    \"outputs = model(input_tensors)\\n\",\n    \"# calculate predictions\\n\",\n    \"predicted = torch.argmax(outputs, dim=1)\\n\",\n    \"predicted\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 41,\n   \"id\": \"b15f4b77-8670-4c2d-b8e5-9d19d6b94da5\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"['airplane',\\n\",\n       \" 'automobile',\\n\",\n       \" 'bird',\\n\",\n       \" 'cat',\\n\",\n       \" 'deer',\\n\",\n       \" 'dog',\\n\",\n       \" 'frog',\\n\",\n       \" 'horse',\\n\",\n       \" 'ship',\\n\",\n       \" 'truck']\"\n      ]\n     },\n     \"execution_count\": 41,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# here are the class names\\n\",\n    \"dataset_test.features['label'].names\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"environment\": {\n   \"kernel\": \"python3\",\n   \"name\": \"common-cu110.m95\",\n   \"type\": \"gcloud\",\n   \"uri\": \"gcr.io/deeplearning-platform-release/base-cu110:m95\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.13\"\n  },\n  \"vscode\": {\n   \"interpreter\": {\n    \"hash\": \"b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e\"\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}"
}
```

Now let’s loop through the predictions and view our results:

```json
{
  "_key": "fc6576b6b603",
  "_type": "colabBlock",
  "jsonContent": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 62,\n   \"id\": \"4b4ebfdc-c24f-4e6f-9437-38a1694d0943\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAPsAAAD5CAYAAADhukOtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAesklEQVR4nO2da2yc53Xn/2femeFtSA4pSiR1l205juM2sqt4kybrOk1buN4ukgCbbLJA4QWCuh9qoAG6H4wssMl+yy42KfJhEUDZeOMGaRKjiWGjNdqkTlsjSOpYvskX+SLrZkmUKIninXM/+4Hjruw8/4e0KA7VPP8fQJB8Dp/3PfPMe+YdPv8555i7Qwjxq09uox0QQnQGBbsQiaBgFyIRFOxCJIKCXYhEULALkQj5tUw2s7sAfA1ABuD/uPuXY3/f35P3TQPF8LHi53nXvsUkRQe3Rc9FpkWPx48WN3rsdTjmf9hmsZOROQAQU2avTLblfsSO5v7ur4HlY7L14LSiD/rK/Ig9OmZpRdxgPs4sNLBUbQadvOJgN7MMwP8G8LsATgF4yswedfeX2ZxNA0V88T/dFD6et+i5ioWwm5bjAVGrVamt0azzcxXDL0YA0GyFffTIs2K5JrXlMmqC1/v4McGPWShWguNZ5Km2HPe/2WpQW73Bn7NWiwSFcT8a4WsUAFBlx8NKgRv2MfaiXqvx66PZjKxj5BrORZ6zGrmuFvjSY7EWPt63//50xIcr53YAR9z9qLvXAHwPwMfXcDwhxDqylmDfBuDNy34/1R4TQlyDrCXYQ++Dfun9oJnda2YHzezg/FLkfYkQYl1ZS7CfArDjst+3Azjzzj9y9wPuvt/d95d61rQfKIRYA2sJ9qcA7DWzPWZWBPAZAI9eHbeEEFebK77VunvDzO4D8HdYlt4ecPeXonNgqJHXF/clPpHsVnaB71jnwLe68/nIDvkVKF5W4JOqtRq1NVoRHyPSWxbZxc+TadbiO8xocOUitovcivhfs+7geDPr4nNix2vy9bAW99GImtAdec7yxm25fES5qEfW2Pi/sE7W2CM6Q5aFfYwpE2t6X+3ujwF4bC3HEEJ0Bn2CTohEULALkQgKdiESQcEuRCIo2IVIhA5/ysXhLLHCufzjzfAca3KpplXnklfWE5FxwJMZmOTVikg/xUKB2hrOba165LFFztdohG0WyeTKRWQ+y3hikGdheQ0Alpphie3sRS5PLdS4j/PzfF7mfD36u8PrWDT+PA/09lBbTxeX0Fo5fs3lojJa2Ed+dQB1lnwV0d50ZxciERTsQiSCgl2IRFCwC5EICnYhEqGju/HmjnyT7Lpnkd1iksTRlUXy4/OxbclIogNJMABAE2EasWJhOe5Hoch3fcd230hts9MXqO3CxcXwufJ8Vz2HSHJKg18iS879P3wi7KN3DdM59YwnNtVKfOd/fmaK2k5PTgfHS138cTXPhucAwM5Rvo6b+vk6dudj5azC13Excgk3iQIRK7elO7sQiaBgFyIRFOxCJIKCXYhEULALkQgKdiESYQPKvYalAcuX+QwiJzRiHThyXJarNXjCQjFSI63ZJLXCIokpiEghxUgdtH/zO79LbU//7OfUdmb6YnB8ISKhNZpc8jpx6jy1HTvNu490lceD49tH99A53tVPbbU8f14Kpc3U1qjMB8cvTv5SIeR/obfM5cFT8+eorUJqJQLAaD9Pa+kthBNhmvWwjAoArIlPpJOX7uxCpIKCXYhEULALkQgKdiESQcEuRCIo2IVIhDVJb2Z2HMAcgCaAhrvvj/19y3Ko5sLyysxiL53XJO2JhkpcXhvIuByWj9Rja0VkOSZr0Lp6iGfRLS5eoraf/PUj1HZumtfrOzcfPt+J0/xcJybepLasu0RtzWyA2voGRoLjhV5+vHw3z6LrirRk6s5x6fBCLdxWbHz7TjqnsrRAbceOceltaqZCbZnxx717c9hWaHIpz1hdxojUezV09o+6O8+5FEJcE+htvBCJsNZgdwA/MrOnzezeq+GQEGJ9WOvb+A+7+xkz2wLgx2b2irs/cfkftF8E7gWAoX5e5UMIsb6s6c7u7mfa3ycBPAzg9sDfHHD3/e6+v9SzAR/FF0IAWEOwm1mfmfW/9TOA3wPw4tVyTAhxdVnLrXYUwMPtrf48gL9097+NTWi0DOeXwhk+U/UynffEz/4pOP7evVxy+ej7wtIPAAxFilu2SGYbAORIm55cjmc0NZ23LYqoSTh24hi1TS3xDDDvHQqOZyUu/eSG5qitpzxIbbUKl5pqpL3SwBB/zgZK3DZ59iy1zV7iBSf7i+FLvLuHy3wnL3FxqdC/hdrOnz1JbaVzfI3HBsK+9FgkU5EUYUVEVr7iYHf3owDef6XzhRCdRdKbEImgYBciERTsQiSCgl2IRFCwC5EIne31lnUhPxguOLh4kb/u1IvhgoJTi2EpDAAWa7w32ECRZ7a1SN+ttjE4nGU8Y69S4xLPeZ68hgtzXAKMFUQc2hzO5lpozdI5I+A+ZpFMtFqBr2NlISw1Vea5H7tGN1HbIpHQAGCSZLYBgBXCMuXMFC/miEgB0aUFnhGXFfl1MDnLsw4nSLbcrhF+fedYQlysxSE3CSF+lVCwC5EICnYhEkHBLkQiKNiFSISO7sZ39/ThPb/+S1mwAIBT//wqnVcaDO/G3/6h8LEAoDc7QW01slMMALk8T2qxQnhnuullOqd/yw5qe+7QEWorlfnO9LZd76M2z4V3nwuRnfNWNdwyCgBqtUiLrchaZSSJ46XnD9E5A12RFkl9PEmmL1LX7szZcM24BlFWACAjO/gAMNTP1YmZJk96ujTFbcfOzgTHt46O0Tl5pihFsqt0ZxciERTsQiSCgl2IRFCwC5EICnYhEkHBLkQidFR6y2V59A6GJaVd191I5y0R1WLnnhvonJE6l1amj3FZrh5JhGk2wokOt9/xCTpn53W8I9aeXztObU8/+zy1DZW4JHNmMlw/Le+8jHdXgUte4MuI+UhSyAypCzfUx88VORWaEalsZHNYmgWAaj38fF64FJa7AMAiLbv6I3Xy8hkPp1qFJ94cffNUcHxzmct8e7eH26h55P6tO7sQiaBgFyIRFOxCJIKCXYhEULALkQgKdiESYUXpzcweAPAHACbd/Zb22DCA7wPYDeA4gE+7Oy+y9daxcjlkXeEMpTPnDtN5+37jA8HxvkFe8yubO01tzUakRU6k1tnRN8PZch8ZCtfVAwD0bqem/j4ux3TneSZXT6TWWXeRZGxF6qpt2zpObS+/8Qa1FYu8zt/sXHitdm/fS+fceNPN1DY1xS+v0kCZ2s6cnQyOW47XdysP8Rp/M5FacllEsuvpLVPb0lz4OjhCrjcA6CmGz1VvRLIUqeX/8y0Ad71j7H4Aj7v7XgCPt38XQlzDrBjs7X7r7/yExMcBPNj++UEAn7i6bgkhrjZX+j/7qLtPAED7O29tKYS4Jlj3DTozu9fMDprZwZkZXjNcCLG+XGmwnzOzcQBofw/vggBw9wPuvt/d9w8ODlzh6YQQa+VKg/1RAPe0f74HwCNXxx0hxHqxGuntuwDuBDBiZqcAfBHAlwE8ZGafA3ASwKdWczKzDIXu8N29UuEFEavVcNpbISJB9fbxdxF9kZZGXRnPeivlw/2avnXgm3TOv/+P91FbYeEstRW7ItlLOe7jnuu2Bccnp87QOZV5nr02tmWE2qZmuXRYrYWfz+tu4JmK19/AMx9nnn2G2hbm5qltdiHsY6PJJaqlpXA7JgAolweprelcKhso82y/Ri38fGY53h/s1ET4zXSNZPkBqwh2d/8sMX1spblCiGsHfYJOiERQsAuRCAp2IRJBwS5EIijYhUiEjhachBksC0sQixH5p7K4FBwvRHpyzV3kWV7IuPRWAC9EOF4OZ0q9fpj3bDtzituwyOWwE6eOU9utY7zH3bZd4WKUWydH6ZyFI7wA53BXmdr6y1yWO3r0eHB8fGtYGgSA6Vn+Cct6RCo7d573qmu5BcctUhxyMSK9WY5fV+EzLdMXKVSJVjjLrmjh6x4AahfDsq1Hynbqzi5EIijYhUgEBbsQiaBgFyIRFOxCJIKCXYhE6Kz05gBIz67MubQyPhLuD9fbzaW3nxzihRKHIkX59g7z7KTurrDsUsxzqeb85HFqa1V58cKd1/MillnkcfcODAXHR0Z54cuLUzxrbCaS2daMqJubSf+1fEQurZDsLyCezbVU4dlhDeIkGweASpVnYDYa/P64aYQXbDLj11XRwtdPl0X6Dno447MQKXqpO7sQiaBgFyIRFOxCJIKCXYhEULALkQgd3Y03Awr5cDLJYIknp5T7wzZr8d3KWeeJBxcu8ZSFkX6+JH3F8I5qMxeukQcAx88cp7bRIV7PbNcNvBVShZ8Ov3g63Ebr9ATf+e8vhXfwAaBQ4C2eXjpykjtC7iOtyP2lGtmNn1/gSSHlYd6uqUESYSbO0YLI6Ovnz0s+44kmvb28JmKRteUCgHo4kae5ME2njG7pD47nC7ytle7sQiSCgl2IRFCwC5EICnYhEkHBLkQiKNiFSITVtH96AMAfAJh091vaY18C8EcAzrf/7Avu/thqTphZWAoZ2xKunbbsJJFxIgkQ49t5IsnBiBw2bVyy8yxcJ29whCdVDA7wBIhCd1g+AYDdEemtNBhODAKA//vAt4Pji5G1ml2aorbFJV4bsBC5esaGwo+7MsXr3S2QRCMAGBzgz8srr75ObefOnQ+Oz0ZaRpXL/IEN9JWoLXOuiRZqfB0zUotwcx8/3mB3OI7ykdv3au7s3wJwV2D8z919X/trVYEuhNg4Vgx2d38CAH/pF0L8q2At/7PfZ2aHzOwBM+MfwRJCXBNcabB/HcD1APYBmADwFfaHZnavmR00s4PT09NXeDohxFq5omB393Pu3nT3FoBvAKBdC9z9gLvvd/f95XL5Ct0UQqyVKwp2Mxu/7NdPAnjx6rgjhFgvViO9fRfAnQBGzOwUgC8CuNPM9mG5qtxxAH+8mpPlcjma/TMwxKW3RjPsZleeZxLduGcntR18mktes4UbqK1lc8Hx0W1cXnv58D9T22/+1n+mtp//jM9bWIi0SapdCI5Pnn2Tzom95s/XuS0PLg0N5cJZdtt6uO8z57mE1sj4ttDoFm5rNsOZdEuRFk+VJV53byFSQ6/R4nJevXKa2rYUwhl9W0s8i67aCM+J3b1XDHZ3/2xg+JsrzRNCXFvoE3RCJIKCXYhEULALkQgKdiESQcEuRCJ0tOBkLpdDXymcvTQ0MkLnNSzsZiVXpHO6SwPUVi7zgoIn3zxLbR/5wPvCfszzdlK9/eGsKwCYOH2K2o689hq1NZq8PVGO1BtcmJ2hc/o3jVPbzAyXoQZLvBjle268JTj+1POv0DnPvHKc2j5y5+9TW6HIJaqjR44Ex2fm+OOKFcWsLHF5bdcol3R7+nhB1eHh8DzP8wKcjVq48KWTrFJAd3YhkkHBLkQiKNiFSAQFuxCJoGAXIhEU7EIkQkelN/cWWo2w5DE4zAv5LSyFCxEuNnnfrSzjr2M7d2ynttde4plXM4thia3UxzPsdlxPTTjxGi++ePrMBLV96EMfoLbFxbA01L91G50zvJUX5zw5xaWypSqXHIt94f5rA5t30Dm39vPn5fz5cD80ADh+4nlqW1gKy5TTM1xC27x5M7UNOn9edpW4JLplgPdgK1g4E7BW5/3t+ojElgOPCd3ZhUgEBbsQiaBgFyIRFOxCJIKCXYhE6OhufKtRx9zF8G5mT6S2V7US3uW0FnffjO9Kjgzz9kmv5Y5S2+RUuIXPxYzvSg+WeG29m27hCTlHT/CacXXeJQnTs2G1Y+/evXTO3j1cMjgxwRNoXnrpBWq7eCGcnFLs4qrLUIknkpx6iasCZy/yunZGkqWySOutWOuwXTzPBDv7eWJQd44ntVQr4eun1eK1DesNcjx+2evOLkQqKNiFSAQFuxCJoGAXIhEU7EIkgoJdiERYTfunHQD+AsAYgBaAA+7+NTMbBvB9ALux3ALq0+4e7vnTplqt4uiRsLS1c+976bzuXFh6a9V4okC+OyKDRGz9/VwaKg2E69rddNN76Jy//9Fj1LY4w+vd9Q5vobYjpyapbcf2cFLOnvfcRud0FfllcN1OnuQzPcWf7pcPhxOKWs51w9PTPJFkliRDAUClyWXb2emwFLlljCfdnLzI69MN7+By6cUu7gda/LFNN8KPzfP8Oq2S49XAE25Wc2dvAPgzd38vgA8C+BMzuxnA/QAed/e9AB5v/y6EuEZZMdjdfcLdn2n/PAfgMIBtAD4O4MH2nz0I4BPr5KMQ4irwrv5nN7PdAG4F8CSAUffl5N72d/6+Uwix4aw62M2sBOAHAD7v7vzzib88714zO2hmB+fmeMEAIcT6sqpgN7MClgP9O+7+w/bwOTMbb9vHAQR3jdz9gLvvd/f9sc0vIcT6smKwm5lhuR/7YXf/6mWmRwHc0/75HgCPXH33hBBXi9VkvX0YwB8CeMHMnmuPfQHAlwE8ZGafA3ASwKdWOtBitYHnjoRlo5233E7ntRDONjOW+QMALZ7+Mzs3R23T0xeobdPwvuD43Xd9lM7Z9/6bqO2hHz5MbWZcQhkcHKK2bVvDklJpoEznZI3w+gLA8Bi/RMb31KltpicsGz37PK8XNzHPU8q8wNt5DY7xLMaR68NSWRaRtZrO/XjVw+3LAODIWS4PFjN+zKVKJTi+GLm8G63w9THX5NmBKwa7u/8UAPP0YyvNF0JcG+gTdEIkgoJdiERQsAuRCAp2IRJBwS5EInS04GSlaXhtpidou9DkBQC9EJYmcjVeDNGJNAEAuRy3bR3nn/r9t78ZzhzrLnDJZc8u3nbp3/2Hz1DbXz38N9R24Sx/3BMz4eKFlcoROqcIrvFMLXHbkRM8aw+1sCznIzxDcGhLuEglALQilRSXP/NF5nWHj9mycCFKAKhH2orNNPm5ugv8mN15Lr0tWDjLrl7g5/JWeH2bEclWd3YhEkHBLkQiKNiFSAQFuxCJoGAXIhEU7EIkQkelt2rT8Np0+PXlkZ/yvmH7do0Ex8eKPAOptxDJ1hrj/dfGR3h21fXXkSKFzosJTpy/SG0PfI/La8889zK1sd53AEATAZ2/rnuTH6/ZxdejmePSUB5hibURkYYaufAcAOiOXamRLLVKLfy4Pcfn5CMZcVmL9/XzCpcpG+DzCq2wj5nx56xWD/sfaXGoO7sQqaBgFyIRFOxCJIKCXYhEULALkQgd3Y1vwjCfCycLPP7Ma3Te62+EW0bd9Rs30znXb+Vteo4dDbcmAoA7PnALtXWTxIS5Gt9hfuhvn6K2Z18+Q22LjUgrochuca4Qfv1uRWry5YzvIsd2rZstngBUJTvM9SafY8Zr2lURSQpx/tjyebLTnfH7XG8vT2gpgvvf5BvuaBoPtSaZ2Kjz56XYXw6OW46fR3d2IRJBwS5EIijYhUgEBbsQiaBgFyIRFOxCJMKK0puZ7QDwFwDGALQAHHD3r5nZlwD8EYDz7T/9grs/Fj1ZPo9NI5uDtqlLXD6ZuDQdHP/Z87zVTbO+K+IJl1Y2j5FkFwCWheWwXxx8kc75m5/8nNqqLV5zDXkuveVy7/41ulnlyS4ekeVaEXktJnmxFkqFPL/kLOMSJjL+nOUj87IsfL5Yk9Essr455/JgM5Js1IpIh0yzGxvj8nH/QNj2RldknbgH/0IDwJ+5+zNm1g/gaTP7cdv25+7+v1ZxDCHEBrOaXm8TACbaP8+Z2WEAvGSqEOKa5F29HzSz3QBuBfBke+g+MztkZg+YGW8tKoTYcFYd7GZWAvADAJ9391kAXwdwPYB9WL7zf4XMu9fMDprZwcYSb5UshFhfVhXstlyF/wcAvuPuPwQAdz/n7k13bwH4BoBgg3V3P+Du+919f76HN4IQQqwvKwa7mRmAbwI47O5fvWx8/LI/+yQAviUthNhwVrMb/2EAfwjgBTN7rj32BQCfNbN9ABzAcQB/vNKBzIzKJIUCl5oalbCccPzcLJ1TXThMbXfcdiO19ZTHqW2mEpZI/unJg3ROxXnmUr3BZZyuLp7Z1orUQVtcDLcSipFFMrKMJ70h0pEJXUTyimVlIWKzLi5T9vTw2nV5IvXVIxllcwsL1NaMyJTVBn9eBofCdRQBYHQ8bCtFCu8tzYX/JfbItbGa3fifAgg95VFNXQhxbaFP0AmRCAp2IRJBwS5EIijYhUgEBbsQidDRgpNwR6tBsqhiGUNZWIaqgWc7Tc5Xqe2ZV3mhx7sXubQy52G54/Ql/snArhLPrmoscv8rVe5/b29EaiJtr2LHsxz3Ixdp1xTLYHMio3nk/lKIyI3zdZ59V2twqYzJcrGMvZiEthBpvVUqc3mtvJm3HKs1wsd89RWe1Vkg2Yj1GvdPd3YhEkHBLkQiKNiFSAQFuxCJoGAXIhEU7EIkQoelNwAsa8i53JFl4WJ9LeeyUDPHC/wdn+RS2QMP8fye375zf3D82JnzwXEAWGzGihBGZKhuXjgwK3JbL+lhVuzhstbSHJeuYtlhHpGoCiRjK8vz5yx2rixSVDLWx25pcf5dz4mdqzw0TG2bRnnG5IWLU9Q2feFsePwk70l4w549YUNEUtSdXYhEULALkQgKdiESQcEuRCIo2IVIBAW7EInQUekty2cYLpeDtkqFy2ELS+FMnmLGs78aEVkoFylu+cQvDlHbsTPhbLmZBV44cmp+idpIshMAoK8vki0XKSrY1RV+bPmIXNfdwzPKskhGXL7Aj9kk95FGRPKyiM2d+9is8/Wv1cOL3NPNpciRTZuobWiEy2u1SOZmtRgpHkn6s7XyXD5eqISvq1ZEwtadXYhEULALkQgKdiESQcEuRCIo2IVIhBV3482sG8ATALraf/9X7v5FMxsG8H0Au7Hc/unT7n4pdixvOapkF7Er8rJTbYZ3WwsZ3w1u8E1keI6fLNfDd8FPkISXXCS5o1HnO8wxxaBSqVDbQqQ9UY48NrZLDwB9Rb7r2xNJoMnluP/F7vD5enr5+tZqPBHmwhRPJGmBz8sXwusxNNBH54wOl6ltbIwnwkwv8Dp/c9M8NOZnpoPj5WF+rgvnLwTHG5FkotXc2asAftvd34/l9sx3mdkHAdwP4HF33wvg8fbvQohrlBWD3Zd5K0+w0P5yAB8H8GB7/EEAn1gPB4UQV4fV9mfP2h1cJwH82N2fBDDq7hMA0P6+Zd28FEKsmVUFu7s33X0fgO0AbjezW1Z7AjO718wOmtnB+iJvsSyEWF/e1W68u08D+EcAdwE4Z2bjAND+PknmHHD3/e6+v9A7sDZvhRBXzIrBbmabzazc/rkHwO8AeAXAowDuaf/ZPQAeWScfhRBXgdUkwowDeNDMMiy/ODzk7n9tZj8H8JCZfQ7ASQCfWulArVYL1aWwpNSVGZ3XS7xs1XmSSaRrEVrgklEskaBF2k01apEEjiZ/XLEWRDFbK5IIw6S3S5e49DMVWceBEpeoBiP12AZILbxucCmv2eLSVd4iyTpd/MmuVsLH7Mrz5yV2rsbiTMTG/Z+fvkhtLZKs093FJdEKq5NnkcdFLW3c/RCAWwPjFwF8bKX5QohrA32CTohEULALkQgKdiESQcEuRCIo2IVIBItJPFf9ZGbnAZxo/zoCIJy601nkx9uRH2/nX5sfu9x9c8jQ0WB/24nNDrp7uHma/JAf8uOq+6G38UIkgoJdiETYyGA/sIHnvhz58Xbkx9v5lfFjw/5nF0J0Fr2NFyIRNiTYzewuM3vVzI6Y2YbVrjOz42b2gpk9Z2YHO3jeB8xs0sxevGxs2Mx+bGavt78PbZAfXzKz0+01ec7M7u6AHzvM7B/M7LCZvWRmf9oe7+iaRPzo6JqYWbeZ/cLMnm/78d/b42tbD3fv6BeADMAbAK4DUATwPICbO+1H25fjAEY24Lx3ALgNwIuXjf1PAPe3f74fwP/YID++BOC/dHg9xgHc1v65H8BrAG7u9JpE/OjomgAwAKX2zwUATwL44FrXYyPu7LcDOOLuR929BuB7WC5emQzu/gSAd9ZG7ngBT+JHx3H3CXd/pv3zHIDDALahw2sS8aOj+DJXvcjrRgT7NgBvXvb7KWzAgrZxAD8ys6fN7N4N8uEtrqUCnveZ2aH22/x1/3ficsxsN5brJ2xoUdN3+AF0eE3Wo8jrRgR7qJTGRkkCH3b32wD8PoA/MbM7NsiPa4mvA7geyz0CJgB8pVMnNrMSgB8A+Ly7b1h10oAfHV8TX0ORV8ZGBPspADsu+307gHDj83XG3c+0v08CeBjL/2JsFKsq4LneuPu59oXWAvANdGhNzKyA5QD7jrv/sD3c8TUJ+bFRa9I+9zTeZZFXxkYE+1MA9prZHjMrAvgMlotXdhQz6zOz/rd+BvB7AF6Mz1pXrokCnm9dTG0+iQ6siZkZgG8COOzuX73M1NE1YX50ek3Wrchrp3YY37HbeDeWdzrfAPBfN8iH67CsBDwP4KVO+gHgu1h+O1jH8judzwHYhOU2Wq+3vw9vkB/fBvACgEPti2u8A358BMv/yh0C8Fz76+5Or0nEj46uCYBfB/Bs+3wvAvhv7fE1rYc+QSdEIugTdEIkgoJdiERQsAuRCAp2IRJBwS5EIijYhUgEBbsQiaBgFyIR/h8aTDnHQA2xqAAAAABJRU5ErkJggg==\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"dog\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"ship\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"automobile\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"airplane\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAPsAAAD5CAYAAADhukOtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAf6UlEQVR4nO2dW2xd55Xf/+vcLyTFq0hKpERJluSbbNmVncROM8lkGrjpAIkLJJg8DPwQjOZhAjTA9MFIgSZ9S4smgzwUAZTGGE+RZhI0CWIURseGZyaOOxOPZcd32daNkihRpMT77dxXH3iMys7332RE8lCT/f8BxDn81vn2/s539tr7nO+/11rm7hBC/O6T2O4BCCFag5xdiJggZxciJsjZhYgJcnYhYoKcXYiYkNpIZzN7BMB3ACQB/Hd3/2bU6zOZlOdy2fC2kvy8U63Vg+31ergdABr1BrWl0klqQ4pPiRnvxvAGlzYryyW+rwTfWTqXpjbazfn2PMKWSkWMIxtx+LDJipB6LWKC6zXer1arURvbXbGYo32ixjg/t0ht6WzU5xJxfFeqpBPvk0yEj+HSUgmVciU4kTft7GaWBPDfAPwrAGMAXjKzp9z9bdYnl8vi2EduD9rS7R10X5Mz08H26elZ2qe8wB2pa4DvK9XdQ22WJpMfdaJaIB8kgIuv0KlCuiNDbcMHB6ktT5yzUeUHYr3GnayrjzvF4D4+V0ly0mzUuWOm0vw9z0/zebx2dZLaqo3we/vYg+HjEAC8zMf4zDPPU9vukd3Ulk+HL3IAcOXS1WB7Mt9G+7QX24Pt//TMS7TPRr7GPwjgjLufc/cKgL8G8LkNbE8IsYVsxNl3A7h0w/9jzTYhxC3IRn6zh74f/caPHTM7DuA4AGRz/GuaEGJr2ciVfQzA8A3/DwG48uEXufsJdz/m7scy6Q2tBwohNsBGnP0lAAfNbJ+ZZQD8EYCnNmdYQojN5qYvte5eM7OvAPgbrEpvT7j7W5GdkoZUW3h1N9/XRbu1lcvB9umZGdqnuz+8WgkAAwf4avZsiUt24V8uiJTrlktcqqk3+Arzjo4d1Na3k7+3lId/Ks3PRciUST7Gtt4CtVUjpM/yCpFLqxXaJ1uM0ja5XFot83lMZfLB9p4dXJFZXpzjtvllart2ZYra8hn+Ezbp4fdW7OikfSpkfqOCWDf0vdrdnwbw9Ea2IYRoDbqDToiYIGcXIibI2YWICXJ2IWKCnF2ImNDSu1wsmUSKSB7pLJcm2jrCUlNxmvfpH+qmtnx7kdrmKlyGSqVIMEmCT2N9ZYVvL+JUWyQSJQBUI6K8Eh6WmkpL87RPqcJtjVov7zfHg42mr84G25MZHpDTtyc8dgBIZbgsV17icl4uH/6scxERavUSl/lKy1zmqyxz3au/hx+PuY5wwEs14lo8fuE37l8DANSrXA7VlV2ImCBnFyImyNmFiAlydiFigpxdiJjQ0tX4ZCqNHX07g7aF2XDqKQDItYWDMdq7eNqezkG++rkYjqsBAKQTfJU2R4Iqqg0ePFMr8RXrTMTKtEXkXJu5yhWDHDl9lxcXaB8YX8EtJLkq0F7k89+ohgdSjcgzx1JZAUCjxlfBE8mIPHnp8ByzHG4AkM/y9zwwvIvahob3Utvg7vBxDwBlojSMjY7RPssr4SCwhkcoNdQihPidQs4uREyQswsRE+TsQsQEObsQMUHOLkRMaKn0ljAgmwpLHkbaAWDnQFjumC9fp30sIpNteY5rb5kEr9yRboTPjR6R+KtS4UEaUdnu5q7z/Hr5Ig/kKeXCMlpnTyft09bOpaYF57Lcco3LivUCKfNV4dLQyhzP75bJ8OuSpfn8F4hsm03woJuOnTzv3u1HeSUZRBzDnudjTJCKQoU8l2bvf+ieYPu1S1zC1pVdiJggZxciJsjZhYgJcnYhYoKcXYiYIGcXIiZsSHozs1EACwDqAGrufizq9fV6HQtz4dI6FhE5dunihWB7MaLA/fIUz6tWr3KpKRMR9bY0OxtsTxR4LrzIaK2ICLBMRI60nj2d1FbsDJeNKrTzCDUk+Dm/XuWSUTUifNA8/N4WJ7k0NHeNl0+684HD1NYzwEuH/WZd4VWyaX4MdHZwabPYzctGrdT5Z12NEFq72jrD7cP8+F5YDEc+JomMB2yOzv4pd+eCtxDilkBf44WICRt1dgfwjJm9bGbHN2NAQoitYaNf4x929ytmthPAs2b2jrs/f+MLmieB4wCQb+O3KAohtpYNXdnd/UrzcRLAzwA8GHjNCXc/5u7Hsnm+4CCE2Fpu2tnNrGhm7e8/B/AZAG9u1sCEEJvLRr7G9wP4ma3KRykA/9Pd/09Uh3qjgYWlcGRTNcGlidFX3wi2797Lk/+1R0SGdRZ5VJNHJKOcm1sKGyLktUZElFdbxBj33buH2npv66E2Jr2Y8fP6xIWwHAoAl07xpIfd7VzyuuvuI8H2k2+FZVQAmL3OE2kW28OSIgAkklweLJfDUXuFznBJMQDIZblMWSxyyS7vvJ/V+Rh7O/uC7W+89Qrt8+7b7wXblxZ45OBNO7u7nwNw7832F0K0FklvQsQEObsQMUHOLkRMkLMLERPk7ELEhJYmnGw0GlgurQRtlQaXqMqkflVxF5eg8g1+A0+9wvW1hPGkgW25sOxybZonhyyt8H0duHuE2kbu201tZedJLJnCtnCFy2vv/QO/PWJxLkIOO8wj8+oIv++OnbzmWTbi0pNN8MjCasS9Wu27w3dtTpZ59F17G5flinku26YafIyocWm5TurinXvvEu0zcXYy2F4tq9abELFHzi5ETJCzCxET5OxCxAQ5uxAxobXlnxIJ5Ek5nsXrPLPVwO6hYPvIgf20T1eeB2lcPHue2q6c44Ea3X3hVdo0WXkGgMoAD+AYun2A2hJpfh5OlLhiYLVw7rdzL/OAlqVpEuAD4PA9fI5v/8gd1DZ+MbyS3BGx5H77A4eoLdHBV/7znVyVSRfC+ytVZmmfiWm+4m7gK+7JBM8pWE/wz2xhIaxQXZvkOfkaDR5Yw9CVXYiYIGcXIibI2YWICXJ2IWKCnF2ImCBnFyImtFZ6SyWR7w7LV5kZHqiRQFi2aMvxUjz5Di6f7L+DlxK6evEqt02EpZCBNp6X7Og9XJ4aHuA59LzBz8O1BM95d/qtM8H2axev0T79+8I50ADg9o/cRW3tPXyOV1ZKwfaOdh61ku3vprZEOiIQBjz4Y+JM+H0PH+qnfVZqYSkMAFKJCMkrKlinwWW569euBNtnprgcnU/wuWfoyi5ETJCzCxET5OxCxAQ5uxAxQc4uREyQswsRE9aU3szsCQB/CGDS3e9utnUD+BGAEQCjAL7o7jwRW5OEGXKpcPRSOkKaqFXDJXwadZ7XyyIikPIRJXwO3MVluZeffzHY/s7ly7TPkY9z6aqc5jJOeo6/tx7n419AZ7D9rkMHaZ/eg1yGShe5VLa0zKPl+vaGx5HZwce+whVFdOd51NjZV7lcOnYxnKvt47eHy1MBQCMRlg0BICrYzBO8/FO1zqXlRjVcsqlRDx/3ANAwbmOs58r+lwAe+VDb4wCec/eDAJ5r/i+EuIVZ09mb9dY/nIrzcwCebD5/EsDnN3dYQojN5mZ/s/e7+zgANB95fmAhxC3Bli/QmdlxMztpZifLy/y3kBBia7lZZ58ws0EAaD6GV0EAuPsJdz/m7seyBb44I4TYWm7W2Z8C8Fjz+WMAfr45wxFCbBXrkd5+COCTAHrNbAzA1wF8E8CPzezLAC4C+ML6dpZAfzIcrTMa8RW/Xg9HNVXLvAxSvcaliUSWyzhDh0aobXw0nIzy6nUuk2V3hcsPAcBUbZ7ads7x8bfXeRLLrnxY/rntU5+mfbp38WizuRUuGS0aL6FUrocjxzJXIuSkJT6Pi/mwPAUA6YiSXbfdF5ZSc728xNPUFFeRl6sR5cEy3JZN8si8HOmWMC4fLy4uBNvrDT6/azq7u3+JmPjRI4S45dAddELEBDm7EDFBzi5ETJCzCxET5OxCxISWJpxs1OtYnAlLBkuLPIKKKStzM1y68oiIoZ3DETXW8vzGn7s/dm+w/UjpAO2TTPJQrpXrXNbqz/Bos0KdSzKYWQw2Xz0XTkQJAMnkbmrriEhsmKzzuSpXwzJaZobXxcuk+L6uX+Fy2G1tXEYrIzyPpQUu9aZIZCYAzC/x+mtl55/1QCd/bw0yV6kMd89d/eEkoaNnw8krAV3ZhYgNcnYhYoKcXYiYIGcXIibI2YWICXJ2IWJCS6U3JBKwQlgKGRjiSQ/L5bBMUq/ySKJKiUs8M1d53bOdI8PU1tUTjg4rTvNpLF/iUsjuDK9VV03wemMV4xLPrl3hbVaJvAMA1Us0HQGuVXmGxUaSR3m1F8PRd8U8j9hLZXittEREHbWOLL9mXZ8Ky5uVUS57ejeXFAsRY0zmI66daS7nlUkWy5HD+2mffXvCcunVq1yi1JVdiJggZxciJsjZhYgJcnYhYoKcXYiY0NLV+EQygVxnMWjLXOernPmO8OpoJsWHn0py28wVXi5o5yAPkqknwwEotXm+8l+d4bnTJus8h146xwNhOtr4anGOLPoW2vnKf2mZqxpR6b+jgo1YjrTFFN9eMiIABSR3IQBkerqobXhHWEFpNPjcn3l3jNq6+nmJhHKaqxOLK3x/SeKG+Sw/hise3p6Dqye6sgsRE+TsQsQEObsQMUHOLkRMkLMLERPk7ELEhPWUf3oCwB8CmHT3u5tt3wDwJwDejyj5mrs/vda2Go0GlpbCUlStwoM7akTRqDW4ZFSvcwkiVeAlmZbnw5IRAOR2hIM7Uh08B9pDn/w9anvxlVeo7f+e/DW1HTl0kNr6u8JjWZgK56YDgB2dPDhlqH+Q2laW+DanZsOloUoREhSS/DObmOJyaaGdy7Z7bwuXf7ISP3b2NXjQ0Og0DxpKdeyitqUSf9+jp88G28+/9w7tMzjycLA9EXH5Xs+V/S8BPBJo/wt3P9r8W9PRhRDby5rO7u7PA+AV/IQQ/yzYyG/2r5jZ62b2hJnxW5iEELcEN+vs3wVwAMBRAOMAvsVeaGbHzeykmZ0sRdx6KYTYWm7K2d19wt3r7t4A8D0AD0a89oS7H3P3Y7kCv6dbCLG13JSzm9mNS7SPAnhzc4YjhNgq1iO9/RDAJwH0mtkYgK8D+KSZHQXgAEYB/Ol6dtZoNFBZCedWKxbCshYAVBGW5Ro5LpHkO/j2CsVw6RwAqNe5JNMgUV6X53hJoIMFLss9eOR+anv5lbepbbnMx5gnOd5yGR6RlUjwclJXrkxQWzbLo9T2jowE273B95WOiBobjigPNh4xxjOnwvN46K77aJ8D3XdR2/SLPH/hdESEYxX8vU3Nh/Ph7ejqpX32HwiXHPtl9mXaZ01nd/cvBZq/v1Y/IcSthe6gEyImyNmFiAlydiFigpxdiJggZxciJrQ04aQBSJKEeIU2LpV19IRt5QZP9JjJRJQEGhuntmJvOEEhAMxfCffLZbgE9au3eeTSw/c+QG2P/ttHqW3swii11Un0YK6dS4Dgahja2/ghUm/wSMUrY+EotUyGRxw2anx7qTyf4/4hLqXOTYUlu+tXeVLJM3Pz1DY4MEJtY1dHqc3beGTensN7gu2jb5+nfa6OXQ+21ypcltWVXYiYIGcXIibI2YWICXJ2IWKCnF2ImCBnFyImtLbWWyKBQj4svdTqXP/p6g5H/yTKXKopVXiijMnLEbW8eM5D1KrhZJT5QV7/azrN66H9w2s8qeS/+f3PUJuXwpGDAHDx7JlgezbPpc1yhSdD3DXAI6+yEbXIZhfCyShzGV7Dzur885yYCUtNAFDP8mtWvhjOobCyxOW1aplHr/3i16epbXSZJytt6+TS4Y6esE8MHR6ifXr7+4PtqTTfj67sQsQEObsQMUHOLkRMkLMLERPk7ELEhNauxieTyO/oCNrqHpUjLbzCeOUCDxSoFPnqfiPFbRMX+Ur90Eh4BbSywlf+u3fzlfq3//FVais+/0tqu+9uXv6ptBJeBc9E5PjrHeBBMpXlcH40AKhUeCBSb3dPsL1hUfnueImneiXiulTh26yR/dUbXCXJZ3nQyqVJXv4p0cOVi+nrM9RWm50Ntt//iXCJJwAY6CWr8RF5AXVlFyImyNmFiAlydiFigpxdiJggZxciJsjZhYgJ6yn/NAzgrwAMAGgAOOHu3zGzbgA/AjCC1RJQX3R3ri9gNRAm31YI2hZKXAo5/244uGMpIjiiWOB5yapc5cPSCi8zlEyHgyrOjV6kfeaneXDE7iO3UdvTz71AbQtlHsTx4JEjwfZyiQeZFCIKbmbS/BCZI5IRwOXIfIQEmEjz/HTZfESpryQfY4VIbOUqn49yRAmw4f3hsksAsJjistdcgkdYdfWTYzXLg4YmSuGSY7UISXE9V/YagD939zsAfBTAn5nZnQAeB/Ccux8E8FzzfyHELcqazu7u4+7+SvP5AoBTAHYD+ByAJ5svexLA57dojEKITeC3+s1uZiMA7gPwIoB+dx8HVk8IAPitYkKIbWfdzm5mbQB+AuCr7s5/NP5mv+NmdtLMTi4v8qQAQoitZV3ObmZprDr6D9z9p83mCTMbbNoHAQRvGnb3E+5+zN2PFcjinBBi61nT2c3MsFqP/ZS7f/sG01MAHms+fwzAzzd/eEKIzWI9UW8PA/hjAG+Y2avNtq8B+CaAH5vZlwFcBPCFtTZkZsimwnLC+LVLtN+Fd94Nth954C7aJ5ni+tpCncs4bTt2UFtpJZyrraebl4y6eOkCtQ0e2ktt+/7FndR2ZpRH5u0fCZcSOrCX76u0yOXGWp1LRjsHdlPblbHw+56Z51JkBvxzqUWUmpqJkDezhfDx5g0ur3mNy1eZHI+wW5oLy2EAMLQv/LkAwN47w3Le5Rku6S6WwsdiVDTfms7u7i+AVwP79Fr9hRC3BrqDToiYIGcXIibI2YWICXJ2IWKCnF2ImNDShJP1eh1zs+Gb7xbnZmm/tkI4msgi5JNslktG3V08ymv8Oi+ttEQSLI4c4LLKjr4uajt7+iy13b6XR1clUvzmpIqHJZnlEpfXOsj8AsBCjSfTrFS5rdDRGWy/PssTNq7M8KDJjnYuiRbS/JqVsLAU1VXkEXYL9XDSTgAoLvG7QDsjotR29PO7ya+VrwXbF2tcUoSHk2JGVC/TlV2IuCBnFyImyNmFiAlydiFigpxdiJggZxciJrRUems06lheCktvhYgaVQ/9waeC7bffsZ/2uTTFZa2xeR4Rt3KaS28ry2H5aqHKJcC+tnDNMwCYavCEmafeeofaPnHXvdTW2xaupbcwxSOyOiKi9qzG67nNLYdlvtWO4UMrwQPbUCzymnOFHJfKVsgxBQBZUretYVw2XM7y7RWW+RvYP8ijAKdSfH8zc+HjIJ3nUl5thUW3cfFNV3YhYoKcXYiYIGcXIibI2YWICXJ2IWJCS1fjU+kUugfCK7+DBw/RfkdJrrauXh4c0dHNV/czfBEcqTaeY2xqIrzq3mjwgIWLF8aprbPAx5/uG6C2yRW+v+FiMdierPFV2nqJr7jXSPAPANQRUTaKlGTKGL++rNS4qjG4M2I+eGwNFpfCczUbMYcl58fAyiwf47UVnhvQe/upzSrh/HrZYkSprGy4z2p+WNKHWoQQv1PI2YWICXJ2IWKCnF2ImCBnFyImyNmFiAlrSm9mNgzgrwAMAGgAOOHu3zGzbwD4EwDvJ9D6mrs/HbWtRqOBleVwQMDY4mXar1KdCLbv3beP9hnq76W2w7sOU1sywackn5kOtpfLvOROeYEHQMzP8ZJG9xziUmQuImfc7GQ44KUvxWWysWtci7wcEUDj6bDMBwD7B8JSU3uBB7RYMiJAqcKDblKJcLALACwuhiW2WpXPfX8bzxf39tJpanvr/Hlq27c3IsgnE/48qyv82Ll0IVwaqlKOmCdq+f/UAPy5u79iZu0AXjazZ5u2v3D3/7qObQghtpn11HobBzDefL5gZqcA8Fg+IcQtyW/1m93MRgDcB+DFZtNXzOx1M3vCzHjOZCHEtrNuZzezNgA/AfBVd58H8F0ABwAcxeqV/1uk33EzO2lmJ1cWeWIIIcTWsi5nN7M0Vh39B+7+UwBw9wl3r7t7A8D3ADwY6uvuJ9z9mLsfy7fxxRkhxNayprPb6p313wdwyt2/fUP74A0vexTAm5s/PCHEZrGe1fiHAfwxgDfM7NVm29cAfMnMjmI16dUogD9da0O1ag1TV8MyT63G5au33wnLDPsmuFz30MceoLbeTh5NtLd3iNqSibA0dCmipNHwHVzGmRzj5Y7OnHmJ2jq7eARYh4ej2xYifkFdvMijtd69cInadvbw99ZbCMthfZ08J19XZzh/HgBcGg8fAwDQESHndXZ3BtuXlngJrWvzYYkVAKaXeGmoufmIck0R0Wgr5Ni/eu4M7ZNvhD9na3A/Ws9q/AsAQiON1NSFELcWuoNOiJggZxciJsjZhYgJcnYhYoKcXYiY0OLyT47llXBUTkeOSyGnR68F2y+eD0fDAcDifLhUEwA88NCd1Nbdxe/6HejdE2wv5nniyIszo9TWGOJRY4s5Pv75JS6H1XLh6LaFRoT008cjslKpYWqbWeQyVI0FsBFpEADmZ2apraefJ2xcWZyjtpm5sC2R4pFyl6d4FOArZ3hkW+9RXo4sKtHm2Hth6bONyJcAkPFw1F5CCSeFEHJ2IWKCnF2ImCBnFyImyNmFiAlydiFiQkult0QigXyBJD6s8UR5iXpYTpi4ypMhPvfzF6itYwdPbHjwyG3UVkiFo7KG2vton2yiQW3vNni02QcCiD9EpszlKycJB6u5iASLvTx6bWeND2Rpep7aFsg42pxHhi1XeILFVJ7LUMVsltpmiNR3fuwc7fPOKI82Q0SE3c7dPGLy9V+8SG2/d+xYsP2Bf/kx2ueXf/tMsD0VkbRTV3YhYoKcXYiYIGcXIibI2YWICXJ2IWKCnF2ImNBS6c0SQLoYPr/UarxfuiscEbe3kydeHDt1ldpeePY1ait0cGmlUAzLhsU8P2fu3MEjodIFnnzxwnUu/8wvcxmtlA8nHJyZC0cOAsBChdtKkzyirLDM68dVG93B9tkclyIzWR59V6nwfjOLPEHkZRIRN53m8mW9nb+vgR5+fFw7f4HaUhHj33NbOAFqMsWl5c62cKQlS4oK6MouRGyQswsRE+TsQsQEObsQMUHOLkRMWHM13sxyAJ4HkG2+/n+5+9fNrBvAjwCMYLX80xfdndczAgA04I3loGV2iudcG78cXi2+4yMjtE9lia+2zk7xYIy/+5uT1FZLhFe6K4e4lLCrym09HXw1/vDAXdQ2s8BXyCeXw/nTkuBlgQoJnv+vnOmktvd+/Ta1jU+GS2INDh2gfabPnaW2SonXr7JgwaJV8js7g+177jxM+3TtCecaBIClEs+7l0jxa2fPIA828nz4GJld4D4xOx+ejzopCwWs78peBvD77n4vVsszP2JmHwXwOIDn3P0ggOea/wshblHWdHZf5f3TWbr55wA+B+DJZvuTAD6/FQMUQmwO663PnmxWcJ0E8Ky7vwig393HAaD5yL+nCCG2nXU5u7vX3f0ogCEAD5rZ3evdgZkdN7OTZnaytFy+yWEKITbKb7Ua7+6zAP4ewCMAJsxW86k0H4MrMu5+wt2PufuxXIFnFBFCbC1rOruZ9ZlZZ/N5HsAfAHgHwFMAHmu+7DEAP9+iMQohNoH1BMIMAnjSzJJYPTn82N3/t5n9I4Afm9mXAVwE8IW1NlSr1jE7EVbn3nn5PdqvtBT++p8kpY4AoGe4k9oqK/znxOXTvPTPrxAOoEnn07TPfB8P0uiY7qS2XTt5AE1ney+1ZdLh83fBeA63vgLfXt8Il+X27uCBK7/4VVjCPL/EA5SuL12mtp6IoKfde/ZS29BQOIfe8C5e1ur6FFeQF8Hz5K2uW4dpb+dlxcoNIrHV+dzv3B3O8ZdK82NxTWd399cB3BdonwLw6bX6CyFuDXQHnRAxQc4uREyQswsRE+TsQsQEObsQMcGclMfZkp2ZXQPwfqKuXgBc52odGscH0Tg+yD+3cex192A9spY6+wd2bHbS3cNFrjQOjUPj2PRx6Gu8EDFBzi5ETNhOZz+xjfu+EY3jg2gcH+R3Zhzb9ptdCNFa9DVeiJiwLc5uZo+Y2btmdsbMti13nZmNmtkbZvaqmfFMk5u/3yfMbNLM3ryhrdvMnjWz081HHia1teP4hpldbs7Jq2b22RaMY9jM/s7MTpnZW2b275rtLZ2TiHG0dE7MLGdm/2RmrzXH8Z+a7RubD3dv6R+AJICzAPYDyAB4DcCdrR5HcyyjAHq3Yb+fAHA/gDdvaPsvAB5vPn8cwH/epnF8A8C/b/F8DAK4v/m8HcB7AO5s9ZxEjKOlcwLAALQ1n6cBvAjgoxudj+24sj8I4Iy7n3P3CoC/xmryytjg7s8D+HCge8sTeJJxtBx3H3f3V5rPFwCcArAbLZ6TiHG0FF9l05O8boez7wZw6Yb/x7ANE9rEATxjZi+b2fFtGsP73EoJPL9iZq83v+Zv+c+JGzGzEazmT9jWpKYfGgfQ4jnZiiSv2+HsoYz+2yUJPOzu9wP41wD+zMw+sU3juJX4LoADWK0RMA7gW63asZm1AfgJgK+6+3yr9ruOcbR8TnwDSV4Z2+HsYwBuzAk0BODKNowD7n6l+TgJ4GdY/YmxXawrgedW4+4TzQOtAeB7aNGcmFkaqw72A3f/abO55XMSGsd2zUlz37P4LZO8MrbD2V8CcNDM9plZBsAfYTV5ZUsxs6KZtb//HMBnALwZ3WtLuSUSeL5/MDV5FC2YEzMzAN8HcMrdv32DqaVzwsbR6jnZsiSvrVph/NBq42exutJ5FsB/2KYx7MeqEvAagLdaOQ4AP8Tq18EqVr/pfBlAD1bLaJ1uPnZv0zj+B4A3ALzePLgGWzCOj2P1p9zrAF5t/n221XMSMY6WzgmAewD8urm/NwH8x2b7huZDd9AJERN0B50QMUHOLkRMkLMLERPk7ELEBDm7EDFBzi5ETJCzCxET5OxCxIT/BzOmPtkq2ckzAAAAAElFTkSuQmCC\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"frog\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"frog\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"automobile\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAPsAAAD5CAYAAADhukOtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAdL0lEQVR4nO2dXYxlZ5We37XPf52q6h+X293T7aTB45mA0IxBHQ8JyYiJychhRgIuQMPFyBdoei4GKUgzFxaRAnNHosCIK6QmWOOJCAMKJqAIJSArESHKODRg7IY2xoPbpsft/quu7vo7P3vvNRd1LLXN964qd1Wd6vh7H6nVVXvVt/fa397r7HO+96y1zN0hhHjjU+y1A0KI6aBgFyITFOxCZIKCXYhMULALkQkKdiEyobmdwWb2IIDPAmgA+I/u/qno7zvdjs/M9l//gYg86OCyocECG8csev1jIwM/LLAVNbXVNR/nzs/A6S75eTkfhDqwRed9S4puMCa61tGxmLQcSc6hHB2O48MsuOnotY6OReajKivUdZ08mt2qzm5mDQDPAviXAM4D+B6AD7v7T9iYAwsH/YHfe0/SFl/MtK0sSzqmGcxuM7jx223+YmRsnI3pmEaL29rdEbWtrw+pbTxscNsobaurNh1TVtzHQblKbVXF/a/r9ItE9EJVV/weKMvIVlHbeJw+N7Z9M1s95veck3MGgCK4H4ej9DyWgR/s3r925RrGo3HyYNt5G38/gOfc/efuPgLw1wDet439CSF2ke0E+1EAv7jp9/OTbUKI25DtBHvqrcIvvdcys5NmdtrMTg8H/K2pEGJ32U6wnwdw902/HwPw0mv/yN1PufsJdz/R6Xa2cTghxHbYTrB/D8C9ZvYmM2sD+AMA39gZt4QQO80tS2/uXprZRwH8D2xIb4+4+4+jMQbACrIqGcoWkVjG/OMro5H+4M5XdguyCF45X5UuR3w1G01+rFabn3M5Dj4OkbmqEX2E4sdqhFJki1q8Tq8kN4LdjT1YBQ9W3BHJlExpIP4BgNV8xd3qyI9ApgzuYbbPJosVAO12Wl25HqpQ28Ddvwngm9vZhxBiOugbdEJkgoJdiExQsAuRCQp2ITJBwS5EJmxrNf714ggSJCL5hIhlUWZYHSR3NNv8yz11ILvcuLGY3N7ucsml2QmSTIbr1Dbb5wk5c/u55LV8I73P8Qo/FgqeJFMECTRVMP8gSS11IG1W4wG1WZAkgzKQWYlMaVHSSuBjI5DDGk1+XVqBzbvd5HYqUwNoEkn08qWrdIye7EJkgoJdiExQsAuRCQp2ITJBwS5EJkx1NR7gSS0e1GpjmSuNIKsiKmMUjYtWyF96+RfJ7ff86mE6pt/nU7w24Ak0gxFXBeZm56htfj8xNPj+Bqs8SaYiZa4AoBxFde3I6nOQSGLBKni0et4KHlntXlpNaDT4eRUs4wlAq8HViYYF+wwSVJiqVIdJN+kx4XnxvQkh3kgo2IXIBAW7EJmgYBciExTsQmSCgl2ITJhuIow7yorICbfQmeZWatMBQFkGNeMCW6tF6rsFNeiWV9aobX24RG0AT6BZXrlMbf3ZdFJF0eTz25kJEj+MS03DAX9WGJHeGg2eELJvnicoFYEK1Wzw2ziSohhRZ5dGUHcPUVuu4P5m3V2izjSjYfqeiyJCT3YhMkHBLkQmKNiFyAQFuxCZoGAXIhMU7EJkwrakNzM7B2AZQAWgdPcT4QB3VGVaTojqyTGFLcpOiqSOtTUuh1UVzw7bt282uX155Rr3o+Dtn4oGzzYrIq0pmKvVNXY8LuM0gozDXvcAtd11+BC1dZppW2FcuioCP5pB066aSFcAUBTp59l4zMeUga0IpLdqzCW74ZBf63KUto2CMWx/UduzndDZf8fdr+zAfoQQu4jexguRCdsNdgfwLTP7vpmd3AmHhBC7w3bfxr/L3V8ys0MAvm1mz7j7d27+g8mLwEkA6M30tnk4IcStsq0nu7u/NPn/EoCvAbg/8Ten3P2Eu59od/j3rIUQu8stB7uZ9c1s7pWfAfwugDM75ZgQYmfZztv4uwB8bZJ51gTwn939v0cDHI6aSFt1IBmw1lBMVgGAqH7lyiKXw65evUhtXVLn8cAx/o6lbPIClk3jEk90ApFEVRJJptPmMuVcJ8o2C+TB9gq1zc6mz7vZmKFjVta43FjWPLOw2eC5Xi3yPBsPgznkXagwqrmEOSayMgCUI77TirSoYtuBoDhnIDnfcrC7+88B/OatjhdCTBdJb0JkgoJdiExQsAuRCQp2ITJBwS5EJky315s7qiotT8TFI9NygkeZUEEGUhn0UfMgg2ptNS3ZtYdcequCrLdmFfQvC4oXFoFM2SZ97KwZ9ACrua3X4rfI6vAqtV27npaaZvqBnNScp7Z20NAtmo+Vq9eT28v14H6r0kU7gfiei+TSSB5skmeuGz9ndn8XwWnpyS5EJijYhcgEBbsQmaBgFyITFOxCZMJ0V+MBFK+/yxMapNZcJ0jgaM/wUzt+7FeobenqHdR29rnvJ7c7URiA+Hz7vX3UNtdN17sDAA+SMdpk1TdYDMb6cJnaiiJQDLr8WTGu0qvxK2sv0jHt7n5+rIJf66j9U6uXvgBBfg+6QbJOO1BQxiVP5KlY4goAEDWh6PB6d81uWgFqEjUG0JNdiGxQsAuRCQp2ITJBwS5EJijYhcgEBbsQmTBV6a1RNDDXT0tKvR4vMz0/n06QmJ/jiRNz831qO7CPFJMD8MPv/Q21tV5IS4DNQF9z8CSTZsETLvbNcwmw2eQ6WqeTvqSjIa+BtrLEpbyqiFpUcRmqQU7bSy7zlTWv11c4v56NgktlXXKtrQoSg4JaeA3wc0ZUE7HDr7WByYqBbkskwEbgg57sQmSCgl2ITFCwC5EJCnYhMkHBLkQmKNiFyIRNpTczewTA7wO45O5vm2w7CODLAI4DOAfgQ+5+bbN9dbtdvOXXfj1pm53lWV79flp2ibLeGkG7oyI462vXb1Cbe/q1sdPiNehWh7ym3ZUbvH3Svv5+apvbx2WoZjs9Jx5kQ2GNZ1d5kK3lgcxTV+l2TY1GkP2FoH3SmM9jBS4Plk0iUbX4/dbtchl4tsvvOav5jVWRFmYAUBIZraqDdlggtqCW41ae7H8J4MHXbHsYwOPufi+Axye/CyFuYzYN9km/9cXXbH4fgEcnPz8K4P0765YQYqe51c/sd7n7BQCY/H9o51wSQuwGu75AZ2Ynzey0mZ1eW13b7cMJIQi3GuwXzewIAEz+v8T+0N1PufsJdz8x0+ffYRZC7C63GuzfAPDQ5OeHAHx9Z9wRQuwWW5HevgTg3QAWzOw8gE8A+BSAr5jZRwC8COCDWzlYq9XEkcOHiY3LPwWRjVghSgCoo+4+QTJRo8mzk0bD9MCW8Xcsc72gfVLFs7zqQPIqgqy3S4tXkts7M1wyKjpcOiwHXPJqWyBDWfq864p/lGsRmQwAPGiHtTrk+yxJ1mEruAm6zq9Zu8nnCsbvx6i5WU2y2yrn+yuJTBnVc9002N39w8T0wGZjhRC3D/oGnRCZoGAXIhMU7EJkgoJdiExQsAuRCVMtOGkwNEglQgvECSOyy3jEs6TGQWHAMtBBDh8+Rm0/eTqdDVUOuESysHAntR05xOW13iyXtWZnudQ3JHLe+miVjmkFGXFuXBJttXnBz2qYznory0AcqrnM1zDuYxXIefU47cfcDO+zVy9xSXQ05nPfCTLpwtqRJOttfczvj5X1tK2O6mFykxDijYSCXYhMULALkQkKdiEyQcEuRCYo2IXIhKlKb7UDw5JoA0GWlxHZoiq5VMMyiTazHTrIe6wdP3Y8uf35c8/SMc2g19uhf8DlH6v4pfFAvjowl5Z/Li/y4pZW8XlsBpJX0eQ+liTt0J1LV5XzwpE1uI9BjUVURHorZvmgqsdtN1a4LDdT8EKV62O+z5VBWkJeXuXHWltL21jxSkBPdiGyQcEuRCYo2IXIBAW7EJmgYBciE6a7Gl9XuLGWTsgw5yvMDfKaFL1SFcEKbavFR/bmeWulf/Jbv5XcPhe0BLpylRbexZkf/JzaZg/wWmdH756jtlY3vWpdVwM6ph3MR7PN/ShaXGlokzZUGPDrXJEafwCAmic9WaCuGGm7tLLOE4Paba6SXB9zVWO94klDwzG3LS+nr81gyK+ZOVMn+FzoyS5EJijYhcgEBbsQmaBgFyITFOxCZIKCXYhM2Er7p0cA/D6AS+7+tsm2TwL4IwCXJ3/2cXf/5mb7cjgqIgFFNcaM2JoN7n43kMM6HS6DjIc8+WDf/nQSx+888M/pmGee+Qm1Xfk/V7kfKzwxaL5zkNqqajm53Sq+v6ijUbfHkzvaJOkGAMYkH4OUIAQArNfppBUAGPEcGViw04JIUauB9NaY5ec1NO7I+kq69RYAoORtxRokDPf3+IVpNdL3dzOoJ7iVJ/tfAngwsf0v3P2+yb9NA10IsbdsGuzu/h0Ai1PwRQixi2znM/tHzewpM3vEzA7smEdCiF3hVoP9cwDuAXAfgAsAPs3+0MxOmtlpMzu9usrrewshdpdbCnZ3v+julbvXAD4P4P7gb0+5+wl3P9Hv8yolQojd5ZaC3cyO3PTrBwCc2Rl3hBC7xVakty8BeDeABTM7D+ATAN5tZvdhI8XmHIA/3srBDECTqCS9NpfDuiSDqhtoRs0WP7Wodt21a1wOu3Tp75Lb3/qWX6Njjh4/TG2/138PtS0u8jXRuaA1lFs6I27x2nk+puZy4ziQ7JzUd9vwI309o/p/UaqiG5fXrMHvnaJIa4CDdX4PjCp+XkUveD7yqcL+Js+mbI7IPsfcx9VVkn0X9H/aNNjd/cOJzV/YbJwQ4vZC36ATIhMU7EJkgoJdiExQsAuRCQp2ITJhqgUni0aBuX5agmgHGWytIm1rFvy1qh3IMb05XlBw335ezHFtmM4ou+PwnXTMP1rgstwzT/KvJxxe4Pv86bM/pbbjb/qV5PZ2k0syF67zwpc1670FYBCkojVIEUvuBYCCy2utNs++KwPJq66JfFUEGXYVP69Wl2fEoeT+d0k7LAAYk1ZOi5d4sdKl5evpfY0C2ZBahBBvKBTsQmSCgl2ITFCwC5EJCnYhMkHBLkQmTFd6Q4FOI114r9fhmVzzs2k57I4DvPDi4SPHqO3AwQVqm+lzyW7hrvS4Z557mvtx9BC13XFoP7V1gyypM2d5EcuKKGW9oJZAY43fBqMgiyrIX8NGqYNfxoIefM0g87EOClWi5J6MxumCKRb0txsHhS/bUcHMG7yI5eVFbhstpouwrgfFTy1qZkjQk12ITFCwC5EJCnYhMkHBLkQmKNiFyISprsZ3Ol386j2/nrTdtcBXre9cSK+Cz8/zhJZmk7fbGQ74amvUnui++04ktz/34s/omJ88x5NW5oPZ7+/niTCtoC3Q+ZdfSm4/cpQnkjQ73JFBHfRdCtbj6zqdnVIEqTBRO69GkPTUaHI/KrKy3mjy+m7jEc+sGa6lV84BYC1YcS+u8H22xunztoJfZ2PnHMgderILkQkKdiEyQcEuRCYo2IXIBAW7EJmgYBciE7bS/uluAH8F4DA2SoidcvfPmtlBAF8GcBwbLaA+5O7Xon31+33c/4//adLWIS2eAMA8LTOY8deq1bV0vTgA+Jsnvktt3hxT276FdDLJ9cFlOubadV5H7K6Z/dS2dOMGtTX2celwbS19CVZLPqYZ1H5rB7eIB/XpaiPSm3NpqOX8ekZPpXGwTyYPeh34XgbJP+vcNtvk8uawwZNaGkjPf4Pc9wDgNb9PGVt5spcA/tTd3wLgnQD+xMzeCuBhAI+7+70AHp/8LoS4Tdk02N39grv/YPLzMoCzAI4CeB+ARyd/9iiA9++Sj0KIHeB1fWY3s+MA3g7gCQB3ufsFYOMFAQD/CpwQYs/ZcrCb2SyArwL4mLvzD5S/PO6kmZ02s9NXrvB2yEKI3WVLwW5mLWwE+hfd/bHJ5otmdmRiPwIguRLl7qfc/YS7n1hYuGMnfBZC3AKbBruZGTb6sZ9198/cZPoGgIcmPz8E4Os7754QYqfYStbbuwD8IYCnzezJybaPA/gUgK+Y2UcAvAjgg5vtyKxAm0psXD5xkslTBFlSa8MVavvfT3yL2q5ev0htnfn0a+N6xT/VzPS5pDhY4krl2miJ2lbrQOEkbZ5evsyztXzIM7LaQU0+CzKsKiK9RcXkmoGtHnH/1wf8Wo+qtERVBueMAT+v9pg/H6MszOUxP7f1G2lZrhW4WFRpPyIRctNgd/fvBvt4YLPxQojbA32DTohMULALkQkKdiEyQcEuRCYo2IXIhKkWnIQBVZApxairtAaxusIlr+dfeDHYH5dBOp10qykAaFpa1lpZukLHLF5dpLZyFNgs3bYIACyoitn2tPyz+jIvHDlc5hmCR988T22t4FLWjXRBR+d1HmGjQH4l9wAAWIvLm/1OWjpslXw+yjXupAWSXafHw6m9cIDaLqynfalq7kejSaQ3FZwUQijYhcgEBbsQmaBgFyITFOxCZIKCXYhMmKr0VtUVlofpfliXL/Gijc+fez65/YVAXltZWqK22V66dxwA9HpcenNLF21crLl0de557mPZ5sUoG20uu3QafWo7NHs4uf3Og7x33LMXeT+6M2d+QW0Hj3E/il5apuy1ef+y+S7PGuv0uATY4LtENUpLmOWQF+DESiB5kb5sAFC3+D5nenyu5ubTtmtXl+gYDtdD9WQXIhMU7EJkgoJdiExQsAuRCQp2ITJhqqvx15aW8Nh/fSxpu/jyy3TcYJiuP1bXvBVPWM9syFvnrK7y5JoBqWvXLnjbn7vvuIfanr/CV30HQfuq3iw/3txC2tY0fqwjxw5S29WgaHhBkjEAgJUabLWDZJFgxbpozVJbDb4K3u2mfWz1+ar11Zd5TTsveSLM2gof1yz4eR84uD+5fTTm9+nKclrVitCTXYhMULALkQkKdiEyQcEuRCYo2IXIBAW7EJmwqfRmZncD+CsAhwHUAE65+2fN7JMA/gjAKxksH3f3b0b7Gqyt4cyTP0zaigZ/3WkUads4kCYGq+mWOgBQkppfANBqBvXpWmk/uq0guePOY9Q2N7uf2havcimyGyRc+Cg9J6vgGlq7z+d+pubnZkF/olab1H6LEmH2cwmwFSTJ3Fjh3YGHg7Rs2+tzPxaO8qSh5ReuU5uHUhmf//0H0w1P9xFJDgCWV9MJPh70f9qKzl4C+FN3/4GZzQH4vpl9e2L7C3f/D1vYhxBij9lKr7cLAC5Mfl42s7MAju62Y0KIneV1fWY3s+MA3g7gicmmj5rZU2b2iJnxWrlCiD1ny8FuZrMAvgrgY+5+A8DnANwD4D5sPPk/TcadNLPTZnZ6fZ1/jhZC7C5bCnYza2Ej0L/o7o8BgLtfdPfK3WsAnwdwf2qsu59y9xPufqLX49/pFkLsLpsGu220mPgCgLPu/pmbth+56c8+AODMzrsnhNgptrIa/y4AfwjgaTN7crLt4wA+bGb3YaPo1TkAf7zZjryuUa6nJYPhiMtJY2KLst66pO0PAPRm+GtciytvKKq0tDIm5wQAy2vcNgqy72a4CdcvL1HbtXZ6YPdO/q6q2+dz1eHqGtbBJczK03PsgTbUaHA/mkG2HBo8g21AfByN+UfKTof72JvtUlt9nd+P43FaAgSAlZV0hmN7ZoaO6c+lMwQbBb+Bt7Ia/10AqbMPNXUhxO2FvkEnRCYo2IXIBAW7EJmgYBciExTsQmTCVAtOlmWJxStX0kbnskWHZErNBBlUnTaXTwrjula5zosGDm+kbes3eHHItWW+v1ag8x08yL99XHe5JHNldSm5fXCda2hd47bOmF+XkpsApPe5VnMp8qXBS9TWOxhcF+cy2nCQvtY25ucc1JREq+JGD6RUGL/W66RQZcUVRfRn09JblD2qJ7sQmaBgFyITFOxCZIKCXYhMULALkQkKdiEyYarSmxnQaKUlsXYRZF6Rl6Si5JlEwyUux4yGvE/W+nUuo41Ify0b8T5qzSDLa+bAfmorSJFNAGj1+FzNerrJWr/Ds96qS1zWwhqfxyaR1wCgbqV1o8r4fFwxLsu17liktm7Q+65DCohaxbPXRkGx0vUbQbbcgGtl3YKfd0368K2OA9m2n5bevOY+6MkuRCYo2IXIBAW7EJmgYBciExTsQmSCgl2ITJiq9FaYYaaRPqSPecHJASnauB70zxoF2Wte8mOhClK5SDpUEWQnBUoIikgmCVKeDNzHPskEtAE/5/J6IK+V3I8yyACri7SN9YDbINjfiEuidZdnm9WkiKUFxUp9GPTSW+EyaxkkvY0LPs4tHRODEZeWByTlsAquiZ7sQmSCgl2ITFCwC5EJCnYhMkHBLkQmbLoab2ZdAN8B0Jn8/X9x90+Y2UEAXwZwHBvtnz7k7teifVXjMZYvXkra1pf5aut4Nb2yXo94+6GgBB1mSHIEABRNPiUjsgpeG1+xjlZHPWh5VQcdb60I6vWRc7txnSsXjWDFvRmoAo2gCB1r12RBYpCNg3lcDVaZm/w+GJXpeQy6fKEVtFCyivtflXzFfRjcj+yRWwZqzWiUTsqKWqJt5ck+BPAv3P03sdGe+UEzeyeAhwE87u73Anh88rsQ4jZl02D3DV55tLYm/xzA+wA8Otn+KID374aDQoidYav92RuTDq6XAHzb3Z8AcJe7XwCAyf+Hds1LIcS22VKwu3vl7vcBOAbgfjN721YPYGYnzey0mZ0ejoKvGAkhdpXXtRrv7ksA/heABwFcNLMjADD5P7ny5u6n3P2Eu5/ohF+VFELsJpsGu5ndaWb7Jz/3ALwHwDMAvgHgocmfPQTg67vkoxBiB9hKIswRAI+aWQMbLw5fcff/Zmb/F8BXzOwjAF4E8MHNdjQejXDh3AtJmwWyRYfU72rUQduiFn8X4UN+rFHQwqdupv2ogvpiZdDWqgoSciw4t3Eg2TV76XpsRcVf18tgPjyQDs2DLB8n+wxkvkawv7rm/lvNb2Ov037UgazlwfUMcnUQTBWGxA8AsEb6eB48i2mtueCSbBrs7v4UgLcntl8F8MBm44UQtwf6Bp0QmaBgFyITFOxCZIKCXYhMULALkQnmkXyy0wczuwzgFe1tAcCVqR2cIz9ejfx4Nf+/+fEP3f3OlGGqwf6qA5uddvcTe3Jw+SE/MvRDb+OFyAQFuxCZsJfBfmoPj30z8uPVyI9X84bxY88+swshpovexguRCXsS7Gb2oJn91MyeM7M9q11nZufM7Gkze9LMTk/xuI+Y2SUzO3PTtoNm9m0z+9nk/wN75McnzezvJnPypJm9dwp+3G1m/9PMzprZj83sX0+2T3VOAj+mOidm1jWz/2dmP5r48eeT7dubD3ef6j9sFPb8WwBvBtAG8CMAb522HxNfzgFY2IPj/jaAdwA4c9O2fw/g4cnPDwP4d3vkxycB/NmU5+MIgHdMfp4D8CyAt057TgI/pjonAAzA7OTnFoAnALxzu/OxF0/2+wE85+4/d/cRgL/GRvHKbHD37wBYfM3mqRfwJH5MHXe/4O4/mPy8DOAsgKOY8pwEfkwV32DHi7zuRbAfBfCLm34/jz2Y0AkO4Ftm9n0zO7lHPrzC7VTA86Nm9tTkbf6uf5y4GTM7jo36CXta1PQ1fgBTnpPdKPK6F8GeKsuxV5LAu9z9HQD+FYA/MbPf3iM/bic+B+AebPQIuADg09M6sJnNAvgqgI+5O+9qMX0/pj4nvo0ir4y9CPbzAO6+6fdjAF7aAz/g7i9N/r8E4GvY+IixV2ypgOdu4+4XJzdaDeDzmNKcmFkLGwH2RXd/bLJ56nOS8mOv5mRy7CW8ziKvjL0I9u8BuNfM3mRmbQB/gI3ilVPFzPpmNvfKzwB+F8CZeNSuclsU8HzlZprwAUxhTszMAHwBwFl3/8xNpqnOCfNj2nOya0Vep7XC+JrVxvdiY6XzbwH8mz3y4c3YUAJ+BODH0/QDwJew8XZwjI13Oh8BcAc22mj9bPL/wT3y4z8BeBrAU5Ob68gU/Phn2Pgo9xSAJyf/3jvtOQn8mOqcAPgNAD+cHO8MgH872b6t+dA36ITIBH2DTohMULALkQkKdiEyQcEuRCYo2IXIBAW7EJmgYBciExTsQmTC3wODcIU476MpswAAAABJRU5ErkJggg==\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"frog\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"cat\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"automobile\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"for i, image in enumerate(data_test['img'][:10]):\\n\",\n    \"    plt.imshow(image)\\n\",\n    \"    plt.show()\\n\",\n    \"    print(data_test.features['label'].names[predicted[i]])\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"environment\": {\n   \"kernel\": \"python3\",\n   \"name\": \"common-cu110.m95\",\n   \"type\": \"gcloud\",\n   \"uri\": \"gcr.io/deeplearning-platform-release/base-cu110:m95\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.13\"\n  },\n  \"vscode\": {\n   \"interpreter\": {\n    \"hash\": \"b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e\"\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}"
}
```

Almost all predictions are correct, despite being very low-resolution images that many people might struggle to classify.

That’s it for this introduction to the long-reigning champions of computer vision; **C**onvolutional **N**eural **N**etworks (CNNs). We’ve worked through the intuition of convolutions, defined the typical network components, and saw how they were used to construct several of the best-performing CNNs.

From there, we applied CNNs in practice. Building and training a network from scratch before testing it on the CIFAR-10 test set.

Going into the following chapters of the ebook, we will learn how CNNs are used in image retrieval and what may be the [successor of these models](https://www.pinecone.io/learn/series/image-search/vision-transformers/).

## Resources

[All Code Notebooks](https://github.com/pinecone-io/examples/tree/master/learn/search/image/image-retrieval-ebook/cnn)

[1] A. Krizhevsky et al., [ImageNet Classification with Deep Convolutional Neural Networks](https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf) (2012), NeurIPS

[2] J. Brownlee, [How Do Convolutional Layers Work in Deep Learning Neural Networks?](https://machinelearningmastery.com/convolutional-layers-for-deep-learning-neural-networks/) (2019), Deep Learning for Computer Vision

[3] J. Brownlee, [A Gentle Introduction to Pooling Layers for Convolutional Neural Networks](https://machinelearningmastery.com/pooling-layers-for-convolutional-neural-networks/) (2019), Deep Learning for Computer Vision.

[4] Y. LeCun, et. at., [Gradient-Based Learning Applied to Document Recognition](http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf) (1998), Proc. of the IEEE.

[5] K. Simonyan et al., [Very Deep Convolutional Networks for Large-Scale Image Recognition](https://arxiv.org/abs/1409.1556) (2014), CVPT

[6] K. He et al., [Deep Residual Learning for Image Recognition](https://arxiv.org/abs/1512.03385) (2015), CVPR.