From 7abd64120b221a1cb25c6b63065a0bc545a1de35 Mon Sep 17 00:00:00 2001
From: yhw991228 <yhw991228@ajou.ac.kr>
Date: Sun, 26 Jun 2022 22:38:41 +0900
Subject: [PATCH] loss_function_custom

---
 .idea/.gitignore         |   8 +
 .idea/misc.xml           |   7 +
 .idea/modules.xml        |   8 +
 .idea/opensource.iml     |   8 +
 .idea/vcs.xml            |   6 +
 loss_function copy.ipynb | 332 ++++++++++++++++++++++++++++++++++++++
 loss_function.ipynb      | 335 +++++++++++++++++----------------------
 7 files changed, 515 insertions(+), 189 deletions(-)
 create mode 100644 .idea/.gitignore
 create mode 100644 .idea/misc.xml
 create mode 100644 .idea/modules.xml
 create mode 100644 .idea/opensource.iml
 create mode 100644 .idea/vcs.xml
 create mode 100644 loss_function copy.ipynb

diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..7e26374
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (base) (2)" project-jdk-type="Python SDK" />
+  <component name="PyCharmDSProjectLayout">
+    <option name="id" value="JupyterRightHiddenStructureLayout" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..32009a5
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/opensource.iml" filepath="$PROJECT_DIR$/.idea/opensource.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/opensource.iml b/.idea/opensource.iml
new file mode 100644
index 0000000..d0876a7
--- /dev/null
+++ b/.idea/opensource.iml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/loss_function copy.ipynb b/loss_function copy.ipynb
new file mode 100644
index 0000000..d637d68
--- /dev/null
+++ b/loss_function copy.ipynb	
@@ -0,0 +1,332 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import sys\n",
+    "import tensorflow as tf\n",
+    "import keras\n",
+    "from keras.models import Sequential\n",
+    "from keras.layers import Dense, Dropout, Flatten\n",
+    "from keras.layers.convolutional import Conv2D, MaxPooling2D\n",
+    "import numpy as np"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n",
+      "11493376/11490434 [==============================] - 2s 0us/step\n",
+      "11501568/11490434 [==============================] - 2s 0us/step\n"
+     ]
+    }
+   ],
+   "source": [
+    "(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "x_train shape: (60000, 28, 28, 1)\n",
+      "60000 train samples\n",
+      "10000 test samples\n"
+     ]
+    }
+   ],
+   "source": [
+    "img_rows = 28\n",
+    "img_cols = 28\n",
+    "\n",
+    "x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)\n",
+    "x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)\n",
+    "\n",
+    "x_train = x_train.astype('float32') / 255.\n",
+    "x_test = x_test.astype('float32') / 255.\n",
+    "\n",
+    "print('x_train shape:', x_train.shape)\n",
+    "print(x_train.shape[0], 'train samples')\n",
+    "print(x_test.shape[0], 'test samples')\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def ccee(predict, label):\n",
+    "    delta = 1e-7\n",
+    "    log_pred = np.log(predict + delta)\n",
+    "\n",
+    "    return -(np.sum(np.sum(label * log_pred, axis = 1)))/label.shape[0]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "AttributeError",
+     "evalue": "module 'keras.utils' has no attribute 'to_categorical'",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
+      "\u001b[1;32m/Users/yongheewon/Documents/opensource/loss_function.ipynb Cell 4'\u001b[0m in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000006?line=0'>1</a>\u001b[0m num_classes \u001b[39m=\u001b[39m \u001b[39m10\u001b[39m\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000006?line=1'>2</a>\u001b[0m y_train \u001b[39m=\u001b[39m keras\u001b[39m.\u001b[39;49mutils\u001b[39m.\u001b[39;49mto_categorical(y_train, num_classes)\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000006?line=2'>3</a>\u001b[0m y_test \u001b[39m=\u001b[39m keras\u001b[39m.\u001b[39mutils\u001b[39m.\u001b[39mto_categorical(y_test, num_classes)\n",
+      "\u001b[0;31mAttributeError\u001b[0m: module 'keras.utils' has no attribute 'to_categorical'"
+     ]
+    }
+   ],
+   "source": [
+    "num_classes = 10\n",
+    "y_train = keras.utils.to_categorical(y_train, num_classes)\n",
+    "y_test = keras.utils.to_categorical(y_test, num_classes)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "ModuleNotFoundError",
+     "evalue": "No module named 'matplotlib'",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
+      "\u001b[1;32m/Users/yongheewon/Documents/opensource/loss_function.ipynb Cell 4'\u001b[0m in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000003?line=0'>1</a>\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mrandom\u001b[39;00m\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000003?line=1'>2</a>\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mpyplot\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mplt\u001b[39;00m\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000003?line=3'>4</a>\u001b[0m predicted_result \u001b[39m=\u001b[39m model\u001b[39m.\u001b[39mpredict(x_test)\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000003?line=4'>5</a>\u001b[0m predicted_labels \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39margmax(predicted_result, axis\u001b[39m=\u001b[39m\u001b[39m1\u001b[39m)\n",
+      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'matplotlib'"
+     ]
+    }
+   ],
+   "source": [
+    "import random\n",
+    "import matplotlib.pyplot as plt\n",
+    "\n",
+    "predicted_result = model.predict(x_test)\n",
+    "predicted_labels = np.argmax(predicted_result, axis=1)\n",
+    "\n",
+    "test_labels = np.argmax(y_test, axis=1)\n",
+    "\n",
+    "count = 0\n",
+    "\n",
+    "plt.figure(figsize=(12,8))\n",
+    "for n in range(16):\n",
+    "    count += 1\n",
+    "    plt.subplot(4, 4, count)\n",
+    "    plt.imshow(x_test[n].reshape(28, 28), cmap='Greys', interpolation='nearest')\n",
+    "    tmp = \"Label:\" + str(test_labels[n]) + \", Prediction:\" + str(predicted_labels[n])\n",
+    "    plt.title(tmp)\n",
+    "\n",
+    "plt.tight_layout()\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Model: \"as3s6g-confscore-center\"\n",
+      "_________________________________________________________________\n",
+      " Layer (type)                Output Shape              Param #   \n",
+      "=================================================================\n",
+      " input_1 (InputLayer)        [(None, 75, 3)]           0         \n",
+      "                                                                 \n",
+      " c1 (Conv1D)                 (None, 75, 64)            1024      \n",
+      "                                                                 \n",
+      " c2 (Conv1D)                 (None, 75, 64)            20544     \n",
+      "                                                                 \n",
+      " conv1d (Conv1D)             (None, 75, 64)            20544     \n",
+      "                                                                 \n",
+      " c3 (Conv1D)                 (None, 75, 128)           41088     \n",
+      "                                                                 \n",
+      " c4 (Conv1D)                 (None, 75, 128)           82048     \n",
+      "                                                                 \n",
+      " c6 (Conv1D)                 (None, 75, 256)           164096    \n",
+      "                                                                 \n",
+      " c7 (Conv1D)                 (None, 75, 256)           327936    \n",
+      "                                                                 \n",
+      " c9 (Conv1D)                 (None, 75, 512)           655872    \n",
+      "                                                                 \n",
+      " c10 (Conv1D)                (None, 75, 512)           1311232   \n",
+      "                                                                 \n",
+      " conv1d_1 (Conv1D)           (None, 75, 256)           655616    \n",
+      "                                                                 \n",
+      " conv1d_2 (Conv1D)           (None, 75, 256)           65792     \n",
+      "                                                                 \n",
+      " conv1d_3 (Conv1D)           (None, 75, 128)           32896     \n",
+      "                                                                 \n",
+      " conv1d_4 (Conv1D)           (None, 75, 128)           16512     \n",
+      "                                                                 \n",
+      " flatten (Flatten)           (None, 9600)              0         \n",
+      "                                                                 \n",
+      " fc3 (Dense)                 (None, 128)               1228928   \n",
+      "                                                                 \n",
+      " dropout (Dropout)           (None, 128)               0         \n",
+      "                                                                 \n",
+      " fc4 (Dense)                 (None, 64)                8256      \n",
+      "                                                                 \n",
+      " dropout_1 (Dropout)         (None, 64)                0         \n",
+      "                                                                 \n",
+      " dense (Dense)               (None, 32)                2080      \n",
+      "                                                                 \n",
+      " dropout_2 (Dropout)         (None, 32)                0         \n",
+      "                                                                 \n",
+      " dense_1 (Dense)             (None, 16)                528       \n",
+      "                                                                 \n",
+      " dropout_3 (Dropout)         (None, 16)                0         \n",
+      "                                                                 \n",
+      " fc5 (Dense)                 (None, 12)                204       \n",
+      "                                                                 \n",
+      " reshape (Reshape)           (None, 6, 2)              0         \n",
+      "                                                                 \n",
+      "=================================================================\n",
+      "Total params: 4,635,196\n",
+      "Trainable params: 4,635,196\n",
+      "Non-trainable params: 0\n",
+      "_________________________________________________________________\n",
+      "Model: \"as3s6g-confscore-center\"\n",
+      "_________________________________________________________________\n",
+      " Layer (type)                Output Shape              Param #   \n",
+      "=================================================================\n",
+      " input_1 (InputLayer)        [(None, 75, 3)]           0         \n",
+      "                                                                 \n",
+      " c1 (Conv1D)                 (None, 75, 64)            1024      \n",
+      "                                                                 \n",
+      " c2 (Conv1D)                 (None, 75, 64)            20544     \n",
+      "                                                                 \n",
+      " conv1d (Conv1D)             (None, 75, 64)            20544     \n",
+      "                                                                 \n",
+      " c3 (Conv1D)                 (None, 75, 128)           41088     \n",
+      "                                                                 \n",
+      " c4 (Conv1D)                 (None, 75, 128)           82048     \n",
+      "                                                                 \n",
+      " c6 (Conv1D)                 (None, 75, 256)           164096    \n",
+      "                                                                 \n",
+      " c7 (Conv1D)                 (None, 75, 256)           327936    \n",
+      "                                                                 \n",
+      " c9 (Conv1D)                 (None, 75, 512)           655872    \n",
+      "                                                                 \n",
+      " c10 (Conv1D)                (None, 75, 512)           1311232   \n",
+      "                                                                 \n",
+      " conv1d_1 (Conv1D)           (None, 75, 256)           655616    \n",
+      "                                                                 \n",
+      " conv1d_2 (Conv1D)           (None, 75, 256)           65792     \n",
+      "                                                                 \n",
+      " conv1d_3 (Conv1D)           (None, 75, 128)           32896     \n",
+      "                                                                 \n",
+      " conv1d_4 (Conv1D)           (None, 75, 128)           16512     \n",
+      "                                                                 \n",
+      " flatten (Flatten)           (None, 9600)              0         \n",
+      "                                                                 \n",
+      " fc3 (Dense)                 (None, 128)               1228928   \n",
+      "                                                                 \n",
+      " dropout (Dropout)           (None, 128)               0         \n",
+      "                                                                 \n",
+      " fc4 (Dense)                 (None, 64)                8256      \n",
+      "                                                                 \n",
+      " dropout_1 (Dropout)         (None, 64)                0         \n",
+      "                                                                 \n",
+      " dense (Dense)               (None, 32)                2080      \n",
+      "                                                                 \n",
+      " dropout_2 (Dropout)         (None, 32)                0         \n",
+      "                                                                 \n",
+      " dense_1 (Dense)             (None, 16)                528       \n",
+      "                                                                 \n",
+      " dropout_3 (Dropout)         (None, 16)                0         \n",
+      "                                                                 \n",
+      " fc5 (Dense)                 (None, 12)                204       \n",
+      "                                                                 \n",
+      " reshape (Reshape)           (None, 6, 2)              0         \n",
+      "                                                                 \n",
+      "=================================================================\n",
+      "Total params: 4,635,196\n",
+      "Trainable params: 4,635,196\n",
+      "Non-trainable params: 0\n",
+      "_________________________________________________________________\n"
+     ]
+    }
+   ],
+   "source": [
+    "def create_model( img_rows,img_cols, num_classes):\n",
+    "    inputs = tf.keras.Input(shape=(img_rows, img_cols, 1))\n",
+    "    x = tf.keras.layers.Conv2D(32, kernel_size = (5,5), name='c1', padding='same',\n",
+    "                               activation='relu')(inputs)\n",
+    "    x = tf.keras.layers.MaxPool2D(pool_size = (2,2),strides = (2,2))(x)\n",
+    "    \n",
+    "    x = tf.keras.layers.Conv2D(64, kernel_size = (2,2), name='c1', padding='same',\n",
+    "                               activation='relu')(x)\n",
+    "    x = tf.keras.layers.MaxPool2D(pool_size = (2,2))(x)\n",
+    "    \n",
+    "    x = tf.keras.layers.Dropout(0.25)(x)\n",
+    "    x = tf.keras.layers.Flatten(name='flatten')(x)   \n",
+    "    x = tf.keras.layers.Dense(1000, name='fc3', activation='leaky_relu')(x)\n",
+    "    x = tf.keras.layers.Dropout(0.5)(x)\n",
+    "    x = tf.keras.layers.Dense(num_classes, activation='softmax')(x)\n",
+    "    model.summary()\n",
+    "    return model\n",
+    "\n",
+    "\n",
+    "\n",
+    "model = create_model(img_cols, img_rows, num_classes)\n",
+    "model.summary()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "interpreter": {
+   "hash": "ba2ba9c7e88b3c3c34efc930d9feb99cd3d5cee985ed7c06ee80b594abe75eb7"
+  },
+  "kernelspec": {
+   "display_name": "Python 3.8.13 ('foss')",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.13"
+  },
+  "orig_nbformat": 4
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/loss_function.ipynb b/loss_function.ipynb
index d637d68..58d9b54 100644
--- a/loss_function.ipynb
+++ b/loss_function.ipynb
@@ -2,7 +2,7 @@
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 1,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -12,31 +12,29 @@
     "from keras.models import Sequential\n",
     "from keras.layers import Dense, Dropout, Flatten\n",
     "from keras.layers.convolutional import Conv2D, MaxPooling2D\n",
