{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Rotation CIFAR Experiment\n", "\n", "This experiment will use images from the **CIFAR-100** database (https://www.cs.toronto.edu/~kriz/cifar.html) and showcase the backward transfer efficiency of algorithms in the **ProgLearn** project (https://github.com/neurodata/ProgLearn) as the images are rotated." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Import necessary packages\n", "import numpy as np\n", "from tensorflow import keras\n", "from multiprocessing import Pool\n", "from functools import partial" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Create array to store errors\n", "errors_array = []" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Loads and reshapes data sets\n", "(X_train, y_train), (X_test, y_test) = keras.datasets.cifar100.load_data()\n", "\n", "# Joins the training and testing arrays into one\n", "data_x = np.concatenate([X_train, X_test])\n", "data_y = np.concatenate([y_train, y_test])\n", "data_y = data_y[:, 0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Hyperparameters\n", "\n", "Hyperparameters determine how the model will run. \n", "\n", "`granularity` refers to the amount by which the angle will be increased each time. Setting this value at 1 will cause the algorithm to test every whole number rotation angle between 0 and 180 degrees.\n", "\n", "`reps` refers to the number of repetitions tested for each angle of rotation. For each repetition, the data is randomly resampled.\n", "\n", "`max_depth` refers to the maximum depth of each tree in the synergistic forest. If this value is not specified, it defaults to a max tree depth of 30." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "### MAIN HYPERPARAMS ###\n", "granularity = 4\n", "reps = 10 # use 100 reps for the main draft plot\n", "max_depth = 30\n", "########################" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Algorithms\n", "\n", "The progressive-learning repo contains two main algorithms, **Synergistic Forest** (**SynF**) and **Synergistic Network** (**SynN**), within `forest.py` and `network.py`, respectively. The main difference is that SynF uses random forests while SynN uses deep neural networks. Both algorithms, unlike LwF, EWC, Online_EWC, and SI, have been shown to achieve both forward and backward knowledge transfer. \n", "\n", "For the purposes of this experiment, the SynF algorithm will be used." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Experiment\n", "\n", "If the chosen algorithm is trained on both straight up-and-down CIFAR images and rotated CIFAR images, rather than just straight up-and-down CIFAR images, will it perform better (achieve a higher backward transfer efficiency) when tested on straight up-and-down CIFAR images? How does the angle at which training images are rotated affect these results?\n", "\n", "At a rotation angle of 0 degrees, the rotated images simply provide additional straight up-and-down CIFAR training data, so the backward transfer efficiency at this angle show whether or not the chosen algorithm can even achieve backward knowledge transfer. As the angle of rotation increases, the rotated images become less and less similar to the original dataset, so the backward transfer efficiency should logically decrease, while still being above 1." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# SynF\n", "from functions.rotation_cifar_functions import synf_experiment\n", "\n", "# Generate set of angles to test for BTE\n", "angles = np.arange(0, 181, granularity)\n", "\n", "# Parallel processing\n", "with Pool(48) as p:\n", " # Multiple sets of errors for each set of angles are appended to a larger array containing errors for all angles\n", " # Calling LF_experiment will run the experiment at a new angle of rotation\n", " errors_array.append(\n", " p.map(\n", " partial(\n", " synf_experiment,\n", " data_x=data_x,\n", " data_y=data_y,\n", " reps=reps,\n", " ntrees=10,\n", " acorn=1,\n", " ),\n", " angles,\n", " )\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Rotation CIFAR Plot\n", "\n", "This section takes the results of the experiment and plots the backward transfer efficiency against the angle of rotation for the images in **CIFAR-100**.\n", "\n", "## Expected Results\n", "\n", "If done correctly, the plot should show that Backward Transfer Efficiency (BTE) is greater than 1 regardless of rotation, but the BTE should decrease as the angle of rotation is increased. The more the number of reps and the finer the granularity, the smoother this downward sloping curve should look." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Calculate BTE for each angle of rotation\n", "bte = []\n", "for angle in angles:\n", " orig_error, transfer_error = errors_array[0][\n", " int(angle / granularity)\n", " ] # (angle/granularity) gives the index of the errors for that angle\n", " bte.append(\n", " orig_error / transfer_error\n", " ) # (original error/transfer error) gives the BTE" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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7O6vmNl44MuE4GYTYJV4+H3gCcIEgNe6+5JaZVRERESkUm1aTTwGLlfFm4iIiEiHomHiIiIikjsKcERERCR3SjZRmdk3avUg7n5lra4lIiIi0ppyfXAmE+axqQUFOCIiIlI35QKc+6ldgCMiIiJSNyUDHHffvo75EBEREakZdTIWERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBEREckdBTgiIiKSOwpwREREJHcU4IiIiEjuKMARERGR3FGAIyIiIrmjAEdERERyRwGOiIiI5I4CHBER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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot angle of rotation vs. BTE\n", "from functions.rotation_cifar_functions import plot_bte\n", "\n", "plot_bte(bte, angles)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## FAQs\n", "\n", "### Why am I getting an \"out of memory\" error?\n", "`Pool(8)` in the previous cell allows for parallel processing, so the number within the parenthesis should be, at max, the number of cores in the device on which this notebook is being run. Even if a warning is produced, the results of the experimented should not be affected.\n", "\n", "### Why is this taking so long to run? How can I speed it up to see if I am getting the expected outputs?\n", "Decreasing the value of `reps`, decreasing the value of `max_depth`, or increasing the value of `granularity` will all decrease runtime at the cost of noisier results." ] } ], "metadata": { "interpreter": { "hash": "77d3befdf72f5c1a0d6b4996fdd6befdfb972b784410fca14e27e6ae1841315c" }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }