{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "b518b04cbfe0" }, "source": [ "##### Copyright 2020 The TensorFlow Authors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2022-12-14T21:42:26.744289Z", "iopub.status.busy": "2022-12-14T21:42:26.743790Z", "iopub.status.idle": "2022-12-14T21:42:26.747408Z", "shell.execute_reply": "2022-12-14T21:42:26.746815Z" }, "id": "906e07f6e562" }, "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": "fb291b62b1aa" }, "source": [ "# 組み込みメソッドを使用したトレーニングと評価" ] }, { "cell_type": "markdown", "metadata": { "id": "b1820d9bdfb9" }, "source": [ "
![]() ![]() | \n",
" ![]() | \n",
" ![]() | \n",
" ![]() | \n",
"
(height, width, channels)`)、形状 `(None, 10)` の時系列入力(`(timesteps, features)`)があります。モデルは、これらの入力の組み合わせから 2 つの出力(「スコア」(形状`(1,)`)および 5 つのクラスにわたる確率分布(形状`(5,)`)を計算します。"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:41.040652Z",
"iopub.status.busy": "2022-12-14T21:43:41.040067Z",
"iopub.status.idle": "2022-12-14T21:43:41.104218Z",
"shell.execute_reply": "2022-12-14T21:43:41.103601Z"
},
"id": "5f958449a057"
},
"outputs": [],
"source": [
"image_input = keras.Input(shape=(32, 32, 3), name=\"img_input\")\n",
"timeseries_input = keras.Input(shape=(None, 10), name=\"ts_input\")\n",
"\n",
"x1 = layers.Conv2D(3, 3)(image_input)\n",
"x1 = layers.GlobalMaxPooling2D()(x1)\n",
"\n",
"x2 = layers.Conv1D(3, 3)(timeseries_input)\n",
"x2 = layers.GlobalMaxPooling1D()(x2)\n",
"\n",
"x = layers.concatenate([x1, x2])\n",
"\n",
"score_output = layers.Dense(1, name=\"score_output\")(x)\n",
"class_output = layers.Dense(5, name=\"class_output\")(x)\n",
"\n",
"model = keras.Model(\n",
" inputs=[image_input, timeseries_input], outputs=[score_output, class_output]\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "df3ed34fe78b"
},
"source": [
"ここで何が行われているか明確に分かるようにこのモデルをプロットしてみましょう(プロットに表示される形状は、サンプルごとの形状ではなく、バッチの形状であることに注意してください)。"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:41.107705Z",
"iopub.status.busy": "2022-12-14T21:43:41.107214Z",
"iopub.status.idle": "2022-12-14T21:43:41.352355Z",
"shell.execute_reply": "2022-12-14T21:43:41.351550Z"
},
"id": "ac8c1baca9e3"
},
"outputs": [
{
"data": {
"image/png": "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7BTvX+anOca8xoiUcnJy0KlTJ2uHYTSViIi1gzCFpKQkxMfHWzsMIiKyI1u2bOF88q1IXFwckpOTrR0GERHZodjYWGzdutXaYRhjq810FhBR82j+0OF/AYiIiKghzBeI7M5WjllARERERERERArsLCAiIiIiIiIiBXYWEBEREREREZECOwuIiIiIiIiISIGdBURERERERESkwM4CIiIiIiIiIlJgZwERERERERERKbCzgIiIiIiIiIgU2FlARERERERERArsLCAiIiIiIiIiBXYWEBEREREREZECOwuIiIiIiIiISIGdBURERERERESkwM4CIiIiIiIiIlJgZwERERERERERKbCzgIiIiIiIiIgU2FlARERERERERArsLCAiIiIiIiIiBXYWEBEREREREZECOwuIiIiIiIiISIGdBURERERERESkwM4CIiIiIiIiIlJgZwERERERERERKbCzgIiIiIiIiIgU2FlARERERERERArsLCAiIiIiIiIiBXYWEBEREREREZECOwuIiIiIiIiISIGdBURERERERESkwM4CIiIiIiIiIlJgZwERERERERERKbCzgIiIiIiIiIgU2FlARERERERERApO1g6AiCzn0KFDSE1NVZSdPXsWAPD+++8rysPCwvA///M/FouNiIiIWgbmC0QEACoREWsHQUSWceDAAYwZMwbOzs5wcND/YFFtbS2qq6uxf/9+REZGWjhCIiIisjbmC0QEYCs7C4jsSG1tLQICApCfn99ovXbt2iE3NxeOjo4WioyIiIhaCuYLRARgK8csILIjDg4OmDp1KlxcXBqs4+LigmnTpvHGT0REZKeYLxARwAEOiezOk08+iTt37jS4/M6dO3jyySctGBERERG1NMwXiIivIRDZoS5duuDy5ct6lwUHB+Py5ctQqVQWjoqIiIhaEuYLRHaNryEQ2aPp06fD2dlZp9zZ2RlPP/00b/xERETEfIHIzvHJAiI7dPbsWfzud7/Tu+zUqVPo16+fhSMiIiKilob5ApFd45MFRPaoT58+6Nevn85/BPr27csbPxEREQFgvkBk79hZQGSn/vCHPyhGMHZ2dsZTTz1lxYiIiIiopWG+QGS/+BoCkZ26cuUKHnjgAWi+AlQqFS5cuIAuXbpYNzAiIiJqMZgvENktvoZAZK+Cg4MxdOhQODg4wMHBAUOHDuWNn4iI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IV5eXlKvXj3p0qWLfP/99yZxxMTEiL+/f4UjgtwrNzdXUlNTJS4uTho3bize3t7i7+8vUVFR8v7771eYBP/888/StWtXqVWrlvj7+0tMTIzZc8Vd40lISJCwsDC5c+dOlesoj8UCcrT7TS5dMV8QEdm0aVOFuYK5YQcdmS/Yep0zV1B2NAQR5hH3ctftFlEmPzCHxQIjLBZU5X6KBWQfrnjR6hMAV2PL+Z6TkyNhYWGSnJzsoKiUdePGDdFoNJKUlKR0KCLinvEcPHhQVCqVyTBQlmKxgBzNFe9TNY0rXueumivY+3xnHlEzuUJ+YA4/z41w6EQiuj86nQ6bNm3CunXrDI2pagoRQUpKCmrVqoWpU6cqHY5bxnPu3DnEx8fj9ddfR//+/R2yDiIiUg7ziJqH+UHNwWIBEd23tm3bYt++ffj222+Rl5endDh2c/XqVZw7dw7btm27r+7ijMd2CxcuxLRp0zBt2jSHLJ+IiJTHPKJmYX5Qc6irnoWILDVz5kxMnDjR8N8qlQpTpkzBe++9p2BU1aNx48YVjn/rqkJCQgxjfjsDd4xn+vTpDl0+EVF1c+dcoTLMI2oO5gc1B4sFRHY0YcIETJgwQekwiIiIyEkxVyAiV8GfIRARERERERGRERYLiIiIiIiIiMgIiwVEREREREREZITFAiIiIiIiIiIywgaHFvjoo4+wdu1apcNwW3v27AEAJCQkKByJe+D5TjXNpUuXlA6B3MCePXt4n1KQ/jrnMXA85mVUk+3ZswdPPPGE0mE4DZWIiNJBODN+EFJNd+TIEQBA69atFY6EyLFYBCNH+fDDD7F7926lwyByKOYL5C6efPJJjBs3TukwnMFaFguI3Fy/fv0AAGlpaQpHQkRERM6K+QKR21nLngVEREREREREZITFAiIiIiIiIiIywmIBERERERERERlhsYCIiIiIiIiIjLBYQERERERERERGWCwgIiIiIiIiIiMsFhARERERERGRERYLiIiIiIiIiMgIiwVEREREREREZITFAiIiIiIiIiIywmIBERERERERERlhsYCIiIiIiIiIjLBYQERERERERERGWCwgIiIiIiIiIiMsFhARERERERGRERYLiIiIiIiIiMgIiwVEREREREREZITFAiIiIiIiIiIywmIBERERERERERlhsYCIiIiIiIiIjLBYQERERERERERG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txxCz922W8nc4L6LBUVFRcjPz4evry/8/f1NXi/fxbGy5eTm5sLX19fscDLBwcEAgMzMTKPpQUFBZpvK1a9fHwDw+++/AwByc3Px9ttvo3Xr1ggMDDT8JmXixIkAgIKCAovitEatWrWM/tvDwwOenp7w8/Mzmu7p6Wnym0db4p06dSratWuHXbt2ISEhAR4e93d4K0qA79231hw3W4+xLco3/fD29gYAw36+n/O2pKQECQkJCAsLw+eff262UFDV8vX70NlVtR/vZcn5UtP5+voCAIqLi616X0pKChITE/HLL7+YHSrpfq4dS66F3NxclJWVQafTGf1mT6VS4eeffwYAnD592qptskSPHj0AwGg0AX2Sbe4Ge/nyZQBwWKLsCvHcq6SkxOUbpjGHqBhziJqZQ1iCOcQfmENUzV1zCHfd7urODe67WODj44OAgAAUFhbi5s2bJq9benH7+PhAp9OhsLDQpFHQK8WQAAAgAElEQVQPAFy9ehXA3WrNvXJzc80uT79e/YdMjx49MHXqVAwfPhynTp1CWVkZRAQfffQRADjdkHe2xLt9+3bk5uaidevWGDlyJA4dOnRfMVy7ds3seu7dt9YcN1uPsSPcz3mbnJyMoqIipKWlGTXJadasGfbs2WPR8q9fv26HrXAulpwveh4eHrhz547JvBU10XKVUSZCQ0MBVPy5VJnU1FS0aNECS5YswfLly41ec+S14+Pjg9q1a0OtVqO4uBgiYvZfp06drF62JesGjK8H/Xr2799vMr9+WmxsrN1jcZV49PLy8iAihnPOVTGHcAzmEI5lr/PW1uUzh2AOUZ475hCAe253decGdvkZQteuXQH88ciUXmZmplVdovv06QMAJsM9FBUVYdu2bdBoNCaPY928edPkhnbkyBFkZGQgMjISoaGhKC0txc6dOxESEoKUlBTUq1fP8MHhjI9w2hLv+fPnMWzYMHz55Zf4+uuvodFo0KtXL2RlZdkcR2FhIdLT042mld+3gHXHzZZj7Ci2nLfvvvsujh49io0bNxouVmuXn52djZMnT9oattOy9HwB7t4Q9d/K6mVmZuK3334zu2w/Pz+jxKBFixZYtGiRHaO3j1atWgEw/y10Vfz9/fHll19Cq9Xik08+MXndkddOfHw8SkpKzHYpnz59Oho2bGjzmL0TJkwwdFgv79tvvwVg/Lhfx44d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QEBAQIXz6nt5lB/28KWXXkLjxo2rL2giIiJjfLKAiIici06nw4gRI/DLL7/g+++/R0REBEaNGoXGjRtj8uTJuHDhgtn3paWlIScnB+vWrUOXLl2Ql5dXvYETASgoKEDv3r2RmpqK27dvY+XKlWbny8nJwaxZs/Dggw/i2Wefxblz57B48WJcvHgRH3zwAQsFRESkOD5ZQERETu/KlStYtmwZ5s2bh8uXLxuGX4yPj4enpycAICoqCgcPHkRZWRm8vLwQERGBrVu3cqQFqjbXr19Ht27dsG/fPpSUlEClUqFly5Y4duyYYR79sIfLly+Hl5cX+vfvj9GjR6N169YKRk5ERGSCDQ6JiMh1VNT4rV27dujUqZPRvF5eXqhXrx62bduGli1bKhQxuYvz58+jc+fOuHjxIoqLi41e27p1K86ePYv58+fj4MGD+J//+R8kJydj4MCB0Gq1CkVMRERUKRYLiIjINR09ehTz58/H8uXLUVxcjJKSEpM/0tRqNTQaDTZv3owOHTooFCnVdIcPH8azzz6LGzdumJyDXl5e8PPzw507d5CYmIiXX34Zf/rTnxSKlIiIyGIsFhARkWu7fPkyIiIicOfOHbOve3h4wNPTEytXrkRCQkI1R0c13datW9GrVy/cuXMHJSUlZudRq9U4evQomjdvXs3RERER2YwNDomIyLWtXbsWpaWlFb5eVlaGkpIS9O/fH5988kk1RkY13bJly/Dcc8+hsLCwwkKB3saNG6spKiIiIvvgkwVEROSyRATNmjXD+fPnYentLCUlBR9//DFUKpWDo6OabNasWXj11VctPu/Cw8Nx4cIFeHjwexoiInIJfLKAiIhc1w8//IBz585Z/AcbAMyZMwcvvvhild8EE5lTWlqKl156yapCAQBcvHgR33//vQMjIyIisi8+WUBEitu9ezc+/PBDpcMgF/TLL7/g119/NTQ4rIhKpTI8SSAiEBEEBwfjySefhFqtrq5wycWVlpZiz549uHLlitlzqiKenp5Qq9UIDw/Ho48+Wl3hUg2ydu1apUMgIvezlhkSESnu4sWLWLduHfr27at0KORC1q1bhyeeeAKtWrUyTCspKTGMiqD/33v//73TiouLcerUKTz00EP8SUIlLl26hD179vD6BHD69Gmo1WpERETAy8sLarUaarXa8P+9vb0N0/T/vL29lQ6bXJj+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SOnQiOqdk5OTfqrF/v37Y9KkSRg4cCBOnz6tdGhERNTMsbOAiIgajdTUVDz55JNISkrCwoULkZ2djWHDhikdFpHN6aZa/P7771FeXo6nn34aU6ZMwbVr15QOjYiImil2FhARkeJOnTqFZ599FqNHj8azzz6LnJwczJo1C87OzkqHRtSgevbsifT0dP1Ui126dOFUi0REpAh2FhARkWJu3ryJ6dOno0ePHigvL0d6ejo2btwIHx8fpUMjUoxKpcLEiRPx888/4/XXX8esWbPQo0cPTrVIREQNip0FRETU4Kqrq7Fx40Z06dIF27dvx+rVq/H999+jT58+SodG1Gh4eHjoX8cJCAjgVItERNSg2FlAREQN6ocffkBERAQmT56M559/Hjk5OXj11Vfh4MCvJCJTOnfujN27d+PAgQO4ePGifqrF8vJypUMjIqImjHdmRETUIHJzczFx4kT06dMHnp6eOHnyJJKSkuDl5aV0aER2YfDgwcjKysLSpUuxcuVKTrVIREQ2xc4CIiKyqcrKSiQlJSEkJATp6elITk7Gt99+i65duyodGpHdeXCqxd///vf405/+hIEDByI7O1vp0IiIqIlhZwEREdnMt99+C61Wi7lz52LmzJk4c+YM4uLilA6LyO75+flh7dq1+P7771FRUYHw8HBMmTIFhYWFSodGRERNBDsLiIio3v3000+IiYnBkCFDEBwcjLNnz2LhwoVwdXVVOjSiJqVHjx5IS0vDp59+iq+++gohISGcapGIiOoFOwuIiKje3L59GwsXLkRoaCiuXr2Kf/7zn0hNTUXHjh2VDo2oyTI11WJoaCi++eYbpUMjIiI7xs4CIiJ6qCtXrtRZRkSwfft2PPHEE/joo4+wbNkyHDt2DJGRkQ0QIREBgFqtxsKFC3H69GkEBwcjOjoaI0eOxC+//FLntgUFBaiurrZ9kEREZDfYWUBERLXKz89H37598eWXX9Za5sSJE4iMjMT48ePRv39/nD9/HtOnT0eLFi0aMFIi0vnd736H1NRUHDhwAJcuXcKTTz6J2bNn49atW7VuM3nyZLz55psNGCURETV27CwgIiKTysvLERMTg8uXL+P1119HRUWFwfobN25g+vTp6NWrF1q0aIETJ05g48aNaNu2rUIRE9GDBg8ejFOnTuG9997DJ598gieeeAIbN26EiBiU+/rrr7F7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\n",
"text/plain": [
""
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"keras.utils.plot_model(model, \"multi_input_and_output_model.png\", show_shapes=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4d979e89b335"
},
"source": [
"コンパイル時に損失関数をリストとして渡すことにより出力ごとに異なる損失を指定できます。"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:41.356250Z",
"iopub.status.busy": "2022-12-14T21:43:41.355745Z",
"iopub.status.idle": "2022-12-14T21:43:41.370345Z",
"shell.execute_reply": "2022-12-14T21:43:41.369777Z"
},
"id": "9655c0084d70"
},
"outputs": [],
"source": [
"model.compile(\n",
" optimizer=keras.optimizers.RMSprop(1e-3),\n",
" loss=[keras.losses.MeanSquaredError(), keras.losses.CategoricalCrossentropy()],\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "f5fc73405283"
},
"source": [
"モデルに単一の損失関数のみを渡した場合、同じ損失関数がすべての出力に適用されます(ここでは適切ではありません)。\n",
"\n",
"メトリクスの場合も同様です。"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:41.373645Z",
"iopub.status.busy": "2022-12-14T21:43:41.373135Z",
"iopub.status.idle": "2022-12-14T21:43:41.388822Z",
"shell.execute_reply": "2022-12-14T21:43:41.388242Z"
},
"id": "b4c0c6c564bc"
},
"outputs": [],
"source": [
"model.compile(\n",
" optimizer=keras.optimizers.RMSprop(1e-3),\n",
" loss=[keras.losses.MeanSquaredError(), keras.losses.CategoricalCrossentropy()],\n",
" metrics=[\n",
" [\n",
" keras.metrics.MeanAbsolutePercentageError(),\n",
" keras.metrics.MeanAbsoluteError(),\n",
" ],\n",
" [keras.metrics.CategoricalAccuracy()],\n",
" ],\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4dd9fb0343cc"
},
"source": [
"出力レイヤーに名前を付けたので、dict を介して出力ごとの損失とメトリクスを指定することもできます。"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:41.392056Z",
"iopub.status.busy": "2022-12-14T21:43:41.391614Z",
"iopub.status.idle": "2022-12-14T21:43:41.406314Z",
"shell.execute_reply": "2022-12-14T21:43:41.405711Z"
},
"id": "42cb75110fc3"
},
"outputs": [],
"source": [
"model.compile(\n",
" optimizer=keras.optimizers.RMSprop(1e-3),\n",
" loss={\n",
" \"score_output\": keras.losses.MeanSquaredError(),\n",
" \"class_output\": keras.losses.CategoricalCrossentropy(),\n",
" },\n",
" metrics={\n",
" \"score_output\": [\n",
" keras.metrics.MeanAbsolutePercentageError(),\n",
" keras.metrics.MeanAbsoluteError(),\n",
" ],\n",
" \"class_output\": [keras.metrics.CategoricalAccuracy()],\n",
" },\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bfd95ac0dd8b"
},
"source": [
"3 つ以上の出力がある場合は、明示的な名前とディクショナリを使用することをお勧めします。\n",
"\n",
"`loss_weights` 引数を使用すると、異なる出力固有の損失に異なる重みを与えることができます(この例でクラス損失の 2 倍の重要性を与えることにより、「スコア」損失を優先する場合など)。"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:41.409543Z",
"iopub.status.busy": "2022-12-14T21:43:41.409101Z",
"iopub.status.idle": "2022-12-14T21:43:41.423871Z",
"shell.execute_reply": "2022-12-14T21:43:41.423312Z"
},
"id": "23a71e5f5227"
},
"outputs": [],
"source": [
"model.compile(\n",
" optimizer=keras.optimizers.RMSprop(1e-3),\n",
" loss={\n",
" \"score_output\": keras.losses.MeanSquaredError(),\n",
" \"class_output\": keras.losses.CategoricalCrossentropy(),\n",
" },\n",
" metrics={\n",
" \"score_output\": [\n",
" keras.metrics.MeanAbsolutePercentageError(),\n",
" keras.metrics.MeanAbsoluteError(),\n",
" ],\n",
" \"class_output\": [keras.metrics.CategoricalAccuracy()],\n",
" },\n",
" loss_weights={\"score_output\": 2.0, \"class_output\": 1.0},\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "147b5f581c32"
},
"source": [
"これらの出力が予測に使用するもので、トレーニングには使用されない場合、特定の出力の損失を計算しないことを選択することもできます。"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:41.427344Z",
"iopub.status.busy": "2022-12-14T21:43:41.426749Z",
"iopub.status.idle": "2022-12-14T21:43:41.439475Z",
"shell.execute_reply": "2022-12-14T21:43:41.438928Z"
},
"id": "6d51aa372ef4"
},
"outputs": [],
"source": [
"# List loss version\n",
"model.compile(\n",
" optimizer=keras.optimizers.RMSprop(1e-3),\n",
" loss=[None, keras.losses.CategoricalCrossentropy()],\n",
")\n",
"\n",
"# Or dict loss version\n",
"model.compile(\n",
" optimizer=keras.optimizers.RMSprop(1e-3),\n",
" loss={\"class_output\": keras.losses.CategoricalCrossentropy()},\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "c00d5f56d3f0"
},
"source": [
"`fit()` で多入力または多出力モデルにデータを渡すと、コンパイルで損失関数を指定するのと同じように機能します。NumPy 配列のリスト(損失関数を受け取った出力に 1:1 でマッピング)または**出力の名前を NumPy 配列にマッピングする dict** を渡すことができます。"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:41.442664Z",
"iopub.status.busy": "2022-12-14T21:43:41.442199Z",
"iopub.status.idle": "2022-12-14T21:43:44.273237Z",
"shell.execute_reply": "2022-12-14T21:43:44.272640Z"
},
"id": "0539da84328b"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"1/4 [======>.......................] - ETA: 6s - loss: 17.3793 - score_output_loss: 0.1522 - class_output_loss: 17.2272"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"4/4 [==============================] - 2s 9ms/step - loss: 17.7520 - score_output_loss: 0.1534 - class_output_loss: 17.5986\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"1/4 [======>.......................] - ETA: 1s - loss: 18.4055 - score_output_loss: 0.1918 - class_output_loss: 18.2137"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"4/4 [==============================] - 0s 5ms/step - loss: 17.8890 - score_output_loss: 0.1902 - class_output_loss: 17.6988\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.compile(\n",
" optimizer=keras.optimizers.RMSprop(1e-3),\n",
" loss=[keras.losses.MeanSquaredError(), keras.losses.CategoricalCrossentropy()],\n",
")\n",
"\n",
"# Generate dummy NumPy data\n",
"img_data = np.random.random_sample(size=(100, 32, 32, 3))\n",
"ts_data = np.random.random_sample(size=(100, 20, 10))\n",
"score_targets = np.random.random_sample(size=(100, 1))\n",
"class_targets = np.random.random_sample(size=(100, 5))\n",
"\n",
"# Fit on lists\n",
"model.fit([img_data, ts_data], [score_targets, class_targets], batch_size=32, epochs=1)\n",
"\n",
"# Alternatively, fit on dicts\n",
"model.fit(\n",
" {\"img_input\": img_data, \"ts_input\": ts_data},\n",
" {\"score_output\": score_targets, \"class_output\": class_targets},\n",
" batch_size=32,\n",
" epochs=1,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "e53eda8e1399"
},
"source": [
"以下は `Dataset` のユースケースです。NumPy 配列と同様に、`Dataset` は dicts のタプルを返します。"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:44.276885Z",
"iopub.status.busy": "2022-12-14T21:43:44.276251Z",
"iopub.status.idle": "2022-12-14T21:43:44.733180Z",
"shell.execute_reply": "2022-12-14T21:43:44.732530Z"
},
"id": "4df41a12ed2c"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"1/2 [==============>...............] - ETA: 0s - loss: 17.9856 - score_output_loss: 0.1560 - class_output_loss: 17.8296"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"2/2 [==============================] - 0s 19ms/step - loss: 18.1589 - score_output_loss: 0.1828 - class_output_loss: 17.9761\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_dataset = tf.data.Dataset.from_tensor_slices(\n",
" (\n",
" {\"img_input\": img_data, \"ts_input\": ts_data},\n",
" {\"score_output\": score_targets, \"class_output\": class_targets},\n",
" )\n",
")\n",
"train_dataset = train_dataset.shuffle(buffer_size=1024).batch(64)\n",
"\n",
"model.fit(train_dataset, epochs=1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "05c792cd43a4"
},
"source": [
"## コールバックを使用する\n",
"\n",
"Keras のコールバックは、トレーニング中の異なる時点(エポックの始め、バッチの終わり、エポックの終わりなど)で呼び出されるオブジェクトで、以下のような動作を実装するために使用できます。\n",
"\n",
"- トレーニング中に(組み込みのエポックごとの検証だけでなく)さまざまな時点で検証を行う\n",
"- 定期的に、または特定の精度しきい値を超えたときにモデルにチェックポイントを設定する\n",
"- 学習が停滞したときにモデルの学習率を変更する\n",
"- 学習が停滞したときにトップレイヤーをファインチューニングする\n",
"- トレーニング終了時、または特定のパフォーマンスしきい値を超えたときにメールまたはインスタントメッセージ通知を送信する\n",
"- など\n",
"\n",
"コールバックは、リストとして `fit()` の呼び出しに渡すことができます。"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:44.736795Z",
"iopub.status.busy": "2022-12-14T21:43:44.736238Z",
"iopub.status.idle": "2022-12-14T21:43:57.023850Z",
"shell.execute_reply": "2022-12-14T21:43:57.023126Z"
},
"id": "15036ddbee42"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/20\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/625 [..............................] - ETA: 7:08 - loss: 2.3299 - sparse_categorical_accuracy: 0.0938"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [>.............................] - ETA: 1s - loss: 1.5719 - sparse_categorical_accuracy: 0.5825 "
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=>............................] - ETA: 1s - loss: 1.1691 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==>...........................] - ETA: 1s - loss: 0.9805 - sparse_categorical_accuracy: 0.7397"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===>..........................] - ETA: 1s - loss: 0.8528 - sparse_categorical_accuracy: 0.7731"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [====>.........................] - ETA: 1s - loss: 0.7691 - sparse_categorical_accuracy: 0.7929"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [======>.......................] - ETA: 1s - loss: 0.7026 - sparse_categorical_accuracy: 0.8095"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=======>......................] - ETA: 0s - loss: 0.6542 - sparse_categorical_accuracy: 0.8217"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [========>.....................] - ETA: 0s - loss: 0.6103 - sparse_categorical_accuracy: 0.8328"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"219/625 [=========>....................] - ETA: 0s - loss: 0.5773 - sparse_categorical_accuracy: 0.8414"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==========>...................] - ETA: 0s - loss: 0.5528 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"268/625 [===========>..................] - ETA: 0s - loss: 0.5296 - sparse_categorical_accuracy: 0.8531"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"293/625 [=============>................] - ETA: 0s - loss: 0.5096 - sparse_categorical_accuracy: 0.8580"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"318/625 [==============>...............] - ETA: 0s - loss: 0.4915 - sparse_categorical_accuracy: 0.8631"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"343/625 [===============>..............] - ETA: 0s - loss: 0.4759 - sparse_categorical_accuracy: 0.8669"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"367/625 [================>.............] - ETA: 0s - loss: 0.4643 - sparse_categorical_accuracy: 0.8698"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"392/625 [=================>............] - ETA: 0s - loss: 0.4527 - sparse_categorical_accuracy: 0.8726"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===================>..........] - ETA: 0s - loss: 0.4405 - sparse_categorical_accuracy: 0.8755"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"442/625 [====================>.........] - ETA: 0s - loss: 0.4275 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"468/625 [=====================>........] - ETA: 0s - loss: 0.4196 - sparse_categorical_accuracy: 0.8808"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"494/625 [======================>.......] - ETA: 0s - loss: 0.4109 - sparse_categorical_accuracy: 0.8832"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"519/625 [=======================>......] - ETA: 0s - loss: 0.4022 - sparse_categorical_accuracy: 0.8857"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"544/625 [=========================>....] - ETA: 0s - loss: 0.3958 - sparse_categorical_accuracy: 0.8871"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"570/625 [==========================>...] - ETA: 0s - loss: 0.3867 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"596/625 [===========================>..] - ETA: 0s - loss: 0.3796 - sparse_categorical_accuracy: 0.8914"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"621/625 [============================>.] - ETA: 0s - loss: 0.3737 - sparse_categorical_accuracy: 0.8929"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"625/625 [==============================] - 3s 3ms/step - loss: 0.3721 - sparse_categorical_accuracy: 0.8933 - val_loss: 0.2397 - val_sparse_categorical_accuracy: 0.9269\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 2/20\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/625 [..............................] - ETA: 1s - loss: 0.1503 - sparse_categorical_accuracy: 0.9531"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [>.............................] - ETA: 1s - loss: 0.1877 - sparse_categorical_accuracy: 0.9394"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=>............................] - ETA: 1s - loss: 0.1775 - sparse_categorical_accuracy: 0.9444"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==>...........................] - ETA: 1s - loss: 0.1740 - sparse_categorical_accuracy: 0.9451"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===>..........................] - ETA: 1s - loss: 0.1869 - sparse_categorical_accuracy: 0.9426"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [====>.........................] - ETA: 1s - loss: 0.1887 - sparse_categorical_accuracy: 0.9428"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [======>.......................] - ETA: 0s - loss: 0.1880 - sparse_categorical_accuracy: 0.9419"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"172/625 [=======>......................] - ETA: 0s - loss: 0.1882 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"197/625 [========>.....................] - ETA: 0s - loss: 0.1912 - sparse_categorical_accuracy: 0.9412"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=========>....................] - ETA: 0s - loss: 0.1939 - sparse_categorical_accuracy: 0.9409"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"247/625 [==========>...................] - ETA: 0s - loss: 0.1927 - sparse_categorical_accuracy: 0.9414"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"272/625 [============>.................] - ETA: 0s - loss: 0.1890 - sparse_categorical_accuracy: 0.9422"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=============>................] - ETA: 0s - loss: 0.1930 - sparse_categorical_accuracy: 0.9412"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"322/625 [==============>...............] - ETA: 0s - loss: 0.1909 - sparse_categorical_accuracy: 0.9421"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"346/625 [===============>..............] - ETA: 0s - loss: 0.1907 - sparse_categorical_accuracy: 0.9424"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"371/625 [================>.............] - ETA: 0s - loss: 0.1894 - sparse_categorical_accuracy: 0.9428"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"395/625 [=================>............] - ETA: 0s - loss: 0.1885 - sparse_categorical_accuracy: 0.9436"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"420/625 [===================>..........] - ETA: 0s - loss: 0.1849 - sparse_categorical_accuracy: 0.9449"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"445/625 [====================>.........] - ETA: 0s - loss: 0.1851 - sparse_categorical_accuracy: 0.9450"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"470/625 [=====================>........] - ETA: 0s - loss: 0.1848 - sparse_categorical_accuracy: 0.9451"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"495/625 [======================>.......] - ETA: 0s - loss: 0.1837 - sparse_categorical_accuracy: 0.9449"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"520/625 [=======================>......] - ETA: 0s - loss: 0.1816 - sparse_categorical_accuracy: 0.9454"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=========================>....] - ETA: 0s - loss: 0.1815 - sparse_categorical_accuracy: 0.9456"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"570/625 [==========================>...] - ETA: 0s - loss: 0.1804 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"595/625 [===========================>..] - ETA: 0s - loss: 0.1788 - sparse_categorical_accuracy: 0.9462"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"620/625 [============================>.] - ETA: 0s - loss: 0.1774 - sparse_categorical_accuracy: 0.9468"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"625/625 [==============================] - 2s 2ms/step - loss: 0.1773 - sparse_categorical_accuracy: 0.9468 - val_loss: 0.1920 - val_sparse_categorical_accuracy: 0.9428\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 3/20\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/625 [..............................] - ETA: 1s - loss: 0.1424 - sparse_categorical_accuracy: 0.9531"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [>.............................] - ETA: 1s - loss: 0.1456 - sparse_categorical_accuracy: 0.9597"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=>............................] - ETA: 1s - loss: 0.1406 - sparse_categorical_accuracy: 0.9608"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==>...........................] - ETA: 1s - loss: 0.1414 - sparse_categorical_accuracy: 0.9600"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===>..........................] - ETA: 1s - loss: 0.1430 - sparse_categorical_accuracy: 0.9590"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"124/625 [====>.........................] - ETA: 1s - loss: 0.1367 - sparse_categorical_accuracy: 0.9614"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"149/625 [======>.......................] - ETA: 0s - loss: 0.1361 - sparse_categorical_accuracy: 0.9621"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=======>......................] - ETA: 0s - loss: 0.1359 - sparse_categorical_accuracy: 0.9626"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [========>.....................] - ETA: 0s - loss: 0.1344 - sparse_categorical_accuracy: 0.9625"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=========>....................] - ETA: 0s - loss: 0.1337 - sparse_categorical_accuracy: 0.9626"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"247/625 [==========>...................] - ETA: 0s - loss: 0.1312 - sparse_categorical_accuracy: 0.9628"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"272/625 [============>.................] - ETA: 0s - loss: 0.1310 - sparse_categorical_accuracy: 0.9627"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=============>................] - ETA: 0s - loss: 0.1308 - sparse_categorical_accuracy: 0.9625"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"322/625 [==============>...............] - ETA: 0s - loss: 0.1310 - sparse_categorical_accuracy: 0.9626"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"347/625 [===============>..............] - ETA: 0s - loss: 0.1316 - sparse_categorical_accuracy: 0.9619"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"372/625 [================>.............] - ETA: 0s - loss: 0.1304 - sparse_categorical_accuracy: 0.9620"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"397/625 [==================>...........] - ETA: 0s - loss: 0.1309 - sparse_categorical_accuracy: 0.9617"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"422/625 [===================>..........] - ETA: 0s - loss: 0.1315 - sparse_categorical_accuracy: 0.9613"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"448/625 [====================>.........] - ETA: 0s - loss: 0.1310 - sparse_categorical_accuracy: 0.9611"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=====================>........] - ETA: 0s - loss: 0.1310 - sparse_categorical_accuracy: 0.9614"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"498/625 [======================>.......] - ETA: 0s - loss: 0.1308 - sparse_categorical_accuracy: 0.9613"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"523/625 [========================>.....] - ETA: 0s - loss: 0.1308 - sparse_categorical_accuracy: 0.9612"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"548/625 [=========================>....] - ETA: 0s - loss: 0.1306 - sparse_categorical_accuracy: 0.9615"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==========================>...] - ETA: 0s - loss: 0.1297 - sparse_categorical_accuracy: 0.9616"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"597/625 [===========================>..] - ETA: 0s - loss: 0.1295 - sparse_categorical_accuracy: 0.9617"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"621/625 [============================>.] - ETA: 0s - loss: 0.1293 - sparse_categorical_accuracy: 0.9616"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"625/625 [==============================] - 2s 2ms/step - loss: 0.1290 - sparse_categorical_accuracy: 0.9617 - val_loss: 0.1583 - val_sparse_categorical_accuracy: 0.9512\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 4/20\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/625 [..............................] - ETA: 1s - loss: 0.1964 - sparse_categorical_accuracy: 0.9531"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [>.............................] - ETA: 1s - loss: 0.0872 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 51/625 [=>............................] - ETA: 1s - loss: 0.0980 - sparse_categorical_accuracy: 0.9715"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==>...........................] - ETA: 1s - loss: 0.1002 - sparse_categorical_accuracy: 0.9720"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===>..........................] - ETA: 1s - loss: 0.1011 - sparse_categorical_accuracy: 0.9700"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=====>........................] - ETA: 1s - loss: 0.0995 - sparse_categorical_accuracy: 0.9710"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [======>.......................] - ETA: 0s - loss: 0.1038 - sparse_categorical_accuracy: 0.9693"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"175/625 [=======>......................] - ETA: 0s - loss: 0.1051 - sparse_categorical_accuracy: 0.9695"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [========>.....................] - ETA: 0s - loss: 0.1049 - sparse_categorical_accuracy: 0.9697"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=========>....................] - ETA: 0s - loss: 0.1042 - sparse_categorical_accuracy: 0.9696"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===========>..................] - ETA: 0s - loss: 0.1013 - sparse_categorical_accuracy: 0.9704"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"275/625 [============>.................] - ETA: 0s - loss: 0.1029 - sparse_categorical_accuracy: 0.9695"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"301/625 [=============>................] - ETA: 0s - loss: 0.1022 - sparse_categorical_accuracy: 0.9696"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==============>...............] - ETA: 0s - loss: 0.1023 - sparse_categorical_accuracy: 0.9696"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===============>..............] - ETA: 0s - loss: 0.1032 - sparse_categorical_accuracy: 0.9694"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"377/625 [=================>............] - ETA: 0s - loss: 0.1036 - sparse_categorical_accuracy: 0.9694"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"402/625 [==================>...........] - ETA: 0s - loss: 0.1023 - sparse_categorical_accuracy: 0.9694"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"427/625 [===================>..........] - ETA: 0s - loss: 0.1021 - sparse_categorical_accuracy: 0.9694"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"452/625 [====================>.........] - ETA: 0s - loss: 0.1019 - sparse_categorical_accuracy: 0.9695"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"477/625 [=====================>........] - ETA: 0s - loss: 0.1030 - sparse_categorical_accuracy: 0.9694"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"502/625 [=======================>......] - ETA: 0s - loss: 0.1014 - sparse_categorical_accuracy: 0.9697"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [========================>.....] - ETA: 0s - loss: 0.1006 - sparse_categorical_accuracy: 0.9701"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"552/625 [=========================>....] - ETA: 0s - loss: 0.1006 - sparse_categorical_accuracy: 0.9700"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"577/625 [==========================>...] - ETA: 0s - loss: 0.1015 - sparse_categorical_accuracy: 0.9699"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===========================>..] - ETA: 0s - loss: 0.1020 - sparse_categorical_accuracy: 0.9698"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"625/625 [==============================] - 2s 2ms/step - loss: 0.1009 - sparse_categorical_accuracy: 0.9701 - val_loss: 0.1497 - val_sparse_categorical_accuracy: 0.9561\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 5/20\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/625 [..............................] - ETA: 2s - loss: 0.0593 - sparse_categorical_accuracy: 0.9844"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [>.............................] - ETA: 1s - loss: 0.0699 - sparse_categorical_accuracy: 0.9796"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=>............................] - ETA: 1s - loss: 0.0880 - sparse_categorical_accuracy: 0.9730"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==>...........................] - ETA: 1s - loss: 0.0882 - sparse_categorical_accuracy: 0.9718"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===>..........................] - ETA: 1s - loss: 0.0874 - sparse_categorical_accuracy: 0.9731"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"125/625 [=====>........................] - ETA: 1s - loss: 0.0860 - sparse_categorical_accuracy: 0.9731"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"149/625 [======>.......................] - ETA: 0s - loss: 0.0847 - sparse_categorical_accuracy: 0.9737"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=======>......................] - ETA: 0s - loss: 0.0832 - sparse_categorical_accuracy: 0.9739"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [========>.....................] - ETA: 0s - loss: 0.0805 - sparse_categorical_accuracy: 0.9744"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=========>....................] - ETA: 0s - loss: 0.0812 - sparse_categorical_accuracy: 0.9738"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===========>..................] - ETA: 0s - loss: 0.0828 - sparse_categorical_accuracy: 0.9739"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"275/625 [============>.................] - ETA: 0s - loss: 0.0857 - sparse_categorical_accuracy: 0.9739"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=============>................] - ETA: 0s - loss: 0.0853 - sparse_categorical_accuracy: 0.9740"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"325/625 [==============>...............] - ETA: 0s - loss: 0.0848 - sparse_categorical_accuracy: 0.9738"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"349/625 [===============>..............] - ETA: 0s - loss: 0.0850 - sparse_categorical_accuracy: 0.9738"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"374/625 [================>.............] - ETA: 0s - loss: 0.0855 - sparse_categorical_accuracy: 0.9738"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==================>...........] - ETA: 0s - loss: 0.0852 - sparse_categorical_accuracy: 0.9739"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"424/625 [===================>..........] - ETA: 0s - loss: 0.0849 - sparse_categorical_accuracy: 0.9739"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"448/625 [====================>.........] - ETA: 0s - loss: 0.0843 - sparse_categorical_accuracy: 0.9741"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"472/625 [=====================>........] - ETA: 0s - loss: 0.0836 - sparse_categorical_accuracy: 0.9743"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"496/625 [======================>.......] - ETA: 0s - loss: 0.0834 - sparse_categorical_accuracy: 0.9744"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"522/625 [========================>.....] - ETA: 0s - loss: 0.0834 - sparse_categorical_accuracy: 0.9742"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"547/625 [=========================>....] - ETA: 0s - loss: 0.0833 - sparse_categorical_accuracy: 0.9741"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==========================>...] - ETA: 0s - loss: 0.0832 - sparse_categorical_accuracy: 0.9742"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"597/625 [===========================>..] - ETA: 0s - loss: 0.0836 - sparse_categorical_accuracy: 0.9741"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"622/625 [============================>.] - ETA: 0s - loss: 0.0832 - sparse_categorical_accuracy: 0.9743"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"625/625 [==============================] - 2s 2ms/step - loss: 0.0833 - sparse_categorical_accuracy: 0.9743 - val_loss: 0.1447 - val_sparse_categorical_accuracy: 0.9590\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 6/20\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/625 [..............................] - ETA: 1s - loss: 0.0655 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 25/625 [>.............................] - ETA: 1s - loss: 0.0736 - sparse_categorical_accuracy: 0.9762"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=>............................] - ETA: 1s - loss: 0.0703 - sparse_categorical_accuracy: 0.9786"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==>...........................] - ETA: 1s - loss: 0.0769 - sparse_categorical_accuracy: 0.9771"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===>..........................] - ETA: 1s - loss: 0.0707 - sparse_categorical_accuracy: 0.9781"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"124/625 [====>.........................] - ETA: 1s - loss: 0.0698 - sparse_categorical_accuracy: 0.9796"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [======>.......................] - ETA: 0s - loss: 0.0714 - sparse_categorical_accuracy: 0.9791"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"172/625 [=======>......................] - ETA: 0s - loss: 0.0684 - sparse_categorical_accuracy: 0.9797"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [========>.....................] - ETA: 0s - loss: 0.0689 - sparse_categorical_accuracy: 0.9799"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=========>....................] - ETA: 0s - loss: 0.0682 - sparse_categorical_accuracy: 0.9799"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"247/625 [==========>...................] - ETA: 0s - loss: 0.0684 - sparse_categorical_accuracy: 0.9799"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"272/625 [============>.................] - ETA: 0s - loss: 0.0679 - sparse_categorical_accuracy: 0.9798"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=============>................] - ETA: 0s - loss: 0.0671 - sparse_categorical_accuracy: 0.9799"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"322/625 [==============>...............] - ETA: 0s - loss: 0.0670 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"346/625 [===============>..............] - ETA: 0s - loss: 0.0664 - sparse_categorical_accuracy: 0.9802"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"370/625 [================>.............] - ETA: 0s - loss: 0.0668 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"394/625 [=================>............] - ETA: 0s - loss: 0.0676 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"419/625 [===================>..........] - ETA: 0s - loss: 0.0680 - sparse_categorical_accuracy: 0.9800"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"443/625 [====================>.........] - ETA: 0s - loss: 0.0676 - sparse_categorical_accuracy: 0.9800"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"467/625 [=====================>........] - ETA: 0s - loss: 0.0686 - sparse_categorical_accuracy: 0.9797"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"492/625 [======================>.......] - ETA: 0s - loss: 0.0686 - sparse_categorical_accuracy: 0.9794"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=======================>......] - ETA: 0s - loss: 0.0685 - sparse_categorical_accuracy: 0.9794"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"541/625 [========================>.....] - ETA: 0s - loss: 0.0693 - sparse_categorical_accuracy: 0.9790"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"566/625 [==========================>...] - ETA: 0s - loss: 0.0688 - sparse_categorical_accuracy: 0.9791"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"591/625 [===========================>..] - ETA: 0s - loss: 0.0689 - sparse_categorical_accuracy: 0.9791"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"616/625 [============================>.] - ETA: 0s - loss: 0.0689 - sparse_categorical_accuracy: 0.9789"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"625/625 [==============================] - 2s 3ms/step - loss: 0.0686 - sparse_categorical_accuracy: 0.9790 - val_loss: 0.1383 - val_sparse_categorical_accuracy: 0.9609\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 7/20\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/625 [..............................] - ETA: 2s - loss: 0.0055 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 25/625 [>.............................] - ETA: 1s - loss: 0.0511 - sparse_categorical_accuracy: 0.9837"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=>............................] - ETA: 1s - loss: 0.0456 - sparse_categorical_accuracy: 0.9862"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==>...........................] - ETA: 1s - loss: 0.0481 - sparse_categorical_accuracy: 0.9848"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===>..........................] - ETA: 1s - loss: 0.0506 - sparse_categorical_accuracy: 0.9831"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"125/625 [=====>........................] - ETA: 1s - loss: 0.0536 - sparse_categorical_accuracy: 0.9830"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [======>.......................] - ETA: 0s - loss: 0.0558 - sparse_categorical_accuracy: 0.9824"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"175/625 [=======>......................] - ETA: 0s - loss: 0.0581 - sparse_categorical_accuracy: 0.9825"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [========>.....................] - ETA: 0s - loss: 0.0586 - sparse_categorical_accuracy: 0.9823"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=========>....................] - ETA: 0s - loss: 0.0592 - sparse_categorical_accuracy: 0.9823"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==========>...................] - ETA: 0s - loss: 0.0588 - sparse_categorical_accuracy: 0.9822"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"274/625 [============>.................] - ETA: 0s - loss: 0.0588 - sparse_categorical_accuracy: 0.9824"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=============>................] - ETA: 0s - loss: 0.0584 - sparse_categorical_accuracy: 0.9822"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"325/625 [==============>...............] - ETA: 0s - loss: 0.0600 - sparse_categorical_accuracy: 0.9815"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"350/625 [===============>..............] - ETA: 0s - loss: 0.0583 - sparse_categorical_accuracy: 0.9819"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"375/625 [=================>............] - ETA: 0s - loss: 0.0589 - sparse_categorical_accuracy: 0.9818"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==================>...........] - ETA: 0s - loss: 0.0581 - sparse_categorical_accuracy: 0.9820"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"425/625 [===================>..........] - ETA: 0s - loss: 0.0580 - sparse_categorical_accuracy: 0.9821"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"450/625 [====================>.........] - ETA: 0s - loss: 0.0575 - sparse_categorical_accuracy: 0.9823"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"475/625 [=====================>........] - ETA: 0s - loss: 0.0581 - sparse_categorical_accuracy: 0.9823"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"500/625 [=======================>......] - ETA: 0s - loss: 0.0584 - sparse_categorical_accuracy: 0.9823"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"525/625 [========================>.....] - ETA: 0s - loss: 0.0582 - sparse_categorical_accuracy: 0.9824"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"550/625 [=========================>....] - ETA: 0s - loss: 0.0580 - sparse_categorical_accuracy: 0.9823"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"575/625 [==========================>...] - ETA: 0s - loss: 0.0580 - sparse_categorical_accuracy: 0.9824"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===========================>..] - ETA: 0s - loss: 0.0588 - sparse_categorical_accuracy: 0.9822"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"625/625 [==============================] - ETA: 0s - loss: 0.0588 - sparse_categorical_accuracy: 0.9821"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"625/625 [==============================] - 2s 2ms/step - loss: 0.0588 - sparse_categorical_accuracy: 0.9821 - val_loss: 0.1437 - val_sparse_categorical_accuracy: 0.9604\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 7: early stopping\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = get_compiled_model()\n",
"\n",
"callbacks = [\n",
" keras.callbacks.EarlyStopping(\n",
" # Stop training when `val_loss` is no longer improving\n",
" monitor=\"val_loss\",\n",
" # \"no longer improving\" being defined as \"no better than 1e-2 less\"\n",
" min_delta=1e-2,\n",
" # \"no longer improving\" being further defined as \"for at least 2 epochs\"\n",
" patience=2,\n",
" verbose=1,\n",
" )\n",
"]\n",
"model.fit(\n",
" x_train,\n",
" y_train,\n",
" epochs=20,\n",
" batch_size=64,\n",
" callbacks=callbacks,\n",
" validation_split=0.2,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "15f5af3b6da9"
},
"source": [
"### 利用できる多数の組み込みコールバック\n",
"\n",
"Keras には、次のような組み込みコールバックが多数用意されています。\n",
"\n",
"- `ModelCheckpoint`: モデルを定期的に保存する\n",
"- `EarlyStopping`: トレーニングによって検証指標が改善されなくなったら、トレーニングを停止する\n",
"- `TensorBoard`: [TensorBoard](https://www.tensorflow.org/tensorboard) で視覚化できるモデルログを定期的に記述する(詳細については、「視覚化」セクションを参照)。\n",
"- `CSVLogger`: 損失およびメトリクスデータを CSV ファイルにストリーミングする\n",
"- など\n",
"\n",
"完全なリストについては[コールバックのドキュメント](https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/)をご覧ください。\n",
"\n",
"### コールバックを記述する\n",
"\n",
"ベースクラス `keras.callbacks.Callback` を拡張することにより、カスタムコールバックを作成できます。コールバックは、クラスプロパティ `self.model` を通じて関連するモデルにアクセスできます。\n",
"\n",
"詳細については、[カスタムコールバックの作成に関する完全ガイド](https://www.tensorflow.org/guide/keras/custom_callback/)を参照してください。\n",
"\n",
"以下は、トレーニング時にバッチごとの損失値のリストを保存する簡単な例です。"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:57.027385Z",
"iopub.status.busy": "2022-12-14T21:43:57.026859Z",
"iopub.status.idle": "2022-12-14T21:43:57.031054Z",
"shell.execute_reply": "2022-12-14T21:43:57.030323Z"
},
"id": "b265d36ce608"
},
"outputs": [],
"source": [
"class LossHistory(keras.callbacks.Callback):\n",
" def on_train_begin(self, logs):\n",
" self.per_batch_losses = []\n",
"\n",
" def on_batch_end(self, batch, logs):\n",
" self.per_batch_losses.append(logs.get(\"loss\"))\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5ee672524987"
},
"source": [
"## モデルにチェックポイントを設定する\n",
"\n",
"比較的大きなデータセットでモデルをトレーニングする場合、モデルのチェックポイントを頻繁に保存することが重要です。\n",
"\n",
"これを達成するには `ModelCheckpoint` コールバックを使用するのが最も簡単です。"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:43:57.034371Z",
"iopub.status.busy": "2022-12-14T21:43:57.033823Z",
"iopub.status.idle": "2022-12-14T21:44:02.240633Z",
"shell.execute_reply": "2022-12-14T21:44:02.240030Z"
},
"id": "83614be57725"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/2\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/625 [..............................] - ETA: 7:03 - loss: 2.3084 - sparse_categorical_accuracy: 0.1562"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [>.............................] - ETA: 1s - loss: 1.5073 - sparse_categorical_accuracy: 0.5831 "
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=>............................] - ETA: 1s - loss: 1.1526 - sparse_categorical_accuracy: 0.6913"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==>...........................] - ETA: 1s - loss: 0.9605 - sparse_categorical_accuracy: 0.7422"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===>..........................] - ETA: 1s - loss: 0.8272 - sparse_categorical_accuracy: 0.7787"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"124/625 [====>.........................] - ETA: 1s - loss: 0.7517 - sparse_categorical_accuracy: 0.7979"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"149/625 [======>.......................] - ETA: 0s - loss: 0.6895 - sparse_categorical_accuracy: 0.8133"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"175/625 [=======>......................] - ETA: 0s - loss: 0.6386 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"200/625 [========>.....................] - ETA: 0s - loss: 0.5969 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"224/625 [=========>....................] - ETA: 0s - loss: 0.5673 - sparse_categorical_accuracy: 0.8437"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==========>...................] - ETA: 0s - loss: 0.5407 - sparse_categorical_accuracy: 0.8505"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"274/625 [============>.................] - ETA: 0s - loss: 0.5186 - sparse_categorical_accuracy: 0.8562"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"299/625 [=============>................] - ETA: 0s - loss: 0.4990 - sparse_categorical_accuracy: 0.8617"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"324/625 [==============>...............] - ETA: 0s - loss: 0.4814 - sparse_categorical_accuracy: 0.8666"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"349/625 [===============>..............] - ETA: 0s - loss: 0.4668 - sparse_categorical_accuracy: 0.8707"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"374/625 [================>.............] - ETA: 0s - loss: 0.4519 - sparse_categorical_accuracy: 0.8744"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==================>...........] - ETA: 0s - loss: 0.4427 - sparse_categorical_accuracy: 0.8768"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===================>..........] - ETA: 0s - loss: 0.4296 - sparse_categorical_accuracy: 0.8803"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"447/625 [====================>.........] - ETA: 0s - loss: 0.4185 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"472/625 [=====================>........] - ETA: 0s - loss: 0.4083 - sparse_categorical_accuracy: 0.8859"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [======================>.......] - ETA: 0s - loss: 0.3992 - sparse_categorical_accuracy: 0.8880"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"522/625 [========================>.....] - ETA: 0s - loss: 0.3897 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"547/625 [=========================>....] - ETA: 0s - loss: 0.3809 - sparse_categorical_accuracy: 0.8927"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==========================>...] - ETA: 0s - loss: 0.3744 - sparse_categorical_accuracy: 0.8946"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"597/625 [===========================>..] - ETA: 0s - loss: 0.3675 - sparse_categorical_accuracy: 0.8968"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"623/625 [============================>.] - ETA: 0s - loss: 0.3613 - sparse_categorical_accuracy: 0.8983"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 1: val_loss improved from inf to 0.21801, saving model to mymodel_1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: mymodel_1/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"625/625 [==============================] - 3s 4ms/step - loss: 0.3613 - sparse_categorical_accuracy: 0.8983 - val_loss: 0.2180 - val_sparse_categorical_accuracy: 0.9356\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 2/2\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/625 [..............................] - ETA: 1s - loss: 0.2831 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 26/625 [>.............................] - ETA: 1s - loss: 0.1828 - sparse_categorical_accuracy: 0.9453"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=>............................] - ETA: 1s - loss: 0.1762 - sparse_categorical_accuracy: 0.9473"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [==>...........................] - ETA: 1s - loss: 0.1708 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"101/625 [===>..........................] - ETA: 1s - loss: 0.1794 - sparse_categorical_accuracy: 0.9448"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=====>........................] - ETA: 1s - loss: 0.1702 - sparse_categorical_accuracy: 0.9483"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [======>.......................] - ETA: 0s - loss: 0.1715 - sparse_categorical_accuracy: 0.9491"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [=======>......................] - ETA: 0s - loss: 0.1750 - sparse_categorical_accuracy: 0.9477"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"202/625 [========>.....................] - ETA: 0s - loss: 0.1766 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"226/625 [=========>....................] - ETA: 0s - loss: 0.1773 - sparse_categorical_accuracy: 0.9477"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===========>..................] - ETA: 0s - loss: 0.1775 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"275/625 [============>.................] - ETA: 0s - loss: 0.1803 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"300/625 [=============>................] - ETA: 0s - loss: 0.1810 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"325/625 [==============>...............] - ETA: 0s - loss: 0.1802 - sparse_categorical_accuracy: 0.9465"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [===============>..............] - ETA: 0s - loss: 0.1796 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"377/625 [=================>............] - ETA: 0s - loss: 0.1773 - sparse_categorical_accuracy: 0.9474"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"402/625 [==================>...........] - ETA: 0s - loss: 0.1775 - sparse_categorical_accuracy: 0.9473"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"427/625 [===================>..........] - ETA: 0s - loss: 0.1772 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"452/625 [====================>.........] - ETA: 0s - loss: 0.1765 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"477/625 [=====================>........] - ETA: 0s - loss: 0.1755 - sparse_categorical_accuracy: 0.9481"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"502/625 [=======================>......] - ETA: 0s - loss: 0.1734 - sparse_categorical_accuracy: 0.9488"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/625 [========================>.....] - ETA: 0s - loss: 0.1727 - sparse_categorical_accuracy: 0.9491"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"552/625 [=========================>....] - ETA: 0s - loss: 0.1707 - sparse_categorical_accuracy: 0.9497"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"577/625 [==========================>...] - ETA: 0s - loss: 0.1703 - sparse_categorical_accuracy: 0.9499"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"602/625 [===========================>..] - ETA: 0s - loss: 0.1685 - sparse_categorical_accuracy: 0.9505"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 2: val_loss improved from 0.21801 to 0.17181, saving model to mymodel_2\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: mymodel_2/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"625/625 [==============================] - 2s 3ms/step - loss: 0.1675 - sparse_categorical_accuracy: 0.9507 - val_loss: 0.1718 - val_sparse_categorical_accuracy: 0.9494\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = get_compiled_model()\n",
"\n",
"callbacks = [\n",
" keras.callbacks.ModelCheckpoint(\n",
" # Path where to save the model\n",
" # The two parameters below mean that we will overwrite\n",
" # the current checkpoint if and only if\n",
" # the `val_loss` score has improved.\n",
" # The saved model name will include the current epoch.\n",
" filepath=\"mymodel_{epoch}\",\n",
" save_best_only=True, # Only save a model if `val_loss` has improved.\n",
" monitor=\"val_loss\",\n",
" verbose=1,\n",
" )\n",
"]\n",
"model.fit(\n",
" x_train, y_train, epochs=2, batch_size=64, callbacks=callbacks, validation_split=0.2\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7f6afa36950c"
},
"source": [
"`ModelCheckpoint` コールバックを使用するとフォールトトレランスを実装できます。フォールトトレランスはトレーニングがランダムに中断された場合に、モデルの最後に保存された状態からトレーニングを再開する機能です。 以下は基本的な例です。"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:44:02.244305Z",
"iopub.status.busy": "2022-12-14T21:44:02.243688Z",
"iopub.status.idle": "2022-12-14T21:44:13.452732Z",
"shell.execute_reply": "2022-12-14T21:44:13.452112Z"
},
"id": "27ce92b2ad58"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Creating a new model\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/1563 [..............................] - ETA: 17:50 - loss: 2.3009 - sparse_categorical_accuracy: 0.0938"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [..............................] - ETA: 3s - loss: 1.7067 - sparse_categorical_accuracy: 0.5177 "
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [..............................] - ETA: 3s - loss: 1.3338 - sparse_categorical_accuracy: 0.6399"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [>.............................] - ETA: 3s - loss: 1.1157 - sparse_categorical_accuracy: 0.6982"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 93/1563 [>.............................] - ETA: 3s - loss: 1.0051 - sparse_categorical_accuracy: 0.7275"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.97/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [>.............................] - ETA: 9s - loss: 0.9686 - sparse_categorical_accuracy: 0.7362"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [=>............................] - ETA: 8s - loss: 0.8833 - sparse_categorical_accuracy: 0.7574"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [=>............................] - ETA: 7s - loss: 0.8079 - sparse_categorical_accuracy: 0.7769"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [==>...........................] - ETA: 6s - loss: 0.7571 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [==>...........................] - ETA: 6s - loss: 0.7122 - sparse_categorical_accuracy: 0.8002"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.70/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [==>...........................] - ETA: 8s - loss: 0.6957 - sparse_categorical_accuracy: 0.8044"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 223/1563 [===>..........................] - ETA: 8s - loss: 0.6609 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 246/1563 [===>..........................] - ETA: 7s - loss: 0.6319 - sparse_categorical_accuracy: 0.8228"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 269/1563 [====>.........................] - ETA: 7s - loss: 0.6092 - sparse_categorical_accuracy: 0.8280"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 292/1563 [====>.........................] - ETA: 6s - loss: 0.5911 - sparse_categorical_accuracy: 0.8332"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.58/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [====>.........................] - ETA: 8s - loss: 0.5846 - sparse_categorical_accuracy: 0.8352"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 323/1563 [=====>........................] - ETA: 7s - loss: 0.5682 - sparse_categorical_accuracy: 0.8395"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 346/1563 [=====>........................] - ETA: 7s - loss: 0.5498 - sparse_categorical_accuracy: 0.8442"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [======>.......................] - ETA: 6s - loss: 0.5364 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 392/1563 [======>.......................] - ETA: 6s - loss: 0.5261 - sparse_categorical_accuracy: 0.8508"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.52/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [======>.......................] - ETA: 7s - loss: 0.5231 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 423/1563 [=======>......................] - ETA: 7s - loss: 0.5124 - sparse_categorical_accuracy: 0.8549"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 447/1563 [=======>......................] - ETA: 6s - loss: 0.5010 - sparse_categorical_accuracy: 0.8582"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 470/1563 [========>.....................] - ETA: 6s - loss: 0.4920 - sparse_categorical_accuracy: 0.8606"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 493/1563 [========>.....................] - ETA: 6s - loss: 0.4797 - sparse_categorical_accuracy: 0.8638"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.48/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 500/1563 [========>.....................] - ETA: 6s - loss: 0.4763 - sparse_categorical_accuracy: 0.8646"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 522/1563 [=========>....................] - ETA: 6s - loss: 0.4667 - sparse_categorical_accuracy: 0.8673"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 546/1563 [=========>....................] - ETA: 6s - loss: 0.4593 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 568/1563 [=========>....................] - ETA: 6s - loss: 0.4523 - sparse_categorical_accuracy: 0.8706"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 591/1563 [==========>...................] - ETA: 5s - loss: 0.4459 - sparse_categorical_accuracy: 0.8723"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.44/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\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/1563 [==========>...................] - ETA: 6s - loss: 0.4441 - sparse_categorical_accuracy: 0.8729"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 623/1563 [==========>...................] - ETA: 6s - loss: 0.4387 - sparse_categorical_accuracy: 0.8743"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 646/1563 [===========>..................] - ETA: 5s - loss: 0.4310 - sparse_categorical_accuracy: 0.8768"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 669/1563 [===========>..................] - ETA: 5s - loss: 0.4244 - sparse_categorical_accuracy: 0.8788"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 692/1563 [============>.................] - ETA: 5s - loss: 0.4205 - sparse_categorical_accuracy: 0.8794"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.42/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 700/1563 [============>.................] - ETA: 5s - loss: 0.4184 - sparse_categorical_accuracy: 0.8800"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 722/1563 [============>.................] - ETA: 5s - loss: 0.4135 - sparse_categorical_accuracy: 0.8814"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 745/1563 [=============>................] - ETA: 5s - loss: 0.4079 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 768/1563 [=============>................] - ETA: 4s - loss: 0.4029 - sparse_categorical_accuracy: 0.8847"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 791/1563 [==============>...............] - ETA: 4s - loss: 0.3981 - sparse_categorical_accuracy: 0.8861"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.40/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 800/1563 [==============>...............] - ETA: 5s - loss: 0.3960 - sparse_categorical_accuracy: 0.8866"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 823/1563 [==============>...............] - ETA: 4s - loss: 0.3918 - sparse_categorical_accuracy: 0.8878"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 846/1563 [===============>..............] - ETA: 4s - loss: 0.3871 - sparse_categorical_accuracy: 0.8892"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 869/1563 [===============>..............] - ETA: 4s - loss: 0.3823 - sparse_categorical_accuracy: 0.8904"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 893/1563 [================>.............] - ETA: 4s - loss: 0.3781 - sparse_categorical_accuracy: 0.8916"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.38/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 900/1563 [================>.............] - ETA: 4s - loss: 0.3770 - sparse_categorical_accuracy: 0.8919"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 922/1563 [================>.............] - ETA: 4s - loss: 0.3740 - sparse_categorical_accuracy: 0.8928"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 945/1563 [=================>............] - ETA: 4s - loss: 0.3711 - sparse_categorical_accuracy: 0.8935"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 968/1563 [=================>............] - ETA: 3s - loss: 0.3669 - sparse_categorical_accuracy: 0.8945"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 991/1563 [==================>...........] - ETA: 3s - loss: 0.3646 - sparse_categorical_accuracy: 0.8953"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.36/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1000/1563 [==================>...........] - ETA: 3s - loss: 0.3628 - sparse_categorical_accuracy: 0.8957"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1023/1563 [==================>...........] - ETA: 3s - loss: 0.3592 - sparse_categorical_accuracy: 0.8969"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1045/1563 [===================>..........] - ETA: 3s - loss: 0.3565 - sparse_categorical_accuracy: 0.8978"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1067/1563 [===================>..........] - ETA: 3s - loss: 0.3537 - sparse_categorical_accuracy: 0.8987"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1090/1563 [===================>..........] - ETA: 3s - loss: 0.3503 - sparse_categorical_accuracy: 0.8997"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.35/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1100/1563 [====================>.........] - ETA: 3s - loss: 0.3488 - sparse_categorical_accuracy: 0.9000"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1122/1563 [====================>.........] - ETA: 2s - loss: 0.3463 - sparse_categorical_accuracy: 0.9007"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1145/1563 [====================>.........] - ETA: 2s - loss: 0.3429 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1168/1563 [=====================>........] - ETA: 2s - loss: 0.3399 - sparse_categorical_accuracy: 0.9023"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1191/1563 [=====================>........] - ETA: 2s - loss: 0.3379 - sparse_categorical_accuracy: 0.9027"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.34/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1200/1563 [======================>.......] - ETA: 2s - loss: 0.3366 - sparse_categorical_accuracy: 0.9030"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1223/1563 [======================>.......] - ETA: 2s - loss: 0.3339 - sparse_categorical_accuracy: 0.9037"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1246/1563 [======================>.......] - ETA: 2s - loss: 0.3307 - sparse_categorical_accuracy: 0.9045"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1269/1563 [=======================>......] - ETA: 1s - loss: 0.3282 - sparse_categorical_accuracy: 0.9051"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1292/1563 [=======================>......] - ETA: 1s - loss: 0.3256 - sparse_categorical_accuracy: 0.9059"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.32/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1300/1563 [=======================>......] - ETA: 1s - loss: 0.3247 - sparse_categorical_accuracy: 0.9061"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1323/1563 [========================>.....] - ETA: 1s - loss: 0.3227 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1346/1563 [========================>.....] - ETA: 1s - loss: 0.3210 - sparse_categorical_accuracy: 0.9071"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1369/1563 [=========================>....] - ETA: 1s - loss: 0.3181 - sparse_categorical_accuracy: 0.9079"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1392/1563 [=========================>....] - ETA: 1s - loss: 0.3156 - sparse_categorical_accuracy: 0.9088"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.31/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1400/1563 [=========================>....] - ETA: 1s - loss: 0.3148 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1422/1563 [==========================>...] - ETA: 0s - loss: 0.3122 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1445/1563 [==========================>...] - ETA: 0s - loss: 0.3099 - sparse_categorical_accuracy: 0.9103"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1468/1563 [===========================>..] - ETA: 0s - loss: 0.3081 - sparse_categorical_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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1491/1563 [===========================>..] - ETA: 0s - loss: 0.3063 - sparse_categorical_accuracy: 0.9114"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./ckpt/ckpt-loss=0.31/assets\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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1500/1563 [===========================>..] - ETA: 0s - loss: 0.3056 - sparse_categorical_accuracy: 0.9116"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1523/1563 [============================>.] - ETA: 0s - loss: 0.3040 - sparse_categorical_accuracy: 0.9121"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1546/1563 [============================>.] - ETA: 0s - loss: 0.3018 - sparse_categorical_accuracy: 0.9128"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"1563/1563 [==============================] - 11s 6ms/step - loss: 0.3004 - sparse_categorical_accuracy: 0.9132\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import os\n",
"\n",
"# Prepare a directory to store all the checkpoints.\n",
"checkpoint_dir = \"./ckpt\"\n",
"if not os.path.exists(checkpoint_dir):\n",
" os.makedirs(checkpoint_dir)\n",
"\n",
"\n",
"def make_or_restore_model():\n",
" # Either restore the latest model, or create a fresh one\n",
" # if there is no checkpoint available.\n",
" checkpoints = [checkpoint_dir + \"/\" + name for name in os.listdir(checkpoint_dir)]\n",
" if checkpoints:\n",
" latest_checkpoint = max(checkpoints, key=os.path.getctime)\n",
" print(\"Restoring from\", latest_checkpoint)\n",
" return keras.models.load_model(latest_checkpoint)\n",
" print(\"Creating a new model\")\n",
" return get_compiled_model()\n",
"\n",
"\n",
"model = make_or_restore_model()\n",
"callbacks = [\n",
" # This callback saves a SavedModel every 100 batches.\n",
" # We include the training loss in the saved model name.\n",
" keras.callbacks.ModelCheckpoint(\n",
" filepath=checkpoint_dir + \"/ckpt-loss={loss:.2f}\", save_freq=100\n",
" )\n",
"]\n",
"model.fit(x_train, y_train, epochs=1, callbacks=callbacks)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "da3ab58d5235"
},
"source": [
"また、モデルを保存および復元するための独自のコールバックを記述することもできます。\n",
"\n",
"シリアル化と保存の完全なガイドについては、[モデルの保存とシリアル化に関するガイド](https://www.tensorflow.org/guide/keras/save_and_serialize/)をご覧ください。"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "b9342cc2ddba"
},
"source": [
"## 学習率スケジュールを使用する\n",
"\n",
"ディープラーニングモデルをトレーニングする際は、一般的に、トレーニングが進むにつれて徐々に学習進度が減少するパターンが見られます。これは一般に「学習率の減衰」として知られています。\n",
"\n",
"学習減衰スケジュールは、静的(その時点のエポックまたはその時点のバッチインデックスの関数として事前に指定)または動的(モデルの現在の動作、特に検証損失に対応)にすることができます。\n",
"\n",
"### オプティマイザにスケジュールを渡す\n",
"\n",
"オプティマイザの `learning_rate` 引数としてスケジュールオブジェクトを渡すことで、静的学習率の減衰スケジュールを簡単に使用できます。"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:44:13.456410Z",
"iopub.status.busy": "2022-12-14T21:44:13.455793Z",
"iopub.status.idle": "2022-12-14T21:44:13.467718Z",
"shell.execute_reply": "2022-12-14T21:44:13.467146Z"
},
"id": "684f0ab6d3de"
},
"outputs": [],
"source": [
"initial_learning_rate = 0.1\n",
"lr_schedule = keras.optimizers.schedules.ExponentialDecay(\n",
" initial_learning_rate, decay_steps=100000, decay_rate=0.96, staircase=True\n",
")\n",
"\n",
"optimizer = keras.optimizers.RMSprop(learning_rate=lr_schedule)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "03b61ddd9586"
},
"source": [
"組み込みスケジュールには、`ExponentialDecay`、`PiecewiseConstantDecay`、`PolynomialDecay`、および `InverseTimeDecay` を利用できます。\n",
"\n",
"### コールバックを使用して動的学習率スケジュールを実装する\n",
"\n",
"オプティマイザは検証メトリクスにアクセスできないため、これらのスケジュールオブジェクトでは動的学習率のスケジュール(検証の損失が改善されなくなったときに学習率を下げるなど)を実現できません。\n",
"\n",
"ただし、コールバックは、検証メトリクスを含むすべてのメトリクスにアクセスできます。このパターンでは、コールバックを使用してオプティマイザのその時点の学習率を変更します。これは`ReduceLROnPlateau` コールバックとして組み込まれています。"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7f8b9539cd57"
},
"source": [
"## トレーニング時の損失とメトリクスを視覚化する\n",
"\n",
"トレーニング時にモデルを監視する場合、[TensorBoard](https://www.tensorflow.org/tensorboard) を使用するのが最善の方法です。これは、ローカルで実行できるブラウザベースのアプリケーションで、以下の機能を提供します。\n",
"\n",
"- トレーニングと評価のための損失とメトリクスのライブプロット\n",
"- レイヤーアクティベーションのヒストグラムの視覚化(オプション)\n",
"- `Embedding` レイヤーが学習した埋め込みスペースの 3D 視覚化(オプション)\n",
"\n",
"TensorFlow を pip でインストールした場合は、コマンドラインから TensorBoard を起動できます。\n",
"\n",
"```\n",
"tensorboard --logdir=/full_path_to_your_logs\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "f2685d7ce531"
},
"source": [
"### TensorBoard コールバックを使用する\n",
"\n",
"Keras モデルと `fit()` メソッドで TensorBoard を使用するには、`TensorBoard` コールバックを使用するのが最も簡単です。\n",
"\n",
"最も単純なケースでは、コールバックがログを書き込む場所を指定するだけで完了します。"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T21:44:13.471318Z",
"iopub.status.busy": "2022-12-14T21:44:13.470799Z",
"iopub.status.idle": "2022-12-14T21:44:13.475221Z",
"shell.execute_reply": "2022-12-14T21:44:13.474699Z"
},
"id": "f74247282ff6"
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"keras.callbacks.TensorBoard(\n",
" log_dir=\"/full_path_to_your_logs\",\n",
" histogram_freq=0, # How often to log histogram visualizations\n",
" embeddings_freq=0, # How often to log embedding visualizations\n",
" update_freq=\"epoch\",\n",
") # How often to write logs (default: once per epoch)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3614f8ba1e03"
},
"source": [
"詳細については、[`TensorBoard`コールバックのドキュメント](https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/tensorboard/)を参照してください。"
]
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"name": "train_and_evaluate.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
}