Try Multiple Pretrained Networks for Transfer Learning

This example shows how to configure an experiment that replaces layers of different pretrained networks for transfer learning. To compare the performance of different pretrained networks for your task, edit this experiment and specify which pretrained networks to use. Before running the experiment, use functions such as googlenet to get links to download pretrained networks from the Add-On Explorer.

Transfer learning is commonly used in deep learning applications. You can take a pretrained network and use it as a starting point to learn a new task. Fine-tuning a network with transfer learning is usually much faster and easier than training a network with randomly initialized weights from scratch. You can quickly transfer learned features to a new task using a smaller number of training images.

There are many pretrained networks available in Deep Learning Toolbox™. These pretrained networks have different characteristics that matter when choosing a network to apply to your problem. The most important characteristics are network accuracy, speed, and size. Choosing a network is generally a tradeoff between these characteristics. For more information, see Pretrained Deep Neural Networks.

Open Experiment

First, open the example. Experiment Manager loads a project with a preconfigured experiment that you can inspect and run. To open the experiment, in the Experiment Browser, double-click the name of the experiment (TransferLearningExperiment).

An experiment definition consists of a description, a hyperparameter table, a setup function, and (optionally) a collection of metric functions to evaluate the results of the experiment. For more information, see Configure Deep Learning Experiment.

The Description box contains a textual description of the experiment. For this example, the description is:

Perform transfer learning by replacing layers in a pretrained network.

The Hyperparameter Table contains the names and values of the hyperparameters used in the experiment. When you run the experiment, Experiment Manager sweeps through the hyperparameter values and trains the network multiple times. Each trial uses a different combination of the hyperparameter values specified in the table. In this example, the hyperparameter NetworkName specifies the network to train and the value of the training option 'miniBatchSize'.

The Setup Function configures the training data, network architecture, and training options for the experiment. To inspect the setup function, under Setup Function, click Edit. The setup function opens in MATLAB Editor. In this example, the setup function:

  • Downloads and extracts the Flowers data set, which is about 218 MB. For more information on this data set, see Image Data Sets.

  • Loads a pretrained network corresponding to the hyperparameter NetworkName. The auxiliary function findLayersToReplace determines the layers in the network architecture to replace for transfer learning. For more information on the available pretrained networks, see Pretrained Deep Neural Networks.

  • Defines a trainingOptions object for the experiment. The example trains the network for 10 epochs, using an initial learning rate of 0.0003 and validating the network every 5 epochs.

The Metrics section specifies optional functions that evaluate the results of the experiment. This example does not include any metric functions.

Run Experiment

In the Experiment Manager tab, click Run. Experiment Manager trains the network defined by the setup function multiple times. Each trial uses a different combination of hyperparameters. A table of results displays the accuracy and loss for each trial.

While the experiment is running, click Training Plot to display the training plot and track the progress of each trial.

Click Confusion Matrix to display the confusion matrix for the validation data in each completed trial.

When the experiment finishes, you can sort the results table by column or filter trials by using the Filters pane. For more information, see Sort and Filter Experiment Results.

To test the performance of an individual trial, export the trained network or the training information for the trial. On the Experiment Manager tab, select Export > Trained Network or Export > Training Information, respectively. For more information, see Output Arguments.

Close Experiment

In the Experiment Browser, right-click the name of the project and select Close Project. Experiment Manager saves your results and closes all of the experiments contained in the project.

See Also

| | |

Related Topics