{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "scratch_model_weight_changes_affect_accuracy.ipynb", "provenance": [], "authorship_tag": "ABX9TyPdI1D7PI0pSgwlrQULZj1P", "include_colab_link": true }, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "code", "metadata": { "id": "HomHZrXgZHtm", "colab_type": "code", "colab": {} }, "source": [ "import numpy as np\n", "\n", "# আমাদের প্রেডিকশন করার জন্য ডেটা পয়েন্ট, ছবির সাথে মিলিয়ে দেখুন\n", "input_data = np.array([2, 3])\n", "\n", "# আমাদের ডিকশনারী\n", "weights = {'node_0': np.array([1, 1]),\n", " 'node_1': np.array([-1, 1]),\n", " 'output': np.array([2, -1])\n", " }" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "v1b80TK6ZSWL", "colab_type": "code", "outputId": "7ac3581a-e48e-41f4-a39c-856b6603f0b0", "colab": { "base_uri": "https://localhost:8080/", "height": 52 } }, "source": [ "# node 0 এর ভ্যালু ক্যালকুলেট করি: node_0_value\n", "node_0_value = (input_data * weights['node_0']).sum()\n", "\n", "# node ১ এর ভ্যালু ক্যালকুলেট করি: node_1_value\n", "node_1_value = (input_data * weights['node_1']).sum()\n", "\n", "# নোডগুলোর ভ্য়ালুগুলোকে অ্যারেতে রাখি: hidden_layer_outputs\n", "hidden_layer_outputs = np.array([node_0_value, node_1_value])\n", "\n", "# আউটপুট ক্যালকুলেট করি: output\n", "output = (hidden_layer_outputs * weights['output']).sum()\n", "\n", "# আউটপুট প্রিন্ট করে দেখি\n", "print(hidden_layer_outputs)\n", "print(output)" ], "execution_count": 5, "outputs": [ { "output_type": "stream", "text": [ "[5 1]\n", "9\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "kNrRxANoZiet", "colab_type": "code", "outputId": "5af736d6-45ae-43d8-f7eb-f369a55213ca", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "# নতুন ওয়েট এবং ইনপুট ডেটা \n", "weights = np.array([1, 2])\n", "input_data = np.array([3, 4]) \n", "\n", "# প্রেডিকশন ক্যাল্কুলেট করি: preds\n", "preds = (weights * input_data).sum()\n", "\n", "# ধরি আমাদের টার্গেট ৬\n", "target = 6\n", "\n", "# এরর ক্যালকুলেট করি: error\n", "error = preds - target\n", "\n", "# স্লোপ ক্যালকুলেট করি: slope\n", "slope = 2 * input_data * error\n", "\n", "# স্লোপ প্রিন্ট করি \n", "print(slope)\n" ], "execution_count": 6, "outputs": [ { "output_type": "stream", "text": [ "[30 40]\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "B_U_OVOkaJXp", "colab_type": "code", "outputId": "038ce0a4-e45f-4e6e-ab0d-a5bb886c9bd8", "colab": { "base_uri": "https://localhost:8080/", "height": 52 } }, "source": [ "# লার্নিং রেট ঠিক করি: learning_rate\n", "learning_rate = 0.01\n", "\n", "# স্লোপ/গ্রেডিয়েন্ট ক্যালকুলেট করি: gradient\n", "gradient = 2 * input_data * error\n", "\n", "# ওয়েট আপডেট করি: weights_updated\n", "weights_updated = weights - learning_rate * gradient\n", "\n", "# প্রেডিকশন আপডেট নেই : preds_updated\n", "preds_updated = (weights_updated * input_data).sum()\n", "\n", "# এররের আপডেট নেই: error_updated\n", "error_updated = preds_updated - target\n", "\n", "# শুরুর এরর প্রিন্ট করি \n", "print(error)\n", "\n", "# নতুন এরর প্রিন্ট করি \n", "print(error_updated)" ], "execution_count": 7, "outputs": [ { "output_type": "stream", "text": [ "5\n", "2.5\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "sBmSDPfm7B__", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 87 }, "outputId": "9d4c1158-9f32-4476-fdf0-9c6368226f49" }, "source": [ "import numpy as np\n", "\n", "# আমাদের প্রেডিকশন করার জন্য ডেটা পয়েন্ট, ছবির সাথে মিলিয়ে দেখুন\n", "input_data = np.array([0, 3])\n", "\n", "# স্যাম্পল ওয়েট যা পাল্টে দিয়েছি আমরা \n", "weights_0 = {'node_0': [2, 1],\n", " 'node_1': [1, 2],\n", " 'output': [1, 1]\n", " }\n", "\n", "# আসল টার্গেট ভ্যালু, এরর বের করার জন্য লাগবে \n", "target_actual = 3\n", "\n", "# দুটো মেথড ডিফাইন করি \n", "def relu(input):\n", " output = max(0, input)\n", " return output\n", "\n", "def predict_with_network(input_data_row, weights):\n", " node_0_input = (input_data_row * weights['node_0']).sum()\n", " # print(node_0_input)\n", " node_0_output = relu(node_0_input)\n", " # print(node_0_output)\n", "\n", " node_1_input = (input_data_row * weights['node_1']).sum()\n", " node_1_output = relu(node_1_input)\n", " \n", " hidden_layer_outputs = np.array([node_0_output, node_1_output])\n", " \n", " input_to_final_layer = (hidden_layer_outputs * weights['output']).sum()\n", " model_output = relu(input_to_final_layer)\n", " return model_output\n", " \n", "\n", "# শুরুর ওয়েট দিয়ে প্রেডিকশন করি \n", "model_output_0 = predict_with_network(input_data, weights_0)\n", "\n", "# এরর ক্যালকুলেট করি: error_0\n", "error_0 = model_output_0 - target_actual\n", "\n", "# নতুন ওয়েট দেই যাতে টার্গেট প্রেডিকশন (3) ধরতে পারে: weights_1\n", "weights_1 = {'node_0': [2, 1],\n", " 'node_1': [1, 2],\n", " 'output': [1, 0]\n", " }\n", "\n", "# নতুন ওয়েট দিয়ে প্রেডিকশন: model_output_1\n", "model_output_1 = predict_with_network(input_data, weights_1)\n", "\n", "# আবার এরর ক্যালকুলেট করি: error_1\n", "error_1 = model_output_1 - target_actual\n", "\n", "# সবকিছু প্রিন্ট করে দেখি \n", "\n", "print(model_output_0)\n", "print(model_output_1)\n", "print(error_0)\n", "print(error_1)" ], "execution_count": 8, "outputs": [ { "output_type": "stream", "text": [ "9\n", "3\n", "6\n", "0\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "bNaR0dxG9MFW", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 87 }, "outputId": "82ce5d31-8242-48f5-a935-eb50f7096f29" }, "source": [ "import numpy as np\n", "\n", "# আমাদের প্রেডিকশন করার জন্য ডেটা পয়েন্ট, ছবির সাথে মিলিয়ে দেখুন\n", "input_data = np.array([-1, 2])\n", "\n", "# আমাদের ডিকশনারী\n", "weights = {'node_0': np.array([3, 3]),\n", " 'node_1': np.array([1, 5]),\n", " 'output': np.array([2, -1])\n", " }\n", "\n", "def relu(input):\n", " '''রেল্যু ফাংশনকে ডিফাইন করে দিচ্ছি এখানে'''\n", " # ইনপুটে যা পাবো সেটাকে ম্যাক্সিমাম যা আসবে, অথবা ঋনাত্বক আসলে \"০\" : output\n", " output = max(0, input)\n", " \n", " # Return the value just calculated\n", " return(output)\n", "\n", "# নোড ১ এর ভ্যালু ক্যালকুলেট করি: node_0_output\n", "node_0_input = (input_data * weights['node_0']).sum()\n", "node_0_output = relu(node_0_input)\n", "\n", "# নোড ২ এর ভ্যালু ক্যালকুলেট করি: node_1_output\n", "node_1_input = (input_data * weights['node_1']).sum()\n", "node_1_output = relu(node_1_input)\n", "\n", "# নতুন ভ্যালুগুলোকে অ্যারেতে বসাই: hidden_layer_outputs\n", "hidden_layer_outputs = np.array([node_0_output, node_1_output])\n", "\n", "# মডেলের আউটপুট ক্যালকুলেট করি (রেল্যুকে সরাসরি ব্যবহার না করে)\n", "model_output = (hidden_layer_outputs * weights['output']).sum()\n", "\n", "# Print model output\n", "print(node_0_output)\n", "print(node_1_output)\n", "print(hidden_layer_outputs)\n", "print(model_output)" ], "execution_count": 9, "outputs": [ { "output_type": "stream", "text": [ "3\n", "9\n", "[3 9]\n", "-3\n" ], "name": "stdout" } ] } ] }