From 7a4952abdadaced0a45dfed4c4c26daf4a4e300a Mon Sep 17 00:00:00 2001 From: Dingjiawei <327396238@qq.com> Date: Thu, 29 Oct 2020 07:27:09 +0800 Subject: [PATCH] update save_model to 2.0rc (#924) * update save_model to 2.0rc * update save_model to 2.0rc --- paddle2.0_docs/save_model/save_model.ipynb | 99 +++++++++------------- 1 file changed, 40 insertions(+), 59 deletions(-) diff --git a/paddle2.0_docs/save_model/save_model.ipynb b/paddle2.0_docs/save_model/save_model.ipynb index 812d2631..e3a64d31 100644 --- a/paddle2.0_docs/save_model/save_model.ipynb +++ b/paddle2.0_docs/save_model/save_model.ipynb @@ -5,7 +5,7 @@ "metadata": {}, "source": [ "# 模型保存及加载\n", - "本教程将基于Paddle高阶API对模型参数的保存和加载进行讲解。在日常训练模型过程中我们会遇到一些突发情况,导致训练过程主动或被动的中断,因此在模型没有完全训练好的情况下,我们需要高频的保存下模型参数,在发生意外时可以快速载入保存的参数继续训练。抑或是模型已经训练好了,我们需要使用训练好的参数进行预测或部署模型上线。面对上述情况,Paddle中提供了保存模型和提取模型的方法,支持从上一次保存状态开始训练,只要我们随时保存训练过程中的模型状态,就不用从初始状态重新训练。\n", + "本教程将基于Paddle高阶API对模型参数的保存和加载进行讲解。在日常训练模型过程中我们会遇到一些突发情况,导致训练过程主动或被动的中断,因此在模型没有完全训练好的情况下,我们需要高频的保存下模型参数,在发生意外时可以快速载入保存的参数继续训练;抑或是模型已经训练好了,我们需要使用训练好的参数进行预测或部署模型上线。面对上述情况,Paddle中提供了保存模型和提取模型的方法,支持从上一次保存状态开始训练,只要我们随时保存训练过程中的模型状态,就不用从初始状态重新训练。\n", "下面将基于手写数字识别的模型讲解paddle如何保存及加载模型,并恢复训练,网络结构部分的讲解省略。" ] }, @@ -14,19 +14,19 @@ "metadata": {}, "source": [ "## 环境\n", - "本教程基于paddle-2.0Beta编写,如果您的环境不是此版本,请先安装paddle-2.0Beta版本,使用命令:pip3 install paddlepaddle==2.0Beta。" + "本教程基于paddle-2.0rc版编写,如果您的环境不是此版本,请先安装paddle-2.0rc版本,使用命令:pip3 install paddlepaddle==2.0.0-rc0" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "2.0.0-beta0\n" + "2.0.0-rc0\n" ] } ], @@ -36,11 +36,10 @@ "from paddle.nn import Layer\n", "from paddle.vision.datasets import MNIST\n", "from paddle.metric import Accuracy\n", - "from paddle.nn import Conv2d,MaxPool2d,Linear\n", + "from paddle.nn import Conv2D,MaxPool2D,Linear\n", "from paddle.static import InputSpec\n", "\n", - "print(paddle.__version__)\n", - "paddle.disable_static()" + "print(paddle.__version__)" ] }, { @@ -54,7 +53,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -71,17 +70,17 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "class MyModel(Layer):\n", " def __init__(self):\n", " super(MyModel, self).__init__()\n", - " self.conv1 = paddle.nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5, stride=1, padding=2)\n", - " self.max_pool1 = MaxPool2d(kernel_size=2, stride=2)\n", - " self.conv2 = Conv2d(in_channels=6, out_channels=16, kernel_size=5, stride=1)\n", - " self.max_pool2 = MaxPool2d(kernel_size=2, stride=2)\n", + " self.conv1 = paddle.nn.Conv2D(in_channels=1, out_channels=6, kernel_size=5, stride=1, padding=2)\n", + " self.max_pool1 = MaxPool2D(kernel_size=2, stride=2)\n", + " self.conv2 = Conv2D(in_channels=6, out_channels=16, kernel_size=5, stride=1)\n", + " self.max_pool2 = MaxPool2D(kernel_size=2, stride=2)\n", " self.linear1 = Linear(in_features=16*5*5, out_features=120)\n", " self.linear2 = Linear(in_features=120, out_features=84)\n", " self.linear3 = Linear(in_features=84, out_features=10)\n", @@ -99,7 +98,6 @@ " x = self.linear2(x)\n", " x = F.relu(x)\n", " x = self.linear3(x)\n", - " x = F.softmax(x)\n", " return x" ] }, @@ -113,28 +111,30 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 1/1\n", - "step 100/938 - loss: 1.6177 - acc_top1: 0.6119 - acc_top2: 0.6813 - 15ms/step\n", - "step 200/938 - loss: 1.7720 - acc_top1: 0.7230 - acc_top2: 0.7788 - 15ms/step\n", - "step 300/938 - loss: 1.6114 - acc_top1: 0.7666 - acc_top2: 0.8164 - 15ms/step\n", - "step 400/938 - loss: 1.6537 - acc_top1: 0.7890 - acc_top2: 0.8350 - 15ms/step\n", - "step 500/938 - loss: 1.5229 - acc_top1: 0.8170 - acc_top2: 0.8619 - 15ms/step\n", - "step 600/938 - loss: 1.5269 - acc_top1: 0.8391 - acc_top2: 0.8821 - 15ms/step\n", - "step 700/938 - loss: 1.4821 - acc_top1: 0.8561 - acc_top2: 0.8970 - 15ms/step\n", - "step 800/938 - loss: 1.4860 - acc_top1: 0.8689 - acc_top2: 0.9081 - 15ms/step\n", - "step 900/938 - loss: 1.5032 - acc_top1: 0.8799 - acc_top2: 0.9174 - 15ms/step\n", - "step 938/938 - loss: 1.4617 - acc_top1: 0.8835 - acc_top2: 0.9203 - 15ms/step\n", + "Epoch 1/3\n", + "step 938/938 [==============================] - loss: 0.1555 - acc_top1: 0.8947 - acc_top2: 0.9496 - 16ms/step \n", "save checkpoint at /Users/dingjiawei/online_repo/book/paddle2.0_docs/save_model/mnist_checkpoint/0\n", "Eval begin...\n", - "step 100/157 - loss: 1.4765 - acc_top1: 0.9636 - acc_top2: 0.9891 - 6ms/step\n", - "step 157/157 - loss: 1.4612 - acc_top1: 0.9705 - acc_top2: 0.9910 - 6ms/step\n", + "step 157/157 [==============================] - loss: 0.0105 - acc_top1: 0.9535 - acc_top2: 0.9807 - 6ms/step \n", + "Eval samples: 10000\n", + "Epoch 2/3\n", + "step 938/938 [==============================] - loss: 0.0143 - acc_top1: 0.9689 - acc_top2: 0.9909 - 16ms/step \n", + "save checkpoint at /Users/dingjiawei/online_repo/book/paddle2.0_docs/save_model/mnist_checkpoint/1\n", + "Eval begin...\n", + "step 157/157 [==============================] - loss: 0.0101 - acc_top1: 0.9733 - acc_top2: 0.9934 - 6ms/step \n", + "Eval samples: 10000\n", + "Epoch 3/3\n", + "step 938/938 [==============================] - loss: 0.0083 - acc_top1: 0.9796 - acc_top2: 0.9951 - 16ms/step \n", + "save checkpoint at /Users/dingjiawei/online_repo/book/paddle2.0_docs/save_model/mnist_checkpoint/2\n", + "Eval begin...\n", + "step 157/157 [==============================] - loss: 0.0276 - acc_top1: 0.9761 - acc_top2: 0.9934 - 6ms/step \n", "Eval samples: 10000\n", "save checkpoint at /Users/dingjiawei/online_repo/book/paddle2.0_docs/save_model/mnist_checkpoint/final\n" ] @@ -149,15 +149,16 @@ "\n", "model.prepare(\n", " optim,\n", - " paddle.nn.loss.CrossEntropyLoss(),\n", + " paddle.nn.CrossEntropyLoss(),\n", " Accuracy(topk=(1, 2))\n", " )\n", "model.fit(train_dataset,\n", " test_dataset,\n", - " epochs=1,\n", - " log_freq=100,\n", + " epochs=3,\n", " batch_size=64,\n", - " save_dir='mnist_checkpoint')\n" + " save_dir='mnist_checkpoint',\n", + " verbose=1\n", + " )" ] }, { @@ -272,7 +273,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -280,34 +281,14 @@ "output_type": "stream", "text": [ "Epoch 1/2\n", - "step 100/938 - loss: 1.4635 - acc_top1: 0.9650 - acc_top2: 0.9898 - 15ms/step\n", - "step 200/938 - loss: 1.5459 - acc_top1: 0.9659 - acc_top2: 0.9897 - 15ms/step\n", - "step 300/938 - loss: 1.5109 - acc_top1: 0.9658 - acc_top2: 0.9893 - 15ms/step\n", - "step 400/938 - loss: 1.4797 - acc_top1: 0.9664 - acc_top2: 0.9899 - 15ms/step\n", - "step 500/938 - loss: 1.4786 - acc_top1: 0.9673 - acc_top2: 0.9902 - 15ms/step\n", - "step 600/938 - loss: 1.5082 - acc_top1: 0.9679 - acc_top2: 0.9906 - 15ms/step\n", - "step 700/938 - loss: 1.4768 - acc_top1: 0.9687 - acc_top2: 0.9909 - 15ms/step\n", - "step 800/938 - loss: 1.4638 - acc_top1: 0.9696 - acc_top2: 0.9913 - 15ms/step\n", - "step 900/938 - loss: 1.5058 - acc_top1: 0.9704 - acc_top2: 0.9916 - 15ms/step\n", - "step 938/938 - loss: 1.4702 - acc_top1: 0.9708 - acc_top2: 0.9917 - 15ms/step\n", + "step 938/938 [==============================] - loss: 0.0046 - acc_top1: 0.9768 - acc_top2: 0.9943 - 18ms/step \n", "Eval begin...\n", - "step 100/157 - loss: 1.4613 - acc_top1: 0.9755 - acc_top2: 0.9944 - 5ms/step\n", - "step 157/157 - loss: 1.4612 - acc_top1: 0.9805 - acc_top2: 0.9956 - 5ms/step\n", + "step 157/157 [==============================] - loss: 0.0012 - acc_top1: 0.9789 - acc_top2: 0.9934 - 6ms/step \n", "Eval samples: 10000\n", "Epoch 2/2\n", - "step 100/938 - loss: 1.4832 - acc_top1: 0.9789 - acc_top2: 0.9927 - 15ms/step\n", - "step 200/938 - loss: 1.4618 - acc_top1: 0.9779 - acc_top2: 0.9932 - 14ms/step\n", - "step 300/938 - loss: 1.4613 - acc_top1: 0.9779 - acc_top2: 0.9929 - 15ms/step\n", - "step 400/938 - loss: 1.4765 - acc_top1: 0.9772 - acc_top2: 0.9932 - 15ms/step\n", - "step 500/938 - loss: 1.4932 - acc_top1: 0.9775 - acc_top2: 0.9934 - 15ms/step\n", - "step 600/938 - loss: 1.4773 - acc_top1: 0.9773 - acc_top2: 0.9936 - 15ms/step\n", - "step 700/938 - loss: 1.4612 - acc_top1: 0.9783 - acc_top2: 0.9939 - 15ms/step\n", - "step 800/938 - loss: 1.4653 - acc_top1: 0.9779 - acc_top2: 0.9939 - 15ms/step\n", - "step 900/938 - loss: 1.4639 - acc_top1: 0.9780 - acc_top2: 0.9939 - 15ms/step\n", - "step 938/938 - loss: 1.4678 - acc_top1: 0.9779 - acc_top2: 0.9937 - 15ms/step\n", + "step 938/938 [==============================] - loss: 0.0063 - acc_top1: 0.9845 - acc_top2: 0.9965 - 18ms/step \n", "Eval begin...\n", - "step 100/157 - loss: 1.4612 - acc_top1: 0.9733 - acc_top2: 0.9945 - 6ms/step\n", - "step 157/157 - loss: 1.4612 - acc_top1: 0.9778 - acc_top2: 0.9952 - 6ms/step\n", + "step 157/157 [==============================] - loss: 0.0014 - acc_top1: 0.9848 - acc_top2: 0.9964 - 6ms/step \n", "Eval samples: 10000\n" ] } @@ -337,8 +318,8 @@ "model.fit(train_data=train_dataset,\n", " eval_data=test_dataset,\n", " batch_size=64,\n", - " log_freq=100,\n", - " epochs=2\n", + " epochs=2,\n", + " verbose=1\n", " )" ] },