+    "from keras.utils import np_utils\n",
     "import numpy as np"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "source": [],
+   "metadata": {
+    "collapsed": false
+   }
+  },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 2,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n",
-      "11493376/11490434 [==============================] - 2s 0us/step\n",
-      "11501568/11490434 [==============================] - 2s 0us/step\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [
     {
@@ -61,241 +59,200 @@
     "\n",
     "print('x_train shape:', x_train.shape)\n",
     "print(x_train.shape[0], 'train samples')\n",
-    "print(x_test.shape[0], 'test samples')\n",
-    "\n"
+    "print(x_test.shape[0], 'test samples')\n"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 4,
    "metadata": {},
    "outputs": [],
    "source": [
-    "def ccee(predict, label):\n",
+    "def ccee(y_true, y_pred):\n",
     "    delta = 1e-7\n",
-    "    log_pred = np.log(predict + delta)\n",
+    "    log_pred = tf.math.log(y_pred + delta)\n",
     "\n",
-    "    return -(np.sum(np.sum(label * log_pred, axis = 1)))/label.shape[0]"
+    "    return -(tf.reduce_sum(tf.reduce_sum(y_true * log_pred, axis = 1)))/y_true.shape[0]"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": 5,
    "metadata": {},
-   "outputs": [
-    {
-     "ename": "AttributeError",
-     "evalue": "module 'keras.utils' has no attribute 'to_categorical'",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
-      "\u001b[1;32m/Users/yongheewon/Documents/opensource/loss_function.ipynb Cell 4'\u001b[0m in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000006?line=0'>1</a>\u001b[0m num_classes \u001b[39m=\u001b[39m \u001b[39m10\u001b[39m\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000006?line=1'>2</a>\u001b[0m y_train \u001b[39m=\u001b[39m keras\u001b[39m.\u001b[39;49mutils\u001b[39m.\u001b[39;49mto_categorical(y_train, num_classes)\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000006?line=2'>3</a>\u001b[0m y_test \u001b[39m=\u001b[39m keras\u001b[39m.\u001b[39mutils\u001b[39m.\u001b[39mto_categorical(y_test, num_classes)\n",
-      "\u001b[0;31mAttributeError\u001b[0m: module 'keras.utils' has no attribute 'to_categorical'"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "num_classes = 10\n",
-    "y_train = keras.utils.to_categorical(y_train, num_classes)\n",
-    "y_test = keras.utils.to_categorical(y_test, num_classes)"
+    "y_train = keras.utils.np_utils.to_categorical(y_train, num_classes)\n",
+    "y_test = keras.utils.np_utils.to_categorical(y_test, num_classes)"
    ]
   },
   {
    "cell_type": "code",
    "execution_count": 6,
    "metadata": {},
-   "outputs": [
-    {
-     "ename": "ModuleNotFoundError",
-     "evalue": "No module named 'matplotlib'",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
-      "\u001b[1;32m/Users/yongheewon/Documents/opensource/loss_function.ipynb Cell 4'\u001b[0m in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000003?line=0'>1</a>\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mrandom\u001b[39;00m\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000003?line=1'>2</a>\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mpyplot\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mplt\u001b[39;00m\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000003?line=3'>4</a>\u001b[0m predicted_result \u001b[39m=\u001b[39m model\u001b[39m.\u001b[39mpredict(x_test)\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/yongheewon/Documents/opensource/loss_function.ipynb#ch0000003?line=4'>5</a>\u001b[0m predicted_labels \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39margmax(predicted_result, axis\u001b[39m=\u001b[39m\u001b[39m1\u001b[39m)\n",
-      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'matplotlib'"
-     ]
-    }
-   ],
-   "source": [
-    "import random\n",
-    "import matplotlib.pyplot as plt\n",
-    "\n",
-    "predicted_result = model.predict(x_test)\n",
-    "predicted_labels = np.argmax(predicted_result, axis=1)\n",
-    "\n",
-    "test_labels = np.argmax(y_test, axis=1)\n",
-    "\n",
-    "count = 0\n",
-    "\n",
-    "plt.figure(figsize=(12,8))\n",
-    "for n in range(16):\n",
-    "    count += 1\n",
-    "    plt.subplot(4, 4, count)\n",
-    "    plt.imshow(x_test[n].reshape(28, 28), cmap='Greys', interpolation='nearest')\n",
-    "    tmp = \"Label:\" + str(test_labels[n]) + \", Prediction:\" + str(predicted_labels[n])\n",
-    "    plt.title(tmp)\n",
-    "\n",
-    "plt.tight_layout()\n",
-    "plt.show()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 13,
-   "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "Model: \"as3s6g-confscore-center\"\n",
+      "28 28\n",
+      "Model: \"image_class\"\n",
       "_________________________________________________________________\n",
       " Layer (type)                Output Shape              Param #   \n",
       "=================================================================\n",
-      " input_1 (InputLayer)        [(None, 75, 3)]           0         \n",
-      "                                                                 \n",
-      " c1 (Conv1D)                 (None, 75, 64)            1024      \n",
-      "                                                                 \n",
-      " c2 (Conv1D)                 (None, 75, 64)            20544     \n",
-      "                                                                 \n",
-      " conv1d (Conv1D)             (None, 75, 64)            20544     \n",
-      "                                                                 \n",
-      " c3 (Conv1D)                 (None, 75, 128)           41088     \n",
-      "                                                                 \n",
-      " c4 (Conv1D)                 (None, 75, 128)           82048     \n",
-      "                                                                 \n",
-      " c6 (Conv1D)                 (None, 75, 256)           164096    \n",
-      "                                                                 \n",
-      " c7 (Conv1D)                 (None, 75, 256)           327936    \n",
-      "                                                                 \n",
-      " c9 (Conv1D)                 (None, 75, 512)           655872    \n",
-      "                                                                 \n",
-      " c10 (Conv1D)                (None, 75, 512)           1311232   \n",
-      "                                                                 \n",
-      " conv1d_1 (Conv1D)           (None, 75, 256)           655616    \n",
-      "                                                                 \n",
-      " conv1d_2 (Conv1D)           (None, 75, 256)           65792     \n",
-      "                                                                 \n",
-      " conv1d_3 (Conv1D)           (None, 75, 128)           32896     \n",
-      "                                                                 \n",
-      " conv1d_4 (Conv1D)           (None, 75, 128)           16512     \n",
-      "                                                                 \n",
-      " flatten (Flatten)           (None, 9600)              0         \n",
-      "                                                                 \n",
-      " fc3 (Dense)                 (None, 128)               1228928   \n",
+      " input_1 (InputLayer)        [(None, 28, 28, 1)]       0         \n",
       "                                                                 \n",
-      " dropout (Dropout)           (None, 128)               0         \n",
+      " conv2d (Conv2D)             (None, 28, 28, 32)        832       \n",
       "                                                                 \n",
-      " fc4 (Dense)                 (None, 64)                8256      \n",
+      " max_pooling2d (MaxPooling2D  (None, 14, 14, 32)       0         \n",
+      " )                                                               \n",
       "                                                                 \n",
-      " dropout_1 (Dropout)         (None, 64)                0         \n",
+      " conv2d_1 (Conv2D)           (None, 14, 14, 64)        8256      \n",
       "                                                                 \n",
-      " dense (Dense)               (None, 32)                2080      \n",
+      " max_pooling2d_1 (MaxPooling  (None, 7, 7, 64)         0         \n",
+      " 2D)                                                             \n",
       "                                                                 \n",
-      " dropout_2 (Dropout)         (None, 32)                0         \n",
+      " dropout (Dropout)           (None, 7, 7, 64)          0         \n",
       "                                                                 \n",
-      " dense_1 (Dense)             (None, 16)                528       \n",
+      " flatten (Flatten)           (None, 3136)              0         \n",
       "                                                                 \n",
-      " dropout_3 (Dropout)         (None, 16)                0         \n",
+      " dense (Dense)               (None, 1000)              3137000   \n",
       "                                                                 \n",
-      " fc5 (Dense)                 (None, 12)                204       \n",
+      " dropout_1 (Dropout)         (None, 1000)              0         \n",
       "                                                                 \n",
-      " reshape (Reshape)           (None, 6, 2)              0         \n",
+      " dense_1 (Dense)             (None, 10)                10010     \n",
       "                                                                 \n",
       "=================================================================\n",
-      "Total params: 4,635,196\n",
-      "Trainable params: 4,635,196\n",
-      "Non-trainable params: 0\n",
-      "_________________________________________________________________\n",
-      "Model: \"as3s6g-confscore-center\"\n",
-      "_________________________________________________________________\n",
-      " Layer (type)                Output Shape              Param #   \n",
-      "=================================================================\n",
-      " input_1 (InputLayer)        [(None, 75, 3)]           0         \n",
-      "                                                                 \n",
-      " c1 (Conv1D)                 (None, 75, 64)            1024      \n",
-      "                                                                 \n",
-      " c2 (Conv1D)                 (None, 75, 64)            20544     \n",
-      "                                                                 \n",
-      " conv1d (Conv1D)             (None, 75, 64)            20544     \n",
-      "                                                                 \n",
-      " c3 (Conv1D)                 (None, 75, 128)           41088     \n",
-      "                                                                 \n",
-      " c4 (Conv1D)                 (None, 75, 128)           82048     \n",
-      "                                                                 \n",
-      " c6 (Conv1D)                 (None, 75, 256)           164096    \n",
-      "                                                                 \n",
-      " c7 (Conv1D)                 (None, 75, 256)           327936    \n",
-      "                                                                 \n",
-      " c9 (Conv1D)                 (None, 75, 512)           655872    \n",
-      "                                                                 \n",
-      " c10 (Conv1D)                (None, 75, 512)           1311232   \n",
-      "                                                                 \n",
-      " conv1d_1 (Conv1D)           (None, 75, 256)           655616    \n",
-      "                                                                 \n",
-      " conv1d_2 (Conv1D)           (None, 75, 256)           65792     \n",
-      "                                                                 \n",
-      " conv1d_3 (Conv1D)           (None, 75, 128)           32896     \n",
-      "                                                                 \n",
-      " conv1d_4 (Conv1D)           (None, 75, 128)           16512     \n",
-      "                                                                 \n",
-      " flatten (Flatten)           (None, 9600)              0         \n",
-      "                                                                 \n",
-      " fc3 (Dense)                 (None, 128)               1228928   \n",
-      "                                                                 \n",
-      " dropout (Dropout)           (None, 128)               0         \n",
-      "                                                                 \n",
-      " fc4 (Dense)                 (None, 64)                8256      \n",
-      "                                                                 \n",
-      " dropout_1 (Dropout)         (None, 64)                0         \n",
-      "                                                                 \n",
-      " dense (Dense)               (None, 32)                2080      \n",
-      "                                                                 \n",
-      " dropout_2 (Dropout)         (None, 32)                0         \n",
-      "                                                                 \n",
-      " dense_1 (Dense)             (None, 16)                528       \n",
-      "                                                                 \n",
-      " dropout_3 (Dropout)         (None, 16)                0         \n",
-      "                                                                 \n",
-      " fc5 (Dense)                 (None, 12)                204       \n",
-      "                                                                 \n",
-      " reshape (Reshape)           (None, 6, 2)              0         \n",
-      "                                                                 \n",
-      "=================================================================\n",
-      "Total params: 4,635,196\n",
-      "Trainable params: 4,635,196\n",
+      "Total params: 3,156,098\n",
+      "Trainable params: 3,156,098\n",
       "Non-trainable params: 0\n",
       "_________________________________________________________________\n"
      ]
     }
    ],
    "source": [
-    "def create_model( img_rows,img_cols, num_classes):\n",
-    "    inputs = tf.keras.Input(shape=(img_rows, img_cols, 1))\n",
-    "    x = tf.keras.layers.Conv2D(32, kernel_size = (5,5), name='c1', padding='same',\n",
+    "def create_model_( img_rows,img_cols, num_classes):\n",
+    "    inputs = tf.keras.Input(shape=(28, 28, 1))\n",
+    "    x = tf.keras.layers.Conv2D(32, kernel_size = (5,5), padding='same',\n",
     "                               activation='relu')(inputs)\n",
     "    x = tf.keras.layers.MaxPool2D(pool_size = (2,2),strides = (2,2))(x)\n",
     "    \n",
-    "    x = tf.keras.layers.Conv2D(64, kernel_size = (2,2), name='c1', padding='same',\n",
+    "    x = tf.keras.layers.Conv2D(64, kernel_size = (2,2),padding='same',\n",
     "                               activation='relu')(x)\n",
     "    x = tf.keras.layers.MaxPool2D(pool_size = (2,2))(x)\n",
     "    \n",
     "    x = tf.keras.layers.Dropout(0.25)(x)\n",
-    "    x = tf.keras.layers.Flatten(name='flatten')(x)   \n",
-    "    x = tf.keras.layers.Dense(1000, name='fc3', activation='leaky_relu')(x)\n",
+    "    x = tf.keras.layers.Flatten()(x)   \n",
+    "    x = tf.keras.layers.Dense(1000, activation='leaky_relu')(x)\n",
     "    x = tf.keras.layers.Dropout(0.5)(x)\n",
-    "    x = tf.keras.layers.Dense(num_classes, activation='softmax')(x)\n",
-    "    model.summary()\n",
+    "    outputs = tf.keras.layers.Dense(num_classes, activation='softmax')(x)\n",
+    "    \n",
+    "    model = keras.Model(inputs, outputs, name='image_class')\n",
     "    return model\n",
     "\n",
     "\n",
-    "\n",
-    "model = create_model(img_cols, img_rows, num_classes)\n",
+    "print(img_cols, img_rows)\n",
+    "model = create_model_(img_rows,img_cols, num_classes)\n",
     "model.summary()"
    ]
   },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "outputs": [],
