{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"executionInfo": {
"elapsed": 2450,
"status": "ok",
"timestamp": 1615991459232,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "TGIxH9Tmt5zp"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import tensorflow.keras.optimizers as tf_optim\n",
"tf.get_logger().setLevel('ERROR')\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib as mpl\n",
"import seaborn as sns\n",
"import random\n",
"import pickle\n",
"import json\n",
"import math\n",
"import datetime\n",
"import os\n",
"\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"fig_dpi = 70"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fksHv5rXACEX"
},
"source": [
"# Neural Network Training\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "l4zqVWyRAM0Z"
},
"source": [
"## Load Dataset\n",
"\n",
"Read CSVs dumped from MatLab and parse into Pandas DataFrames"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 331
},
"executionInfo": {
"elapsed": 2441,
"status": "ok",
"timestamp": 1615991459234,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "Hj5l_tdZuYh7",
"outputId": "fbfa9406-f662-4ebc-8ba2-67950714627c"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Clump thickness | \n",
" Uniformity of cell size | \n",
" Uniformity of cell shape | \n",
" Marginal adhesion | \n",
" Single epithelial cell size | \n",
" Bare nuclei | \n",
" Bland chomatin | \n",
" Normal nucleoli | \n",
" Mitoses | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 699.000000 | \n",
" 699.000000 | \n",
" 699.000000 | \n",
" 699.000000 | \n",
" 699.000000 | \n",
" 699.000000 | \n",
" 699.000000 | \n",
" 699.000000 | \n",
" 699.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 0.441774 | \n",
" 0.313448 | \n",
" 0.320744 | \n",
" 0.280687 | \n",
" 0.321602 | \n",
" 0.354363 | \n",
" 0.343777 | \n",
" 0.286695 | \n",
" 0.158941 | \n",
"
\n",
" \n",
" std | \n",
" 0.281574 | \n",
" 0.305146 | \n",
" 0.297191 | \n",
" 0.285538 | \n",
" 0.221430 | \n",
" 0.360186 | \n",
" 0.243836 | \n",
" 0.305363 | \n",
" 0.171508 | \n",
"
\n",
" \n",
" min | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
"
\n",
" \n",
" 25% | \n",
" 0.200000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.200000 | \n",
" 0.100000 | \n",
" 0.200000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
"
\n",
" \n",
" 50% | \n",
" 0.400000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
" 0.200000 | \n",
" 0.100000 | \n",
" 0.300000 | \n",
" 0.100000 | \n",
" 0.100000 | \n",
"
\n",
" \n",
" 75% | \n",
" 0.600000 | \n",
" 0.500000 | \n",
" 0.500000 | \n",
" 0.400000 | \n",
" 0.400000 | \n",
" 0.500000 | \n",
" 0.500000 | \n",
" 0.400000 | \n",
" 0.100000 | \n",
"
\n",
" \n",
" max | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Clump thickness Uniformity of cell size Uniformity of cell shape \\\n",
"count 699.000000 699.000000 699.000000 \n",
"mean 0.441774 0.313448 0.320744 \n",
"std 0.281574 0.305146 0.297191 \n",
"min 0.100000 0.100000 0.100000 \n",
"25% 0.200000 0.100000 0.100000 \n",
"50% 0.400000 0.100000 0.100000 \n",
"75% 0.600000 0.500000 0.500000 \n",
"max 1.000000 1.000000 1.000000 \n",
"\n",
" Marginal adhesion Single epithelial cell size Bare nuclei \\\n",
"count 699.000000 699.000000 699.000000 \n",
"mean 0.280687 0.321602 0.354363 \n",
"std 0.285538 0.221430 0.360186 \n",
"min 0.100000 0.100000 0.100000 \n",
"25% 0.100000 0.200000 0.100000 \n",
"50% 0.100000 0.200000 0.100000 \n",
"75% 0.400000 0.400000 0.500000 \n",
"max 1.000000 1.000000 1.000000 \n",
"\n",
" Bland chomatin Normal nucleoli Mitoses \n",
"count 699.000000 699.000000 699.000000 \n",
"mean 0.343777 0.286695 0.158941 \n",
"std 0.243836 0.305363 0.171508 \n",
"min 0.100000 0.100000 0.100000 \n",
"25% 0.200000 0.100000 0.100000 \n",
"50% 0.300000 0.100000 0.100000 \n",
"75% 0.500000 0.400000 0.100000 \n",
"max 1.000000 1.000000 1.000000 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = pd.read_csv('features.csv', header=None).T\n",
"data.columns = ['Clump thickness', 'Uniformity of cell size', 'Uniformity of cell shape', 'Marginal adhesion', 'Single epithelial cell size', 'Bare nuclei', 'Bland chomatin', 'Normal nucleoli', 'Mitoses']\n",
"labels = pd.read_csv('targets.csv', header=None).T\n",
"labels.columns = ['Benign', 'Malignant']\n",
"data.describe()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"executionInfo": {
"elapsed": 2436,
"status": "ok",
"timestamp": 1615991459236,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "qc1Mku6h041u",
"outputId": "94e38c34-0419-4a02-ac8c-17bbc83f777b"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Benign | \n",
" Malignant | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 3 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" 4 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Benign Malignant\n",
"0 1 0\n",
"1 1 0\n",
"2 1 0\n",
"3 0 1\n",
"4 1 0"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"labels.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "h9QsJjWEMbLu"
},
"source": [
"### Explore Dataset\n",
"\n",
"The classes are uneven in their occurences, stratify when splitting later on"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 2430,
"status": "ok",
"timestamp": 1615991459237,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "rjjiSYAZMa4k",
"outputId": "ae0c3772-00be-4f2b-80d2-9cd62a6b6e08"
},
"outputs": [
{
"data": {
"text/plain": [
"Benign 458\n",
"Malignant 241\n",
"dtype: int64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"labels.astype(bool).sum(axis=0)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "E9lVYI14AUMf"
},
"source": [
"## Split Dataset\n",
"\n",
"Using a 50/50 split"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"executionInfo": {
"elapsed": 2604,
"status": "ok",
"timestamp": 1615991459418,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "L83Ae5l9wM35"
},
"outputs": [],
"source": [
"data_train, data_test, labels_train, labels_test = train_test_split(data, labels, test_size=0.5\n",
"# , stratify=labels\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Qf2U199fNjmJ"
},
"source": [
"## Generate & Retrieve Model\n",
"\n",
"Get a shallow model with a single hidden layer of varying nodes"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"executionInfo": {
"elapsed": 2598,
"status": "ok",
"timestamp": 1615991459419,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "SgoQ-NjWB0T5"
},
"outputs": [],
"source": [
"def get_model(hidden_nodes=9, activation=lambda: 'sigmoid', weight_init=lambda: 'glorot_uniform'):\n",
" layers = [tf.keras.layers.InputLayer(input_shape=(9,), name='Input'), \n",
" tf.keras.layers.Dense(hidden_nodes, activation=activation(), kernel_initializer=weight_init(), name='Hidden'), \n",
" tf.keras.layers.Dense(2, activation='softmax', kernel_initializer=weight_init(), name='Output')]\n",
"\n",
" model = tf.keras.models.Sequential(layers)\n",
" return model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Get a Keras Tensorboard callback for dumping data for later analysis"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def tensorboard_callback(path='tensorboard-logs', prefix=''):\n",
" return tf.keras.callbacks.TensorBoard(\n",
" log_dir=os.path.normpath(os.path.join(path, prefix + datetime.datetime.now().strftime(\"%Y%m%d-%H%M%S\"))), histogram_freq=1\n",
" ) "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QT5B9PTUN3pj"
},
"source": [
"# Example Training"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "mQGAUtIPAd6e"
},
"source": [
"## Define Model\n",
"\n",
"Variable number of hidden nodes. All using 9D outputs except the last layer which is 2D for binary classification"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 7889,
"status": "ok",
"timestamp": 1615991464716,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "fYA34P0Vu_pX",
"outputId": "aded18b8-aa7f-4362-a614-837c8a0f526f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"dense_2 (Dense) (None, 9) 90 \n",
"_________________________________________________________________\n",
"dense_3 (Dense) (None, 2) 20 \n",
"=================================================================\n",
"Total params: 110\n",
"Trainable params: 110\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"model = get_model(9)\n",
"model.compile('sgd', loss='categorical_crossentropy', metrics=['accuracy'])\n",
"model.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KZSwFe-AAs1y"
},
"source": [
"## Train Model\n",
"\n",
"Example 10 epochs"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 11304,
"status": "ok",
"timestamp": 1615991468137,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "s8U9Atu3zelS",
"outputId": "8439e8d2-7a5d-495f-a192-a34f01e95bfa"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"11/11 [==============================] - 1s 2ms/step - loss: 0.6257 - accuracy: 0.6607\n",
"Epoch 2/5\n",
"11/11 [==============================] - 0s 3ms/step - loss: 0.6226 - accuracy: 0.6651\n",
"Epoch 3/5\n",
"11/11 [==============================] - 0s 2ms/step - loss: 0.6326 - accuracy: 0.6424\n",
"Epoch 4/5\n",
"11/11 [==============================] - 0s 3ms/step - loss: 0.6158 - accuracy: 0.6696\n",
"Epoch 5/5\n",
"11/11 [==============================] - 0s 2ms/step - loss: 0.6228 - accuracy: 0.6534\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(data_train.to_numpy(), labels_train.to_numpy(), epochs=5)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 11294,
"status": "ok",
"timestamp": 1615991468137,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "VnUEJdXovzi-",
"outputId": "02075086-352c-4a23-fac5-ad54d11e0e35"
},
"outputs": [
{
"data": {
"text/plain": [
"['loss', 'accuracy']"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.metrics_names"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 11285,
"status": "ok",
"timestamp": 1615991468138,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "r0vxP3Ah42ib",
"outputId": "061113ba-52db-4fbe-c7f9-b5d3d85438ed"
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.metrics[1].result()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "z7bn8pKTAynt",
"tags": [
"exp1"
]
},
"source": [
"# Experiment 1\n",
"\n",
"The below function runs an iteration of layer/epoch investigations.\n",
"Returns the amount of layers/epochs used as well as the results and the model.\n",
"\n",
"Using cancer dataset (as in E2) and 'trainscg' or an optimiser of your choice, vary nodes and epochs (that is using early stopping for epochs) over suitable range, to find optimal choice in terms of classification test error rate of node/epochs for 50/50% random train/test split (no validation set). It is suggested that you initially try epochs = [ 1 2 4 8 16 32 64], nodes = [2 8 32], so there would be 21 node/epoch combinations. \n",
"\n",
"(Hint1: from the 'advanced script' in E2, nodes can be changed to xx, with hiddenLayerSize = xx; and epochs changed to xx by addingnet. trainParam.epochs = xx; placed afternet = patternnet(hiddenLayerSize, trainFcn); --see 'trainscg' help documentation for changing epochs). \n",
"\n",
"Repeat each of the 21 node/epoch combinations at least thirty times, with different 50/50 split and take average and report classification error rate and standard deviation (std). Graph classification train and test error rate and std as node-epoch changes, that is plot error rate vs epochs for different number of nodes. Report the optimal value for test error rate and associated node/epoch values. \n",
"\n",
"(Hint2: as epochs increases you can expect the test error rate to reach a minimum and then start increasing, you may need to set the stopping criteria to achieve the desired number of epochs - Hint 3: to find classification error rates for train and test set, you need to check the code from E2, to determine how you may obtain the train and test set patterns)\n"
]
},
{
"cell_type": "code",
"execution_count": 194,
"metadata": {
"executionInfo": {
"elapsed": 11274,
"status": "ok",
"timestamp": 1615991468138,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "mYWhCSW4A57V",
"tags": [
"exp1",
"exp-func"
]
},
"outputs": [],
"source": [
"# hidden_nodes = [2, 8, 16, 24, 32]\n",
"# epochs = [1, 2, 4, 8, 16, 32, 64, 100, 150, 200]\n",
"hidden_nodes = [2, 8, 16]\n",
"epochs = [1, 2, 4, 8]\n",
"\n",
"def evaluate_parameters(hidden_nodes=hidden_nodes, \n",
" epochs=epochs, \n",
" batch_size=128,\n",
" optimizer=lambda: 'sgd',\n",
" weight_init=lambda: 'glorot_uniform',\n",
" loss=lambda: 'categorical_crossentropy',\n",
" metrics=['accuracy'],\n",
" callbacks=None,\n",
" validation_split=None,\n",
"\n",
" verbose=0,\n",
" print_params=True,\n",
" return_model=True,\n",
" run_eagerly=False,\n",
" tboard=True,\n",
" \n",
" dtrain=data_train,\n",
" dtest=data_test,\n",
" ltrain=labels_train,\n",
" ltest=labels_test):\n",
" for idx1, hn in enumerate(hidden_nodes):\n",
" for idx2, e in enumerate(epochs):\n",
" if print_params:\n",
" print(f\"Nodes: {hn}, Epochs: {e}\")\n",
"\n",
" model = get_model(hn, weight_init=weight_init)\n",
" model.compile(\n",
" optimizer=optimizer(),\n",
" loss=loss(),\n",
" metrics=metrics,\n",
" run_eagerly=run_eagerly\n",
" )\n",
" \n",
" if tboard:\n",
" if callbacks is not None:\n",
" cb = [i() for i in callbacks] + [tensorboard_callback(prefix=f'exp1-{hn}-{e}-')]\n",
" else:\n",
" cb = [tensorboard_callback(prefix=f'exp1-{hn}-{e}-')]\n",
" \n",
" response = {\"nodes\": hn, \n",
" \"epochs\": e,\n",
" ##############\n",
" ## TRAIN\n",
" ##############\n",
" \"history\": model.fit(dtrain.to_numpy(), \n",
" ltrain.to_numpy(), \n",
" epochs=e, \n",
" verbose=verbose,\n",
" \n",
" callbacks=cb,\n",
" validation_split=validation_split).history,\n",
" ##############\n",
" ## TEST\n",
" ##############\n",
" \"results\": model.evaluate(dtest.to_numpy(), \n",
" ltest.to_numpy(),\n",
" callbacks=cb,\n",
" batch_size=batch_size, \n",
" verbose=verbose),\n",
" \"optimizer\": model.optimizer.get_config(),\n",
" \"loss\": model.loss,\n",
" \"model_config\": json.loads(model.to_json())\n",
" }\n",
"\n",
" if return_model:\n",
" response[\"model\"] = model\n",
"\n",
" yield response"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "r-63V9qb-i4w",
"tags": [
"exp1"
]
},
"source": [
"## Single Iteration\n",
"Run a single iteration of epoch/layer investigations"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 313592,
"status": "ok",
"timestamp": 1615991770468,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "ZmGFkE9y8E4H",
"outputId": "243fb136-bc07-4438-afb7-f2d21758168d",
"tags": [
"exp1"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nodes: 2, Epochs: 1\n",
"Nodes: 2, Epochs: 2\n",
"Nodes: 2, Epochs: 4\n",
"Nodes: 2, Epochs: 8\n",
"Nodes: 8, Epochs: 1\n",
"Nodes: 8, Epochs: 2\n",
"Nodes: 8, Epochs: 4\n",
"Nodes: 8, Epochs: 8\n",
"Nodes: 16, Epochs: 1\n",
"Nodes: 16, Epochs: 2\n",
"Nodes: 16, Epochs: 4\n",
"Nodes: 16, Epochs: 8\n"
]
}
],
"source": [
"# es = tf.keras.callbacks.EarlyStopping(monitor='val_loss', mode='min', patience = 5)\n",
"single_results = list(evaluate_parameters(return_model=False, validation_split=0.2\n",
" , optimizer = lambda: tf.keras.optimizers.SGD(learning_rate=0.5, momentum=0.5)\n",
"# , callbacks=[es]\n",
" ))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "mdWK3-M6SK8_",
"tags": [
"exp1"
]
},
"source": [
"### Train/Test Curves\n",
"\n",
"For a single test from the set"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 517
},
"executionInfo": {
"elapsed": 314527,
"status": "ok",
"timestamp": 1615991771417,
"user": {
"displayName": "Andy Pack",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjA4K4ZhdArHXAFbAGr4n0aCv2HmyUpx4cy6zcUq34=s64",
"userId": "16615063155528027547"
},
"user_tz": 0
},
"id": "F9Xre1o6SesD",
"outputId": "d6b817aa-58cd-4510-807f-e5e6bcf62f18",
"tags": [
"exp1"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nodes: 2, Epochs: 4\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"