From 0fb1f69b1f6f0813120e6fd0d2a8086c1bb70f78 Mon Sep 17 00:00:00 2001 From: Murtadha Date: Fri, 27 Sep 2024 11:02:06 -0400 Subject: [PATCH] Add debugging print statements --- bel_NN_dynamic.ipynb | 69 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 13 deletions(-) diff --git a/bel_NN_dynamic.ipynb b/bel_NN_dynamic.ipynb index ba9358c..f17e505 100644 --- a/bel_NN_dynamic.ipynb +++ b/bel_NN_dynamic.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -61,6 +61,25 @@ "X_train, X_val = X_train.T, X_val.T" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Data shapes:\")\n", + "print(f\"X_train shape: {X_train.shape}\")\n", + "print(f\"Y_train shape: {Y_train.shape}\")\n", + "print(f\"X_test shape: {X_test.shape}\")\n", + "print(f\"Y_test shape: {Y_test.shape}\")\n", + "\n", + "print(\"\\nData statistics:\")\n", + "print(f\"X_train mean: {xp.mean(X_train)}, std: {xp.std(X_train)}\")\n", + "print(f\"X_test mean: {xp.mean(X_test)}, std: {xp.std(X_test)}\")\n", + "print(f\"Unique Y_train values: {xp.unique(Y_train)}\")\n", + "print(f\"Unique Y_test values: {xp.unique(Y_test)}\")" + ] + }, { "cell_type": "code", "execution_count": null, @@ -77,7 +96,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -88,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ @@ -105,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -113,8 +132,8 @@ " return xp.maximum(Z, 0)\n", "\n", "def softmax(Z):\n", - " A = xp.exp(Z) / sum(xp.exp(Z))\n", - " return A\n", + " exp_Z = xp.exp(Z - xp.max(Z, axis=0, keepdims=True))\n", + " return exp_Z / xp.sum(exp_Z, axis=0, keepdims=True)\n", "\n", "def forward_prop(X, params):\n", " caches = []\n", @@ -190,7 +209,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -213,6 +232,10 @@ " val_accuracy = get_accuracy(val_predictions, Y_val)\n", " \n", " print(f\"Iteration {i}: Train Accuracy: {train_accuracy:.4f}, Validation Accuracy: {val_accuracy:.4f}\")\n", + " print(f\"Sample predictions: {train_predictions[:10]}\")\n", + " print(f\"Sample true labels: {Y_train[:10]}\")\n", + " \n", + " print(f\"Iteration {i}: Train Accuracy: {train_accuracy:.4f}, Validation Accuracy: {val_accuracy:.4f}\")\n", " acc_store.append((train_accuracy, val_accuracy))\n", " \n", " if val_accuracy > best_val_accuracy:\n", @@ -229,7 +252,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -248,7 +271,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -284,15 +307,24 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ - "hidden_layers = [1, 2, 3, 4]\n", - "neurons_per_layer = [64, 128, 256]\n", + "hidden_layers = [1, 2]\n", + "neurons_per_layer = [64, 128, 256, 512]\n", "layer_configs = list(product(*[neurons_per_layer] * max(hidden_layers)))" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(layer_configs)" + ] + }, { "cell_type": "code", "execution_count": null, @@ -315,6 +347,17 @@ "print(f\"Best validation accuracy: {best_accuracy:.4f}\")" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\nModel Architecture:\")\n", + "for i in range(1, len(best_params)//2 + 1):\n", + " print(f\"Layer {i}: {best_params[f'W{i}'].shape}\")" + ] + }, { "cell_type": "code", "execution_count": null,