{ "cells": [ { "cell_type": "markdown", "metadata": { "cellView": "form", "id": "m8y3rGtQsYP2" }, "source": [ "````{admonition} Copyright 2020 The TensorFlow Authors.\n", "```\n", "#@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.\n", "```\n", "````" ] }, { "cell_type": "markdown", "metadata": { "id": "hrXv0rU9sIma" }, "source": [ "# 基本训练循环" ] }, { "cell_type": "markdown", "metadata": { "id": "7S0BwJ_8sLu7" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
在 TensorFlow.org 上查看 在 Google Colab 中运行 在 GitHub 上查看源代码 下载笔记本
" ] }, { "cell_type": "markdown", "metadata": { "id": "k2o3TTG4TFpt" }, "source": [ "在前面的教程里,您已经了解了[tensors](./tensor.ipynb), [variables](./variable.ipynb), [gradient tape](autodiff.ipynb), 和[modules](./intro_to_modules.ipynb)。在这篇教程,您将把它们放在一起训练模型。\n", "\n", "此外,TensorFlow 还包括 [tf.Keras API](https://tensorflow.google.cn/guide/keras/overview),这是一种高级神经网络 API,可提供有用的抽象来减少样板。但是,在本指南中,您将使用基本类。" ] }, { "cell_type": "markdown", "metadata": { "id": "3LXMVuV0VhDr" }, "source": [ "## 创建" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from set_env import temp_dir" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "NiolgWMPgpwI" }, "outputs": [], "source": [ "import tensorflow as tf\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "colors = plt.rcParams['axes.prop_cycle'].by_key()['color']" ] }, { "cell_type": "markdown", "metadata": { "id": "iKD__8kFCKNt" }, "source": [ "## 解决机器学习问题\n", "\n", "解决一个机器学习问题通常包含以下步骤:\n", "\n", "- 获得训练数据。\n", "- 定义模型。\n", "- 定义损失函数。\n", "- 遍历训练数据,从目标值计算损失。\n", "- 计算该损失的梯度,并使用*optimizer*调整变量以适合数据。\n", "- 计算结果。\n", "\n", "为了便于说明,在本指南中,您将开发一个简单的线性模型, $f(x) = x * W + b$, 其中包含两个变量: $W$ (权重) 和 $b$ (偏差)。\n", "\n", "这是最基本的机器学习问题:给定 $x$ 和 $y$,尝试通过[简单的线性回归](https://en.wikipedia.org/wiki/Linear_regression#Simple_and_multiple_linear_regression)来找到直线的斜率和偏移量。" ] }, { "cell_type": "markdown", "metadata": { "id": "qutT_fkl_CBc" }, "source": [ "## 数据\n", "\n", "监督学习使用*输入*(通常表示为 *x*)和*输出*(表示为 *y*,通常称为*标签*)。目标是从成对的输入和输出中学习,以便您可以根据输入预测输出的值。\n", "\n", "TensorFlow中几乎每个输入数据都是由张量表示,并且通常是向量。监督学习中,输出(即想到预测值)同样是个张量。\n", "\n", "下面是通过将高斯(正态)噪声添加到直线上的点而合成的一些数据。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "NzivK2ATByOz" }, "outputs": [], "source": [ "# The actual line\n", "TRUE_W = 3.0\n", "TRUE_B = 2.0\n", "\n", "NUM_EXAMPLES = 201\n", "\n", "# A vector of random x values\n", "x = tf.linspace(-2,2, NUM_EXAMPLES)\n", "x = tf.cast(x, tf.float32)\n", "\n", "def f(x):\n", " return x * TRUE_W + TRUE_B\n", "\n", "# Generate some noise\n", "noise = tf.random.normal(shape=[NUM_EXAMPLES])\n", "\n", "# Calculate y\n", "y = f(x) + noise" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "id": "IlFd_HVBFGIF" }, "outputs": [ { "data": { "image/png": "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Pinzr5HrS39BuMZAF6sCAIDMlrUZEQAA4D8CEQAA4BsCEQAA4BsCEQAA4JusCES2b9+uefPmqbS0VAUFBRo5cqRuu+02HThwIOHzvvjiC82fP1/9+/fX4YcfrvPOO0979uzxaNTW3XHHHZo8ebJ69+6tI444wtRzLr30UoVCoS5fM2bMcHegNtm5PsMwdOutt2rw4MEqKCjQ6aefrr///e/uDjQFn3zyiebMmaPCwkIdccQRmjdvnj7//POEz5k6dWqPn+EVV1zh0YgTu//++zV8+HD16tVLkyZN0l/+8peExz/77LMaPXq0evXqpbFjx+r//u//PBqpfVau8Yknnujxs+rVq5eHo7XmlVde0Xe/+10NGTJEoVBIv/3tb5M+Z+XKlTrhhBOUn5+vo48+Wk888YTr47TL6vWtXLmyx88vFApp9+7d3gzYourqak2cOFF9+vTRkUceqZkzZ2rLli1Jn+f132FWBCKbN29WR0eHHn74Yb399tu655579NBDD+nmm29O+Lwf/vCH+t3vfqdnn31Wq1at0q5duzRr1iyPRm3dgQMHdP755+vKK6+09LwZM2aoqakp+rV06VKXRpgaO9d311136d5779VDDz2ktWvX6rDDDtP06dP1xRdfuDhS++bMmaO3335by5cv14svvqhXXnlFl112WdLnVVRUdPkZ3nXXXR6MNrGamhrdcMMNuu2227R+/Xodf/zxmj59uj788MOYx69evVoXXnih5s2bpw0bNmjmzJmaOXOmNm3a5PHIzbN6jdLBDpadf1bvv/++hyO2Zt++fTr++ON1//33mzq+oaFBZ511lqZNm6Y333xT119/vX7wgx/oj3/8o8sjtcfq9UVs2bKly8/wyCOPdGmEqVm1apXmz5+v119/XcuXL9eXX36pM844Q/v27Yv7HF/+Do0sdddddxmlpaVxv//ZZ58Zhx56qPHss89GH3v33XcNScaaNWu8GKJtS5YsMYqKikwde8kllxjnnHOOq+Nxmtnr6+joMAYNGmTcfffd0cc+++wzIz8/31i6dKmLI7TnnXfeMSQZ9fX10cdeeuklIxQKGTt37oz7vFNPPdW47rrrPBihNSeddJIxf/786L/b29uNIUOGGNXV1TGP/973vmecddZZXR6bNGmScfnll7s6zlRYvUYrf5tBI8l4/vnnEx5z4403Gscee2yXx2bPnm1Mnz7dxZE5w8z1vfzyy4Yk49NPP/VkTE778MMPDUnGqlWr4h7jx99hVmREYgmHw+rXr1/c769bt05ffvmlTj/99Ohjo0eP1tChQ7VmzRovhuiZlStX6sgjj9SoUaN05ZVX6uOPP/Z7SI5oaGjQ7t27u/wMi4qKNGnSpED+DNesWaMjjjhCJ554YvSx008/XTk5OVq7dm3C5/7mN7/RgAEDNGbMGFVVVWn//v1uDzehAwcOaN26dV3e+5ycHJ1++ulx3/s1a9Z0OV6Spk+fHsiflWTvGiXp888/17Bhw1RSUqJzzjlHb7/9thfD9US6/QztGjdunAYPHqx/+Zd/0Wuvveb3cEwLh8OSlPDe58fPMNCb3rll69atuu+++7R48eK4x+zevVt5eXk9ahEGDhwY2PlAO2bMmKFZs2aptLRU27Zt080336wzzzxTa9asUW5urt/DS0nk5zRw4MAujwf1Z7h79+4eKd5DDjlE/fr1Szjeiy66SMOGDdOQIUP01ltv6aabbtKWLVu0bNkyt4ccV3Nzs9rb22O+95s3b475nN27d6fNz0qyd42jRo3Sr371Kx133HEKh8NavHixJk+erLffftv1DT69EO9n2NLSotbWVhUUFPg0MmcMHjxYDz30kE488US1tbXpscce09SpU7V27VqdcMIJfg8voY6ODl1//fUqLy/XmDFj4h7nx99hWmdEKisrYxYOdf7q/j+EnTt3asaMGTr//PNVUVHh08jNs3ONVlxwwQX613/9V40dO1YzZ87Uiy++qPr6eq1cudK5i0jA7esLArev8bLLLtP06dM1duxYzZkzR//93/+t559/Xtu2bXPwKuCEsrIy/du//ZvGjRunU089VcuWLVNxcbEefvhhv4cGE0aNGqXLL79cEyZM0OTJk/WrX/1KkydP1j333OP30JKaP3++Nm3apKefftrvofSQ1hmRH/3oR7r00ksTHjNixIjof+/atUvTpk3T5MmT9cgjjyR83qBBg3TgwAF99tlnXbIie/bs0aBBg1IZtiVWrzFVI0aM0IABA7R161addtppjr1uPG5eX+TntGfPHg0ePDj6+J49ezRu3Dhbr2mH2WscNGhQjyLHr776Sp988oml37lJkyZJOpj5GzlypOXxOmHAgAHKzc3tscos0d/PoEGDLB3vNzvX2N2hhx6q8ePHa+vWrW4M0XPxfoaFhYVpnw2J56STTlJdXZ3fw0jo6quvjha/J8u8+fF3mNaBSHFxsYqLi00du3PnTk2bNk0TJkzQkiVLlJOTOBk0YcIEHXrooVqxYoXOO+88SQcrpRsbG1VWVpby2M2yco1O+OCDD/Txxx93uXG7yc3rKy0t1aBBg7RixYpo4NHS0qK1a9daXlmUCrPXWFZWps8++0zr1q3ThAkTJEm1tbXq6OiIBhdmvPnmm5Lk2c8wlry8PE2YMEErVqzQzJkzJR1MDa9YsUJXX311zOeUlZVpxYoVuv7666OPLV++3NO/NyvsXGN37e3t2rhxo77zne+4OFLvlJWV9VjqGeSfoRPefPNNX//WEjEMQ9dcc42ef/55rVy5UqWlpUmf48vfoWtlsAHywQcfGEcffbRx2mmnGR988IHR1NQU/ep8zKhRo4y1a9dGH7viiiuMoUOHGrW1tcYbb7xhlJWVGWVlZX5cginvv/++sWHDBmPBggXG4YcfbmzYsMHYsGGDsXfv3ugxo0aNMpYtW2YYhmHs3bvX+I//+A9jzZo1RkNDg/HnP//ZOOGEE4yvf/3rxhdffOHXZcRl9foMwzAWLlxoHHHEEcYLL7xgvPXWW8Y555xjlJaWGq2trX5cQlIzZswwxo8fb6xdu9aoq6szvv71rxsXXnhh9Pvdf0+3bt1q/PSnPzXeeOMNo6GhwXjhhReMESNGGFOmTPHrEqKefvppIz8/33jiiSeMd955x7jsssuMI444wti9e7dhGIZx8cUXG5WVldHjX3vtNeOQQw4xFi9ebLz77rvGbbfdZhx66KHGxo0b/bqEpKxe44IFC4w//vGPxrZt24x169YZF1xwgdGrVy/j7bff9usSEtq7d2/070yS8fOf/9zYsGGD8f777xuGYRiVlZXGxRdfHD3+vffeM3r37m38+Mc/Nt59913j/vvvN3Jzc40//OEPfl1CQlav75577jF++9vfGn//+9+NjRs3Gtddd52Rk5Nj/PnPf/brEhK68sorjaKiImPlypVd7nv79++PHhOEv8OsCESWLFliSIr5FdHQ0GBIMl5++eXoY62trcZVV11l9O3b1+jdu7dx7rnndgleguaSSy6JeY2dr0mSsWTJEsMwDGP//v3GGWecYRQXFxuHHnqoMWzYMKOioiL6P9GgsXp9hnFwCe8tt9xiDBw40MjPzzdOO+00Y8uWLd4P3qSPP/7YuPDCC43DDz/cKCwsNObOndsl0Or+e9rY2GhMmTLF6Nevn5Gfn28cffTRxo9//GMjHA77dAVd3XfffcbQoUONvLw846STTjJef/316PdOPfVU45JLLuly/DPPPGMcc8wxRl5ennHssccav//97z0esXVWrvH666+PHjtw4EDjO9/5jrF+/XofRm1OZLlq96/INV1yySXGqaee2uM548aNM/Ly8owRI0Z0+XsMGqvXt2jRImPkyJFGr169jH79+hlTp041amtr/Rm8CfHue51/JkH4Owz9Y7AAAACeS+tVMwAAIL0RiAAAAN8QiAAAAN8QiAAAAN8QiAAAAN8QiAAAAN8QiAAAAN8QiAAAAN8QiAAAAN8QiAAAAN8QiAAAAN8QiAAAAN/8f5G5329CF03YAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot all the data\n", "plt.plot(x, y, '.')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "UH95XUzhL99d" }, "source": [ "张量通常以 *batches* 的形式聚集在一起,或者是成组的输入和输出堆叠在一起。批处理能够对训练过程带来一些好处,并且可以与加速器和矢量化计算很好地配合使用。给定此数据集的大小,您可以将整个数据集视为一个批次。" ] }, { "cell_type": "markdown", "metadata": { "id": "gFzH64Jn9PIm" }, "source": [ "## 定义模型\n", "\n", "使用 `tf.Variable` 代表模型中的所有权重。`tf.Variable` 能够存储值,并根据需要以张量形式提供它。详情请见 [variable guide](./variable.ipynb)。\n", "\n", "使用 `tf.Module` 封装变量和计算。您可以使用任何Python对象,但是通过这种方式可以轻松保存它。\n", "\n", "这里,您可以定义 *w* 和 *b* 为变量。" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "_WRu7Pze7wk8" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variables: (, )\n" ] } ], "source": [ "class MyModel(tf.Module):\n", " def __init__(self, **kwargs):\n", " super().__init__(**kwargs)\n", " # Initialize the weights to `5.0` and the bias to `0.0`\n", " # In practice, these should be randomly initialized\n", " self.w = tf.Variable(5.0)\n", " self.b = tf.Variable(0.0)\n", "\n", " def __call__(self, x):\n", " return self.w * x + self.b\n", "\n", "model = MyModel()\n", "\n", "# List the variables tf.modules's built-in variable aggregation.\n", "print(\"Variables:\", model.variables)\n", "\n", "# Verify the model works\n", "assert model(3.0).numpy() == 15.0" ] }, { "cell_type": "markdown", "metadata": { "id": "rdpN_3ssG9D5" }, "source": [ "初始变量在此处以固定方式设置,但 Keras 提供了您可以与或不与 Keras 其他部分一起使用的许多[初始值设定项](https://tensorflow.google.cn/api_docs/python/tf/keras/initializers)。" ] }, { "cell_type": "markdown", "metadata": { "id": "xa6j_yXa-j79" }, "source": [ "### 定义损失函数\n", "\n", "损失函数衡量给定输入的模型输出与目标输出的匹配程度。目的是在训练过程中尽量减少这种差异。定义标准的L2损失,也称为“均方误差”:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "Y0ysUFGY924U" }, "outputs": [], "source": [ "# This computes a single loss value for an entire batch\n", "def loss(target_y, predicted_y):\n", " return tf.reduce_mean(tf.square(target_y - predicted_y))" ] }, { "cell_type": "markdown", "metadata": { "id": "-50nq-wPBsAW" }, "source": [ "在训练模型之前,您可以可视化损失值。使用红色绘制模型的预测值,使用蓝色绘制训练数据。" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "_eb83LtrB4nt" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Current loss: 9.857544\n" ] } ], "source": [ "plt.plot(x, y, '.', label=\"Data\")\n", "plt.plot(x, f(x), label=\"Ground truth\")\n", "plt.plot(x, model(x), label=\"Predictions\")\n", "plt.legend()\n", "plt.show()\n", "\n", "print(\"Current loss: %1.6f\" % loss(y, model(x)).numpy())" ] }, { "cell_type": "markdown", "metadata": { "id": "sSDP-yeq_4jE" }, "source": [ "### 定义训练循环\n", "\n", "训练循环按顺序重复执行以下任务:\n", "\n", "- 发送一批输入值,通过模型生成输出值\n", "- 通过比较输出值与输出(标签),来计算损失值\n", "- 使用梯度带(GradientTape)找到梯度值\n", "- 使用这些梯度优化变量\n", "\n", "这个例子中,您可以使用 [gradient descent](https://en.wikipedia.org/wiki/Gradient_descent)训练数据。\n", "\n", "`tf.keras.optimizers`中有许多梯度下降的变量。但是本着搭建的第一原则,您将在这里 借助`tf.GradientTape`的自动微分和`tf.assign_sub`的递减值(结合了`tf.assign`和`tf.sub`)自己实现基本数学:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "MBIACgdnA55X" }, "outputs": [], "source": [ "# Given a callable model, inputs, outputs, and a learning rate...\n", "def train(model, x, y, learning_rate):\n", "\n", " with tf.GradientTape() as t:\n", " # Trainable variables are automatically tracked by GradientTape\n", " current_loss = loss(y, model(x))\n", "\n", " # Use GradientTape to calculate the gradients with respect to W and b\n", " dw, db = t.gradient(current_loss, [model.w, model.b])\n", "\n", " # Subtract the gradient scaled by the learning rate\n", " model.w.assign_sub(learning_rate * dw)\n", " model.b.assign_sub(learning_rate * db)" ] }, { "cell_type": "markdown", "metadata": { "id": "RwWPaJryD2aN" }, "source": [ "要查看训练,您可以通过训练循环发送同一批次的 *x* 和 *y*,并观察 `W` 和 `b` 如何变化。" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "XdfkR223D9dW" }, "outputs": [], "source": [ "model = MyModel()\n", "\n", "# Collect the history of W-values and b-values to plot later\n", "weights = []\n", "biases = []\n", "epochs = range(10)\n", "\n", "# Define a training loop\n", "def report(model, loss):\n", " return f\"W = {model.w.numpy():1.2f}, b = {model.b.numpy():1.2f}, loss={loss:2.5f}\"\n", "\n", "\n", "def training_loop(model, x, y):\n", "\n", " for epoch in epochs:\n", " # Update the model with the single giant batch\n", " train(model, x, y, learning_rate=0.1)\n", "\n", " # Track this before I update\n", " weights.append(model.w.numpy())\n", " biases.append(model.b.numpy())\n", " current_loss = loss(y, model(x))\n", "\n", " print(f\"Epoch {epoch:2d}:\")\n", " print(\" \", report(model, current_loss))" ] }, { "cell_type": "markdown", "metadata": { "id": "8dKKLU4KkQEq" }, "source": [ "进行训练" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "id": "iRuNUghs1lHY" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting:\n", " W = 5.00, b = 0.00, loss=9.85754\n", "Epoch 0:\n", " W = 4.48, b = 0.39, loss=6.13083\n", "Epoch 1:\n", " W = 4.09, b = 0.70, loss=3.99869\n", "Epoch 2:\n", " W = 3.81, b = 0.94, loss=2.76916\n", "Epoch 3:\n", " W = 3.61, b = 1.14, loss=2.05437\n", "Epoch 4:\n", " W = 3.46, b = 1.30, loss=1.63538\n", "Epoch 5:\n", " W = 3.35, b = 1.43, loss=1.38779\n", "Epoch 6:\n", " W = 3.27, b = 1.53, loss=1.24029\n", "Epoch 7:\n", " W = 3.21, b = 1.61, loss=1.15176\n", "Epoch 8:\n", " W = 3.17, b = 1.67, loss=1.09822\n", "Epoch 9:\n", " W = 3.14, b = 1.72, loss=1.06562\n" ] } ], "source": [ "current_loss = loss(y, model(x))\n", "\n", "print(f\"Starting:\")\n", "print(\" \", report(model, current_loss))\n", "\n", "training_loop(model, x, y)" ] }, { "cell_type": "markdown", "metadata": { "id": "JPJgimg8kSA4" }, "source": [ "下面是权重随时间的演变:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "ND1fQw8sbTNr" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(epochs, weights, label='Weights', color=colors[0])\n", "plt.plot(epochs, [TRUE_W] * len(epochs), '--',\n", " label = \"True weight\", color=colors[0])\n", "\n", "plt.plot(epochs, biases, label='bias', color=colors[1])\n", "plt.plot(epochs, [TRUE_B] * len(epochs), \"--\",\n", " label=\"True bias\", color=colors[1])\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "zhlwj1ojkcUP" }, "source": [ "呈现训练的模型的性能" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "id": "tpTEjWWex568" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Current loss: 1.065623\n" ] } ], "source": [ "plt.plot(x, y, '.', label=\"Data\")\n", "plt.plot(x, f(x), label=\"Ground truth\")\n", "plt.plot(x, model(x), label=\"Predictions\")\n", "plt.legend()\n", "plt.show()\n", "\n", "print(\"Current loss: %1.6f\" % loss(model(x), y).numpy())" ] }, { "cell_type": "markdown", "metadata": { "id": "DODMMmfLIiOC" }, "source": [ "## 使用Keras完成相同的解决方案\n", "\n", "将上面的代码与Keras中的等效代码进行对比很有用。\n", "\n", "如果您将`tf.keras.Model`子类化,则定义模型与其看起来完全相同。请记住,Keras模型最终从模块继承。" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "id": "Z86hCI0x1YX3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 0:\n", " W = 4.48, b = 0.39, loss=6.13083\n", "Epoch 1:\n", " W = 4.09, b = 0.70, loss=3.99869\n", "Epoch 2:\n", " W = 3.81, b = 0.94, loss=2.76916\n", "Epoch 3:\n", " W = 3.61, b = 1.14, loss=2.05437\n", "Epoch 4:\n", " W = 3.46, b = 1.30, loss=1.63538\n", "Epoch 5:\n", " W = 3.35, b = 1.43, loss=1.38779\n", "Epoch 6:\n", " W = 3.27, b = 1.53, loss=1.24029\n", "Epoch 7:\n", " W = 3.21, b = 1.61, loss=1.15176\n", "Epoch 8:\n", " W = 3.17, b = 1.67, loss=1.09822\n", "Epoch 9:\n", " W = 3.14, b = 1.72, loss=1.06562\n" ] } ], "source": [ "class MyModelKeras(tf.keras.Model):\n", " def __init__(self, **kwargs):\n", " super().__init__(**kwargs)\n", " # Initialize the weights to `5.0` and the bias to `0.0`\n", " # In practice, these should be randomly initialized\n", " self.w = tf.Variable(5.0)\n", " self.b = tf.Variable(0.0)\n", "\n", " def call(self, x):\n", " return self.w * x + self.b\n", "\n", "keras_model = MyModelKeras()\n", "\n", "# Reuse the training loop with a Keras model\n", "training_loop(keras_model, x, y)\n", "\n", "# You can also save a checkpoint using Keras's built-in support\n", "keras_model.save_weights(temp_dir/\"my_checkpoint.weights.h5\")" ] }, { "cell_type": "markdown", "metadata": { "id": "6kw5P4jt2Az8" }, "source": [ "您可以使用Keras的内置功能作为捷径,而不必在每次创建模型时都编写新的训练循环。当您不想编写或调试Python训练循环时,这很有用。\n", "\n", "如果您使用Keras,您将会需要使用 `model.compile()` 去设置参数, 使用`model.fit()` 进行训练。借助Keras实现L2损失和梯度下降需要的代码量更少,就像一个捷径。Keras损失和优化器也可以在这些便利功能之外使用,而前面的示例也可以使用它们。" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "id": "-nbLLfPE2pEl" }, "outputs": [], "source": [ "keras_model = MyModelKeras()\n", "\n", "# compile sets the training parameters\n", "keras_model.compile(\n", " # By default, fit() uses tf.function(). You can\n", " # turn that off for debugging, but it is on now.\n", " run_eagerly=False,\n", "\n", " # Using a built-in optimizer, configuring as an object\n", " optimizer=tf.keras.optimizers.SGD(learning_rate=0.1),\n", "\n", " # Keras comes with built-in MSE error\n", " # However, you could use the loss function\n", " # defined above\n", " loss=tf.keras.losses.MeanSquaredError(),\n", ")" ] }, { "cell_type": "markdown", "metadata": { "id": "lrlHODiZccu2" }, "source": [ "Keras`fit`期望批处理数据或完整的数据集作为NumPy数组。 NumPy数组分为多个批次,默认批次大小为32。\n", "\n", "这一案例中,为了匹配手写训练循环,您应该以大小为1000的单批次传递x。" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "id": "zfAYqtu136PO" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "201\n", "Epoch 1/10\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/media/pc/data/lxw/envs/anaconda3x/envs/xxx/lib/python3.12/site-packages/keras/src/backend/tensorflow/trainer.py:75: UserWarning: The model does not have any trainable weights.\n", " warnings.warn(\"The model does not have any trainable weights.\")\n", "WARNING: All log messages before absl::InitializeLog() is called are written to STDERR\n", "I0000 00:00:1729853619.423943 4099174 service.cc:146] XLA service 0x7ff220004a00 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n", "I0000 00:00:1729853619.423980 4099174 service.cc:154] StreamExecutor device (0): NVIDIA GeForce RTX 3090, Compute Capability 8.6\n", "I0000 00:00:1729853619.423991 4099174 service.cc:154] StreamExecutor device (1): NVIDIA GeForce RTX 2080 Ti, Compute Capability 7.5\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1s/step - loss: 9.8575\n", "Epoch 2/10\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 27ms/step - loss: 9.8575\n", "Epoch 3/10\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - loss: 9.8575\n", "Epoch 4/10\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - loss: 9.8575\n", "Epoch 5/10\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - loss: 9.8575\n", "Epoch 6/10\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 27ms/step - loss: 9.8575\n", "Epoch 7/10\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - loss: 9.8575\n", "Epoch 8/10\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - loss: 9.8575\n", "Epoch 9/10\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "I0000 00:00:1729853620.350523 4099174 device_compiler.h:188] Compiled cluster using XLA! This line is logged at most once for the lifetime of the process.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - loss: 9.8575\n", "Epoch 10/10\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - loss: 9.8575\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(x.shape[0])\n", "keras_model.fit(x, y, epochs=10, batch_size=1000)" ] }, { "cell_type": "markdown", "metadata": { "id": "8zKZIO9P5s1G" }, "source": [ "请注意,Keras会在训练后而不是之前打印出损失,因此第一次损失会显得较低。否则,这表明本质上相同的训练效果。" ] }, { "cell_type": "markdown", "metadata": { "id": "vPnIVuaSJwWz" }, "source": [ "## 下一步\n", "\n", "在这篇引导中,您已经看到怎样使用tensors, variables, modules, 和gradient tape去构建并训练模型,也进一步了解到这些是如何与Keras对应的。\n", "\n", "但是,这是一个极其简单的问题。有关更实用的介绍,请参阅[自定义训练演示](../tutorials/customization/custom_training_walkthrough.ipynb)。\n", "\n", "有关使用内置 Keras 训练循环的更多信息,请参阅[本指南](https://tensorflow.google.cn/guide/keras/train_and_evaluate)。有关训练循环和 Keras 的更多信息,请参阅[本指南](https://tensorflow.google.cn/guide/keras/writing_a_training_loop_from_scratch)。有关编写自定义分布式训练循环的信息,请参阅[本指南](distributed_training.ipynb#using_tfdistributestrategy_with_basic_training_loops_loops)。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] } ], "metadata": { "colab": { "collapsed_sections": [ "5rmpybwysXGV", "iKD__8kFCKNt" ], "name": "basic_training_loops.ipynb", "toc_visible": true }, "kernelspec": { "display_name": "xxx", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.2" } }, "nbformat": 4, "nbformat_minor": 0 }