578hw3_Check1_CoLab.ipynb (Spring 2024)¶

NOTE: This is a version for Google CoLab.¶

Run all cells in this file with the original "NN578_network.ipynb" to ensure the code runs on your platform.¶

In [1]:
## nt: Code piece to mount my Google Drive
from google.colab import drive
drive.mount("/content/drive") # my Google Drive root directory will be mapped here
Mounted at /content/drive
In [2]:
# nt: Change the working directory to the work directory (where the code file is).
import os
thisdir = '/content/drive/My Drive/CSC578_Fall2024/HW#3'
os.chdir(thisdir)

# Ensure the files are there (in the folder)
!pwd
/content/drive/My Drive/CSC578_Fall2023/HW#3
In [3]:
# First install this library so that we can import code from other Notebooks
!pip install import-ipynb
import import_ipynb
Collecting import-ipynb
  Downloading import_ipynb-0.1.4-py3-none-any.whl (4.1 kB)
Requirement already satisfied: IPython in /usr/local/lib/python3.10/dist-packages (from import-ipynb) (7.34.0)
Requirement already satisfied: nbformat in /usr/local/lib/python3.10/dist-packages (from import-ipynb) (5.10.4)
Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.10/dist-packages (from IPython->import-ipynb) (67.7.2)
Collecting jedi>=0.16 (from IPython->import-ipynb)
  Downloading jedi-0.19.1-py2.py3-none-any.whl (1.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 13.9 MB/s eta 0:00:00
Requirement already satisfied: decorator in /usr/local/lib/python3.10/dist-packages (from IPython->import-ipynb) (4.4.2)
Requirement already satisfied: pickleshare in /usr/local/lib/python3.10/dist-packages (from IPython->import-ipynb) (0.7.5)
Requirement already satisfied: traitlets>=4.2 in /usr/local/lib/python3.10/dist-packages (from IPython->import-ipynb) (5.7.1)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from IPython->import-ipynb) (3.0.43)
Requirement already satisfied: pygments in /usr/local/lib/python3.10/dist-packages (from IPython->import-ipynb) (2.16.1)
Requirement already satisfied: backcall in /usr/local/lib/python3.10/dist-packages (from IPython->import-ipynb) (0.2.0)
Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.10/dist-packages (from IPython->import-ipynb) (0.1.7)
Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.10/dist-packages (from IPython->import-ipynb) (4.9.0)
Requirement already satisfied: fastjsonschema>=2.15 in /usr/local/lib/python3.10/dist-packages (from nbformat->import-ipynb) (2.19.1)
Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python3.10/dist-packages (from nbformat->import-ipynb) (4.19.2)
Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in /usr/local/lib/python3.10/dist-packages (from nbformat->import-ipynb) (5.7.2)
Requirement already satisfied: parso<0.9.0,>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from jedi>=0.16->IPython->import-ipynb) (0.8.4)
Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->import-ipynb) (23.2.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->import-ipynb) (2023.12.1)
Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->import-ipynb) (0.34.0)
Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->import-ipynb) (0.18.0)
Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.10/dist-packages (from jupyter-core!=5.0.*,>=4.12->nbformat->import-ipynb) (4.2.0)
Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.10/dist-packages (from pexpect>4.3->IPython->import-ipynb) (0.7.0)
Requirement already satisfied: wcwidth in /usr/local/lib/python3.10/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->IPython->import-ipynb) (0.2.13)
Installing collected packages: jedi, import-ipynb
Successfully installed import-ipynb-0.1.4 jedi-0.19.1
In [4]:
# import the class Network from "NN578_network_2023fall.ipynb"
#from ipynb.fs.defs.NN578_network_2023fall import Network as network
import NN578_network as network_nb
import numpy as np

# Load the data (using the custom function defined in the class Notebook).
iris_data = network_nb.my_load_csv('iris-3.csv', 4, 3)
iris_train = iris_data[:105]
iris_test = iris_data[105:]
importing Jupyter notebook from NN578_network.ipynb
In [5]:
# Create a network from the saved network
net1 = network_nb.Network.load_network("iris-423.dat")

# Train the network for 3 epochs, with minibatch size 8, eta=2.0 and no testset.
net1.SGD(iris_data, 3, 8, 2.5)
print ('\n****************************************************')
print ('!! CHECK THIS: Initial activations shape -> {}'.format(net1.init_acts_shape))
print ('****************************************************')
Epoch 0: train acc 0.3333
Epoch 1: train acc 0.6667
Epoch 2: train acc 0.6667

****************************************************
!! CHECK THIS: Initial activations shape -> [(4, 1)]
****************************************************
In [6]:
# Re-load the saved network and run it again.  This time using the test set.
net2 = network_nb.Network.load_network("iris-423.dat")
net2.SGD(iris_train, 3, 8, 2.5, iris_test)
Epoch 0: train acc 0.3429, valid acc 0.3111
Epoch 1: train acc 0.3429, valid acc 0.3111
Epoch 2: train acc 0.6762, valid acc 0.6444
In [ ]: