{ "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-14T22:25:44.023452Z", "iopub.status.busy": "2022-12-14T22:25:44.022853Z", "iopub.status.idle": "2022-12-14T22:25:44.026779Z", "shell.execute_reply": "2022-12-14T22:25:44.026219Z" }, "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": "a5620ee4049e" }, "source": [ "# Model.fit의 동작 사용자 정의하기" ] }, { "cell_type": "markdown", "metadata": { "id": "0a56ffedf331" }, "source": [ "
![]() | \n",
" ![]() | \n",
" ![]() | \n",
" ![]() | \n",
"
train_step
에서 수동으로 모두 수행할 수 있습니다. 메트릭도 마찬가지입니다.\n",
"\n",
"다음은 옵티마이저를 구성하기 위해 `compile()`만 사용하는 하위 수준의 예입니다.\n",
"\n",
"- 먼저 손실과 MAE 점수를 추적하기 위해 `Metric` 인스턴스를 생성합니다.\n",
"- (메트릭에 대한 `update_state()`를 호출하여) 메트릭의 상태를 업데이트하는 사용자 정의`train_step()`을 구현한 다음, 쿼리하여(`result()`를 통해) 현재 평균 값을 반환하여 진행률 표시줄에 표시되고 모든 콜백에 전달되도록 합니다.\n",
"- 각 epoch 사이의 메트릭에 대해 `reset_states()`를 호출해야 합니다. 그렇지 않으면, `result()`를 호출하면 훈련 시작 이후부터 평균이 반환되지만, 일반적으로 epoch당 평균을 사용합니다. 다행히도 프레임워크에서는 다음과 같이 수행할 수 있습니다. 즉, 재설정하려는 매트릭을 모델의 `metrics` 속성에 나열하기만 하면 됩니다. 모델은 각 `fit()` epoch가 시작될 때 또는 `evaluate()` 호출이 시작될 때 여기에 나열된 모든 객체에 대해 `reset_states()`를 호출합니다."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"execution": {
"iopub.execute_input": "2022-12-14T22:25:50.750459Z",
"iopub.status.busy": "2022-12-14T22:25:50.749777Z",
"iopub.status.idle": "2022-12-14T22:25:51.542923Z",
"shell.execute_reply": "2022-12-14T22:25:51.542209Z"
},
"id": "2308abf5fe7d"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/32 [..............................] - ETA: 11s - loss: 0.2490 - mae: 0.4097"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"27/32 [========================>.....] - ETA: 0s - loss: 0.2765 - mae: 0.4322 "
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"32/32 [==============================] - 0s 2ms/step - loss: 0.2728 - mae: 0.4312\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 2/5\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/32 [..............................] - ETA: 0s - loss: 0.1766 - mae: 0.3184"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"27/32 [========================>.....] - ETA: 0s - loss: 0.2215 - mae: 0.3808"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"32/32 [==============================] - 0s 2ms/step - loss: 0.2168 - mae: 0.3769\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 3/5\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/32 [..............................] - ETA: 0s - loss: 0.2760 - mae: 0.4525"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"27/32 [========================>.....] - ETA: 0s - loss: 0.2141 - mae: 0.3754"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"32/32 [==============================] - 0s 2ms/step - loss: 0.2082 - mae: 0.3701\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 4/5\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/32 [..............................] - ETA: 0s - loss: 0.1593 - mae: 0.3233"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"28/32 [=========================>....] - ETA: 0s - loss: 0.2034 - mae: 0.3662"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"32/32 [==============================] - 0s 2ms/step - loss: 0.2004 - mae: 0.3634\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 5/5\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/32 [..............................] - ETA: 0s - loss: 0.1927 - mae: 0.3662"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"28/32 [=========================>....] - ETA: 0s - loss: 0.1899 - mae: 0.3539"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"32/32 [==============================] - 0s 2ms/step - loss: 0.1923 - mae: 0.3558\n"
]
},
{
"data": {
"text/plain": [
"