{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "UMA_projekt.ipynb", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "accelerator": "GPU", "gpuClass": "standard" }, "cells": [ { "cell_type": "code", "source": [ "import time, gc\n", "\n", "# Timing utilities\n", "start_time = None\n", "\n", "def start_timer():\n", " global start_time\n", " gc.collect()\n", " torch.cuda.empty_cache()\n", " torch.cuda.reset_max_memory_allocated()\n", " torch.cuda.synchronize()\n", " start_time = time.time()\n", "\n", "def end_timer_and_print(local_msg):\n", " torch.cuda.synchronize()\n", " end_time = time.time()\n", " print(\"\\n\" + local_msg)\n", " print(\"Total execution time = {:.3f} sec\".format(end_time - start_time))\n", " print(\"Max memory used by tensors = {} bytes\".format(torch.cuda.max_memory_allocated()))" ], "metadata": { "id": "tWf7BQXI3Epz" }, "execution_count": 232, "outputs": [] }, { "cell_type": "code", "execution_count": 233, "metadata": { "id": "OFdF8yc6z9QK", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "6b2863d8-cbd3-40c8-f356-c57efb696aae" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[name: \"/device:CPU:0\"\n", " device_type: \"CPU\"\n", " memory_limit: 268435456\n", " locality {\n", " }\n", " incarnation: 7116988186229065702\n", " xla_global_id: -1, name: \"/device:GPU:0\"\n", " device_type: \"GPU\"\n", " memory_limit: 14465892352\n", " locality {\n", " bus_id: 1\n", " links {\n", " }\n", " }\n", " incarnation: 10048785647988876421\n", " physical_device_desc: \"device: 0, name: Tesla T4, pci bus id: 0000:00:04.0, compute capability: 7.5\"\n", " xla_global_id: 416903419]" ] }, "metadata": {}, "execution_count": 233 } ], "source": [ "from tensorflow.python.client import device_lib\n", "device_lib.list_local_devices()" ] }, { "cell_type": "code", "source": [ "import pandas as pd\n", "import numpy as np\n", "from sklearn.datasets import fetch_20newsgroups\n", "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.model_selection import train_test_split\n", "import torch\n", "import scipy" ], "metadata": { "id": "TIdeqZPs0aON" }, "execution_count": 234, "outputs": [] }, { "cell_type": "code", "source": [ "# !unzip real-or-fake-fake-jobposting-prediction.zip" ], "metadata": { "id": "Rf2cOL69qJ7D" }, "execution_count": 235, "outputs": [] }, { "cell_type": "code", "source": [ "data = pd.read_csv('fake_job_postings.csv', engine='python')\n", "data = data[[\"company_profile\", \"fraudulent\"]]\n", "data = data.sample(frac=1)\n", "data = data.dropna()" ], "metadata": { "id": "NO98S-QDsV6j" }, "execution_count": 236, "outputs": [] }, { "cell_type": "code", "source": [ "data" ], "metadata": { "id": "3Xd0Uvi4stMg", "colab": { "base_uri": "https://localhost:8080/", "height": 424 }, "outputId": "55e073ac-74f2-44f9-90de-d39094f84369" }, "execution_count": 237, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " company_profile fraudulent\n", "16503 At Hayes-Corp, we create the fun stuff.  With ... 0\n", "16706 Tribal Worldwide Athens is a digitally centric... 0\n", "3364 About ECHOING GREEN:  Echoing Green unleashes ... 0\n", "16856 Daily Secret is the fastest growing digital me... 0\n", "1566 ding* is the world’s largest top-up provider. ... 0\n", "... ... ...\n", "7607 Established on the principles that full time e... 0\n", "682 AGOGO creates a personalized audio channel by ... 0\n", "2759 We are a family run business that has been in ... 0\n", "5751 We have aggressive growth plans in place for t... 1\n", "3629 Want to build a 21st century financial service... 0\n", "\n", "[14572 rows x 2 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
company_profilefraudulent
16503At Hayes-Corp, we create the fun stuff.  With ...0
16706Tribal Worldwide Athens is a digitally centric...0
3364About ECHOING GREEN:  Echoing Green unleashes ...0
16856Daily Secret is the fastest growing digital me...0
1566ding* is the world’s largest top-up provider. ...0
.........
7607Established on the principles that full time e...0
682AGOGO creates a personalized audio channel by ...0
2759We are a family run business that has been in ...0
5751We have aggressive growth plans in place for t...1
3629Want to build a 21st century financial service...0
\n", "

14572 rows × 2 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 237 } ] }, { "cell_type": "code", "source": [ "data_train, data_test = train_test_split(data, test_size=2000, random_state=1)\n", "data_dev, data_test = train_test_split(data_test, test_size=1000, random_state=1)\n", "len(data_train), len(data_dev), len(data_test)" ], "metadata": { "id": "z02lLLumsyIY", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "fd85eca6-ba3f-4717-f428-3e84b4f5ec37" }, "execution_count": 238, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(12572, 1000, 1000)" ] }, "metadata": {}, "execution_count": 238 } ] }, { "cell_type": "code", "source": [ "x_train = data_train[\"company_profile\"]\n", "x_dev = data_dev[\"company_profile\"]\n", "x_test = data_test[\"company_profile\"]\n", "\n", "y_train = data_train[\"fraudulent\"]\n", "y_dev = data_dev[\"fraudulent\"]\n", "y_test = data_test[\"fraudulent\"]\n", "\n", "x_train = np.array(x_train)\n", "x_dev = np.array(x_dev)\n", "x_test = np.array(x_test)\n", "\n", "y_train = np.array(y_train)\n", "y_dev = np.array(y_dev)\n", "y_test = np.array(y_test)\n", "\n", "\n", "y_train_np = np.array(y_train)\n", "y_dev_np = np.array(y_dev)\n", "y_test_np = np.array(y_test)" ], "metadata": { "id": "MRiv9loJtPTv" }, "execution_count": 239, "outputs": [] }, { "cell_type": "code", "source": [ "vectorizer = TfidfVectorizer()" ], "metadata": { "id": "8DbBdHRztYW-" }, "execution_count": 240, "outputs": [] }, { "cell_type": "code", "source": [ "import copy\n", "x_train = vectorizer.fit_transform(x_train)\n", "x_dev = vectorizer.transform(x_dev)\n", "x_test = vectorizer.transform(x_test)\n", "\n", "x_train_np = x_train.copy()\n", "x_dev_np = x_dev.copy()\n", "x_test_np = x_test.copy()" ], "metadata": { "id": "o_o0IxMGtizH" }, "execution_count": 241, "outputs": [] }, { "cell_type": "code", "source": [ "device = 'cuda'" ], "metadata": { "id": "ptyeXfURyKKj" }, "execution_count": 242, "outputs": [] }, { "cell_type": "code", "source": [ "x_train = torch.tensor(scipy.sparse.csr_matrix.todense(x_train), device=device).float()\n", "x_dev = torch.tensor(scipy.sparse.csr_matrix.todense(x_dev), device=device).float()\n", "x_test = torch.tensor(scipy.sparse.csr_matrix.todense(x_test), device=device).float()\n", "\n", "y_train = torch.tensor(y_train, device=device)\n", "y_dev = torch.tensor(y_dev, device=device)\n", "y_test = torch.tensor(y_test, device=device)" ], "metadata": { "id": "P6xaoW-Itxjo" }, "execution_count": 243, "outputs": [] }, { "cell_type": "code", "source": [ "from sklearn.linear_model import LogisticRegression\n", "start_timer()\n", "reg = LogisticRegression().fit(x_train_np, y_train_np)\n", "end_timer_and_print(\"Logistic regression: \")" ], "metadata": { "id": "n26vQSlY3un8", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "fdb865d0-c6e9-446c-9fb7-6e152d1789bb" }, "execution_count": 244, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.7/dist-packages/torch/cuda/memory.py:274: FutureWarning: torch.cuda.reset_max_memory_allocated now calls torch.cuda.reset_peak_memory_stats, which resets /all/ peak memory stats.\n", " FutureWarning)\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "Logistic regression: \n", "Total execution time = 0.365 sec\n", "Max memory used by tensors = 2335263744 bytes\n" ] } ] }, { "cell_type": "code", "source": [ "from sklearn.metrics import f1_score\n", "from sklearn.metrics import accuracy_score\n", "\n", "y_pred_np = reg.predict(x_test_np)\n", "print('F-score: ', f1_score(y_test_np, y_pred_np, average='macro'))\n", "\n", "print('Accuracy: ', accuracy_score(y_test_np, y_pred_np))" ], "metadata": { "id": "525TSZ_T35C5", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "e72d98a0-56bf-4b4e-b00a-b733bea25fe8" }, "execution_count": 245, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "F-score: 0.8685964220682922\n", "Accuracy: 0.993\n" ] } ] }, { "cell_type": "code", "source": [ "device=\"cuda\"" ], "metadata": { "id": "HN7ZIaL17IAt" }, "execution_count": 246, "outputs": [] }, { "cell_type": "code", "source": [ "def prepare_batches(X, Y, batch_size):\n", " data_X = []\n", " data_Y = []\n", " for i in range(0, len(X)-1, batch_size):\n", " data_X.append(X[i:i+batch_size])\n", " data_Y.append(Y[i:i+batch_size].reshape(-1,1))\n", " data_X = data_X[0:-1]\n", " data_Y = data_Y[0:-1]\n", " return data_X, data_Y" ], "metadata": { "id": "EvHChAIeICJu" }, "execution_count": 247, "outputs": [] }, { "cell_type": "code", "source": [ "size = 512\n", "epochs = 150\n", "\n" ], "metadata": { "id": "tOrxxJU93N22" }, "execution_count": 248, "outputs": [] }, { "cell_type": "code", "source": [ "from torch import nn\n", "from torch import optim\n", "model = nn.Sequential(\n", " nn.Linear(x_train.shape[1], size),\n", " nn.ReLU(),\n", " # nn.Linear(64, data_train[\"fraudulent\"].nunique()),\n", "\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", "\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", "\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", "\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", " nn.Linear(size, data_train[\"fraudulent\"].nunique()),\n", " \n", " nn.LogSoftmax(dim=1))\n", "model.cuda()\n", "# Define the loss\n", "criterion = nn.NLLLoss() # Forward pass, log\n", "logps = model(x_train) # Calculate the loss with the logits and the labels\n", "loss = criterion(logps, y_train)\n", "loss.backward() # Optimizers need parameters to optimize and a learning rate\n", "optimizer = optim.Adam(model.parameters(), lr=0.002)\n", "\n", "train_losses = []\n", "test_losses = []\n", "test_accuracies = []\n", "start_timer()\n", "for e in range(epochs):\n", " optimizer.zero_grad()\n", "\n", " output = model.forward(x_train)\n", " loss = criterion(output, y_train)\n", " loss.backward()\n", " train_loss = loss.item()\n", " train_losses.append(train_loss)\n", "\n", " optimizer.step()\n", "\n", " # Turn off gradients for validation, saves memory and computations\n", " with torch.no_grad():\n", " model.eval()\n", " log_ps = model(x_dev)\n", " test_loss = criterion(log_ps, y_dev)\n", " test_losses.append(test_loss)\n", "\n", " ps = torch.exp(log_ps)\n", " top_p, top_class = ps.topk(1, dim=1)\n", " equals = top_class == y_dev.view(*top_class.shape)\n", " test_accuracy = torch.mean(equals.float())\n", " test_accuracies.append(test_accuracy)\n", "\n", " model.train()\n", "\n", " print(f\"Epoch: {e + 1}/{epochs}.. \",\n", " f\"Training Loss: {train_loss:.3f}.. \",\n", " f\"Test Loss: {test_loss:.3f}.. \",\n", " f\"Test Accuracy: {test_accuracy:.3f}\")\n", "end_timer_and_print(\"Mixed precision:\")" ], "metadata": { "id": "RQGLH1lbxSqD", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "7b748a39-45f1-4d2c-eb4e-1bbd72dcb580" }, "execution_count": 249, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.7/dist-packages/torch/cuda/memory.py:274: FutureWarning: torch.cuda.reset_max_memory_allocated now calls torch.cuda.reset_peak_memory_stats, which resets /all/ peak memory stats.\n", " FutureWarning)\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Epoch: 1/150.. Training Loss: 0.666.. Test Loss: 0.580.. Test Accuracy: 0.983\n", "Epoch: 2/150.. Training Loss: 0.581.. Test Loss: 0.454.. Test Accuracy: 0.983\n", "Epoch: 3/150.. Training Loss: 0.455.. Test Loss: 0.191.. Test Accuracy: 0.983\n", "Epoch: 4/150.. Training Loss: 0.195.. Test Loss: 0.103.. Test Accuracy: 0.983\n", "Epoch: 5/150.. Training Loss: 0.115.. Test Loss: 0.177.. Test Accuracy: 0.983\n", "Epoch: 6/150.. Training Loss: 0.193.. Test Loss: 0.166.. Test Accuracy: 0.983\n", "Epoch: 7/150.. Training Loss: 0.178.. Test Loss: 0.122.. Test Accuracy: 0.983\n", "Epoch: 8/150.. Training Loss: 0.131.. Test Loss: 0.085.. Test Accuracy: 0.983\n", "Epoch: 9/150.. Training Loss: 0.093.. Test Loss: 0.072.. Test Accuracy: 0.983\n", "Epoch: 10/150.. Training Loss: 0.079.. Test Loss: 0.091.. Test Accuracy: 0.983\n", "Epoch: 11/150.. Training Loss: 0.096.. Test Loss: 0.098.. Test Accuracy: 0.983\n", "Epoch: 12/150.. Training Loss: 0.103.. Test Loss: 0.081.. Test Accuracy: 0.983\n", "Epoch: 13/150.. Training Loss: 0.086.. Test Loss: 0.063.. Test Accuracy: 0.983\n", "Epoch: 14/150.. Training Loss: 0.067.. Test Loss: 0.059.. Test Accuracy: 0.983\n", "Epoch: 15/150.. Training Loss: 0.062.. Test Loss: 0.063.. Test Accuracy: 0.983\n", "Epoch: 16/150.. Training Loss: 0.062.. Test Loss: 0.067.. Test Accuracy: 0.983\n", "Epoch: 17/150.. Training Loss: 0.061.. Test Loss: 0.068.. Test Accuracy: 0.983\n", "Epoch: 18/150.. Training Loss: 0.058.. Test Loss: 0.067.. Test Accuracy: 0.983\n", "Epoch: 19/150.. Training Loss: 0.053.. Test Loss: 0.064.. Test Accuracy: 0.983\n", "Epoch: 20/150.. Training Loss: 0.047.. Test Loss: 0.061.. Test Accuracy: 0.983\n", "Epoch: 21/150.. Training Loss: 0.041.. Test Loss: 0.057.. Test Accuracy: 0.983\n", "Epoch: 22/150.. Training Loss: 0.037.. Test Loss: 0.054.. Test Accuracy: 0.983\n", "Epoch: 23/150.. Training Loss: 0.033.. Test Loss: 0.051.. Test Accuracy: 0.983\n", "Epoch: 24/150.. Training Loss: 0.030.. Test Loss: 0.048.. Test Accuracy: 0.983\n", "Epoch: 25/150.. Training Loss: 0.027.. Test Loss: 0.045.. Test Accuracy: 0.983\n", "Epoch: 26/150.. Training Loss: 0.025.. Test Loss: 0.044.. Test Accuracy: 0.983\n", "Epoch: 27/150.. Training Loss: 0.023.. Test Loss: 0.042.. Test Accuracy: 0.983\n", "Epoch: 28/150.. Training Loss: 0.021.. Test Loss: 0.041.. Test Accuracy: 0.983\n", "Epoch: 29/150.. Training Loss: 0.020.. Test Loss: 0.042.. Test Accuracy: 0.983\n", "Epoch: 30/150.. Training Loss: 0.019.. Test Loss: 0.043.. Test Accuracy: 0.983\n", "Epoch: 31/150.. Training Loss: 0.017.. Test Loss: 0.044.. Test Accuracy: 0.983\n", "Epoch: 32/150.. Training Loss: 0.016.. Test Loss: 0.047.. Test Accuracy: 0.983\n", "Epoch: 33/150.. Training Loss: 0.015.. Test Loss: 0.050.. Test Accuracy: 0.993\n", "Epoch: 34/150.. Training Loss: 0.013.. Test Loss: 0.053.. Test Accuracy: 0.997\n", "Epoch: 35/150.. Training Loss: 0.012.. Test Loss: 0.056.. Test Accuracy: 0.997\n", "Epoch: 36/150.. Training Loss: 0.008.. Test Loss: 0.058.. Test Accuracy: 0.997\n", "Epoch: 37/150.. Training Loss: 0.003.. Test Loss: 0.062.. Test Accuracy: 0.996\n", "Epoch: 38/150.. Training Loss: 0.000.. Test Loss: 0.069.. Test Accuracy: 0.996\n", "Epoch: 39/150.. Training Loss: 0.000.. Test Loss: 0.086.. Test Accuracy: 0.995\n", "Epoch: 40/150.. Training Loss: 0.001.. Test Loss: 0.104.. Test Accuracy: 0.995\n", "Epoch: 41/150.. Training Loss: 0.001.. Test Loss: 0.122.. Test Accuracy: 0.995\n", "Epoch: 42/150.. Training Loss: 0.001.. Test Loss: 0.138.. Test Accuracy: 0.996\n", "Epoch: 43/150.. Training Loss: 0.002.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 44/150.. Training Loss: 0.002.. Test Loss: 0.169.. Test Accuracy: 0.996\n", "Epoch: 45/150.. Training Loss: 0.001.. Test Loss: 0.181.. Test Accuracy: 0.996\n", "Epoch: 46/150.. Training Loss: 0.000.. Test Loss: 0.192.. Test Accuracy: 0.997\n", "Epoch: 47/150.. Training Loss: 0.000.. Test Loss: 0.214.. Test Accuracy: 0.997\n", "Epoch: 48/150.. Training Loss: 0.000.. Test Loss: 0.236.. Test Accuracy: 0.997\n", "Epoch: 49/150.. Training Loss: 0.002.. Test Loss: 0.182.. Test Accuracy: 0.997\n", "Epoch: 50/150.. Training Loss: 0.000.. Test Loss: 0.129.. Test Accuracy: 0.997\n", "Epoch: 51/150.. Training Loss: 0.000.. Test Loss: 0.101.. Test Accuracy: 0.996\n", "Epoch: 52/150.. Training Loss: 0.000.. Test Loss: 0.083.. Test Accuracy: 0.996\n", "Epoch: 53/150.. Training Loss: 0.000.. Test Loss: 0.077.. Test Accuracy: 0.995\n", "Epoch: 54/150.. Training Loss: 0.000.. Test Loss: 0.072.. Test Accuracy: 0.995\n", "Epoch: 55/150.. Training Loss: 0.000.. Test Loss: 0.070.. Test Accuracy: 0.995\n", "Epoch: 56/150.. Training Loss: 0.001.. Test Loss: 0.077.. Test Accuracy: 0.995\n", "Epoch: 57/150.. Training Loss: 0.001.. Test Loss: 0.080.. Test Accuracy: 0.995\n", "Epoch: 58/150.. Training Loss: 0.000.. Test Loss: 0.080.. Test Accuracy: 0.995\n", "Epoch: 59/150.. Training Loss: 0.000.. Test Loss: 0.079.. Test Accuracy: 0.995\n", "Epoch: 60/150.. Training Loss: 0.000.. Test Loss: 0.078.. Test Accuracy: 0.995\n", "Epoch: 61/150.. Training Loss: 0.000.. Test Loss: 0.078.. Test Accuracy: 0.995\n", "Epoch: 62/150.. Training Loss: 0.000.. Test Loss: 0.079.. Test Accuracy: 0.995\n", "Epoch: 63/150.. Training Loss: 0.000.. Test Loss: 0.081.. Test Accuracy: 0.995\n", "Epoch: 64/150.. Training Loss: 0.000.. Test Loss: 0.084.. Test Accuracy: 0.995\n", "Epoch: 65/150.. Training Loss: 0.000.. Test Loss: 0.089.. Test Accuracy: 0.995\n", "Epoch: 66/150.. Training Loss: 0.000.. Test Loss: 0.095.. Test Accuracy: 0.995\n", "Epoch: 67/150.. Training Loss: 0.000.. Test Loss: 0.101.. Test Accuracy: 0.995\n", "Epoch: 68/150.. Training Loss: 0.000.. Test Loss: 0.107.. Test Accuracy: 0.995\n", "Epoch: 69/150.. Training Loss: 0.000.. Test Loss: 0.112.. Test Accuracy: 0.995\n", "Epoch: 70/150.. Training Loss: 0.000.. Test Loss: 0.116.. Test Accuracy: 0.995\n", "Epoch: 71/150.. Training Loss: 0.000.. Test Loss: 0.120.. Test Accuracy: 0.995\n", "Epoch: 72/150.. Training Loss: 0.000.. Test Loss: 0.124.. Test Accuracy: 0.995\n", "Epoch: 73/150.. Training Loss: 0.000.. Test Loss: 0.127.. Test Accuracy: 0.995\n", "Epoch: 74/150.. Training Loss: 0.000.. Test Loss: 0.129.. Test Accuracy: 0.995\n", "Epoch: 75/150.. Training Loss: 0.000.. Test Loss: 0.132.. Test Accuracy: 0.995\n", "Epoch: 76/150.. Training Loss: 0.000.. Test Loss: 0.134.. Test Accuracy: 0.996\n", "Epoch: 77/150.. Training Loss: 0.000.. Test Loss: 0.136.. Test Accuracy: 0.996\n", "Epoch: 78/150.. Training Loss: 0.000.. Test Loss: 0.138.. Test Accuracy: 0.996\n", "Epoch: 79/150.. Training Loss: 0.000.. Test Loss: 0.139.. Test Accuracy: 0.996\n", "Epoch: 80/150.. Training Loss: 0.000.. Test Loss: 0.141.. Test Accuracy: 0.996\n", "Epoch: 81/150.. Training Loss: 0.000.. Test Loss: 0.142.. Test Accuracy: 0.996\n", "Epoch: 82/150.. Training Loss: 0.000.. Test Loss: 0.144.. Test Accuracy: 0.996\n", "Epoch: 83/150.. Training Loss: 0.000.. Test Loss: 0.145.. Test Accuracy: 0.996\n", "Epoch: 84/150.. Training Loss: 0.000.. Test Loss: 0.146.. Test Accuracy: 0.996\n", "Epoch: 85/150.. Training Loss: 0.000.. Test Loss: 0.147.. Test Accuracy: 0.996\n", "Epoch: 86/150.. Training Loss: 0.000.. Test Loss: 0.148.. Test Accuracy: 0.996\n", "Epoch: 87/150.. Training Loss: 0.000.. Test Loss: 0.148.. Test Accuracy: 0.996\n", "Epoch: 88/150.. Training Loss: 0.000.. Test Loss: 0.149.. Test Accuracy: 0.996\n", "Epoch: 89/150.. Training Loss: 0.000.. Test Loss: 0.150.. Test Accuracy: 0.996\n", "Epoch: 90/150.. Training Loss: 0.000.. Test Loss: 0.150.. Test Accuracy: 0.996\n", "Epoch: 91/150.. Training Loss: 0.000.. Test Loss: 0.151.. Test Accuracy: 0.996\n", "Epoch: 92/150.. Training Loss: 0.000.. Test Loss: 0.151.. Test Accuracy: 0.996\n", "Epoch: 93/150.. Training Loss: 0.000.. Test Loss: 0.152.. Test Accuracy: 0.996\n", "Epoch: 94/150.. Training Loss: 0.000.. Test Loss: 0.152.. Test Accuracy: 0.996\n", "Epoch: 95/150.. Training Loss: 0.000.. Test Loss: 0.152.. Test Accuracy: 0.996\n", "Epoch: 96/150.. Training Loss: 0.000.. Test Loss: 0.153.. Test Accuracy: 0.996\n", "Epoch: 97/150.. Training Loss: 0.000.. Test Loss: 0.153.. Test Accuracy: 0.996\n", "Epoch: 98/150.. Training Loss: 0.000.. Test Loss: 0.153.. Test Accuracy: 0.996\n", "Epoch: 99/150.. Training Loss: 0.000.. Test Loss: 0.153.. Test Accuracy: 0.996\n", "Epoch: 100/150.. Training Loss: 0.000.. Test Loss: 0.153.. Test Accuracy: 0.996\n", "Epoch: 101/150.. Training Loss: 0.000.. Test Loss: 0.154.. Test Accuracy: 0.996\n", "Epoch: 102/150.. Training Loss: 0.000.. Test Loss: 0.154.. Test Accuracy: 0.996\n", "Epoch: 103/150.. Training Loss: 0.000.. Test Loss: 0.154.. Test Accuracy: 0.996\n", "Epoch: 104/150.. Training Loss: 0.000.. Test Loss: 0.154.. Test Accuracy: 0.996\n", "Epoch: 105/150.. Training Loss: 0.000.. Test Loss: 0.154.. Test Accuracy: 0.996\n", "Epoch: 106/150.. Training Loss: 0.000.. Test Loss: 0.154.. Test Accuracy: 0.996\n", "Epoch: 107/150.. Training Loss: 0.000.. Test Loss: 0.154.. Test Accuracy: 0.996\n", "Epoch: 108/150.. Training Loss: 0.000.. Test Loss: 0.154.. Test Accuracy: 0.996\n", "Epoch: 109/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 110/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 111/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 112/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 113/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 114/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 115/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 116/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 117/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 118/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 119/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 120/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 121/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 122/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 123/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 124/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 125/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 126/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 127/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 128/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 129/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 130/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 131/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 132/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 133/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 134/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 135/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 136/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 137/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 138/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 139/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 140/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 141/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 142/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 143/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 144/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 145/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 146/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 147/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 148/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 149/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "Epoch: 150/150.. Training Loss: 0.000.. Test Loss: 0.155.. Test Accuracy: 0.996\n", "\n", "Mixed precision:\n", "Total execution time = 21.202 sec\n", "Max memory used by tensors = 2485789184 bytes\n" ] } ] }, { "cell_type": "code", "source": [ "# Default model\n", "model.eval()\n", "predictions = []\n", "output = model(x_test)\n", "ps = torch.exp(output)\n", "top_p, top_class = ps.topk(1, dim=1)\n", "predictions = np.array(top_class.cpu().detach())\n", "y_pred = []\n", "for d in predictions:\n", " y_pred.append(d)\n", "y_true = []\n", "for d in y_test:\n", " y_true.append(int(d))\n", "y_true\n", "print('F-score: ', f1_score(y_true, y_pred, average='macro'))\n", "\n", "print('Accuracy: ', accuracy_score(y_true, y_pred))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "FOx-H5UI5Hxa", "outputId": "9ce6a2bf-26e6-47e6-f946-20c65f202768" }, "execution_count": 250, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "F-score: 0.9845942906441127\n", "Accuracy: 0.999\n" ] } ] }, { "cell_type": "code", "source": [ "# Mixed precision model\n", "use_amp = True\n", "\n", "\n", "model = nn.Sequential(\n", " nn.Linear(x_train.shape[1], size),\n", " nn.ReLU(),\n", " # nn.Linear(64, data_train[\"fraudulent\"].nunique()),\n", "\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", "\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", "\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", "\n", " nn.Linear(size, size),\n", " nn.ReLU(),\n", " nn.Linear(size, data_train[\"fraudulent\"].nunique()),\n", " \n", " nn.LogSoftmax(dim=1))\n", "model.cuda()\n", "# Define the loss\n", "criterion = nn.NLLLoss() # Forward pass, log\n", "logps = model(x_train) # Calculate the loss with the logits and the labels\n", "loss = criterion(logps, y_train)\n", "loss.backward() # Optimizers need parameters to optimize and a learning rate\n", "optimizer = optim.Adam(model.parameters(), lr=0.002)\n", "\n", "train_losses = []\n", "test_losses = []\n", "test_accuracies = []\n", "scaler = torch.cuda.amp.GradScaler(enabled=use_amp)\n", "start_timer()\n", "for e in range(epochs):\n", " optimizer.zero_grad()\n", " with torch.cuda.amp.autocast(enabled=use_amp):\n", " output = model.forward(x_train)\n", " loss = criterion(output, y_train)\n", " scaler.scale(loss).backward()\n", " train_loss = loss.item()\n", " train_losses.append(train_loss)\n", " scaler.step(optimizer)\n", " scaler.update()\n", "\n", "\n", "\n", " # Turn off gradients for validation, saves memory and computations\n", " with torch.no_grad():\n", " model.eval()\n", " log_ps = model(x_dev)\n", " test_loss = criterion(log_ps, y_dev)\n", " test_losses.append(test_loss)\n", "\n", " ps = torch.exp(log_ps)\n", " top_p, top_class = ps.topk(1, dim=1)\n", " equals = top_class == y_dev.view(*top_class.shape)\n", " test_accuracy = torch.mean(equals.float())\n", " test_accuracies.append(test_accuracy)\n", "\n", " model.train()\n", "\n", " print(f\"Epoch: {e + 1}/{epochs}.. \",\n", " f\"Training Loss: {train_loss:.3f}.. \",\n", " f\"Test Loss: {test_loss:.3f}.. \",\n", " f\"Test Accuracy: {test_accuracy:.3f}\")\n", "end_timer_and_print(\"Mixed precision:\")" ], "metadata": { "id": "eyBj73tj0D8R", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "bdbc1189-4d98-41e4-8769-2abd0a35e718" }, "execution_count": 251, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.7/dist-packages/torch/cuda/memory.py:274: FutureWarning: torch.cuda.reset_max_memory_allocated now calls torch.cuda.reset_peak_memory_stats, which resets /all/ peak memory stats.\n", " FutureWarning)\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Epoch: 1/150.. Training Loss: 0.729.. Test Loss: 0.643.. Test Accuracy: 0.983\n", "Epoch: 2/150.. Training Loss: 0.644.. Test Loss: 0.518.. Test Accuracy: 0.983\n", "Epoch: 3/150.. Training Loss: 0.519.. Test Loss: 0.245.. Test Accuracy: 0.983\n", "Epoch: 4/150.. Training Loss: 0.249.. Test Loss: 0.087.. Test Accuracy: 0.983\n", "Epoch: 5/150.. Training Loss: 0.098.. Test Loss: 0.171.. Test Accuracy: 0.983\n", "Epoch: 6/150.. Training Loss: 0.187.. Test Loss: 0.178.. Test Accuracy: 0.983\n", "Epoch: 7/150.. Training Loss: 0.191.. Test Loss: 0.135.. Test Accuracy: 0.983\n", "Epoch: 8/150.. Training Loss: 0.145.. Test Loss: 0.093.. Test Accuracy: 0.983\n", "Epoch: 9/150.. Training Loss: 0.101.. Test Loss: 0.070.. Test Accuracy: 0.983\n", "Epoch: 10/150.. Training Loss: 0.077.. Test Loss: 0.088.. Test Accuracy: 0.983\n", "Epoch: 11/150.. Training Loss: 0.093.. Test Loss: 0.100.. Test Accuracy: 0.983\n", "Epoch: 12/150.. Training Loss: 0.104.. Test Loss: 0.080.. Test Accuracy: 0.983\n", "Epoch: 13/150.. Training Loss: 0.085.. Test Loss: 0.061.. Test Accuracy: 0.983\n", "Epoch: 14/150.. Training Loss: 0.065.. Test Loss: 0.059.. Test Accuracy: 0.983\n", "Epoch: 15/150.. Training Loss: 0.061.. Test Loss: 0.063.. Test Accuracy: 0.983\n", "Epoch: 16/150.. Training Loss: 0.062.. Test Loss: 0.066.. Test Accuracy: 0.983\n", "Epoch: 17/150.. Training Loss: 0.060.. Test Loss: 0.066.. Test Accuracy: 0.983\n", "Epoch: 18/150.. Training Loss: 0.056.. Test Loss: 0.064.. Test Accuracy: 0.983\n", "Epoch: 19/150.. Training Loss: 0.051.. Test Loss: 0.060.. Test Accuracy: 0.983\n", "Epoch: 20/150.. Training Loss: 0.044.. Test Loss: 0.057.. Test Accuracy: 0.983\n", "Epoch: 21/150.. Training Loss: 0.039.. Test Loss: 0.053.. Test Accuracy: 0.983\n", "Epoch: 22/150.. Training Loss: 0.034.. Test Loss: 0.050.. Test Accuracy: 0.983\n", "Epoch: 23/150.. Training Loss: 0.031.. Test Loss: 0.047.. Test Accuracy: 0.983\n", "Epoch: 24/150.. Training Loss: 0.027.. Test Loss: 0.045.. Test Accuracy: 0.983\n", "Epoch: 25/150.. Training Loss: 0.025.. Test Loss: 0.043.. Test Accuracy: 0.983\n", "Epoch: 26/150.. Training Loss: 0.022.. Test Loss: 0.041.. Test Accuracy: 0.983\n", "Epoch: 27/150.. Training Loss: 0.020.. Test Loss: 0.040.. Test Accuracy: 0.983\n", "Epoch: 28/150.. Training Loss: 0.019.. Test Loss: 0.040.. Test Accuracy: 0.983\n", "Epoch: 29/150.. Training Loss: 0.017.. Test Loss: 0.040.. Test Accuracy: 0.983\n", "Epoch: 30/150.. Training Loss: 0.016.. Test Loss: 0.041.. Test Accuracy: 0.983\n", "Epoch: 31/150.. Training Loss: 0.015.. Test Loss: 0.043.. Test Accuracy: 0.994\n", "Epoch: 32/150.. Training Loss: 0.013.. Test Loss: 0.045.. Test Accuracy: 0.996\n", "Epoch: 33/150.. Training Loss: 0.012.. Test Loss: 0.047.. Test Accuracy: 0.996\n", "Epoch: 34/150.. Training Loss: 0.009.. Test Loss: 0.049.. Test Accuracy: 0.996\n", "Epoch: 35/150.. Training Loss: 0.005.. Test Loss: 0.054.. Test Accuracy: 0.996\n", "Epoch: 36/150.. Training Loss: 0.001.. Test Loss: 0.064.. Test Accuracy: 0.996\n", "Epoch: 37/150.. Training Loss: 0.000.. Test Loss: 0.077.. Test Accuracy: 0.996\n", "Epoch: 38/150.. Training Loss: 0.001.. Test Loss: 0.094.. Test Accuracy: 0.995\n", "Epoch: 39/150.. Training Loss: 0.001.. Test Loss: 0.113.. Test Accuracy: 0.995\n", "Epoch: 40/150.. Training Loss: 0.001.. Test Loss: 0.131.. Test Accuracy: 0.995\n", "Epoch: 41/150.. Training Loss: 0.002.. Test Loss: 0.144.. Test Accuracy: 0.996\n", "Epoch: 42/150.. Training Loss: 0.002.. Test Loss: 0.158.. Test Accuracy: 0.996\n", "Epoch: 43/150.. Training Loss: 0.001.. Test Loss: 0.170.. Test Accuracy: 0.996\n", "Epoch: 44/150.. Training Loss: 0.001.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 45/150.. Training Loss: 0.000.. Test Loss: 0.195.. Test Accuracy: 0.997\n", "Epoch: 46/150.. Training Loss: 0.000.. Test Loss: 0.216.. Test Accuracy: 0.997\n", "Epoch: 47/150.. Training Loss: 0.000.. Test Loss: 0.237.. Test Accuracy: 0.997\n", "Epoch: 48/150.. Training Loss: 0.002.. Test Loss: 0.174.. Test Accuracy: 0.997\n", "Epoch: 49/150.. Training Loss: 0.000.. Test Loss: 0.126.. Test Accuracy: 0.997\n", "Epoch: 50/150.. Training Loss: 0.000.. Test Loss: 0.090.. Test Accuracy: 0.997\n", "Epoch: 51/150.. Training Loss: 0.000.. Test Loss: 0.062.. Test Accuracy: 0.997\n", "Epoch: 52/150.. Training Loss: 0.000.. Test Loss: 0.045.. Test Accuracy: 0.996\n", "Epoch: 53/150.. Training Loss: 0.000.. Test Loss: 0.035.. Test Accuracy: 0.996\n", "Epoch: 54/150.. Training Loss: 0.000.. Test Loss: 0.031.. Test Accuracy: 0.996\n", "Epoch: 55/150.. Training Loss: 0.000.. Test Loss: 0.042.. Test Accuracy: 0.996\n", "Epoch: 56/150.. Training Loss: 0.000.. Test Loss: 0.053.. Test Accuracy: 0.996\n", "Epoch: 57/150.. Training Loss: 0.000.. Test Loss: 0.063.. Test Accuracy: 0.996\n", "Epoch: 58/150.. Training Loss: 0.000.. Test Loss: 0.072.. Test Accuracy: 0.996\n", "Epoch: 59/150.. Training Loss: 0.000.. Test Loss: 0.081.. Test Accuracy: 0.996\n", "Epoch: 60/150.. Training Loss: 0.000.. Test Loss: 0.089.. Test Accuracy: 0.996\n", "Epoch: 61/150.. Training Loss: 0.000.. Test Loss: 0.097.. Test Accuracy: 0.996\n", "Epoch: 62/150.. Training Loss: 0.000.. Test Loss: 0.104.. Test Accuracy: 0.996\n", "Epoch: 63/150.. Training Loss: 0.000.. Test Loss: 0.110.. Test Accuracy: 0.996\n", "Epoch: 64/150.. Training Loss: 0.000.. Test Loss: 0.117.. Test Accuracy: 0.996\n", "Epoch: 65/150.. Training Loss: 0.000.. Test Loss: 0.122.. Test Accuracy: 0.996\n", "Epoch: 66/150.. Training Loss: 0.000.. Test Loss: 0.127.. Test Accuracy: 0.996\n", "Epoch: 67/150.. Training Loss: 0.000.. Test Loss: 0.132.. Test Accuracy: 0.996\n", "Epoch: 68/150.. Training Loss: 0.000.. Test Loss: 0.136.. Test Accuracy: 0.996\n", "Epoch: 69/150.. Training Loss: 0.000.. Test Loss: 0.140.. Test Accuracy: 0.996\n", "Epoch: 70/150.. Training Loss: 0.000.. Test Loss: 0.143.. Test Accuracy: 0.996\n", "Epoch: 71/150.. Training Loss: 0.000.. Test Loss: 0.147.. Test Accuracy: 0.996\n", "Epoch: 72/150.. Training Loss: 0.000.. Test Loss: 0.149.. Test Accuracy: 0.996\n", "Epoch: 73/150.. Training Loss: 0.000.. Test Loss: 0.152.. Test Accuracy: 0.996\n", "Epoch: 74/150.. Training Loss: 0.000.. Test Loss: 0.154.. Test Accuracy: 0.996\n", "Epoch: 75/150.. Training Loss: 0.000.. Test Loss: 0.156.. Test Accuracy: 0.996\n", "Epoch: 76/150.. Training Loss: 0.000.. Test Loss: 0.158.. Test Accuracy: 0.996\n", "Epoch: 77/150.. Training Loss: 0.000.. Test Loss: 0.160.. Test Accuracy: 0.996\n", "Epoch: 78/150.. Training Loss: 0.000.. Test Loss: 0.162.. Test Accuracy: 0.996\n", "Epoch: 79/150.. Training Loss: 0.000.. Test Loss: 0.163.. Test Accuracy: 0.996\n", "Epoch: 80/150.. Training Loss: 0.000.. Test Loss: 0.164.. Test Accuracy: 0.996\n", "Epoch: 81/150.. Training Loss: 0.000.. Test Loss: 0.166.. Test Accuracy: 0.996\n", "Epoch: 82/150.. Training Loss: 0.000.. Test Loss: 0.167.. Test Accuracy: 0.996\n", "Epoch: 83/150.. Training Loss: 0.000.. Test Loss: 0.168.. Test Accuracy: 0.996\n", "Epoch: 84/150.. Training Loss: 0.000.. Test Loss: 0.169.. Test Accuracy: 0.996\n", "Epoch: 85/150.. Training Loss: 0.000.. Test Loss: 0.169.. Test Accuracy: 0.996\n", "Epoch: 86/150.. Training Loss: 0.000.. Test Loss: 0.170.. Test Accuracy: 0.996\n", "Epoch: 87/150.. Training Loss: 0.000.. Test Loss: 0.171.. Test Accuracy: 0.996\n", "Epoch: 88/150.. Training Loss: 0.000.. Test Loss: 0.171.. Test Accuracy: 0.996\n", "Epoch: 89/150.. Training Loss: 0.000.. Test Loss: 0.172.. Test Accuracy: 0.996\n", "Epoch: 90/150.. Training Loss: 0.000.. Test Loss: 0.172.. Test Accuracy: 0.996\n", "Epoch: 91/150.. Training Loss: 0.000.. Test Loss: 0.173.. Test Accuracy: 0.996\n", "Epoch: 92/150.. Training Loss: 0.000.. Test Loss: 0.173.. Test Accuracy: 0.996\n", "Epoch: 93/150.. Training Loss: 0.000.. Test Loss: 0.174.. Test Accuracy: 0.996\n", "Epoch: 94/150.. Training Loss: 0.000.. Test Loss: 0.174.. Test Accuracy: 0.996\n", "Epoch: 95/150.. Training Loss: 0.000.. Test Loss: 0.174.. Test Accuracy: 0.996\n", "Epoch: 96/150.. Training Loss: 0.000.. Test Loss: 0.175.. Test Accuracy: 0.996\n", "Epoch: 97/150.. Training Loss: 0.000.. Test Loss: 0.175.. Test Accuracy: 0.996\n", "Epoch: 98/150.. Training Loss: 0.000.. Test Loss: 0.175.. Test Accuracy: 0.996\n", "Epoch: 99/150.. Training Loss: 0.000.. Test Loss: 0.175.. Test Accuracy: 0.996\n", "Epoch: 100/150.. Training Loss: 0.000.. Test Loss: 0.176.. Test Accuracy: 0.996\n", "Epoch: 101/150.. Training Loss: 0.000.. Test Loss: 0.176.. Test Accuracy: 0.996\n", "Epoch: 102/150.. Training Loss: 0.000.. Test Loss: 0.176.. Test Accuracy: 0.996\n", "Epoch: 103/150.. Training Loss: 0.000.. Test Loss: 0.176.. Test Accuracy: 0.996\n", "Epoch: 104/150.. Training Loss: 0.000.. Test Loss: 0.176.. Test Accuracy: 0.996\n", "Epoch: 105/150.. Training Loss: 0.000.. Test Loss: 0.176.. Test Accuracy: 0.996\n", "Epoch: 106/150.. Training Loss: 0.000.. Test Loss: 0.176.. Test Accuracy: 0.996\n", "Epoch: 107/150.. Training Loss: 0.000.. Test Loss: 0.176.. Test Accuracy: 0.996\n", "Epoch: 108/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 109/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 110/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 111/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 112/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 113/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 114/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 115/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 116/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 117/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 118/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 119/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 120/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 121/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 122/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 123/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 124/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 125/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 126/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 127/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 128/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 129/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 130/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 131/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 132/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 133/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 134/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 135/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 136/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 137/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 138/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 139/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 140/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 141/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 142/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 143/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 144/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 145/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 146/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 147/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 148/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 149/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "Epoch: 150/150.. Training Loss: 0.000.. Test Loss: 0.177.. Test Accuracy: 0.996\n", "\n", "Mixed precision:\n", "Total execution time = 7.507 sec\n", "Max memory used by tensors = 2737311232 bytes\n" ] } ] }, { "cell_type": "code", "source": [ "# Mixed precision model\n", "model.eval()\n", "predictions = []\n", "output = model(x_test)\n", "ps = torch.exp(output)\n", "top_p, top_class = ps.topk(1, dim=1)\n", "predictions = np.array(top_class.cpu().detach())\n", "y_pred = []\n", "for d in predictions:\n", " y_pred.append(d)\n", "y_true = []\n", "for d in y_test:\n", " y_true.append(int(d))\n", "y_true\n", "print('F-score: ', f1_score(y_true, y_pred, average='macro'))\n", "\n", "print('Accuracy: ', accuracy_score(y_true, y_pred))" ], "metadata": { "id": "UCNKR4tE1Ign", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "6e981ca3-f1ad-4b1d-f601-64a50432f425" }, "execution_count": 252, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "F-score: 0.9845942906441127\n", "Accuracy: 0.999\n" ] } ] } ] }