+   "source": [],
+   "metadata": {
+    "collapsed": false,
+    "pycharm": {
+     "name": "#%%\n"
+    }
+   }
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Epoch 1/10\n",
+      "   1/6000 [..............................] - ETA: 17:42 - loss: 2.2814 - accuracy: 0.2000"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "2022-06-26 11:32:02.208949: W tensorflow/core/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "6000/6000 [==============================] - 96s 16ms/step - loss: 0.1236 - accuracy: 0.9616 - val_loss: 0.0493 - val_accuracy: 0.9853\n",
+      "Epoch 2/10\n",
+      "6000/6000 [==============================] - 150s 25ms/step - loss: 0.0680 - accuracy: 0.9796 - val_loss: 0.0501 - val_accuracy: 0.9845\n",
+      "Epoch 3/10\n",
+      "6000/6000 [==============================] - 186s 31ms/step - loss: 0.0557 - accuracy: 0.9835 - val_loss: 0.0439 - val_accuracy: 0.9856\n",
+      "Epoch 4/10\n",
+      "6000/6000 [==============================] - 206s 34ms/step - loss: 0.0517 - accuracy: 0.9848 - val_loss: 0.0337 - val_accuracy: 0.9890\n",
+      "Epoch 5/10\n",
+      "6000/6000 [==============================] - 180s 30ms/step - loss: 0.0480 - accuracy: 0.9861 - val_loss: 0.0295 - val_accuracy: 0.9912\n",
+      "Epoch 6/10\n",
+      "6000/6000 [==============================] - 159s 26ms/step - loss: 0.0436 - accuracy: 0.9869 - val_loss: 0.0415 - val_accuracy: 0.9880\n",
+      "Epoch 7/10\n",
+      "6000/6000 [==============================] - 162s 27ms/step - loss: 0.0492 - accuracy: 0.9863 - val_loss: 0.0433 - val_accuracy: 0.9876\n",
+      "Epoch 8/10\n",
+      "6000/6000 [==============================] - 139s 23ms/step - loss: 0.0454 - accuracy: 0.9875 - val_loss: 0.0372 - val_accuracy: 0.9901\n",
+      "Epoch 9/10\n",
+      "6000/6000 [==============================] - 138s 23ms/step - loss: 0.0424 - accuracy: 0.9883 - val_loss: 0.0314 - val_accuracy: 0.9905\n",
+      "Epoch 10/10\n",
+      "6000/6000 [==============================] - 133s 22ms/step - loss: 0.0421 - accuracy: 0.9885 - val_loss: 0.0401 - val_accuracy: 0.9893\n"
+     ]
+    }
+   ],
+   "source": [
+    "model.compile( loss = ccee,optimizer='adam', metrics= ['accuracy'] )\n",
+    "hist = model.fit(x_train, y_train, batch_size=10, epochs=  10, verbose=1, validation_data=(x_test, y_test))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<keras.callbacks.History at 0x16bb95e80>"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "hist"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
   {
    "cell_type": "code",
    "execution_count": null,
@@ -329,4 +286,4 @@
  },
  "nbformat": 4,
  "nbformat_minor": 2
-}
+}
\ No newline at end of file
-- 
GitLab