{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "DweYe9FcbMK_" }, "source": [ "##### Copyright 2018 The TensorFlow Authors.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2022-12-14T20:56:15.991708Z", "iopub.status.busy": "2022-12-14T20:56:15.991463Z", "iopub.status.idle": "2022-12-14T20:56:15.995907Z", "shell.execute_reply": "2022-12-14T20:56:15.995280Z" }, "id": "AVV2e0XKbJeX" }, "outputs": [], "source": [ "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "id": "sZfSvVcDo6GQ" }, "source": [ "# 텍스트 로드하기" ] }, { "cell_type": "markdown", "metadata": { "id": "giK0nMbZFnoR" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
TensorFlow.org에서 보기 Google Colab에서 실행GitHub에서 소스 보기노트북 다운로드
" ] }, { "cell_type": "markdown", "metadata": { "id": "dwlfPb11GH8J" }, "source": [ "이 튜토리얼은 텍스트를 로드하고 전처리하는 두 가지 방법을 보여 줍니다.\n", "\n", "- 먼저 Keras 유틸리티와 전처리 레이어를 사용합니다. 여기에는 데이터 표준화, 토큰화 및 벡터화를 위해 데이터를 `tf.data.Dataset`와 `tf.keras.layers.TextVectorization`으로 변환하는 `tf.keras.utils.text_dataset_from_directory`가 포함되어 있습니다. TensorFlow가 처음이라면 여기서부터 시작해야 합니다.\n", "- 그런 다음 `tf.data.TextLineDataset`와 같은 하위 수준 유틸리티를 사용하여 텍스트 파일을 로드하고, 보다 세밀한 제어를 위해 `text.UnicodeScriptTokenizer` 및 `text.case_fold_utf8`과 같은 [TensorFlow Text](https://www.tensorflow.org/text) API를 사용하여 데이터를 처리합니다." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:15.999735Z", "iopub.status.busy": "2022-12-14T20:56:15.999151Z", "iopub.status.idle": "2022-12-14T20:56:43.507816Z", "shell.execute_reply": "2022-12-14T20:56:43.506843Z" }, "id": "sa6IKWvADqH7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow-text==2.8.*\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Downloading tensorflow_text-2.8.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.9 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: tensorflow-hub>=0.8.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow-text==2.8.*) (0.12.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow<2.9,>=2.8.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Downloading tensorflow-2.8.4-cp39-cp39-manylinux2010_x86_64.whl (498.1 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: libclang>=9.0.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (14.0.6)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: absl-py>=0.4.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (1.3.0)\r\n", "Requirement already satisfied: astunparse>=1.6.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (1.6.3)\r\n", "Requirement already satisfied: setuptools in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (65.6.3)\r\n", "Requirement already satisfied: opt-einsum>=2.3.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (3.3.0)\r\n", "Requirement already satisfied: typing-extensions>=3.6.6 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (4.4.0)\r\n", "Collecting tensorboard<2.9,>=2.8\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Downloading tensorboard-2.8.0-py3-none-any.whl (5.8 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: termcolor>=1.1.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (2.1.1)\r\n", "Requirement already satisfied: gast>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (0.4.0)\r\n", "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (1.51.1)\r\n", "Requirement already satisfied: protobuf<3.20,>=3.9.2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (3.19.6)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting keras-preprocessing>=1.1.1\r\n", " Downloading Keras_Preprocessing-1.1.2-py2.py3-none-any.whl (42 kB)\r\n", "Requirement already satisfied: google-pasta>=0.1.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (0.2.0)\r\n", "Requirement already satisfied: wrapt>=1.11.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (1.14.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting tensorflow-estimator<2.9,>=2.8\r\n", " Downloading tensorflow_estimator-2.8.0-py2.py3-none-any.whl (462 kB)\r\n", "Requirement already satisfied: h5py>=2.9.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (3.7.0)\r\n", "Requirement already satisfied: numpy>=1.20 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (1.24.0rc2)\r\n", "Requirement already satisfied: flatbuffers>=1.12 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (22.12.6)\r\n", "Requirement already satisfied: six>=1.12.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (1.16.0)\r\n", "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (0.28.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Collecting keras<2.9,>=2.8.0rc0\r\n", " Downloading keras-2.8.0-py2.py3-none-any.whl (1.4 MB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: wheel<1.0,>=0.23.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from astunparse>=1.6.0->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (0.37.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: requests<3,>=2.21.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (2.28.1)\r\n", "Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (0.6.1)\r\n", "Requirement already satisfied: markdown>=2.6.8 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (3.4.1)\r\n", "Requirement already satisfied: werkzeug>=0.11.15 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (2.2.2)\r\n", "Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (1.8.1)\r\n", "Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (0.4.6)\r\n", "Requirement already satisfied: google-auth<3,>=1.6.3 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (2.15.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: rsa<5,>=3.1.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (4.9)\r\n", "Requirement already satisfied: pyasn1-modules>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (0.3.0rc1)\r\n", "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (5.2.0)\r\n", "Requirement already satisfied: requests-oauthlib>=0.7.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (1.3.1)\r\n", "Requirement already satisfied: importlib-metadata>=4.4 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from markdown>=2.6.8->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (5.1.0)\r\n", "Requirement already satisfied: charset-normalizer<3,>=2 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (2.1.1)\r\n", "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (1.26.13)\r\n", "Requirement already satisfied: idna<4,>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (3.4)\r\n", "Requirement already satisfied: certifi>=2017.4.17 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (2022.12.7)\r\n", "Requirement already satisfied: MarkupSafe>=2.1.1 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from werkzeug>=0.11.15->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (2.1.1)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: zipp>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (3.11.0)\r\n", "Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (0.5.0rc2)\r\n", "Requirement already satisfied: oauthlib>=3.0.0 in /tmpfs/src/tf_docs_env/lib/python3.9/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.9,>=2.8->tensorflow<2.9,>=2.8.0->tensorflow-text==2.8.*) (3.2.2)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Installing collected packages: tensorflow-estimator, keras, keras-preprocessing, tensorboard, tensorflow, tensorflow-text\r\n", " Attempting uninstall: tensorflow-estimator\r\n", " Found existing installation: tensorflow-estimator 2.11.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling tensorflow-estimator-2.11.0:\r\n", " Successfully uninstalled tensorflow-estimator-2.11.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: keras\r\n", " Found existing installation: keras 2.11.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling keras-2.11.0:\r\n", " Successfully uninstalled keras-2.11.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: tensorboard\r\n", " Found existing installation: tensorboard 2.11.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling tensorboard-2.11.0:\r\n", " Successfully uninstalled tensorboard-2.11.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Attempting uninstall: tensorflow\r\n", " Found existing installation: tensorflow 2.11.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Uninstalling tensorflow-2.11.0:\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Successfully uninstalled tensorflow-2.11.0\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Successfully installed keras-2.8.0 keras-preprocessing-1.1.2 tensorboard-2.8.0 tensorflow-2.8.4 tensorflow-estimator-2.8.0 tensorflow-text-2.8.2\r\n" ] } ], "source": [ "!pip install \"tensorflow-text==2.8.*\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:43.512583Z", "iopub.status.busy": "2022-12-14T20:56:43.511878Z", "iopub.status.idle": "2022-12-14T20:56:46.246480Z", "shell.execute_reply": "2022-12-14T20:56:46.245713Z" }, "id": "baYFZMW_bJHh" }, "outputs": [], "source": [ "import collections\n", "import pathlib\n", "\n", "import tensorflow as tf\n", "\n", "from tensorflow.keras import layers\n", "from tensorflow.keras import losses\n", "from tensorflow.keras import utils\n", "from tensorflow.keras.layers import TextVectorization\n", "\n", "import tensorflow_datasets as tfds\n", "import tensorflow_text as tf_text" ] }, { "cell_type": "markdown", "metadata": { "id": "Az-d_K5_HQ5k" }, "source": [ "## 예제 1: 스택 오버플로 질문에 대한 태그 예측하기\n", "\n", "첫 번째 예제로 스택 오버플로에서 프로그래밍 질문 데이터세트를 다운로드합니다. 각 질문(*\"값으로 사전을 어떻게 정렬하나요?\"*)마다 정확히 하나의 태그(`Python`, `CSharp`, `JavaScript`, 또는 `Java`)가 레이블로 지정됩니다. 여러분의 작업은 질문에 대한 태그를 예측하는 모델을 개발하는 것입니다. 이것은 중요하고 널리 적용 가능한 머신러닝 문제인 다중 클래스 분류 예제입니다." ] }, { "cell_type": "markdown", "metadata": { "id": "tjC3yLa5IjP7" }, "source": [ "### 데이터세트 다운로드 및 탐색하기\n", "\n", "`tf.keras.utils.get_file`을 사용하여 스택 오버플로 데이터세트를 다운로드하고, 디렉터리 구조를 탐색하여 시작하도록 합니다." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:46.251166Z", "iopub.status.busy": "2022-12-14T20:56:46.250744Z", "iopub.status.idle": "2022-12-14T20:56:48.269332Z", "shell.execute_reply": "2022-12-14T20:56:48.268507Z" }, "id": "8ELgzA6SHTuV" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/stack_overflow_16k.tar.gz\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 16384/6053168 [..............................] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6053888/6053168 [==============================] - 0s 0us/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "6062080/6053168 [==============================] - 0s 0us/step\n" ] } ], "source": [ "data_url = 'https://storage.googleapis.com/download.tensorflow.org/data/stack_overflow_16k.tar.gz'\n", "\n", "dataset_dir = utils.get_file(\n", " origin=data_url,\n", " untar=True,\n", " cache_dir='stack_overflow',\n", " cache_subdir='')\n", "\n", "dataset_dir = pathlib.Path(dataset_dir).parent" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:48.273880Z", "iopub.status.busy": "2022-12-14T20:56:48.273331Z", "iopub.status.idle": "2022-12-14T20:56:48.280224Z", "shell.execute_reply": "2022-12-14T20:56:48.279598Z" }, "id": "jIrPl5fUH2gb" }, "outputs": [ { "data": { "text/plain": [ "[PosixPath('/tmp/.keras/test'),\n", " PosixPath('/tmp/.keras/train'),\n", " PosixPath('/tmp/.keras/README.md'),\n", " PosixPath('/tmp/.keras/stack_overflow_16k.tar.gz')]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(dataset_dir.iterdir())" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:48.284011Z", "iopub.status.busy": "2022-12-14T20:56:48.283542Z", "iopub.status.idle": "2022-12-14T20:56:48.288252Z", "shell.execute_reply": "2022-12-14T20:56:48.287606Z" }, "id": "fEoV7YByJoWQ" }, "outputs": [ { "data": { "text/plain": [ "[PosixPath('/tmp/.keras/train/csharp'),\n", " PosixPath('/tmp/.keras/train/javascript'),\n", " PosixPath('/tmp/.keras/train/python'),\n", " PosixPath('/tmp/.keras/train/java')]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_dir = dataset_dir/'train'\n", "list(train_dir.iterdir())" ] }, { "cell_type": "markdown", "metadata": { "id": "3mxAN17MhEh0" }, "source": [ "`train/csharp`, `train/java`, `train/python` 및 `train/javascript` 디렉터리에는 많은 텍스트 파일이 포함되어 있으며, 각 텍스트 파일의 내용은 스택 오버플로 질문입니다.\n", "\n", "다음과 같이 예제 파일을 출력하고 데이터를 검사합니다." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:48.291460Z", "iopub.status.busy": "2022-12-14T20:56:48.291021Z", "iopub.status.idle": "2022-12-14T20:56:48.294868Z", "shell.execute_reply": "2022-12-14T20:56:48.294216Z" }, "id": "Go1vTSGdJu08" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "why does this blank program print true x=true.def stupid():. x=false.stupid().print x\n", "\n" ] } ], "source": [ "sample_file = train_dir/'python/1755.txt'\n", "\n", "with open(sample_file) as f:\n", " print(f.read())" ] }, { "cell_type": "markdown", "metadata": { "id": "deWBTkpJiO7D" }, "source": [ "### 데이터세트 로드하기\n", "\n", "다음으로 디스크로부터 데이터를 로드하고 데이터를 훈련에 적합한 형식으로 준비합니다. 이렇게 하기 위해 여러분은 `tf.keras.utils.text_dataset_from_directory` 유틸리티를 사용하여 레이블이 지정된 `tf.data.Dataset`를 생성합니다. `tf.data`는 입력 파이프라인을 구축하는 강력한 도구 모음입니다([tf.data: TensorFlow 입력 파이프라인 빌드](../../guide/data.ipynb) 가이드에서 자세히 알아보세요).\n", "\n", "`tf.keras.utils.text_dataset_from_directory` API는 다음과 같은 디렉터리 구조를 예상합니다.\n", "\n", "```\n", "train/\n", "...csharp/\n", "......1.txt\n", "......2.txt\n", "...java/\n", "......1.txt\n", "......2.txt\n", "...javascript/\n", "......1.txt\n", "......2.txt\n", "...python/\n", "......1.txt\n", "......2.txt\n", "```" ] }, { "cell_type": "markdown", "metadata": { "id": "Dyl6JTAjlbQV" }, "source": [ "머신러닝 실험을 실행할 때 데이터세트를 [훈련](https://developers.google.com/machine-learning/glossary#training_set), [검증](https://developers.google.com/machine-learning/glossary#validation_set) 및 [테스트](https://developers.google.com/machine-learning/glossary#test-set)의 세 부분으로 나누는 것이 가장 좋습니다.\n", "\n", "스택 오버플로 데이터세트는 이미 훈련 세트와 테스트 세트로 나누어져 있지만 여기에는 검증 세트가 없습니다.\n", "\n", "`validation_split`이 `0.2`(즉, 20%)로 설정된 `tf.keras.utils.text_dataset_from_directory`를 사용하여 훈련 데이터를 80:20의 비율로 분할하는 검증 세트를 생성합니다." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:48.298192Z", "iopub.status.busy": "2022-12-14T20:56:48.297628Z", "iopub.status.idle": "2022-12-14T20:56:51.956872Z", "shell.execute_reply": "2022-12-14T20:56:51.956163Z" }, "id": "qqyliMw8N-az" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 8000 files belonging to 4 classes.\n", "Using 6400 files for training.\n" ] } ], "source": [ "batch_size = 32\n", "seed = 42\n", "\n", "raw_train_ds = utils.text_dataset_from_directory(\n", " train_dir,\n", " batch_size=batch_size,\n", " validation_split=0.2,\n", " subset='training',\n", " seed=seed)" ] }, { "cell_type": "markdown", "metadata": { "id": "DMI_gPLfloD7" }, "source": [ "이전 셀 출력을 통해 알 수 있듯이 훈련 폴더에는 8,000개의 예제가 있으며 여러분은 그 중 80%(또는 6,400개의 예제)를 훈련에 사용할 것입니다. 여러분은 `tf.data.Dataset`를 `Model.fit`에 직접 전달하여 모델을 훈련할 수 있다는 것을 곧 배우게 될 것입니다.\n", "\n", "먼저 데이터세트를 반복하고 몇 가지 예제를 인쇄하여 데이터에 대한 감각을 익히세요.\n", "\n", "참고: 분류 문제의 난이도를 높이기 위해 데이터세트 작성자는 프로그래밍 질문에서 *Python*, *CSharp*, *JavaScript* 또는 *Java*라는 단어를 *blank*로 대체했습니다." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:51.961169Z", "iopub.status.busy": "2022-12-14T20:56:51.960526Z", "iopub.status.idle": "2022-12-14T20:56:51.989610Z", "shell.execute_reply": "2022-12-14T20:56:51.988937Z" }, "id": "_JMTyZ6Glt_C" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Question: b'\"my tester is going to the wrong constructor i am new to programming so if i ask a question that can be easily fixed, please forgive me. my program has a tester class with a main. when i send that to my regularpolygon class, it sends it to the wrong constructor. i have two constructors. 1 without perameters..public regularpolygon(). {. mynumsides = 5;. mysidelength = 30;. }//end default constructor...and my second, with perameters. ..public regularpolygon(int numsides, double sidelength). {. mynumsides = numsides;. mysidelength = sidelength;. }// end constructor...in my tester class i have these two lines:..regularpolygon shape = new regularpolygon(numsides, sidelength);. shape.menu();...numsides and sidelength were declared and initialized earlier in the testing class...so what i want to happen, is the tester class sends numsides and sidelength to the second constructor and use it in that class. but it only uses the default constructor, which therefor ruins the whole rest of the program. can somebody help me?..for those of you who want to see more of my code: here you go..public double vertexangle(). {. system.out.println(\"\"the vertex angle method: \"\" + mynumsides);// prints out 5. system.out.println(\"\"the vertex angle method: \"\" + mysidelength); // prints out 30.. double vertexangle;. vertexangle = ((mynumsides - 2.0) / mynumsides) * 180.0;. return vertexangle;. }//end method vertexangle..public void menu().{. system.out.println(mynumsides); // prints out what the user puts in. system.out.println(mysidelength); // prints out what the user puts in. gotographic();. calcr(mynumsides, mysidelength);. calcr(mynumsides, mysidelength);. print(); .}// end menu...this is my entire tester class:..public static void main(string[] arg).{. int numsides;. double sidelength;. scanner keyboard = new scanner(system.in);.. system.out.println(\"\"welcome to the regular polygon program!\"\");. system.out.println();.. system.out.print(\"\"enter the number of sides of the polygon ==> \"\");. numsides = keyboard.nextint();. system.out.println();.. system.out.print(\"\"enter the side length of each side ==> \"\");. sidelength = keyboard.nextdouble();. system.out.println();.. regularpolygon shape = new regularpolygon(numsides, sidelength);. shape.menu();.}//end main...for testing it i sent it numsides 4 and sidelength 100.\"\\n'\n", "Label: 1\n", "Question: b'\"blank code slow skin detection this code changes the color space to lab and using a threshold finds the skin area of an image. but it\\'s ridiculously slow. i don\\'t know how to make it faster ? ..from colormath.color_objects import *..def skindetection(img, treshold=80, color=[255,20,147]):.. print img.shape. res=img.copy(). for x in range(img.shape[0]):. for y in range(img.shape[1]):. rgbimg=rgbcolor(img[x,y,0],img[x,y,1],img[x,y,2]). labimg=rgbimg.convert_to(\\'lab\\', debug=false). if (labimg.lab_l > treshold):. res[x,y,:]=color. else: . res[x,y,:]=img[x,y,:].. return res\"\\n'\n", "Label: 3\n", "Question: b'\"option and validation in blank i want to add a new option on my system where i want to add two text files, both rental.txt and customer.txt. inside each text are id numbers of the customer, the videotape they need and the price...i want to place it as an option on my code. right now i have:...add customer.rent return.view list.search.exit...i want to add this as my sixth option. say for example i ordered a video, it would display the price and would let me confirm the price and if i am going to buy it or not...here is my current code:.. import blank.io.*;. import blank.util.arraylist;. import static blank.lang.system.out;.. public class rentalsystem{. static bufferedreader input = new bufferedreader(new inputstreamreader(system.in));. static file file = new file(\"\"file.txt\"\");. static arraylist<string> list = new arraylist<string>();. static int rows;.. public static void main(string[] args) throws exception{. introduction();. system.out.print(\"\"nn\"\");. login();. system.out.print(\"\"nnnnnnnnnnnnnnnnnnnnnn\"\");. introduction();. string repeat;. do{. loadfile();. system.out.print(\"\"nwhat do you want to do?nn\"\");. system.out.print(\"\"n - - - - - - - - - - - - - - - - - - - - - - -\"\");. system.out.print(\"\"nn | 1. add customer | 2. rent return |n\"\");. system.out.print(\"\"n - - - - - - - - - - - - - - - - - - - - - - -\"\");. system.out.print(\"\"nn | 3. view list | 4. search |n\"\");. system.out.print(\"\"n - - - - - - - - - - - - - - - - - - - - - - -\"\");. system.out.print(\"\"nn | 5. exit |n\"\");. system.out.print(\"\"n - - - - - - - - - -\"\");. system.out.print(\"\"nnchoice:\"\");. int choice = integer.parseint(input.readline());. switch(choice){. case 1:. writedata();. break;. case 2:. rentdata();. break;. case 3:. viewlist();. break;. case 4:. search();. break;. case 5:. system.out.println(\"\"goodbye!\"\");. system.exit(0);. default:. system.out.print(\"\"invalid choice: \"\");. break;. }. system.out.print(\"\"ndo another task? [y/n] \"\");. repeat = input.readline();. }while(repeat.equals(\"\"y\"\"));.. if(repeat!=\"\"y\"\") system.out.println(\"\"ngoodbye!\"\");.. }.. public static void writedata() throws exception{. system.out.print(\"\"nname: \"\");. string cname = input.readline();. system.out.print(\"\"address: \"\");. string add = input.readline();. system.out.print(\"\"phone no.: \"\");. string pno = input.readline();. system.out.print(\"\"rental amount: \"\");. string ramount = input.readline();. system.out.print(\"\"tapenumber: \"\");. string tno = input.readline();. system.out.print(\"\"title: \"\");. string title = input.readline();. system.out.print(\"\"date borrowed: \"\");. string dborrowed = input.readline();. system.out.print(\"\"due date: \"\");. string ddate = input.readline();. createline(cname, add, pno, ramount,tno, title, dborrowed, ddate);. rentdata();. }.. public static void createline(string name, string address, string phone , string rental, string tapenumber, string title, string borrowed, string due) throws exception{. filewriter fw = new filewriter(file, true);. fw.write(\"\"nname: \"\"+name + \"\"naddress: \"\" + address +\"\"nphone no.: \"\"+ phone+\"\"nrentalamount: \"\"+rental+\"\"ntape no.: \"\"+ tapenumber+\"\"ntitle: \"\"+ title+\"\"ndate borrowed: \"\"+borrowed +\"\"ndue date: \"\"+ due+\"\":rn\"\");. fw.close();. }.. public static void loadfile() throws exception{. try{. list.clear();. fileinputstream fstream = new fileinputstream(file);. bufferedreader br = new bufferedreader(new inputstreamreader(fstream));. rows = 0;. while( br.ready()). {. list.add(br.readline());. rows++;. }. br.close();. } catch(exception e){. system.out.println(\"\"list not yet loaded.\"\");. }. }.. public static void viewlist(){. system.out.print(\"\"n~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~\"\");. system.out.print(\"\" |list of all costumers|\"\");. system.out.print(\"\"~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~\"\");. for(int i = 0; i <rows; i++){. system.out.println(list.get(i));. }. }. public static void rentdata()throws exception. { system.out.print(\"\"n~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~\"\");. system.out.print(\"\" |rent data list|\"\");. system.out.print(\"\"~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~\"\");. system.out.print(\"\"nenter customer name: \"\");. string cname = input.readline();. system.out.print(\"\"date borrowed: \"\");. string dborrowed = input.readline();. system.out.print(\"\"due date: \"\");. string ddate = input.readline();. system.out.print(\"\"return date: \"\");. string rdate = input.readline();. system.out.print(\"\"rent amount: \"\");. string ramount = input.readline();.. system.out.print(\"\"you pay:\"\"+ramount);... }. public static void search()throws exception. { system.out.print(\"\"n~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~\"\");. system.out.print(\"\" |search costumers|\"\");. system.out.print(\"\"~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~\"\");. system.out.print(\"\"nenter costumer name: \"\");. string cname = input.readline();. boolean found = false;.. for(int i=0; i < rows; i++){. string temp[] = list.get(i).split(\"\",\"\");.. if(cname.equals(temp[0])){. system.out.println(\"\"search result:nyou are \"\" + temp[0] + \"\" from \"\" + temp[1] + \"\".\"\"+ temp[2] + \"\".\"\"+ temp[3] + \"\".\"\"+ temp[4] + \"\".\"\"+ temp[5] + \"\" is \"\" + temp[6] + \"\".\"\"+ temp[7] + \"\" is \"\" + temp[8] + \"\".\"\");. found = true;. }. }.. if(!found){. system.out.print(\"\"no results.\"\");. }.. }.. public static boolean evaluate(string uname, string pass){. if (uname.equals(\"\"admin\"\")&&pass.equals(\"\"12345\"\")) return true;. else return false;. }.. public static string login()throws exception{. bufferedreader input=new bufferedreader(new inputstreamreader(system.in));. int counter=0;. do{. system.out.print(\"\"username:\"\");. string uname =input.readline();. system.out.print(\"\"password:\"\");. string pass =input.readline();.. boolean accept= evaluate(uname,pass);.. if(accept){. break;. }else{. system.out.println(\"\"incorrect username or password!\"\");. counter ++;. }. }while(counter<3);.. if(counter !=3) return \"\"login successful\"\";. else return \"\"login failed\"\";. }. public static void introduction() throws exception{.. system.out.println(\"\" - - - - - - - - - - - - - - - - - - - - - - - - -\"\");. system.out.println(\"\" ! r e n t a l !\"\");. system.out.println(\"\" ! ~ ~ ~ ~ ~ ! ================= ! ~ ~ ~ ~ ~ !\"\");. system.out.println(\"\" ! s y s t e m !\"\");. system.out.println(\"\" - - - - - - - - - - - - - - - - - - - - - - - - -\"\");. }..}\"\\n'\n", "Label: 1\n", "Question: b'\"exception: dynamic sql generation for the updatecommand is not supported against a selectcommand that does not return any key i dont know what is the problem this my code : ..string nomtable;..datatable listeetablissementtable = new datatable();.datatable listeinteretstable = new datatable();.dataset ds = new dataset();.sqldataadapter da;.sqlcommandbuilder cmdb;..private void listeinterets_click(object sender, eventargs e).{. nomtable = \"\"listeinteretstable\"\";. d.cnx.open();. da = new sqldataadapter(\"\"select nome from offices\"\", d.cnx);. ds = new dataset();. da.fill(ds, nomtable);. datagridview1.datasource = ds.tables[nomtable];.}..private void sauvgarder_click(object sender, eventargs e).{. d.cnx.open();. cmdb = new sqlcommandbuilder(da);. da.update(ds, nomtable);. d.cnx.close();.}\"\\n'\n", "Label: 0\n", "Question: b'\"parameter with question mark and super in blank, i\\'ve come across a method that is formatted like this:..public final subscription subscribe(final action1<? super t> onnext, final action1<throwable> onerror) {.}...in the first parameter, what does the question mark and super mean?\"\\n'\n", "Label: 1\n", "Question: b'call two objects wsdl the first time i got a very strange wsdl. ..i would like to call the object (interface - invoicecheck_out) do you know how?....i would like to call the object (variable) do you know how?..try to call (it`s ok)....try to call (how call this?)\\n'\n", "Label: 0\n", "Question: b\"how to correctly make the icon for systemtray in blank using icon sizes of any dimension for systemtray doesn't look good overall. .what is the correct way of making icons for windows system tray?..screenshots: http://imgur.com/zsibwn9..icon: http://imgur.com/vsh4zo8\\n\"\n", "Label: 0\n", "Question: b'\"is there a way to check a variable that exists in a different script than the original one? i\\'m trying to check if a variable, which was previously set to true in 2.py in 1.py, as 1.py is only supposed to continue if the variable is true...2.py..import os..completed = false..#some stuff here..completed = true...1.py..import 2 ..if completed == true. #do things...however i get a syntax error at ..if completed == true\"\\n'\n", "Label: 3\n", "Question: b'\"blank control flow i made a number which asks for 2 numbers with blank and responds with the corresponding message for the case. how come it doesnt work for the second number ? .regardless what i enter for the second number , i am getting the message \"\"your number is in the range 0-10\"\"...using system;.using system.collections.generic;.using system.linq;.using system.text;..namespace consoleapplication1.{. class program. {. static void main(string[] args). {. string myinput; // declaring the type of the variables. int myint;.. string number1;. int number;... console.writeline(\"\"enter a number\"\");. myinput = console.readline(); //muyinput is a string which is entry input. myint = int32.parse(myinput); // myint converts the string into an integer.. if (myint > 0). console.writeline(\"\"your number {0} is greater than zero.\"\", myint);. else if (myint < 0). console.writeline(\"\"your number {0} is less than zero.\"\", myint);. else. console.writeline(\"\"your number {0} is equal zero.\"\", myint);.. console.writeline(\"\"enter another number\"\");. number1 = console.readline(); . number = int32.parse(myinput); .. if (number < 0 || number == 0). console.writeline(\"\"your number {0} is less than zero or equal zero.\"\", number);. else if (number > 0 && number <= 10). console.writeline(\"\"your number {0} is in the range from 0 to 10.\"\", number);. else. console.writeline(\"\"your number {0} is greater than 10.\"\", number);.. console.writeline(\"\"enter another number\"\");.. }. } .}\"\\n'\n", "Label: 0\n", "Question: b'\"credentials cannot be used for ntlm authentication i am getting org.apache.commons.httpclient.auth.invalidcredentialsexception: credentials cannot be used for ntlm authentication: exception in eclipse..whether it is possible mention eclipse to take system proxy settings directly?..public class httpgetproxy {. private static final string proxy_host = \"\"proxy.****.com\"\";. private static final int proxy_port = 6050;.. public static void main(string[] args) {. httpclient client = new httpclient();. httpmethod method = new getmethod(\"\"https://kodeblank.org\"\");.. hostconfiguration config = client.gethostconfiguration();. config.setproxy(proxy_host, proxy_port);.. string username = \"\"*****\"\";. string password = \"\"*****\"\";. credentials credentials = new usernamepasswordcredentials(username, password);. authscope authscope = new authscope(proxy_host, proxy_port);.. client.getstate().setproxycredentials(authscope, credentials);.. try {. client.executemethod(method);.. if (method.getstatuscode() == httpstatus.sc_ok) {. string response = method.getresponsebodyasstring();. system.out.println(\"\"response = \"\" + response);. }. } catch (ioexception e) {. e.printstacktrace();. } finally {. method.releaseconnection();. }. }.}...exception:... dec 08, 2017 1:41:39 pm . org.apache.commons.httpclient.auth.authchallengeprocessor selectauthscheme. info: ntlm authentication scheme selected. dec 08, 2017 1:41:39 pm org.apache.commons.httpclient.httpmethoddirector executeconnect. severe: credentials cannot be used for ntlm authentication: . org.apache.commons.httpclient.usernamepasswordcredentials. org.apache.commons.httpclient.auth.invalidcredentialsexception: credentials . cannot be used for ntlm authentication: . enter code here . org.apache.commons.httpclient.usernamepasswordcredentials. at org.apache.commons.httpclient.auth.ntlmscheme.authenticate(ntlmscheme.blank:332). at org.apache.commons.httpclient.httpmethoddirector.authenticateproxy(httpmethoddirector.blank:320). at org.apache.commons.httpclient.httpmethoddirector.executeconnect(httpmethoddirector.blank:491). at org.apache.commons.httpclient.httpmethoddirector.executewithretry(httpmethoddirector.blank:391). at org.apache.commons.httpclient.httpmethoddirector.executemethod(httpmethoddirector.blank:171). at org.apache.commons.httpclient.httpclient.executemethod(httpclient.blank:397). at org.apache.commons.httpclient.httpclient.executemethod(httpclient.blank:323). at httpgetproxy.main(httpgetproxy.blank:31). dec 08, 2017 1:41:39 pm org.apache.commons.httpclient.httpmethoddirector processproxyauthchallenge. info: failure authenticating with ntlm @proxy.****.com:6050\"\\n'\n", "Label: 1\n" ] } ], "source": [ "for text_batch, label_batch in raw_train_ds.take(1):\n", " for i in range(10):\n", " print(\"Question: \", text_batch.numpy()[i])\n", " print(\"Label:\", label_batch.numpy()[i])" ] }, { "cell_type": "markdown", "metadata": { "id": "jCZGl4Q5l2sS" }, "source": [ "레이블은 `0`, `1`, `2` 또는 `3`입니다. 이들이 어떠한 문자열 레이블에 해당하는지 확인하려면 데이터세트의 `class_names` 속성을 검사하면 됩니다.\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:51.993329Z", "iopub.status.busy": "2022-12-14T20:56:51.992797Z", "iopub.status.idle": "2022-12-14T20:56:51.996870Z", "shell.execute_reply": "2022-12-14T20:56:51.996191Z" }, "id": "gIpCS7YjmGkj" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Label 0 corresponds to csharp\n", "Label 1 corresponds to java\n", "Label 2 corresponds to javascript\n", "Label 3 corresponds to python\n" ] } ], "source": [ "for i, label in enumerate(raw_train_ds.class_names):\n", " print(\"Label\", i, \"corresponds to\", label)" ] }, { "cell_type": "markdown", "metadata": { "id": "oUsdn-37qol9" }, "source": [ "다음으로 `tf.keras.utils.text_dataset_from_directory`를 사용하여 검증 및 테스트 세트를 만듭니다. 검증을 위해 훈련 세트의 나머지 1,600개 리뷰를 사용합니다.\n", "\n", "참고: `tf.keras.utils.text_dataset_from_directory`의 `validation_split` 및 `subset` 인수를 사용할 때 검증 및 훈련 분할이 겹치지 않도록 임의 시드를 지정하거나 `shuffle=False`를 전달하도록 합니다." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:52.000251Z", "iopub.status.busy": "2022-12-14T20:56:51.999749Z", "iopub.status.idle": "2022-12-14T20:56:52.192889Z", "shell.execute_reply": "2022-12-14T20:56:52.192199Z" }, "id": "x7m6sCWJQuYt" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 8000 files belonging to 4 classes.\n", "Using 1600 files for validation.\n" ] } ], "source": [ "# Create a validation set.\n", "raw_val_ds = utils.text_dataset_from_directory(\n", " train_dir,\n", " batch_size=batch_size,\n", " validation_split=0.2,\n", " subset='validation',\n", " seed=seed)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:52.196434Z", "iopub.status.busy": "2022-12-14T20:56:52.195942Z", "iopub.status.idle": "2022-12-14T20:56:52.394778Z", "shell.execute_reply": "2022-12-14T20:56:52.393870Z" }, "id": "BXMZc7fMQwKE" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 8000 files belonging to 4 classes.\n" ] } ], "source": [ "test_dir = dataset_dir/'test'\n", "\n", "# Create a test set.\n", "raw_test_ds = utils.text_dataset_from_directory(\n", " test_dir,\n", " batch_size=batch_size)" ] }, { "cell_type": "markdown", "metadata": { "id": "Xdt-ATrGRGDL" }, "source": [ "### 훈련을 위한 데이터세트 준비하기" ] }, { "cell_type": "markdown", "metadata": { "id": "N6fRti45Rlj8" }, "source": [ "다음으로 `tf.keras.layers.TextVectorization` 레이어를 사용하여 데이터를 표준화, 토큰화 및 벡터화합니다.\n", "\n", "- *표준화*는 일반적으로 데이터세트를 단순화하기 위해 구두점이나 HTML 요소를 제거하도록 텍스트를 전처리하는 것을 일컫습니다.\n", "- *토큰화*는 문자열을 토큰으로 분할하는 것을 일컫습니다(예: 문장을 공백을 사용하여 개별 단어로 분할).\n", "- *벡터화*는 신경망에 제공할 수 있도록 토큰을 숫자로 변환하는 것을 일컫습니다.\n", "\n", "위의 모든 작업은 이 레이어로 수행할 수 있습니다(`tf.keras.layers.TextVectorization` API 문서에서 각 작업에 대해 자세히 알아볼 수 있습니다).\n", "\n", "참고 사항:\n", "\n", "- 기본 표준화는 텍스트를 소문자로 변환하고 구두점을 제거합니다(`standardize='lower_and_strip_punctuation'`).\n", "- 기본 토큰화는 공백으로 분할합니다(`split='whitespace'`).\n", "- 기본 벡터화 모드는 `'int'`(`output_mode='int'`)입니다. 이 모드는 정수 인덱스를 출력합니다(토큰당 하나). 이 모드는 단어 순서를 고려하는 모델을 빌드하는 데 사용할 수 있습니다. `'binary'`와 같은 다른 모드를 사용하여 [bag-of-words](https://developers.google.com/machine-learning/glossary#bag-of-words) 모델을 빌드할 수도 있습니다.\n", "\n", "`TextVectorization`을 사용하는 표준화, 토큰화 및 벡터화에 대해 자세히 알아보기 위해 다음 두 가지 모델을 빌드합니다.\n", "\n", "- 먼저 `'binary'` 벡터화 모드를 사용하여 bag-of-words 모델을 빌드합니다.\n", "- 그런 다음 1D ConvNet에서 `'int'` 모드를 사용합니다." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:52.399170Z", "iopub.status.busy": "2022-12-14T20:56:52.398473Z", "iopub.status.idle": "2022-12-14T20:56:52.410010Z", "shell.execute_reply": "2022-12-14T20:56:52.409288Z" }, "id": "voaC43rZR0jc" }, "outputs": [], "source": [ "VOCAB_SIZE = 10000\n", "\n", "binary_vectorize_layer = TextVectorization(\n", " max_tokens=VOCAB_SIZE,\n", " output_mode='binary')" ] }, { "cell_type": "markdown", "metadata": { "id": "ifDPFxuf2Hfz" }, "source": [ "`'int'` 모드의 경우 최대 어휘 크기 외에 명시적인 최대 시퀀스 길이(`MAX_SEQUENCE_LENGTH`)를 설정해야 레이어가 패딩되거나 시퀀스를 정확히 `output_sequence_length` 값으로 자릅니다." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:52.413970Z", "iopub.status.busy": "2022-12-14T20:56:52.413424Z", "iopub.status.idle": "2022-12-14T20:56:52.419014Z", "shell.execute_reply": "2022-12-14T20:56:52.418379Z" }, "id": "XWsY01Zl2aRe" }, "outputs": [], "source": [ "MAX_SEQUENCE_LENGTH = 250\n", "\n", "int_vectorize_layer = TextVectorization(\n", " max_tokens=VOCAB_SIZE,\n", " output_mode='int',\n", " output_sequence_length=MAX_SEQUENCE_LENGTH)" ] }, { "cell_type": "markdown", "metadata": { "id": "ts6h9b5atD-Y" }, "source": [ "다음으로 전처리 레이어의 상태를 데이터세트에 맞추기 위해 `TextVectorization.adapt`를 호출합니다. 그러면 모델이 문자열 인덱스를 정수로 빌드합니다.\n", "\n", "참고: 테스트세트를 사용하면 정보가 누출되므로 `TextVectorization.adapt`를 호출할 때 훈련 데이터만 사용하는 것이 중요합니다." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:52.422462Z", "iopub.status.busy": "2022-12-14T20:56:52.421931Z", "iopub.status.idle": "2022-12-14T20:56:54.174130Z", "shell.execute_reply": "2022-12-14T20:56:54.173007Z" }, "id": "yTXsdDEqSf9e" }, "outputs": [], "source": [ "# Make a text-only dataset (without labels), then call `TextVectorization.adapt`.\n", "train_text = raw_train_ds.map(lambda text, labels: text)\n", "binary_vectorize_layer.adapt(train_text)\n", "int_vectorize_layer.adapt(train_text)" ] }, { "cell_type": "markdown", "metadata": { "id": "XKVO6Jg7Sls0" }, "source": [ "이러한 레이어를 사용하여 데이터를 전처리한 결과를 인쇄합니다." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:54.178642Z", "iopub.status.busy": "2022-12-14T20:56:54.178278Z", "iopub.status.idle": "2022-12-14T20:56:54.182706Z", "shell.execute_reply": "2022-12-14T20:56:54.181835Z" }, "id": "RngfPyArSsvM" }, "outputs": [], "source": [ "def binary_vectorize_text(text, label):\n", " text = tf.expand_dims(text, -1)\n", " return binary_vectorize_layer(text), label" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:54.186015Z", "iopub.status.busy": "2022-12-14T20:56:54.185745Z", "iopub.status.idle": "2022-12-14T20:56:54.189916Z", "shell.execute_reply": "2022-12-14T20:56:54.189067Z" }, "id": "_1W54wf0LhQ0" }, "outputs": [], "source": [ "def int_vectorize_text(text, label):\n", " text = tf.expand_dims(text, -1)\n", " return int_vectorize_layer(text), label" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:54.193679Z", "iopub.status.busy": "2022-12-14T20:56:54.193015Z", "iopub.status.idle": "2022-12-14T20:56:54.217848Z", "shell.execute_reply": "2022-12-14T20:56:54.217049Z" }, "id": "Vi_sElMiSmXe" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Question tf.Tensor(b'\"what is the difference between these two ways to create an element? var a = document.createelement(\\'div\\');..a.id = \"\"mydiv\"\";...and..var a = document.createelement(\\'div\\').id = \"\"mydiv\"\";...what is the difference between them such that the first one works and the second one doesn\\'t?\"\\n', shape=(), dtype=string)\n", "Label tf.Tensor(2, shape=(), dtype=int32)\n" ] } ], "source": [ "# Retrieve a batch (of 32 reviews and labels) from the dataset.\n", "text_batch, label_batch = next(iter(raw_train_ds))\n", "first_question, first_label = text_batch[0], label_batch[0]\n", "print(\"Question\", first_question)\n", "print(\"Label\", first_label)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:54.221422Z", "iopub.status.busy": "2022-12-14T20:56:54.221122Z", "iopub.status.idle": "2022-12-14T20:56:54.237884Z", "shell.execute_reply": "2022-12-14T20:56:54.237061Z" }, "id": "UGukZoYv2v3v" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'binary' vectorized question: tf.Tensor([[1. 1. 0. ... 0. 0. 0.]], shape=(1, 10000), dtype=float32)\n" ] } ], "source": [ "print(\"'binary' vectorized question:\",\n", " binary_vectorize_text(first_question, first_label)[0])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:54.241701Z", "iopub.status.busy": "2022-12-14T20:56:54.240962Z", "iopub.status.idle": "2022-12-14T20:56:54.251695Z", "shell.execute_reply": "2022-12-14T20:56:54.250956Z" }, "id": "Lu07FsIw2yH5" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'int' vectorized question: tf.Tensor(\n", "[[ 55 6 2 410 211 229 121 895 4 124 32 245 43 5 1 1 5 1\n", " 1 6 2 410 211 191 318 14 2 98 71 188 8 2 199 71 178 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]], shape=(1, 250), dtype=int64)\n" ] } ], "source": [ "print(\"'int' vectorized question:\",\n", " int_vectorize_text(first_question, first_label)[0])" ] }, { "cell_type": "markdown", "metadata": { "id": "wgjeF9PdS7tN" }, "source": [ "위에 표시된 것처럼 `TextVectorization`의 `'binary'` 모드는 입력에 한 번 이상 존재하는 토큰을 나타내는 배열을 반환하는 반면 `'int'` 모드는 각 토큰을 정수로 대체하기에 원래 순서를 유지합니다.\n", "\n", "레이어에서 `TextVectorization.get_vocabulary`를 호출하여 각 정수가 해당하는 토큰(문자열)을 조회할 수 있습니다." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:54.255145Z", "iopub.status.busy": "2022-12-14T20:56:54.254592Z", "iopub.status.idle": "2022-12-14T20:56:54.304330Z", "shell.execute_reply": "2022-12-14T20:56:54.303572Z" }, "id": "WpBnTZilS8wt" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1289 ---> roman\n", "313 ---> source\n", "Vocabulary size: 10000\n" ] } ], "source": [ "print(\"1289 ---> \", int_vectorize_layer.get_vocabulary()[1289])\n", "print(\"313 ---> \", int_vectorize_layer.get_vocabulary()[313])\n", "print(\"Vocabulary size: {}\".format(len(int_vectorize_layer.get_vocabulary())))" ] }, { "cell_type": "markdown", "metadata": { "id": "0kHgPE_YwHvp" }, "source": [ "모델을 훈련할 준비가 거의 되었습니다.\n", "\n", "최종 전처리 단계로 이전에 생성한 `TextVectorization` 레이어를 훈련, 검증 및 테스트 세트에 적용합니다." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:54.308316Z", "iopub.status.busy": "2022-12-14T20:56:54.307728Z", "iopub.status.idle": "2022-12-14T20:56:54.562801Z", "shell.execute_reply": "2022-12-14T20:56:54.562032Z" }, "id": "46LeHmnD55wJ" }, "outputs": [], "source": [ "binary_train_ds = raw_train_ds.map(binary_vectorize_text)\n", "binary_val_ds = raw_val_ds.map(binary_vectorize_text)\n", "binary_test_ds = raw_test_ds.map(binary_vectorize_text)\n", "\n", "int_train_ds = raw_train_ds.map(int_vectorize_text)\n", "int_val_ds = raw_val_ds.map(int_vectorize_text)\n", "int_test_ds = raw_test_ds.map(int_vectorize_text)" ] }, { "cell_type": "markdown", "metadata": { "id": "NHuAF8hYfP5Z" }, "source": [ "### 성능을 높이도록 데이터세트 구성하기\n", "\n", "다음은 I/O가 차단되지 않도록 데이터를 로드할 때 사용해야 하는 두 가지 중요한 메서드입니다.\n", "\n", "- `Dataset.cache`는 데이터가 디스크에서 로드된 후 메모리에 데이터를 보관합니다. 이렇게 하면 모델을 훈련하는 동안 데이터세트로 인한 병목 현상이 발생하지 않습니다. 데이터세트가 너무 커서 메모리에 맞지 않는 경우 이 메서드를 사용하여 성능이 뛰어난 온 디스크 캐시를 생성할 수도 있습니다. 다수의 작은 파일보다 읽기가 더 효율적입니다.\n", "- `Dataset.prefetch`는 훈련하는 동안 데이터 전처리 및 모델 실행을 중첩시킵니다.\n", "\n", "[tf.data API를 통한 성능 향상](../../guide/data_performance.ipynb) 가이드의 *프리페칭* 섹션에서 두 가지 메서드와 데이터를 디스크에 캐시하는 방법에 대해 자세히 알아볼 수 있습니다." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:54.567131Z", "iopub.status.busy": "2022-12-14T20:56:54.566577Z", "iopub.status.idle": "2022-12-14T20:56:54.570230Z", "shell.execute_reply": "2022-12-14T20:56:54.569598Z" }, "id": "PabA9DFIfSz7" }, "outputs": [], "source": [ "AUTOTUNE = tf.data.AUTOTUNE\n", "\n", "def configure_dataset(dataset):\n", " return dataset.cache().prefetch(buffer_size=AUTOTUNE)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:54.573620Z", "iopub.status.busy": "2022-12-14T20:56:54.573141Z", "iopub.status.idle": "2022-12-14T20:56:54.580947Z", "shell.execute_reply": "2022-12-14T20:56:54.580341Z" }, "id": "J8GcJLvb3JH0" }, "outputs": [], "source": [ "binary_train_ds = configure_dataset(binary_train_ds)\n", "binary_val_ds = configure_dataset(binary_val_ds)\n", "binary_test_ds = configure_dataset(binary_test_ds)\n", "\n", "int_train_ds = configure_dataset(int_train_ds)\n", "int_val_ds = configure_dataset(int_val_ds)\n", "int_test_ds = configure_dataset(int_test_ds)" ] }, { "cell_type": "markdown", "metadata": { "id": "NYGb7z_bfpGm" }, "source": [ "### 모델 훈련하기\n", "\n", "이제 신경망을 만들 차례입니다.\n", "\n", "`'binary'` 벡터화된 데이터의 경우 간단한 bag-of-words 선형 모델을 정의한 다음 데이터를 구성하고 훈련합니다." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:56:54.584654Z", "iopub.status.busy": "2022-12-14T20:56:54.584161Z", "iopub.status.idle": "2022-12-14T20:57:01.432479Z", "shell.execute_reply": "2022-12-14T20:57:01.431712Z" }, "id": "2q8iAU-VMzaN" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 2:35 - loss: 1.3772 - accuracy: 0.3438" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 18/200 [=>............................] - ETA: 0s - loss: 1.3709 - accuracy: 0.3003 " ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 36/200 [====>.........................] - ETA: 0s - loss: 1.3423 - accuracy: 0.3767" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 55/200 [=======>......................] - ETA: 0s - loss: 1.3086 - accuracy: 0.4614" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 73/200 [=========>....................] - ETA: 0s - loss: 1.2786 - accuracy: 0.5163" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 91/200 [============>.................] - ETA: 0s - loss: 1.2548 - accuracy: 0.5470" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "109/200 [===============>..............] - ETA: 0s - loss: 1.2269 - accuracy: 0.5757" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "126/200 [=================>............] - ETA: 0s - loss: 1.2066 - accuracy: 0.5928" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "144/200 [====================>.........] - ETA: 0s - loss: 1.1863 - accuracy: 0.6089" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "161/200 [=======================>......] - ETA: 0s - loss: 1.1635 - accuracy: 0.6217" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "178/200 [=========================>....] - ETA: 0s - loss: 1.1431 - accuracy: 0.6340" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "195/200 [============================>.] - ETA: 0s - loss: 1.1270 - accuracy: 0.6413" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 2s 5ms/step - loss: 1.1217 - accuracy: 0.6442 - val_loss: 0.9182 - val_accuracy: 0.7837\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2/10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.8805 - accuracy: 0.8438" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 25/200 [==>...........................] - ETA: 0s - loss: 0.8612 - accuracy: 0.8288" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 50/200 [======>.......................] - ETA: 0s - loss: 0.8501 - accuracy: 0.8275" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 74/200 [==========>...................] - ETA: 0s - loss: 0.8340 - accuracy: 0.8256" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 99/200 [=============>................] - ETA: 0s - loss: 0.8234 - accuracy: 0.8220" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "123/200 [=================>............] - ETA: 0s - loss: 0.8144 - accuracy: 0.8189" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "147/200 [=====================>........] - ETA: 0s - loss: 0.8052 - accuracy: 0.8189" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "171/200 [========================>.....] - ETA: 0s - loss: 0.7910 - accuracy: 0.8185" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "195/200 [============================>.] - ETA: 0s - loss: 0.7828 - accuracy: 0.8183" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 3ms/step - loss: 0.7805 - accuracy: 0.8181 - val_loss: 0.7533 - val_accuracy: 0.8056\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3/10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.7510 - accuracy: 0.8438" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 25/200 [==>...........................] - ETA: 0s - loss: 0.6789 - accuracy: 0.8612" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 49/200 [======>.......................] - ETA: 0s - loss: 0.6735 - accuracy: 0.8642" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 73/200 [=========>....................] - ETA: 0s - loss: 0.6595 - accuracy: 0.8652" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 97/200 [=============>................] - ETA: 0s - loss: 0.6556 - accuracy: 0.8608" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "121/200 [=================>............] - ETA: 0s - loss: 0.6491 - accuracy: 0.8605" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "145/200 [====================>.........] - ETA: 0s - loss: 0.6456 - accuracy: 0.8597" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "170/200 [========================>.....] - ETA: 0s - loss: 0.6357 - accuracy: 0.8603" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "195/200 [============================>.] - ETA: 0s - loss: 0.6307 - accuracy: 0.8611" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 3ms/step - loss: 0.6291 - accuracy: 0.8609 - val_loss: 0.6673 - val_accuracy: 0.8131\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 4/10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.6743 - accuracy: 0.8438" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 24/200 [==>...........................] - ETA: 0s - loss: 0.5747 - accuracy: 0.8815" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 48/200 [======>.......................] - ETA: 0s - loss: 0.5714 - accuracy: 0.8893" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 72/200 [=========>....................] - ETA: 0s - loss: 0.5568 - accuracy: 0.8902" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 97/200 [=============>................] - ETA: 0s - loss: 0.5548 - accuracy: 0.8843" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "121/200 [=================>............] - ETA: 0s - loss: 0.5498 - accuracy: 0.8827" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "145/200 [====================>.........] - ETA: 0s - loss: 0.5478 - accuracy: 0.8836" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "169/200 [========================>.....] - ETA: 0s - loss: 0.5406 - accuracy: 0.8844" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "193/200 [===========================>..] - ETA: 0s - loss: 0.5375 - accuracy: 0.8863" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 3ms/step - loss: 0.5355 - accuracy: 0.8861 - val_loss: 0.6135 - val_accuracy: 0.8238\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 5/10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.6175 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 24/200 [==>...........................] - ETA: 0s - loss: 0.5028 - accuracy: 0.8971" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 47/200 [======>.......................] - ETA: 0s - loss: 0.4997 - accuracy: 0.9036" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 70/200 [=========>....................] - ETA: 0s - loss: 0.4847 - accuracy: 0.9054" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 94/200 [=============>................] - ETA: 0s - loss: 0.4864 - accuracy: 0.8999" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "118/200 [================>.............] - ETA: 0s - loss: 0.4794 - accuracy: 0.8999" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "141/200 [====================>.........] - ETA: 0s - loss: 0.4790 - accuracy: 0.9014" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "165/200 [=======================>......] - ETA: 0s - loss: 0.4742 - accuracy: 0.9019" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "190/200 [===========================>..] - ETA: 0s - loss: 0.4715 - accuracy: 0.9031" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 3ms/step - loss: 0.4694 - accuracy: 0.9031 - val_loss: 0.5767 - val_accuracy: 0.8344\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 6/10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.5714 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 26/200 [==>...........................] - ETA: 0s - loss: 0.4439 - accuracy: 0.9195" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 51/200 [======>.......................] - ETA: 0s - loss: 0.4400 - accuracy: 0.9179" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 76/200 [==========>...................] - ETA: 0s - loss: 0.4318 - accuracy: 0.9178" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "101/200 [==============>...............] - ETA: 0s - loss: 0.4302 - accuracy: 0.9134" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "126/200 [=================>............] - ETA: 0s - loss: 0.4272 - accuracy: 0.9127" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "151/200 [=====================>........] - ETA: 0s - loss: 0.4264 - accuracy: 0.9123" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "176/200 [=========================>....] - ETA: 0s - loss: 0.4191 - accuracy: 0.9137" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 3ms/step - loss: 0.4191 - accuracy: 0.9150 - val_loss: 0.5499 - val_accuracy: 0.8381\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 7/10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.5323 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 25/200 [==>...........................] - ETA: 0s - loss: 0.4049 - accuracy: 0.9275" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 50/200 [======>.......................] - ETA: 0s - loss: 0.3980 - accuracy: 0.9300" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 74/200 [==========>...................] - ETA: 0s - loss: 0.3903 - accuracy: 0.9291" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 98/200 [=============>................] - ETA: 0s - loss: 0.3900 - accuracy: 0.9244" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "122/200 [=================>............] - ETA: 0s - loss: 0.3876 - accuracy: 0.9239" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "146/200 [====================>.........] - ETA: 0s - loss: 0.3860 - accuracy: 0.9242" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "171/200 [========================>.....] - ETA: 0s - loss: 0.3815 - accuracy: 0.9254" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "195/200 [============================>.] - ETA: 0s - loss: 0.3799 - accuracy: 0.9271" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 3ms/step - loss: 0.3788 - accuracy: 0.9270 - val_loss: 0.5296 - val_accuracy: 0.8394\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 8/10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.4983 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 26/200 [==>...........................] - ETA: 0s - loss: 0.3664 - accuracy: 0.9339" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 51/200 [======>.......................] - ETA: 0s - loss: 0.3618 - accuracy: 0.9344" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 76/200 [==========>...................] - ETA: 0s - loss: 0.3552 - accuracy: 0.9346" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "101/200 [==============>...............] - ETA: 0s - loss: 0.3541 - accuracy: 0.9341" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "126/200 [=================>............] - ETA: 0s - loss: 0.3516 - accuracy: 0.9338" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "150/200 [=====================>........] - ETA: 0s - loss: 0.3514 - accuracy: 0.9335" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "174/200 [=========================>....] - ETA: 0s - loss: 0.3463 - accuracy: 0.9348" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "199/200 [============================>.] - ETA: 0s - loss: 0.3463 - accuracy: 0.9361" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 3ms/step - loss: 0.3454 - accuracy: 0.9364 - val_loss: 0.5139 - val_accuracy: 0.8400\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 9/10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.4682 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 25/200 [==>...........................] - ETA: 0s - loss: 0.3403 - accuracy: 0.9337" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 49/200 [======>.......................] - ETA: 0s - loss: 0.3352 - accuracy: 0.9381" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 73/200 [=========>....................] - ETA: 0s - loss: 0.3267 - accuracy: 0.9384" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 97/200 [=============>................] - ETA: 0s - loss: 0.3269 - accuracy: 0.9365" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "122/200 [=================>............] - ETA: 0s - loss: 0.3246 - accuracy: 0.9370" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "146/200 [====================>.........] - ETA: 0s - loss: 0.3229 - accuracy: 0.9373" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "171/200 [========================>.....] - ETA: 0s - loss: 0.3195 - accuracy: 0.9391" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "196/200 [============================>.] - ETA: 0s - loss: 0.3185 - accuracy: 0.9407" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 3ms/step - loss: 0.3171 - accuracy: 0.9411 - val_loss: 0.5016 - val_accuracy: 0.8406\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 10/10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.4411 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 25/200 [==>...........................] - ETA: 0s - loss: 0.3149 - accuracy: 0.9400" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 48/200 [======>.......................] - ETA: 0s - loss: 0.3116 - accuracy: 0.9466" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 71/200 [=========>....................] - ETA: 0s - loss: 0.3017 - accuracy: 0.9476" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 95/200 [=============>................] - ETA: 0s - loss: 0.3021 - accuracy: 0.9464" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "119/200 [================>.............] - ETA: 0s - loss: 0.2977 - accuracy: 0.9464" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "143/200 [====================>.........] - ETA: 0s - loss: 0.2975 - accuracy: 0.9458" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "167/200 [========================>.....] - ETA: 0s - loss: 0.2957 - accuracy: 0.9469" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "190/200 [===========================>..] - ETA: 0s - loss: 0.2942 - accuracy: 0.9482" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 3ms/step - loss: 0.2927 - accuracy: 0.9483 - val_loss: 0.4917 - val_accuracy: 0.8419\n" ] } ], "source": [ "binary_model = tf.keras.Sequential([layers.Dense(4)])\n", "\n", "binary_model.compile(\n", " loss=losses.SparseCategoricalCrossentropy(from_logits=True),\n", " optimizer='adam',\n", " metrics=['accuracy'])\n", "\n", "history = binary_model.fit(\n", " binary_train_ds, validation_data=binary_val_ds, epochs=10)" ] }, { "cell_type": "markdown", "metadata": { "id": "EwidD-SwNIkz" }, "source": [ "그런 다음 `'int'` 벡터화된 레이어를 사용하여 1D ConvNet을 빌드합니다." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:01.436620Z", "iopub.status.busy": "2022-12-14T20:57:01.435940Z", "iopub.status.idle": "2022-12-14T20:57:01.440432Z", "shell.execute_reply": "2022-12-14T20:57:01.439790Z" }, "id": "5ztw2XH_LbVz" }, "outputs": [], "source": [ "def create_model(vocab_size, num_labels):\n", " model = tf.keras.Sequential([\n", " layers.Embedding(vocab_size, 64, mask_zero=True),\n", " layers.Conv1D(64, 5, padding=\"valid\", activation=\"relu\", strides=2),\n", " layers.GlobalMaxPooling1D(),\n", " layers.Dense(num_labels)\n", " ])\n", " return model" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:01.443540Z", "iopub.status.busy": "2022-12-14T20:57:01.443036Z", "iopub.status.idle": "2022-12-14T20:57:07.673405Z", "shell.execute_reply": "2022-12-14T20:57:07.672613Z" }, "id": "s9rG1cFRL31Z" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/5\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 7:18 - loss: 1.3919 - accuracy: 0.1875" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 16/200 [=>............................] - ETA: 0s - loss: 1.3843 - accuracy: 0.2617 " ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 32/200 [===>..........................] - ETA: 0s - loss: 1.3817 - accuracy: 0.2822" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 48/200 [======>.......................] - ETA: 0s - loss: 1.3760 - accuracy: 0.3249" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 64/200 [========>.....................] - ETA: 0s - loss: 1.3662 - accuracy: 0.3799" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 80/200 [===========>..................] - ETA: 0s - loss: 1.3522 - accuracy: 0.4082" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 96/200 [=============>................] - ETA: 0s - loss: 1.3300 - accuracy: 0.4238" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "112/200 [===============>..............] - ETA: 0s - loss: 1.2990 - accuracy: 0.4456" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "128/200 [==================>...........] - ETA: 0s - loss: 1.2671 - accuracy: 0.4661" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "144/200 [====================>.........] - ETA: 0s - loss: 1.2382 - accuracy: 0.4766" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "161/200 [=======================>......] - ETA: 0s - loss: 1.2021 - accuracy: 0.4918" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "177/200 [=========================>....] - ETA: 0s - loss: 1.1671 - accuracy: 0.5062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "193/200 [===========================>..] - ETA: 0s - loss: 1.1393 - accuracy: 0.5165" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 3s 4ms/step - loss: 1.1294 - accuracy: 0.5203 - val_loss: 0.7556 - val_accuracy: 0.6975\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2/5\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.9428 - accuracy: 0.5625" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 18/200 [=>............................] - ETA: 0s - loss: 0.8181 - accuracy: 0.6458" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 35/200 [====>.........................] - ETA: 0s - loss: 0.7550 - accuracy: 0.6893" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 52/200 [======>.......................] - ETA: 0s - loss: 0.7352 - accuracy: 0.7001" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 69/200 [=========>....................] - ETA: 0s - loss: 0.7232 - accuracy: 0.6993" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 86/200 [===========>..................] - ETA: 0s - loss: 0.7136 - accuracy: 0.7031" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "103/200 [==============>...............] - ETA: 0s - loss: 0.6928 - accuracy: 0.7160" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "120/200 [=================>............] - ETA: 0s - loss: 0.6781 - accuracy: 0.7281" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "136/200 [===================>..........] - ETA: 0s - loss: 0.6688 - accuracy: 0.7358" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "152/200 [=====================>........] - ETA: 0s - loss: 0.6530 - accuracy: 0.7444" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "168/200 [========================>.....] - ETA: 0s - loss: 0.6421 - accuracy: 0.7506" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "184/200 [==========================>...] - ETA: 0s - loss: 0.6268 - accuracy: 0.7587" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - ETA: 0s - loss: 0.6195 - accuracy: 0.7614" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 4ms/step - loss: 0.6195 - accuracy: 0.7614 - val_loss: 0.5407 - val_accuracy: 0.7950\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3/5\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.5514 - accuracy: 0.7812" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 17/200 [=>............................] - ETA: 0s - loss: 0.5070 - accuracy: 0.8438" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 33/200 [===>..........................] - ETA: 0s - loss: 0.4601 - accuracy: 0.8561" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 49/200 [======>.......................] - ETA: 0s - loss: 0.4457 - accuracy: 0.8610" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 65/200 [========>.....................] - ETA: 0s - loss: 0.4339 - accuracy: 0.8663" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 81/200 [===========>..................] - ETA: 0s - loss: 0.4341 - accuracy: 0.8592" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 97/200 [=============>................] - ETA: 0s - loss: 0.4250 - accuracy: 0.8624" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "113/200 [===============>..............] - ETA: 0s - loss: 0.4126 - accuracy: 0.8664" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "129/200 [==================>...........] - ETA: 0s - loss: 0.4038 - accuracy: 0.8716" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "145/200 [====================>.........] - ETA: 0s - loss: 0.3997 - accuracy: 0.8735" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "161/200 [=======================>......] - ETA: 0s - loss: 0.3876 - accuracy: 0.8791" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "177/200 [=========================>....] - ETA: 0s - loss: 0.3789 - accuracy: 0.8831" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "194/200 [============================>.] - ETA: 0s - loss: 0.3711 - accuracy: 0.8868" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 4ms/step - loss: 0.3703 - accuracy: 0.8869 - val_loss: 0.4717 - val_accuracy: 0.8231\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 4/5\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.3024 - accuracy: 0.9375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 18/200 [=>............................] - ETA: 0s - loss: 0.3039 - accuracy: 0.9184" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 35/200 [====>.........................] - ETA: 0s - loss: 0.2615 - accuracy: 0.9339" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 52/200 [======>.......................] - ETA: 0s - loss: 0.2533 - accuracy: 0.9381" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 68/200 [=========>....................] - ETA: 0s - loss: 0.2462 - accuracy: 0.9403" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 84/200 [===========>..................] - ETA: 0s - loss: 0.2425 - accuracy: 0.9420" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "100/200 [==============>...............] - ETA: 0s - loss: 0.2364 - accuracy: 0.9431" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "116/200 [================>.............] - ETA: 0s - loss: 0.2303 - accuracy: 0.9445" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "132/200 [==================>...........] - ETA: 0s - loss: 0.2240 - accuracy: 0.9463" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "148/200 [=====================>........] - ETA: 0s - loss: 0.2203 - accuracy: 0.9478" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "164/200 [=======================>......] - ETA: 0s - loss: 0.2130 - accuracy: 0.9495" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "181/200 [==========================>...] - ETA: 0s - loss: 0.2082 - accuracy: 0.9508" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "198/200 [============================>.] - ETA: 0s - loss: 0.2038 - accuracy: 0.9523" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 4ms/step - loss: 0.2032 - accuracy: 0.9527 - val_loss: 0.4726 - val_accuracy: 0.8200\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 5/5\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/200 [..............................] - ETA: 0s - loss: 0.1363 - accuracy: 1.0000" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 18/200 [=>............................] - ETA: 0s - loss: 0.1610 - accuracy: 0.9566" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 35/200 [====>.........................] - ETA: 0s - loss: 0.1372 - accuracy: 0.9688" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 52/200 [======>.......................] - ETA: 0s - loss: 0.1316 - accuracy: 0.9724" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 69/200 [=========>....................] - ETA: 0s - loss: 0.1266 - accuracy: 0.9746" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 86/200 [===========>..................] - ETA: 0s - loss: 0.1230 - accuracy: 0.9760" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "103/200 [==============>...............] - ETA: 0s - loss: 0.1176 - accuracy: 0.9779" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "119/200 [================>.............] - ETA: 0s - loss: 0.1135 - accuracy: 0.9795" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "135/200 [===================>..........] - ETA: 0s - loss: 0.1106 - accuracy: 0.9801" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "152/200 [=====================>........] - ETA: 0s - loss: 0.1074 - accuracy: 0.9811" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "169/200 [========================>.....] - ETA: 0s - loss: 0.1060 - accuracy: 0.9811" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "185/200 [==========================>...] - ETA: 0s - loss: 0.1029 - accuracy: 0.9812" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "200/200 [==============================] - 1s 4ms/step - loss: 0.1002 - accuracy: 0.9822 - val_loss: 0.4988 - val_accuracy: 0.8169\n" ] } ], "source": [ "# `vocab_size` is `VOCAB_SIZE + 1` since `0` is used additionally for padding.\n", "int_model = create_model(vocab_size=VOCAB_SIZE + 1, num_labels=4)\n", "int_model.compile(\n", " loss=losses.SparseCategoricalCrossentropy(from_logits=True),\n", " optimizer='adam',\n", " metrics=['accuracy'])\n", "history = int_model.fit(int_train_ds, validation_data=int_val_ds, epochs=5)" ] }, { "cell_type": "markdown", "metadata": { "id": "x3J9Eeuv97zE" }, "source": [ "두 모델을 비교합니다." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:07.677519Z", "iopub.status.busy": "2022-12-14T20:57:07.676954Z", "iopub.status.idle": "2022-12-14T20:57:07.686985Z", "shell.execute_reply": "2022-12-14T20:57:07.686230Z" }, "id": "N8ViDXw99v_u" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Linear model on binary vectorized data:\n", "Model: \"sequential\"\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Layer (type) Output Shape Param # \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "=================================================================\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " dense (Dense) (None, 4) 40004 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "=================================================================\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Total params: 40,004\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Trainable params: 40,004\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Non-trainable params: 0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "print(\"Linear model on binary vectorized data:\")\n", "print(binary_model.summary())" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:07.693468Z", "iopub.status.busy": "2022-12-14T20:57:07.692739Z", "iopub.status.idle": "2022-12-14T20:57:07.705543Z", "shell.execute_reply": "2022-12-14T20:57:07.703947Z" }, "id": "P9BOeoCwborD" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ConvNet model on int vectorized data:\n", "Model: \"sequential_1\"\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Layer (type) Output Shape Param # \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "=================================================================\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " embedding (Embedding) (None, None, 64) 640064 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " conv1d (Conv1D) (None, None, 64) 20544 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " global_max_pooling1d (Globa (None, 64) 0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " lMaxPooling1D) \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " dense_1 (Dense) (None, 4) 260 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "=================================================================\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Total params: 660,868\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Trainable params: 660,868\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Non-trainable params: 0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "print(\"ConvNet model on int vectorized data:\")\n", "print(int_model.summary())" ] }, { "cell_type": "markdown", "metadata": { "id": "zYYW9tUdCtTy" }, "source": [ "테스트 데이터에서 두 모델을 평가합니다." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:07.713699Z", "iopub.status.busy": "2022-12-14T20:57:07.713212Z", "iopub.status.idle": "2022-12-14T20:57:09.086877Z", "shell.execute_reply": "2022-12-14T20:57:09.086083Z" }, "id": "5dTc4nZqf7fK" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/250 [..............................] - ETA: 20s - loss: 0.5217 - accuracy: 0.7812" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 19/250 [=>............................] - ETA: 0s - loss: 0.4927 - accuracy: 0.8372 " ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 38/250 [===>..........................] - ETA: 0s - loss: 0.4963 - accuracy: 0.8347" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 57/250 [=====>........................] - ETA: 0s - loss: 0.5074 - accuracy: 0.8289" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 75/250 [========>.....................] - ETA: 0s - loss: 0.5063 - accuracy: 0.8304" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 94/250 [==========>...................] - ETA: 0s - loss: 0.5188 - accuracy: 0.8195" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "113/250 [============>.................] - ETA: 0s - loss: 0.5175 - accuracy: 0.8205" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "132/250 [==============>...............] - ETA: 0s - loss: 0.5189 - accuracy: 0.8191" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "150/250 [=================>............] - ETA: 0s - loss: 0.5191 - accuracy: 0.8160" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "168/250 [===================>..........] - ETA: 0s - loss: 0.5180 - accuracy: 0.8160" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "186/250 [=====================>........] - ETA: 0s - loss: 0.5198 - accuracy: 0.8145" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "204/250 [=======================>......] - ETA: 0s - loss: 0.5198 - accuracy: 0.8139" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "222/250 [=========================>....] - ETA: 0s - loss: 0.5179 - accuracy: 0.8153" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "240/250 [===========================>..] - ETA: 0s - loss: 0.5165 - accuracy: 0.8165" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "250/250 [==============================] - 1s 3ms/step - loss: 0.5180 - accuracy: 0.8164\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/250 [..............................] - ETA: 17s - loss: 0.3669 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 25/250 [==>...........................] - ETA: 0s - loss: 0.4364 - accuracy: 0.8438 " ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 49/250 [====>.........................] - ETA: 0s - loss: 0.4818 - accuracy: 0.8265" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 74/250 [=======>......................] - ETA: 0s - loss: 0.4811 - accuracy: 0.8264" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 98/250 [==========>...................] - ETA: 0s - loss: 0.5001 - accuracy: 0.8195" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "123/250 [=============>................] - ETA: 0s - loss: 0.5031 - accuracy: 0.8186" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "148/250 [================>.............] - ETA: 0s - loss: 0.5058 - accuracy: 0.8161" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "173/250 [===================>..........] - ETA: 0s - loss: 0.4989 - accuracy: 0.8172" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "198/250 [======================>.......] - ETA: 0s - loss: 0.5038 - accuracy: 0.8142" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "224/250 [=========================>....] - ETA: 0s - loss: 0.5052 - accuracy: 0.8143" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "249/250 [============================>.] - ETA: 0s - loss: 0.5055 - accuracy: 0.8151" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "250/250 [==============================] - 1s 2ms/step - loss: 0.5057 - accuracy: 0.8150\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Binary model accuracy: 81.64%\n", "Int model accuracy: 81.50%\n" ] } ], "source": [ "binary_loss, binary_accuracy = binary_model.evaluate(binary_test_ds)\n", "int_loss, int_accuracy = int_model.evaluate(int_test_ds)\n", "\n", "print(\"Binary model accuracy: {:2.2%}\".format(binary_accuracy))\n", "print(\"Int model accuracy: {:2.2%}\".format(int_accuracy))" ] }, { "cell_type": "markdown", "metadata": { "id": "F9dhj8Hey9DS" }, "source": [ "참고: 이 예제 데이터세트는 다소 단순한 분류 문제를 나타냅니다. 더 복잡한 데이터세트와 문제는 전처리 전략과 모델 아키텍처에서 미묘하지만 중요한 차이를 나타냅니다. 다양한 접근 방식을 비교하려면 다양한 하이퍼 매개 변수와 epochs를 시도해야 합니다." ] }, { "cell_type": "markdown", "metadata": { "id": "h9GaXTsIgP-3" }, "source": [ "### 모델 내보내기\n", "\n", "위의 코드에서는 모델에 텍스트를 제공하기 전에 `tf.keras.layers.TextVectorization`을 데이터세트에 적용했습니다. 모델이 원시 문자열을 처리할 수 있도록 하려면(예: 배포를 단순화하기 위해) 모델 내부에 `TextVectorization` 레이어를 포함할 수 있습니다.\n", "\n", "이를 위해 방금 훈련한 가중치를 사용하여 새 모델을 만들 수 있습니다." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:09.090676Z", "iopub.status.busy": "2022-12-14T20:57:09.090050Z", "iopub.status.idle": "2022-12-14T20:57:10.470995Z", "shell.execute_reply": "2022-12-14T20:57:10.470125Z" }, "id": "_bRe3KX8gRCX" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/250 [..............................] - ETA: 58s - loss: 0.4345 - accuracy: 0.8438" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 13/250 [>.............................] - ETA: 1s - loss: 0.4974 - accuracy: 0.8389 " ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 24/250 [=>............................] - ETA: 1s - loss: 0.5013 - accuracy: 0.8398" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 35/250 [===>..........................] - ETA: 0s - loss: 0.4932 - accuracy: 0.8375" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 47/250 [====>.........................] - ETA: 0s - loss: 0.5019 - accuracy: 0.8338" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 59/250 [======>.......................] - ETA: 0s - loss: 0.5046 - accuracy: 0.8321" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 70/250 [=======>......................] - ETA: 0s - loss: 0.5104 - accuracy: 0.8254" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 82/250 [========>.....................] - ETA: 0s - loss: 0.5151 - accuracy: 0.8220" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 94/250 [==========>...................] - ETA: 0s - loss: 0.5156 - accuracy: 0.8205" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "106/250 [===========>..................] - ETA: 0s - loss: 0.5133 - accuracy: 0.8219" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "118/250 [=============>................] - ETA: 0s - loss: 0.5139 - accuracy: 0.8223" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "130/250 [==============>...............] - ETA: 0s - loss: 0.5205 - accuracy: 0.8161" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "142/250 [================>.............] - ETA: 0s - loss: 0.5204 - accuracy: 0.8167" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "154/250 [=================>............] - ETA: 0s - loss: 0.5178 - accuracy: 0.8174" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "167/250 [===================>..........] - ETA: 0s - loss: 0.5226 - accuracy: 0.8142" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "179/250 [====================>.........] - ETA: 0s - loss: 0.5215 - accuracy: 0.8134" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "191/250 [=====================>........] - ETA: 0s - loss: 0.5203 - accuracy: 0.8140" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "203/250 [=======================>......] - ETA: 0s - loss: 0.5183 - accuracy: 0.8145" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "215/250 [========================>.....] - ETA: 0s - loss: 0.5172 - accuracy: 0.8160" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "227/250 [==========================>...] - ETA: 0s - loss: 0.5175 - accuracy: 0.8162" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "239/250 [===========================>..] - ETA: 0s - loss: 0.5167 - accuracy: 0.8164" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "250/250 [==============================] - 1s 4ms/step - loss: 0.5180 - accuracy: 0.8164\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Accuracy: 81.64%\n" ] } ], "source": [ "export_model = tf.keras.Sequential(\n", " [binary_vectorize_layer, binary_model,\n", " layers.Activation('sigmoid')])\n", "\n", "export_model.compile(\n", " loss=losses.SparseCategoricalCrossentropy(from_logits=False),\n", " optimizer='adam',\n", " metrics=['accuracy'])\n", "\n", "# Test it with `raw_test_ds`, which yields raw strings\n", "loss, accuracy = export_model.evaluate(raw_test_ds)\n", "print(\"Accuracy: {:2.2%}\".format(binary_accuracy))" ] }, { "cell_type": "markdown", "metadata": { "id": "m2eqTVBP4DUN" }, "source": [ "이제 여러분의 모델은 원시 문자열을 입력으로 사용하고 `Model.predict`를 사용하여 각 레이블의 점수를 예측할 수 있습니다. 다음과 같이 최대 점수를 가진 레이블을 찾는 함수를 정의합니다." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:10.474991Z", "iopub.status.busy": "2022-12-14T20:57:10.474181Z", "iopub.status.idle": "2022-12-14T20:57:10.478247Z", "shell.execute_reply": "2022-12-14T20:57:10.477656Z" }, "id": "GU53uRXz45iO" }, "outputs": [], "source": [ "def get_string_labels(predicted_scores_batch):\n", " predicted_int_labels = tf.math.argmax(predicted_scores_batch, axis=1)\n", " predicted_labels = tf.gather(raw_train_ds.class_names, predicted_int_labels)\n", " return predicted_labels" ] }, { "cell_type": "markdown", "metadata": { "id": "yqnWc7Nn5eou" }, "source": [ "### 새 데이터에 대한 추론 실행하기" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:10.481698Z", "iopub.status.busy": "2022-12-14T20:57:10.481177Z", "iopub.status.idle": "2022-12-14T20:57:10.643100Z", "shell.execute_reply": "2022-12-14T20:57:10.642299Z" }, "id": "BOR2MupW1_zS" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Question: how do I extract keys from a dict into a list?\n", "Predicted label: b'python'\n", "Question: debug public static void main(string[] args) {...}\n", "Predicted label: b'java'\n" ] } ], "source": [ "inputs = [\n", " \"how do I extract keys from a dict into a list?\", # 'python'\n", " \"debug public static void main(string[] args) {...}\", # 'java'\n", "]\n", "predicted_scores = export_model.predict(inputs)\n", "predicted_labels = get_string_labels(predicted_scores)\n", "for input, label in zip(inputs, predicted_labels):\n", " print(\"Question: \", input)\n", " print(\"Predicted label: \", label.numpy())" ] }, { "cell_type": "markdown", "metadata": { "id": "0QDVfii_4slI" }, "source": [ "모델 내부에 텍스트 전처리 논리를 포함하면 배포를 단순화하고 [훈련/테스트 왜곡](https://developers.google.com/machine-learning/guides/rules-of-ml#training-serving_skew) 가능성을 줄이는 프로덕션용 모델을 내보낼 수 있습니다.\n", "\n", "`tf.keras.layers.TextVectorization`를 적용할 위치를 선택할 때 염두에 두어야 할 성능 차이가 있습니다. 레이어를 모델 외부에서 사용하면 GPU에서 훈련할 때 비동기 CPU 처리 및 데이터 버퍼링을 수행할 수 있습니다. 따라서 GPU에서 모델을 훈련하는 경우 모델을 개발하는 동안 최상의 성능을 얻기 위해 이 옵션을 사용하고 배포 준비가 완료되면 모델 내부에 `TextVectorization` 레이어를 포함하도록 전환할 수 있습니다.\n", "\n", "모델 저장에 대해 자세히 알아보려면 [모델 저장과 복원](../keras/save_and_load.ipynb) 튜토리얼을 방문하세요." ] }, { "cell_type": "markdown", "metadata": { "id": "p4cvuFzavTRy" }, "source": [ "## 예제 2: 일리아드(Iliad) 번역의 작성자 예측하기\n" ] }, { "cell_type": "markdown", "metadata": { "id": "fOlJ22508RIe" }, "source": [ "다음은 `tf.data.TextLineDataset`를 사용하여 텍스트 파일로부터 예제를 로드하고 [TensorFlow Text](https://www.tensorflow.org/text)를 사용하여 데이터를 전처리하는 예를 제공합니다. 호머의 일리아드 작품을 다르게 번역한 3개의 영어 번역문을 사용하게 되며, 한 줄의 텍스트가 제공되었을 때 번역가를 식별하는 모델을 훈련합니다." ] }, { "cell_type": "markdown", "metadata": { "id": "-pCgKbOSk7kU" }, "source": [ "### 데이터세트 다운로드 및 탐색하기\n", "\n", "3가지 번역본은 다음과 같습니다.\n", "\n", "- [William Cowper](https://en.wikipedia.org/wiki/William_Cowper): [텍스트](https://storage.googleapis.com/download.tensorflow.org/data/illiad/cowper.txt)\n", "- [Edward, Earl of Derby](https://en.wikipedia.org/wiki/Edward_Smith-Stanley,_14th_Earl_of_Derby): [텍스트](https://storage.googleapis.com/download.tensorflow.org/data/illiad/derby.txt)\n", "- [Samuel Butler](https://en.wikipedia.org/wiki/Samuel_Butler_%28novelist%29): [텍스트](https://storage.googleapis.com/download.tensorflow.org/data/illiad/butler.txt)\n", "\n", "이 튜토리얼에서 사용된 텍스트 파일은 문서 헤더와 바닥 글, 줄 번호 및 챕터 제목 등을 제거하는 일반적인 전처리 작업을 거쳤습니다.\n", "\n", "이 가볍게 손질한 파일을 로컬로 다운로드합니다." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:10.647373Z", "iopub.status.busy": "2022-12-14T20:57:10.646677Z", "iopub.status.idle": "2022-12-14T20:57:10.792627Z", "shell.execute_reply": "2022-12-14T20:57:10.791915Z" }, "id": "4YlKQthEYlFw" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/illiad/cowper.txt\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 16384/815980 [..............................] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "819200/815980 [==============================] - 0s 0us/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "827392/815980 [==============================] - 0s 0us/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/illiad/derby.txt\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 16384/809730 [..............................] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "811008/809730 [==============================] - 0s 0us/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "819200/809730 [==============================] - 0s 0us/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/illiad/butler.txt\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 16384/807992 [..............................] - ETA: 0s" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "811008/807992 [==============================] - 0s 0us/step\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "819200/807992 [==============================] - 0s 0us/step\n" ] }, { "data": { "text/plain": [ "[PosixPath('/home/kbuilder/.keras/datasets/mnist.npz'),\n", " PosixPath('/home/kbuilder/.keras/datasets/heart.csv'),\n", " PosixPath('/home/kbuilder/.keras/datasets/fashion-mnist'),\n", " PosixPath('/home/kbuilder/.keras/datasets/derby.txt'),\n", " PosixPath('/home/kbuilder/.keras/datasets/HIGGS.csv.gz'),\n", " PosixPath('/home/kbuilder/.keras/datasets/butler.txt'),\n", " PosixPath('/home/kbuilder/.keras/datasets/cowper.txt')]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DIRECTORY_URL = 'https://storage.googleapis.com/download.tensorflow.org/data/illiad/'\n", "FILE_NAMES = ['cowper.txt', 'derby.txt', 'butler.txt']\n", "\n", "for name in FILE_NAMES:\n", " text_dir = utils.get_file(name, origin=DIRECTORY_URL + name)\n", "\n", "parent_dir = pathlib.Path(text_dir).parent\n", "list(parent_dir.iterdir())" ] }, { "cell_type": "markdown", "metadata": { "id": "M8PHK5J_cXE5" }, "source": [ "### 데이터세트 로드하기\n", "\n", "이전에는 `tf.keras.utils.text_dataset_from_directory`를 사용할 경우 파일의 모든 콘텐츠를 단일 예제로 취급했습니다. 여기에서는 텍스트 파일로부터 `tf.data.Dataset`를 생성하도록 설계된 `tf.data.TextLineDataset`을 사용합니다. 이때 각 예제는 원본 파일의 텍스트 줄입니다. `TextLineDataset`은 주로 줄 기반의 텍스트 데이터(예: 시 또는 오류 로그)에 유용합니다.\n", "\n", "이러한 파일을 반복하여 각 파일을 자체 데이터세트에 로드합니다. 각 예제는 개별적으로 레이블을 지정해야 하므로 `Dataset.map`을 사용하여 각 예제에 labeler 함수를 적용합니다. 이렇게 하면 데이터세트의 모든 예제를 반복하여 (`example, label`) 쌍을 반환합니다." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:10.796542Z", "iopub.status.busy": "2022-12-14T20:57:10.795913Z", "iopub.status.idle": "2022-12-14T20:57:10.799830Z", "shell.execute_reply": "2022-12-14T20:57:10.799007Z" }, "id": "YIIWIdPXgk7I" }, "outputs": [], "source": [ "def labeler(example, index):\n", " return example, tf.cast(index, tf.int64)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:10.803204Z", "iopub.status.busy": "2022-12-14T20:57:10.802584Z", "iopub.status.idle": "2022-12-14T20:57:10.870398Z", "shell.execute_reply": "2022-12-14T20:57:10.869446Z" }, "id": "8Ajx7AmZnEg3" }, "outputs": [], "source": [ "labeled_data_sets = []\n", "\n", "for i, file_name in enumerate(FILE_NAMES):\n", " lines_dataset = tf.data.TextLineDataset(str(parent_dir/file_name))\n", " labeled_dataset = lines_dataset.map(lambda ex: labeler(ex, i))\n", " labeled_data_sets.append(labeled_dataset)" ] }, { "cell_type": "markdown", "metadata": { "id": "wPOsVK1e9NGM" }, "source": [ "다음으로 `Dataset.concatenate`를 사용하여 레이블이 지정된 데이터세트를 단일 데이터세트로 결합한 후 `Dataset.shuffle`을 사용하여 셔플합니다.\n" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:10.875063Z", "iopub.status.busy": "2022-12-14T20:57:10.874163Z", "iopub.status.idle": "2022-12-14T20:57:10.877842Z", "shell.execute_reply": "2022-12-14T20:57:10.877195Z" }, "id": "6jAeYkTIi9-2" }, "outputs": [], "source": [ "BUFFER_SIZE = 50000\n", "BATCH_SIZE = 64\n", "VALIDATION_SIZE = 5000" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:10.881558Z", "iopub.status.busy": "2022-12-14T20:57:10.880900Z", "iopub.status.idle": "2022-12-14T20:57:10.886477Z", "shell.execute_reply": "2022-12-14T20:57:10.885783Z" }, "id": "Qd544E-Sh63L" }, "outputs": [], "source": [ "all_labeled_data = labeled_data_sets[0]\n", "for labeled_dataset in labeled_data_sets[1:]:\n", " all_labeled_data = all_labeled_data.concatenate(labeled_dataset)\n", "\n", "all_labeled_data = all_labeled_data.shuffle(\n", " BUFFER_SIZE, reshuffle_each_iteration=False)" ] }, { "cell_type": "markdown", "metadata": { "id": "r4JEHrJXeG5k" }, "source": [ "이전과 같이 몇 가지 예제를 출력합니다. 데이터세트가 아직 일괄 처리되지 않았으므로 `all_labeled_data`의 각 항목은 하나의 데이터 포인트에 해당합니다." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:10.889825Z", "iopub.status.busy": "2022-12-14T20:57:10.889580Z", "iopub.status.idle": "2022-12-14T20:57:11.480079Z", "shell.execute_reply": "2022-12-14T20:57:11.479270Z" }, "id": "gywKlN0xh6u5" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sentence: b\"They slew, and shar'd, by tents, the ev'ning meal.\"\n", "Label: 1\n", "Sentence: b'Achaeans, have them. At daybreak we will arm and fight about the ships;'\n", "Label: 2\n", "Sentence: b'To whom, the foam-sprung Goddess, thus incensed.'\n", "Label: 0\n", "Sentence: b'A respite (if the Atrid\\xc3\\xa6 so incline)'\n", "Label: 0\n", "Sentence: b'therefore, let us all do as I say; we have eaten and drunk our fill,'\n", "Label: 2\n", "Sentence: b'While morning lasted, and the light of day'\n", "Label: 0\n", "Sentence: b'And, lifeless, instant, on the field he fell.'\n", "Label: 0\n", "Sentence: b\"Which bear renown'd Achilles o'er the field.\"\n", "Label: 0\n", "Sentence: b'However short, to breathe again, so close'\n", "Label: 0\n", "Sentence: b'through all their ranks, broke the battalions of the enemy. Agamemnon'\n", "Label: 2\n" ] } ], "source": [ "for text, label in all_labeled_data.take(10):\n", " print(\"Sentence: \", text.numpy())\n", " print(\"Label:\", label.numpy())" ] }, { "cell_type": "markdown", "metadata": { "id": "5rrpU2_sfDh0" }, "source": [ "### 훈련을 위한 데이터세트 준비하기\n", "\n", "`tf.keras.layers.TextVectorization`을 사용하여 텍스트 데이터세트를 전처리하는 대신에 이제는 TensorFlow Text API를 사용하여 데이터를 표준화 및 토큰화하고 어휘를 빌드하고, `tf.lookup.StaticVocabularyTable`을 사용하여 토큰을 모델에 정수에 매핑한 후 모델에 공급합니다([TensorFlow 텍스트](https://www.tensorflow.org/text)에 대해 자세히 알아보기).\n", "\n", "다음과 같이 텍스트를 소문자로 변환하고 토큰화하는 함수를 정의합니다.\n", "\n", "- TensorFlow Text는 다양한 토크나이저를 제공합니다. 이 예제에서는 `text.UnicodeScriptTokenizer`를 사용하여 데이터세트를 토큰화합니다.\n", "- 여러분은 `Dataset.map`을 사용하여 데이터세트에 토큰화를 적용합니다." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:11.484100Z", "iopub.status.busy": "2022-12-14T20:57:11.483421Z", "iopub.status.idle": "2022-12-14T20:57:11.487112Z", "shell.execute_reply": "2022-12-14T20:57:11.486359Z" }, "id": "v4DpQW-Y12rm" }, "outputs": [], "source": [ "tokenizer = tf_text.UnicodeScriptTokenizer()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:11.490355Z", "iopub.status.busy": "2022-12-14T20:57:11.489777Z", "iopub.status.idle": "2022-12-14T20:57:11.493263Z", "shell.execute_reply": "2022-12-14T20:57:11.492722Z" }, "id": "pz8xEj0ugu51" }, "outputs": [], "source": [ "def tokenize(text, unused_label):\n", " lower_case = tf_text.case_fold_utf8(text)\n", " return tokenizer.tokenize(lower_case)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:11.496483Z", "iopub.status.busy": "2022-12-14T20:57:11.496021Z", "iopub.status.idle": "2022-12-14T20:57:13.253633Z", "shell.execute_reply": "2022-12-14T20:57:13.252836Z" }, "id": "vzUrAzOq31QL" }, "outputs": [], "source": [ "tokenized_ds = all_labeled_data.map(tokenize)" ] }, { "cell_type": "markdown", "metadata": { "id": "jx4Q2i8XLV7o" }, "source": [ "데이터세트를 반복하고 몇 가지 토큰화된 예제를 출력할 수 있습니다.\n" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:13.258030Z", "iopub.status.busy": "2022-12-14T20:57:13.257747Z", "iopub.status.idle": "2022-12-14T20:57:14.455235Z", "shell.execute_reply": "2022-12-14T20:57:14.454298Z" }, "id": "g2mkWri7LiGq" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tokens: [b'they' b'slew' b',' b'and' b'shar' b\"'\" b'd' b',' b'by' b'tents' b','\n", " b'the' b'ev' b\"'\" b'ning' b'meal' b'.']\n", "Tokens: [b'achaeans' b',' b'have' b'them' b'.' b'at' b'daybreak' b'we' b'will'\n", " b'arm' b'and' b'fight' b'about' b'the' b'ships' b';']\n", "Tokens: [b'to' b'whom' b',' b'the' b'foam' b'-' b'sprung' b'goddess' b',' b'thus'\n", " b'incensed' b'.']\n", "Tokens: [b'a' b'respite' b'(' b'if' b'the' b'atrid\\xc3\\xa6' b'so' b'incline' b')']\n", "Tokens: [b'therefore' b',' b'let' b'us' b'all' b'do' b'as' b'i' b'say' b';' b'we'\n", " b'have' b'eaten' b'and' b'drunk' b'our' b'fill' b',']\n" ] } ], "source": [ "for text_batch in tokenized_ds.take(5):\n", " print(\"Tokens: \", text_batch.numpy())" ] }, { "cell_type": "markdown", "metadata": { "id": "JPd4PsskJ_Xt" }, "source": [ "다음으로 빈도별로 토큰을 정렬하고 상위 `VOCAB_SIZE` 토큰을 유지하여 어휘를 빌드합니다." ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:14.459259Z", "iopub.status.busy": "2022-12-14T20:57:14.458767Z", "iopub.status.idle": "2022-12-14T20:57:21.645685Z", "shell.execute_reply": "2022-12-14T20:57:21.644923Z" }, "id": "YkHtbGnDh6mg" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Vocab size: 10000\n", "First five vocab entries: [b',', b'the', b'and', b\"'\", b'of']\n" ] } ], "source": [ "tokenized_ds = configure_dataset(tokenized_ds)\n", "\n", "vocab_dict = collections.defaultdict(lambda: 0)\n", "for toks in tokenized_ds.as_numpy_iterator():\n", " for tok in toks:\n", " vocab_dict[tok] += 1\n", "\n", "vocab = sorted(vocab_dict.items(), key=lambda x: x[1], reverse=True)\n", "vocab = [token for token, count in vocab]\n", "vocab = vocab[:VOCAB_SIZE]\n", "vocab_size = len(vocab)\n", "print(\"Vocab size: \", vocab_size)\n", "print(\"First five vocab entries:\", vocab[:5])" ] }, { "cell_type": "markdown", "metadata": { "id": "PyKSsaNAKi17" }, "source": [ "토큰을 정수로 변환하려면 `vocab` 세트를 사용하여 `tf.lookup.StaticVocabularyTable`을 생성합니다. [`2`, `vocab_size + 2`] 범위의 정수에 토큰을 매핑합니다. `TextVectorization` 레이어와 마찬가지로 `0`은 패딩을 나타내기 위해 예약되어 있으며 `1`은 OOV(out-of-vocabulary) 토큰을 나타내기 위해 예약되어 있습니다." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:21.649912Z", "iopub.status.busy": "2022-12-14T20:57:21.649281Z", "iopub.status.idle": "2022-12-14T20:57:21.658315Z", "shell.execute_reply": "2022-12-14T20:57:21.657680Z" }, "id": "kCBo2yFHD7y6" }, "outputs": [], "source": [ "keys = vocab\n", "values = range(2, len(vocab) + 2) # Reserve `0` for padding, `1` for OOV tokens.\n", "\n", "init = tf.lookup.KeyValueTensorInitializer(\n", " keys, values, key_dtype=tf.string, value_dtype=tf.int64)\n", "\n", "num_oov_buckets = 1\n", "vocab_table = tf.lookup.StaticVocabularyTable(init, num_oov_buckets)" ] }, { "cell_type": "markdown", "metadata": { "id": "Z5F-EiBpOADE" }, "source": [ "마지막으로 토크나이저 및 조회 테이블을 사용하여 데이터세트를 표준화, 토큰화 및 벡터화하는 함수를 정의합니다." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:21.662209Z", "iopub.status.busy": "2022-12-14T20:57:21.661579Z", "iopub.status.idle": "2022-12-14T20:57:21.665718Z", "shell.execute_reply": "2022-12-14T20:57:21.665008Z" }, "id": "HcIQ7LOTh6eT" }, "outputs": [], "source": [ "def preprocess_text(text, label):\n", " standardized = tf_text.case_fold_utf8(text)\n", " tokenized = tokenizer.tokenize(standardized)\n", " vectorized = vocab_table.lookup(tokenized)\n", " return vectorized, label" ] }, { "cell_type": "markdown", "metadata": { "id": "v6S5Qyabi-vo" }, "source": [ "결과를 출력하기 위해 단일 예제에서 다음을 시도할 수 있습니다." ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:21.669534Z", "iopub.status.busy": "2022-12-14T20:57:21.668948Z", "iopub.status.idle": "2022-12-14T20:57:22.330242Z", "shell.execute_reply": "2022-12-14T20:57:22.329492Z" }, "id": "jgxPZaxUuTbk" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sentence: b\"They slew, and shar'd, by tents, the ev'ning meal.\"\n", "Vectorized sentence: [ 27 307 2 4 2902 5 9 2 26 617 2 3 543 5\n", " 885 1007 7]\n" ] } ], "source": [ "example_text, example_label = next(iter(all_labeled_data))\n", "print(\"Sentence: \", example_text.numpy())\n", "vectorized_text, example_label = preprocess_text(example_text, example_label)\n", "print(\"Vectorized sentence: \", vectorized_text.numpy())" ] }, { "cell_type": "markdown", "metadata": { "id": "p9qHM0v8k_Mg" }, "source": [ "이제 `Dataset.map`을 사용하여 데이터세트에서 전처리 함수를 실행합니다." ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:22.334284Z", "iopub.status.busy": "2022-12-14T20:57:22.333583Z", "iopub.status.idle": "2022-12-14T20:57:23.873636Z", "shell.execute_reply": "2022-12-14T20:57:23.872849Z" }, "id": "KmQVsAgJ-RM0" }, "outputs": [], "source": [ "all_encoded_data = all_labeled_data.map(preprocess_text)" ] }, { "cell_type": "markdown", "metadata": { "id": "_YZToSXSm0qr" }, "source": [ "### 데이터세트를 훈련 및 검증 세트로 분할하기\n" ] }, { "cell_type": "markdown", "metadata": { "id": "itxIJwkrUXgv" }, "source": [ "Keras `TextVectorization` 레이어는 벡터화된 데이터도 일괄 처리하고 패딩합니다. 배치 내부의 예제는 크기와 모양이 같아야 하기 때문에 패딩이 필요하지만 이러한 데이터세트의 예제는 모두 같은 크기가 아니며 각 텍스트 줄의 단어 수도 다릅니다.\n", "\n", "`tf.data.Dataset`은 데이터세트 분할 및 패딩 일괄 처리를 지원합니다." ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:23.878161Z", "iopub.status.busy": "2022-12-14T20:57:23.877879Z", "iopub.status.idle": "2022-12-14T20:57:23.883008Z", "shell.execute_reply": "2022-12-14T20:57:23.882401Z" }, "id": "r-rmbijQh6bf" }, "outputs": [], "source": [ "train_data = all_encoded_data.skip(VALIDATION_SIZE).shuffle(BUFFER_SIZE)\n", "validation_data = all_encoded_data.take(VALIDATION_SIZE)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:23.886481Z", "iopub.status.busy": "2022-12-14T20:57:23.886011Z", "iopub.status.idle": "2022-12-14T20:57:23.893575Z", "shell.execute_reply": "2022-12-14T20:57:23.892919Z" }, "id": "qTP0IwHBCn0Q" }, "outputs": [], "source": [ "train_data = train_data.padded_batch(BATCH_SIZE)\n", "validation_data = validation_data.padded_batch(BATCH_SIZE)" ] }, { "cell_type": "markdown", "metadata": { "id": "m-wmFq8uW1zS" }, "source": [ "이제 `validation_data` 및 `train_data`는 (`example, label`) 쌍의 모음이 아니라 배치의 모음입니다. 각 배치는 배열로 표시되는 한 쌍의 (*많은 예제*, *많은 레이블*)입니다.\n", "\n", "이는 다음과 같습니다." ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:23.897040Z", "iopub.status.busy": "2022-12-14T20:57:23.896814Z", "iopub.status.idle": "2022-12-14T20:57:25.097435Z", "shell.execute_reply": "2022-12-14T20:57:25.096660Z" }, "id": "kMslWfuwoqpB" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Text batch shape: (64, 18)\n", "Label batch shape: (64,)\n", "First text example: tf.Tensor(\n", "[ 27 307 2 4 2902 5 9 2 26 617 2 3 543 5\n", " 885 1007 7 0], shape=(18,), dtype=int64)\n", "First label example: tf.Tensor(1, shape=(), dtype=int64)\n" ] } ], "source": [ "sample_text, sample_labels = next(iter(validation_data))\n", "print(\"Text batch shape: \", sample_text.shape)\n", "print(\"Label batch shape: \", sample_labels.shape)\n", "print(\"First text example: \", sample_text[0])\n", "print(\"First label example: \", sample_labels[0])" ] }, { "cell_type": "markdown", "metadata": { "id": "UI4I6_Sa0vWu" }, "source": [ "패딩에는 `0`을 사용하고 OOV(out-of-vocabulary) 토큰에는 `1`을 사용하였기에 어휘 크기가 2배 증가했습니다." ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:25.101606Z", "iopub.status.busy": "2022-12-14T20:57:25.100907Z", "iopub.status.idle": "2022-12-14T20:57:25.104417Z", "shell.execute_reply": "2022-12-14T20:57:25.103814Z" }, "id": "u21LlkO8QGRX" }, "outputs": [], "source": [ "vocab_size += 2" ] }, { "cell_type": "markdown", "metadata": { "id": "h44Ox11OYLP-" }, "source": [ "이전과 같은 더 나은 성능을 위한 데이터세트를 구성합니다." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:25.107909Z", "iopub.status.busy": "2022-12-14T20:57:25.107662Z", "iopub.status.idle": "2022-12-14T20:57:25.112660Z", "shell.execute_reply": "2022-12-14T20:57:25.112036Z" }, "id": "BpT0b_7mYRXV" }, "outputs": [], "source": [ "train_data = configure_dataset(train_data)\n", "validation_data = configure_dataset(validation_data)" ] }, { "cell_type": "markdown", "metadata": { "id": "K8SUhGFNsmRi" }, "source": [ "### 모델 훈련하기\n", "\n", "이전과 같이 이 데이터세트에서 모델을 훈련할 수 있습니다." ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:57:25.116551Z", "iopub.status.busy": "2022-12-14T20:57:25.116029Z", "iopub.status.idle": "2022-12-14T20:58:00.109087Z", "shell.execute_reply": "2022-12-14T20:58:00.108219Z" }, "id": "QJgI1pow2YR9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/Unknown - 22s 22s/step - loss: 1.0986 - accuracy: 0.4062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 13/Unknown - 22s 4ms/step - loss: 1.0687 - accuracy: 0.3750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 29/Unknown - 22s 4ms/step - loss: 1.0446 - accuracy: 0.3825" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 47/Unknown - 22s 3ms/step - loss: 1.0023 - accuracy: 0.4535" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 66/Unknown - 22s 3ms/step - loss: 0.9696 - accuracy: 0.4931" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 84/Unknown - 22s 3ms/step - loss: 0.9302 - accuracy: 0.5296" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 100/Unknown - 22s 3ms/step - loss: 0.8995 - accuracy: 0.5491" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 118/Unknown - 22s 3ms/step - loss: 0.8683 - accuracy: 0.5699" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 136/Unknown - 22s 3ms/step - loss: 0.8394 - accuracy: 0.5886" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 152/Unknown - 22s 3ms/step - loss: 0.8187 - accuracy: 0.6013" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 170/Unknown - 22s 3ms/step - loss: 0.7949 - accuracy: 0.6155" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 189/Unknown - 22s 3ms/step - loss: 0.7765 - accuracy: 0.6261" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 208/Unknown - 22s 3ms/step - loss: 0.7536 - accuracy: 0.6405" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 226/Unknown - 22s 3ms/step - loss: 0.7381 - accuracy: 0.6497" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 244/Unknown - 22s 3ms/step - loss: 0.7242 - accuracy: 0.6583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 262/Unknown - 22s 3ms/step - loss: 0.7061 - accuracy: 0.6678" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 280/Unknown - 23s 3ms/step - loss: 0.6914 - accuracy: 0.6763" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 297/Unknown - 23s 3ms/step - loss: 0.6794 - accuracy: 0.6834" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 315/Unknown - 23s 3ms/step - loss: 0.6653 - accuracy: 0.6919" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 333/Unknown - 23s 3ms/step - loss: 0.6529 - accuracy: 0.6979" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 351/Unknown - 23s 3ms/step - loss: 0.6417 - accuracy: 0.7041" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 369/Unknown - 23s 3ms/step - loss: 0.6324 - accuracy: 0.7088" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 387/Unknown - 23s 3ms/step - loss: 0.6230 - accuracy: 0.7140" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 404/Unknown - 23s 3ms/step - loss: 0.6147 - accuracy: 0.7180" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 423/Unknown - 23s 3ms/step - loss: 0.6063 - accuracy: 0.7221" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 441/Unknown - 23s 3ms/step - loss: 0.5988 - accuracy: 0.7262" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 459/Unknown - 23s 3ms/step - loss: 0.5923 - accuracy: 0.7296" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 478/Unknown - 23s 3ms/step - loss: 0.5852 - accuracy: 0.7331" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 497/Unknown - 23s 3ms/step - loss: 0.5783 - accuracy: 0.7369" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 516/Unknown - 23s 3ms/step - loss: 0.5716 - accuracy: 0.7402" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 535/Unknown - 23s 3ms/step - loss: 0.5657 - accuracy: 0.7432" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 553/Unknown - 23s 3ms/step - loss: 0.5594 - accuracy: 0.7468" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 572/Unknown - 23s 3ms/step - loss: 0.5540 - accuracy: 0.7498" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 590/Unknown - 23s 3ms/step - loss: 0.5490 - accuracy: 0.7528" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 608/Unknown - 23s 3ms/step - loss: 0.5448 - accuracy: 0.7548" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 626/Unknown - 24s 3ms/step - loss: 0.5405 - accuracy: 0.7569" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 645/Unknown - 24s 3ms/step - loss: 0.5357 - accuracy: 0.7592" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 664/Unknown - 24s 3ms/step - loss: 0.5306 - accuracy: 0.7618" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 682/Unknown - 24s 3ms/step - loss: 0.5254 - accuracy: 0.7644" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "697/697 [==============================] - 28s 9ms/step - loss: 0.5224 - accuracy: 0.7657 - val_loss: 0.3604 - val_accuracy: 0.8448\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2/3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/697 [..............................] - ETA: 3s - loss: 0.3639 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 18/697 [..............................] - ETA: 2s - loss: 0.3574 - accuracy: 0.8377" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 36/697 [>.............................] - ETA: 1s - loss: 0.3623 - accuracy: 0.8377" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 54/697 [=>............................] - ETA: 1s - loss: 0.3599 - accuracy: 0.8397" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 72/697 [==>...........................] - ETA: 1s - loss: 0.3612 - accuracy: 0.8433" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 90/697 [==>...........................] - ETA: 1s - loss: 0.3522 - accuracy: 0.8477" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "108/697 [===>..........................] - ETA: 1s - loss: 0.3501 - accuracy: 0.8497" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "126/697 [====>.........................] - ETA: 1s - loss: 0.3445 - accuracy: 0.8529" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "143/697 [=====>........................] - ETA: 1s - loss: 0.3407 - accuracy: 0.8552" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "161/697 [=====>........................] - ETA: 1s - loss: 0.3381 - accuracy: 0.8558" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "179/697 [======>.......................] - ETA: 1s - loss: 0.3377 - accuracy: 0.8564" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "197/697 [=======>......................] - ETA: 1s - loss: 0.3343 - accuracy: 0.8592" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "216/697 [========>.....................] - ETA: 1s - loss: 0.3295 - accuracy: 0.8615" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "234/697 [=========>....................] - ETA: 1s - loss: 0.3278 - accuracy: 0.8628" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "252/697 [=========>....................] - ETA: 1s - loss: 0.3281 - accuracy: 0.8627" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "271/697 [==========>...................] - ETA: 1s - loss: 0.3231 - accuracy: 0.8645" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "290/697 [===========>..................] - ETA: 1s - loss: 0.3208 - accuracy: 0.8659" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "308/697 [============>.................] - ETA: 1s - loss: 0.3172 - accuracy: 0.8674" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "326/697 [=============>................] - ETA: 1s - loss: 0.3144 - accuracy: 0.8689" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "345/697 [=============>................] - ETA: 0s - loss: 0.3118 - accuracy: 0.8701" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "363/697 [==============>...............] - ETA: 0s - loss: 0.3100 - accuracy: 0.8709" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "382/697 [===============>..............] - ETA: 0s - loss: 0.3066 - accuracy: 0.8723" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "400/697 [================>.............] - ETA: 0s - loss: 0.3063 - accuracy: 0.8723" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "419/697 [=================>............] - ETA: 0s - loss: 0.3053 - accuracy: 0.8727" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "437/697 [=================>............] - ETA: 0s - loss: 0.3032 - accuracy: 0.8735" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "455/697 [==================>...........] - ETA: 0s - loss: 0.3022 - accuracy: 0.8741" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "473/697 [===================>..........] - ETA: 0s - loss: 0.3007 - accuracy: 0.8750" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "491/697 [====================>.........] - ETA: 0s - loss: 0.2996 - accuracy: 0.8754" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "509/697 [====================>.........] - ETA: 0s - loss: 0.2985 - accuracy: 0.8760" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "527/697 [=====================>........] - ETA: 0s - loss: 0.2969 - accuracy: 0.8766" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "545/697 [======================>.......] - ETA: 0s - loss: 0.2943 - accuracy: 0.8779" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "564/697 [=======================>......] - ETA: 0s - loss: 0.2930 - accuracy: 0.8787" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "582/697 [========================>.....] - ETA: 0s - loss: 0.2922 - accuracy: 0.8792" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "601/697 [========================>.....] - ETA: 0s - loss: 0.2915 - accuracy: 0.8794" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "619/697 [=========================>....] - ETA: 0s - loss: 0.2907 - accuracy: 0.8798" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "637/697 [==========================>...] - ETA: 0s - loss: 0.2895 - accuracy: 0.8807" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "655/697 [===========================>..] - ETA: 0s - loss: 0.2883 - accuracy: 0.8813" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "673/697 [===========================>..] - ETA: 0s - loss: 0.2864 - accuracy: 0.8821" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "691/697 [============================>.] - ETA: 0s - loss: 0.2857 - accuracy: 0.8826" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "697/697 [==============================] - 3s 4ms/step - loss: 0.2856 - accuracy: 0.8826 - val_loss: 0.3490 - val_accuracy: 0.8540\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3/3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/697 [..............................] - ETA: 4s - loss: 0.2682 - accuracy: 0.9062" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 18/697 [..............................] - ETA: 2s - loss: 0.2384 - accuracy: 0.8976" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 36/697 [>.............................] - ETA: 1s - loss: 0.2325 - accuracy: 0.9067" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 54/697 [=>............................] - ETA: 1s - loss: 0.2341 - accuracy: 0.9054" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 72/697 [==>...........................] - ETA: 1s - loss: 0.2388 - accuracy: 0.9047" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 90/697 [==>...........................] - ETA: 1s - loss: 0.2329 - accuracy: 0.9073" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "108/697 [===>..........................] - ETA: 1s - loss: 0.2330 - accuracy: 0.9057" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "126/697 [====>.........................] - ETA: 1s - loss: 0.2290 - accuracy: 0.9074" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "144/697 [=====>........................] - ETA: 1s - loss: 0.2264 - accuracy: 0.9089" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "162/697 [=====>........................] - ETA: 1s - loss: 0.2267 - accuracy: 0.9090" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "179/697 [======>.......................] - ETA: 1s - loss: 0.2273 - accuracy: 0.9096" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "197/697 [=======>......................] - ETA: 1s - loss: 0.2247 - accuracy: 0.9112" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "216/697 [========>.....................] - ETA: 1s - loss: 0.2209 - accuracy: 0.9130" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "234/697 [=========>....................] - ETA: 1s - loss: 0.2202 - accuracy: 0.9135" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "252/697 [=========>....................] - ETA: 1s - loss: 0.2212 - accuracy: 0.9127" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "271/697 [==========>...................] - ETA: 1s - loss: 0.2185 - accuracy: 0.9136" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "289/697 [===========>..................] - ETA: 1s - loss: 0.2179 - accuracy: 0.9140" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "307/697 [============>.................] - ETA: 1s - loss: 0.2157 - accuracy: 0.9152" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "326/697 [=============>................] - ETA: 1s - loss: 0.2141 - accuracy: 0.9157" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "344/697 [=============>................] - ETA: 0s - loss: 0.2125 - accuracy: 0.9161" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "362/697 [==============>...............] - ETA: 0s - loss: 0.2112 - accuracy: 0.9167" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "381/697 [===============>..............] - ETA: 0s - loss: 0.2090 - accuracy: 0.9177" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "399/697 [================>.............] - ETA: 0s - loss: 0.2088 - accuracy: 0.9180" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "417/697 [================>.............] - ETA: 0s - loss: 0.2080 - accuracy: 0.9184" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "436/697 [=================>............] - ETA: 0s - loss: 0.2068 - accuracy: 0.9190" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "454/697 [==================>...........] - ETA: 0s - loss: 0.2058 - accuracy: 0.9198" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "473/697 [===================>..........] - ETA: 0s - loss: 0.2047 - accuracy: 0.9203" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "491/697 [====================>.........] - ETA: 0s - loss: 0.2037 - accuracy: 0.9207" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "509/697 [====================>.........] - ETA: 0s - loss: 0.2029 - accuracy: 0.9211" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "527/697 [=====================>........] - ETA: 0s - loss: 0.2019 - accuracy: 0.9215" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "545/697 [======================>.......] - ETA: 0s - loss: 0.1998 - accuracy: 0.9226" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "563/697 [=======================>......] - ETA: 0s - loss: 0.1988 - accuracy: 0.9232" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "582/697 [========================>.....] - ETA: 0s - loss: 0.1980 - accuracy: 0.9238" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "600/697 [========================>.....] - ETA: 0s - loss: 0.1977 - accuracy: 0.9240" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "618/697 [=========================>....] - ETA: 0s - loss: 0.1971 - accuracy: 0.9242" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "636/697 [==========================>...] - ETA: 0s - loss: 0.1962 - accuracy: 0.9248" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "654/697 [===========================>..] - ETA: 0s - loss: 0.1951 - accuracy: 0.9253" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "672/697 [===========================>..] - ETA: 0s - loss: 0.1937 - accuracy: 0.9260" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "690/697 [============================>.] - ETA: 0s - loss: 0.1932 - accuracy: 0.9261" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "697/697 [==============================] - 3s 4ms/step - loss: 0.1931 - accuracy: 0.9262 - val_loss: 0.3780 - val_accuracy: 0.8496\n" ] } ], "source": [ "model = create_model(vocab_size=vocab_size, num_labels=3)\n", "\n", "model.compile(\n", " optimizer='adam',\n", " loss=losses.SparseCategoricalCrossentropy(from_logits=True),\n", " metrics=['accuracy'])\n", "\n", "history = model.fit(train_data, validation_data=validation_data, epochs=3)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:00.113832Z", "iopub.status.busy": "2022-12-14T20:58:00.113198Z", "iopub.status.idle": "2022-12-14T20:58:00.985429Z", "shell.execute_reply": "2022-12-14T20:58:00.984679Z" }, "id": "KTPCYf_Jh6TH" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/Unknown - 1s 683ms/step - loss: 0.2999 - accuracy: 0.8906" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 26/Unknown - 1s 2ms/step - loss: 0.3767 - accuracy: 0.8486 " ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 52/Unknown - 1s 2ms/step - loss: 0.3818 - accuracy: 0.8459" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 79/Unknown - 1s 2ms/step - loss: 0.3780 - accuracy: 0.8496" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "79/79 [==============================] - 1s 2ms/step - loss: 0.3780 - accuracy: 0.8496\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Loss: 0.3780021369457245\n", "Accuracy: 84.96%\n" ] } ], "source": [ "loss, accuracy = model.evaluate(validation_data)\n", "\n", "print(\"Loss: \", loss)\n", "print(\"Accuracy: {:2.2%}\".format(accuracy))" ] }, { "cell_type": "markdown", "metadata": { "id": "_knIsO-r4pHb" }, "source": [ "### 모델 내보내기" ] }, { "cell_type": "markdown", "metadata": { "id": "FEuMLJA_Xiwo" }, "source": [ "원시 문자열을 입력으로 사용할 수 있는 모델을 만들기 위해 사용자 정의 전처리 함수와 동일한 단계를 수행하는 Keras `TextVectorization` 레이어를 생성하게 됩니다. 이미 어휘를 훈련했으므로 `TextVectorization.adapt` 대신 `TextVectorization.set_vocabulary`를 사용하여 새 어휘를 훈련할 수 있습니다." ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:00.989754Z", "iopub.status.busy": "2022-12-14T20:58:00.989041Z", "iopub.status.idle": "2022-12-14T20:58:01.004322Z", "shell.execute_reply": "2022-12-14T20:58:01.003702Z" }, "id": "_ODkRXbk6aHb" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/numpy/core/numeric.py:2468: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n", " return bool(asarray(a1 == a2).all())\n", "/tmpfs/src/tf_docs_env/lib/python3.9/site-packages/keras/layers/preprocessing/index_lookup.py:458: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n", " if self.mask_token is not None and self.mask_token in tokens:\n" ] } ], "source": [ "preprocess_layer = TextVectorization(\n", " max_tokens=vocab_size,\n", " standardize=tf_text.case_fold_utf8,\n", " split=tokenizer.tokenize,\n", " output_mode='int',\n", " output_sequence_length=MAX_SEQUENCE_LENGTH)\n", "\n", "preprocess_layer.set_vocabulary(vocab)" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:01.007773Z", "iopub.status.busy": "2022-12-14T20:58:01.007272Z", "iopub.status.idle": "2022-12-14T20:58:01.017475Z", "shell.execute_reply": "2022-12-14T20:58:01.016856Z" }, "id": "G-Cvd27y4qwt" }, "outputs": [], "source": [ "export_model = tf.keras.Sequential(\n", " [preprocess_layer, model,\n", " layers.Activation('sigmoid')])\n", "\n", "export_model.compile(\n", " loss=losses.SparseCategoricalCrossentropy(from_logits=False),\n", " optimizer='adam',\n", " metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:01.020921Z", "iopub.status.busy": "2022-12-14T20:58:01.020511Z", "iopub.status.idle": "2022-12-14T20:58:06.858901Z", "shell.execute_reply": "2022-12-14T20:58:06.858069Z" }, "id": "Pyg0B4zsc-UD" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2022-12-14 20:58:05.420812: W tensorflow/core/grappler/optimizers/loop_optimizer.cc:907] Skipping loop optimization for Merge node with control input: sequential_4/text_vectorization_2/UnicodeScriptTokenize/Assert_1/AssertGuard/branch_executed/_185\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/Unknown - 5s 5s/step - loss: 0.3610 - accuracy: 0.8594" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 8/Unknown - 5s 8ms/step - loss: 0.5800 - accuracy: 0.7793" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 15/Unknown - 5s 7ms/step - loss: 0.5308 - accuracy: 0.7906" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 23/Unknown - 5s 7ms/step - loss: 0.5253 - accuracy: 0.7921" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 30/Unknown - 5s 7ms/step - loss: 0.5296 - accuracy: 0.7906" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 37/Unknown - 5s 7ms/step - loss: 0.5387 - accuracy: 0.7859" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 44/Unknown - 6s 7ms/step - loss: 0.5368 - accuracy: 0.7869" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 51/Unknown - 6s 7ms/step - loss: 0.5397 - accuracy: 0.7892" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 58/Unknown - 6s 7ms/step - loss: 0.5338 - accuracy: 0.7934" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 65/Unknown - 6s 7ms/step - loss: 0.5314 - accuracy: 0.7933" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 72/Unknown - 6s 7ms/step - loss: 0.5350 - accuracy: 0.7930" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 79/Unknown - 6s 7ms/step - loss: 0.5388 - accuracy: 0.7914" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "79/79 [==============================] - 6s 8ms/step - loss: 0.5388 - accuracy: 0.7914\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Loss: 0.5388292670249939\n", "Accuracy: 79.14%\n" ] } ], "source": [ "# Create a test dataset of raw strings.\n", "test_ds = all_labeled_data.take(VALIDATION_SIZE).batch(BATCH_SIZE)\n", "test_ds = configure_dataset(test_ds)\n", "\n", "loss, accuracy = export_model.evaluate(test_ds)\n", "\n", "print(\"Loss: \", loss)\n", "print(\"Accuracy: {:2.2%}\".format(accuracy))" ] }, { "cell_type": "markdown", "metadata": { "id": "o6Mm0Y9QYQwE" }, "source": [ "인코딩된 검증 세트의 모델과 원시 검증 세트에 대해 내보내기를 수행한 모델의 손실 및 정확성은 예상대로 동일합니다." ] }, { "cell_type": "markdown", "metadata": { "id": "Stk2BP8GE-qo" }, "source": [ "### 새 데이터에 대한 추론 실행하기" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:06.862884Z", "iopub.status.busy": "2022-12-14T20:58:06.862176Z", "iopub.status.idle": "2022-12-14T20:58:09.180522Z", "shell.execute_reply": "2022-12-14T20:58:09.179630Z" }, "id": "-w1fQGJPD2Yh" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2022-12-14 20:58:08.859336: W tensorflow/core/grappler/optimizers/loop_optimizer.cc:907] Skipping loop optimization for Merge node with control input: sequential_4/text_vectorization_2/UnicodeScriptTokenize/Assert_1/AssertGuard/branch_executed/_185\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Question: Join'd to th' Ionians with their flowing robes,\n", "Predicted label: 1\n", "Question: the allies, and his armour flashed about him so that he seemed to all\n", "Predicted label: 2\n", "Question: And with loud clangor of his arms he fell.\n", "Predicted label: 0\n" ] } ], "source": [ "inputs = [\n", " \"Join'd to th' Ionians with their flowing robes,\", # Label: 1\n", " \"the allies, and his armour flashed about him so that he seemed to all\", # Label: 2\n", " \"And with loud clangor of his arms he fell.\", # Label: 0\n", "]\n", "\n", "predicted_scores = export_model.predict(inputs)\n", "predicted_labels = tf.math.argmax(predicted_scores, axis=1)\n", "\n", "for input, label in zip(inputs, predicted_labels):\n", " print(\"Question: \", input)\n", " print(\"Predicted label: \", label.numpy())" ] }, { "cell_type": "markdown", "metadata": { "id": "9eA8TVdnA-3L" }, "source": [ "## TensorFlow 데이터세트(TFDS)를 사용하여 더 많은 데이터세트 다운로드하기\n" ] }, { "cell_type": "markdown", "metadata": { "id": "2QFSxfZ3Vqsn" }, "source": [ "[TensorFlow 데이터세트](https://www.tensorflow.org/datasets/catalog/overview)로부터 더 많은 데이터세트를 다운로드할 수 있습니다.\n", "\n", "이 예제에서는 [IMDB 대형 영화 리뷰 데이터세트](https://www.tensorflow.org/datasets/catalog/imdb_reviews)를 사용하여 감정 분류용 모델을 훈련합니다." ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:09.184239Z", "iopub.status.busy": "2022-12-14T20:58:09.183956Z", "iopub.status.idle": "2022-12-14T20:58:09.919226Z", "shell.execute_reply": "2022-12-14T20:58:09.918506Z" }, "id": "NzC65LOaVw0B" }, "outputs": [], "source": [ "# Training set.\n", "train_ds = tfds.load(\n", " 'imdb_reviews',\n", " split='train[:80%]',\n", " batch_size=BATCH_SIZE,\n", " shuffle_files=True,\n", " as_supervised=True)" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:09.923461Z", "iopub.status.busy": "2022-12-14T20:58:09.922920Z", "iopub.status.idle": "2022-12-14T20:58:10.416199Z", "shell.execute_reply": "2022-12-14T20:58:10.415442Z" }, "id": "XKGkgPBkFh0k" }, "outputs": [], "source": [ "# Validation set.\n", "val_ds = tfds.load(\n", " 'imdb_reviews',\n", " split='train[80%:]',\n", " batch_size=BATCH_SIZE,\n", " shuffle_files=True,\n", " as_supervised=True)" ] }, { "cell_type": "markdown", "metadata": { "id": "BQjf3YZAb5Ne" }, "source": [ "몇 가지 예제를 출력합니다." ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:10.420583Z", "iopub.status.busy": "2022-12-14T20:58:10.419960Z", "iopub.status.idle": "2022-12-14T20:58:10.998767Z", "shell.execute_reply": "2022-12-14T20:58:10.997756Z" }, "id": "Bq1w8MnfWt2C" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Review: b\"Instead, go to the zoo, buy some peanuts and feed 'em to the monkeys. Monkeys are funny. People with amnesia who don't say much, just sit there with vacant eyes are not all that funny.

Black comedy? There isn't a black person in it, and there isn't one funny thing in it either.

Walmart buys these things up somehow and puts them on their dollar rack. It's labeled Unrated. I think they took out the topless scene. They may have taken out other stuff too, who knows? All we know is that whatever they took out, isn't there any more.

The acting seemed OK to me. There's a lot of unfathomables tho. It's supposed to be a city? It's supposed to be a big lake? If it's so hot in the church people are fanning themselves, why are they all wearing coats?\"\n", "Label: 0\n", "Review: b'Well, was Morgan Freeman any more unusual as God than George Burns? This film sure was better than that bore, \"Oh, God\". I was totally engrossed and LMAO all the way through. Carrey was perfect as the out of sorts anchorman wannabe, and Aniston carried off her part as the frustrated girlfriend in her usual well played performance. I, for one, don\\'t consider her to be either ugly or untalented. I think my favorite scene was when Carrey opened up the file cabinet thinking it could never hold his life history. See if you can spot the file in the cabinet that holds the events of his bathroom humor: I was rolling over this one. Well written and even better played out, this comedy will go down as one of this funnyman\\'s best.'\n", "Label: 1\n", "Review: b'I remember stumbling upon this special while channel-surfing in 1965. I had never heard of Barbra before. When the show was over, I thought \"This is probably the best thing on TV I will ever see in my life.\" 42 years later, that has held true. There is still nothing so amazing, so honestly astonishing as the talent that was displayed here. You can talk about all the super-stars you want to, this is the most superlative of them all!

You name it, she can do it. Comedy, pathos, sultry seduction, ballads, Barbra is truly a story-teller. Her ability to pull off anything she attempts is legendary. But this special was made in the beginning, and helped to create the legend that she quickly became. In spite of rising so far in such a short time, she has fulfilled the promise, revealing more of her talents as she went along. But they are all here from the very beginning. You will not be disappointed in viewing this.'\n", "Label: 1\n", "Review: b\"Firstly, I would like to point out that people who have criticised this film have made some glaring errors. Anything that has a rating below 6/10 is clearly utter nonsense.

Creep is an absolutely fantastic film with amazing film effects. The actors are highly believable, the narrative thought provoking and the horror and graphical content extremely disturbing.

There is much mystique in this film. Many questions arise as the audience are revealed to the strange and freakish creature that makes habitat in the dark rat ridden tunnels. How was 'Craig' created and what happened to him?

A fantastic film with a large chill factor. A film with so many unanswered questions and a film that needs to be appreciated along with others like 28 Days Later, The Bunker, Dog Soldiers and Deathwatch.

Look forward to more of these fantastic films!!\"\n", "Label: 1\n", "Review: b\"I'm sorry but I didn't like this doc very much. I can think of a million ways it could have been better. The people who made it obviously don't have much imagination. The interviews aren't very interesting and no real insight is offered. The footage isn't assembled in a very informative way, either. It's too bad because this is a movie that really deserves spellbinding special features. One thing I'll say is that Isabella Rosselini gets more beautiful the older she gets. All considered, this only gets a '4.'\"\n", "Label: 0\n" ] } ], "source": [ "for review_batch, label_batch in val_ds.take(1):\n", " for i in range(5):\n", " print(\"Review: \", review_batch[i].numpy())\n", " print(\"Label: \", label_batch[i].numpy())" ] }, { "cell_type": "markdown", "metadata": { "id": "q-lVaukyb75k" }, "source": [ "이제 이전과 같이 데이터를 전처리하고 모델을 훈련할 수 있습니다.\n", "\n", "참고: 이진 분류 문제이므로 여러분의 모델에 `tf.keras.losses.SparseCategoricalCrossentropy` 대신 `tf.keras.losses.BinaryCrossentropy`를 사용합니다." ] }, { "cell_type": "markdown", "metadata": { "id": "ciz2CxAsZw3Z" }, "source": [ "### 훈련을 위한 데이터세트 준비하기" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:11.002821Z", "iopub.status.busy": "2022-12-14T20:58:11.002133Z", "iopub.status.idle": "2022-12-14T20:58:13.214769Z", "shell.execute_reply": "2022-12-14T20:58:13.213882Z" }, "id": "UzT_t9ihZLH4" }, "outputs": [], "source": [ "vectorize_layer = TextVectorization(\n", " max_tokens=VOCAB_SIZE,\n", " output_mode='int',\n", " output_sequence_length=MAX_SEQUENCE_LENGTH)\n", "\n", "# Make a text-only dataset (without labels), then call `TextVectorization.adapt`.\n", "train_text = train_ds.map(lambda text, labels: text)\n", "vectorize_layer.adapt(train_text)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:13.218914Z", "iopub.status.busy": "2022-12-14T20:58:13.218239Z", "iopub.status.idle": "2022-12-14T20:58:13.222581Z", "shell.execute_reply": "2022-12-14T20:58:13.221583Z" }, "id": "zz-Xrd_ZZ4tB" }, "outputs": [], "source": [ "def vectorize_text(text, label):\n", " text = tf.expand_dims(text, -1)\n", " return vectorize_layer(text), label" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:13.226121Z", "iopub.status.busy": "2022-12-14T20:58:13.225420Z", "iopub.status.idle": "2022-12-14T20:58:13.313672Z", "shell.execute_reply": "2022-12-14T20:58:13.312913Z" }, "id": "ycn0Itd6g5aF" }, "outputs": [], "source": [ "train_ds = train_ds.map(vectorize_text)\n", "val_ds = val_ds.map(vectorize_text)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:13.317778Z", "iopub.status.busy": "2022-12-14T20:58:13.317245Z", "iopub.status.idle": "2022-12-14T20:58:13.322307Z", "shell.execute_reply": "2022-12-14T20:58:13.321642Z" }, "id": "jc11jQTlZ5lj" }, "outputs": [], "source": [ "# Configure datasets for performance as before.\n", "train_ds = configure_dataset(train_ds)\n", "val_ds = configure_dataset(val_ds)" ] }, { "cell_type": "markdown", "metadata": { "id": "SQzoYkaGZ82Z" }, "source": [ "### 모델 생성, 구성 및 훈련하기" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:13.325715Z", "iopub.status.busy": "2022-12-14T20:58:13.325199Z", "iopub.status.idle": "2022-12-14T20:58:13.372372Z", "shell.execute_reply": "2022-12-14T20:58:13.371466Z" }, "id": "B9IOTLkyZ-a7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_5\"\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Layer (type) Output Shape Param # \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "=================================================================\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " embedding_2 (Embedding) (None, None, 64) 640064 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " conv1d_2 (Conv1D) (None, None, 64) 20544 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " global_max_pooling1d_2 (Glo (None, 64) 0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " balMaxPooling1D) \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " dense_3 (Dense) (None, 1) 65 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "=================================================================\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Total params: 660,673\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Trainable params: 660,673\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Non-trainable params: 0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n" ] } ], "source": [ "model = create_model(vocab_size=VOCAB_SIZE + 1, num_labels=1)\n", "model.summary()" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:13.379635Z", "iopub.status.busy": "2022-12-14T20:58:13.379132Z", "iopub.status.idle": "2022-12-14T20:58:13.388095Z", "shell.execute_reply": "2022-12-14T20:58:13.387421Z" }, "id": "xLnDs5dhaBAk" }, "outputs": [], "source": [ "model.compile(\n", " loss=losses.BinaryCrossentropy(from_logits=True),\n", " optimizer='adam',\n", " metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:13.391467Z", "iopub.status.busy": "2022-12-14T20:58:13.390976Z", "iopub.status.idle": "2022-12-14T20:58:18.750588Z", "shell.execute_reply": "2022-12-14T20:58:18.749676Z" }, "id": "rq59QpNzaDMa" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/313 [..............................] - ETA: 4:12 - loss: 0.6965 - accuracy: 0.5156" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 14/313 [>.............................] - ETA: 1s - loss: 0.6941 - accuracy: 0.4866 " ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 28/313 [=>............................] - ETA: 1s - loss: 0.6922 - accuracy: 0.4944" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 43/313 [===>..........................] - ETA: 1s - loss: 0.6910 - accuracy: 0.5011" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 57/313 [====>.........................] - ETA: 0s - loss: 0.6892 - accuracy: 0.4989" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 71/313 [=====>........................] - ETA: 0s - loss: 0.6867 - accuracy: 0.4916" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 85/313 [=======>......................] - ETA: 0s - loss: 0.6838 - accuracy: 0.4963" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 99/313 [========>.....................] - ETA: 0s - loss: 0.6785 - accuracy: 0.4991" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "113/313 [=========>....................] - ETA: 0s - loss: 0.6719 - accuracy: 0.4976" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "127/313 [===========>..................] - ETA: 0s - loss: 0.6649 - accuracy: 0.5081" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "141/313 [============>.................] - ETA: 0s - loss: 0.6554 - accuracy: 0.5175" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "155/313 [=============>................] - ETA: 0s - loss: 0.6441 - accuracy: 0.5345" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "169/313 [===============>..............] - ETA: 0s - loss: 0.6321 - accuracy: 0.5538" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "183/313 [================>.............] - ETA: 0s - loss: 0.6210 - accuracy: 0.5701" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "198/313 [=================>............] - ETA: 0s - loss: 0.6090 - accuracy: 0.5849" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "213/313 [===================>..........] - ETA: 0s - loss: 0.5977 - accuracy: 0.5993" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "227/313 [====================>.........] - ETA: 0s - loss: 0.5867 - accuracy: 0.6110" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "242/313 [======================>.......] - ETA: 0s - loss: 0.5748 - accuracy: 0.6244" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "256/313 [=======================>......] - ETA: 0s - loss: 0.5657 - accuracy: 0.6351" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "270/313 [========================>.....] - ETA: 0s - loss: 0.5571 - accuracy: 0.6440" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "285/313 [==========================>...] - ETA: 0s - loss: 0.5491 - accuracy: 0.6522" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "300/313 [===========================>..] - ETA: 0s - loss: 0.5408 - accuracy: 0.6607" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "313/313 [==============================] - 3s 6ms/step - loss: 0.5353 - accuracy: 0.6667 - val_loss: 0.3715 - val_accuracy: 0.8270\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2/3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/313 [..............................] - ETA: 1s - loss: 0.5030 - accuracy: 0.7656" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 16/313 [>.............................] - ETA: 1s - loss: 0.3646 - accuracy: 0.8330" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 31/313 [=>............................] - ETA: 0s - loss: 0.3693 - accuracy: 0.8317" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 46/313 [===>..........................] - ETA: 0s - loss: 0.3585 - accuracy: 0.8373" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 61/313 [====>.........................] - ETA: 0s - loss: 0.3586 - accuracy: 0.8366" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 76/313 [======>.......................] - ETA: 0s - loss: 0.3590 - accuracy: 0.8366" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 91/313 [=======>......................] - ETA: 0s - loss: 0.3537 - accuracy: 0.8386" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "106/313 [=========>....................] - ETA: 0s - loss: 0.3476 - accuracy: 0.8404" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "121/313 [==========>...................] - ETA: 0s - loss: 0.3470 - accuracy: 0.8416" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "136/313 [============>.................] - ETA: 0s - loss: 0.3429 - accuracy: 0.8428" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "150/313 [=============>................] - ETA: 0s - loss: 0.3365 - accuracy: 0.8474" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "165/313 [==============>...............] - ETA: 0s - loss: 0.3334 - accuracy: 0.8496" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "180/313 [================>.............] - ETA: 0s - loss: 0.3301 - accuracy: 0.8512" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "195/313 [=================>............] - ETA: 0s - loss: 0.3266 - accuracy: 0.8542" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "210/313 [===================>..........] - ETA: 0s - loss: 0.3239 - accuracy: 0.8555" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "225/313 [====================>.........] - ETA: 0s - loss: 0.3175 - accuracy: 0.8583" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "240/313 [======================>.......] - ETA: 0s - loss: 0.3125 - accuracy: 0.8618" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "255/313 [=======================>......] - ETA: 0s - loss: 0.3093 - accuracy: 0.8638" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "270/313 [========================>.....] - ETA: 0s - loss: 0.3061 - accuracy: 0.8652" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "285/313 [==========================>...] - ETA: 0s - loss: 0.3024 - accuracy: 0.8665" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "300/313 [===========================>..] - ETA: 0s - loss: 0.2991 - accuracy: 0.8686" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "313/313 [==============================] - 1s 4ms/step - loss: 0.2973 - accuracy: 0.8699 - val_loss: 0.3170 - val_accuracy: 0.8552\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3/3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/313 [..............................] - ETA: 1s - loss: 0.3303 - accuracy: 0.8438" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 16/313 [>.............................] - ETA: 1s - loss: 0.2217 - accuracy: 0.9141" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 31/313 [=>............................] - ETA: 0s - loss: 0.2246 - accuracy: 0.9123" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 46/313 [===>..........................] - ETA: 0s - loss: 0.2184 - accuracy: 0.9134" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 61/313 [====>.........................] - ETA: 0s - loss: 0.2210 - accuracy: 0.9109" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 75/313 [======>.......................] - ETA: 0s - loss: 0.2211 - accuracy: 0.9115" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", " 90/313 [=======>......................] - ETA: 0s - loss: 0.2191 - accuracy: 0.9123" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "105/313 [=========>....................] - ETA: 0s - loss: 0.2122 - accuracy: 0.9146" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "120/313 [==========>...................] - ETA: 0s - loss: 0.2130 - accuracy: 0.9138" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "135/313 [===========>..................] - ETA: 0s - loss: 0.2106 - accuracy: 0.9142" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "150/313 [=============>................] - ETA: 0s - loss: 0.2063 - accuracy: 0.9164" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "165/313 [==============>...............] - ETA: 0s - loss: 0.2046 - accuracy: 0.9177" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "180/313 [================>.............] - ETA: 0s - loss: 0.2029 - accuracy: 0.9189" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "195/313 [=================>............] - ETA: 0s - loss: 0.2008 - accuracy: 0.9203" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "210/313 [===================>..........] - ETA: 0s - loss: 0.1986 - accuracy: 0.9211" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "225/313 [====================>.........] - ETA: 0s - loss: 0.1944 - accuracy: 0.9231" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "240/313 [======================>.......] - ETA: 0s - loss: 0.1916 - accuracy: 0.9247" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "255/313 [=======================>......] - ETA: 0s - loss: 0.1898 - accuracy: 0.9259" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "270/313 [========================>.....] - ETA: 0s - loss: 0.1877 - accuracy: 0.9267" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "285/313 [==========================>...] - ETA: 0s - loss: 0.1848 - accuracy: 0.9280" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "300/313 [===========================>..] - ETA: 0s - loss: 0.1824 - accuracy: 0.9292" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "313/313 [==============================] - 1s 4ms/step - loss: 0.1812 - accuracy: 0.9301 - val_loss: 0.3233 - val_accuracy: 0.8606\n" ] } ], "source": [ "history = model.fit(train_ds, validation_data=val_ds, epochs=3)" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:18.754788Z", "iopub.status.busy": "2022-12-14T20:58:18.754045Z", "iopub.status.idle": "2022-12-14T20:58:18.967691Z", "shell.execute_reply": "2022-12-14T20:58:18.966902Z" }, "id": "gCMWCEtyaEbR" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\r", " 1/79 [..............................] - ETA: 3s - loss: 0.2557 - accuracy: 0.8906" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "26/79 [========>.....................] - ETA: 0s - loss: 0.3285 - accuracy: 0.8636" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "51/79 [==================>...........] - ETA: 0s - loss: 0.3212 - accuracy: 0.8615" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "76/79 [===========================>..] - ETA: 0s - loss: 0.3193 - accuracy: 0.8620" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "79/79 [==============================] - 0s 2ms/step - loss: 0.3233 - accuracy: 0.8606\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Loss: 0.32325324416160583\n", "Accuracy: 86.06%\n" ] } ], "source": [ "loss, accuracy = model.evaluate(val_ds)\n", "\n", "print(\"Loss: \", loss)\n", "print(\"Accuracy: {:2.2%}\".format(accuracy))" ] }, { "cell_type": "markdown", "metadata": { "id": "jGtqLXVnaaFy" }, "source": [ "### 모델 내보내기" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:18.971480Z", "iopub.status.busy": "2022-12-14T20:58:18.970817Z", "iopub.status.idle": "2022-12-14T20:58:19.021308Z", "shell.execute_reply": "2022-12-14T20:58:19.020637Z" }, "id": "yE9WZARZaZr1" }, "outputs": [], "source": [ "export_model = tf.keras.Sequential(\n", " [vectorize_layer, model,\n", " layers.Activation('sigmoid')])\n", "\n", "export_model.compile(\n", " loss=losses.SparseCategoricalCrossentropy(from_logits=False),\n", " optimizer='adam',\n", " metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T20:58:19.025358Z", "iopub.status.busy": "2022-12-14T20:58:19.024848Z", "iopub.status.idle": "2022-12-14T20:58:19.162759Z", "shell.execute_reply": "2022-12-14T20:58:19.161923Z" }, "id": "bhF8tDH-afoC" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Question: This is a fantastic movie.\n", "Predicted label: 1\n", "Question: This is a bad movie.\n", "Predicted label: 0\n", "Question: This movie was so bad that it was good.\n", "Predicted label: 1\n", "Question: I will never say yes to watching this movie.\n", "Predicted label: 1\n" ] } ], "source": [ "# 0 --> negative review\n", "# 1 --> positive review\n", "inputs = [\n", " \"This is a fantastic movie.\",\n", " \"This is a bad movie.\",\n", " \"This movie was so bad that it was good.\",\n", " \"I will never say yes to watching this movie.\",\n", "]\n", "\n", "predicted_scores = export_model.predict(inputs)\n", "predicted_labels = [int(round(x[0])) for x in predicted_scores]\n", "\n", "for input, label in zip(inputs, predicted_labels):\n", " print(\"Question: \", input)\n", " print(\"Predicted label: \", label)" ] }, { "cell_type": "markdown", "metadata": { "id": "q1KSXDFPWiPN" }, "source": [ "## 결론\n", "\n", "이 튜토리얼에서는 텍스트를 로드하고 전처리하는 여러 방법을 보여 드렸습니다. 다음 단계로 다음과 같은 추가 텍스트 전처리 [TensorFlow 텍스트](https://www.tensorflow.org/text) 튜토리얼을 탐색할 수 있습니다.\n", "\n", "- [TF 텍스트를 사용한 BERT 전처리](https://www.tensorflow.org/text/guide/bert_preprocessing_guide)\n", "- [TF 텍스트로 토큰화](https://www.tensorflow.org/text/guide/tokenizers)\n", "- [하위 단어 토크나이저](https://www.tensorflow.org/text/guide/subwords_tokenizer)\n", "\n", "[TensorFlow 데이터세트](https://www.tensorflow.org/datasets/catalog/overview)에서 새 데이터세트를 찾을 수도 있습니다. 그리고 `tf.data`에 대해 자세히 알아보려면 [입력 파이프라인 빌드](../../guide/data.ipynb) 가이드를 확인하세요." ] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [], "name": "text.ipynb", "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "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.9.16" } }, "nbformat": 4, "nbformat_minor": 0 }