Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

Commit

Permalink
update save_model to 2.0rc (#924)
Browse files Browse the repository at this point in the history
* update save_model to 2.0rc

* update save_model to 2.0rc
  • Loading branch information
dingjiaweiww authored Oct 28, 2020
1 parent b98a567 commit 7a4952a
Showing 1 changed file with 40 additions and 59 deletions.
99 changes: 40 additions & 59 deletions paddle2.0_docs/save_model/save_model.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"metadata": {},
"source": [
"# 模型保存及加载\n",
"本教程将基于Paddle高阶API对模型参数的保存和加载进行讲解。在日常训练模型过程中我们会遇到一些突发情况,导致训练过程主动或被动的中断,因此在模型没有完全训练好的情况下,我们需要高频的保存下模型参数,在发生意外时可以快速载入保存的参数继续训练抑或是模型已经训练好了,我们需要使用训练好的参数进行预测或部署模型上线。面对上述情况,Paddle中提供了保存模型和提取模型的方法,支持从上一次保存状态开始训练,只要我们随时保存训练过程中的模型状态,就不用从初始状态重新训练。\n",
"本教程将基于Paddle高阶API对模型参数的保存和加载进行讲解。在日常训练模型过程中我们会遇到一些突发情况,导致训练过程主动或被动的中断,因此在模型没有完全训练好的情况下,我们需要高频的保存下模型参数,在发生意外时可以快速载入保存的参数继续训练抑或是模型已经训练好了,我们需要使用训练好的参数进行预测或部署模型上线。面对上述情况,Paddle中提供了保存模型和提取模型的方法,支持从上一次保存状态开始训练,只要我们随时保存训练过程中的模型状态,就不用从初始状态重新训练。\n",
"下面将基于手写数字识别的模型讲解paddle如何保存及加载模型,并恢复训练,网络结构部分的讲解省略。"
]
},
Expand All @@ -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"
]
}
],
Expand All @@ -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__)"
]
},
{
Expand All @@ -54,7 +53,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -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",
Expand All @@ -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"
]
},
Expand All @@ -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"
]
Expand All @@ -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",
" )"
]
},
{
Expand Down Expand Up @@ -272,42 +273,22 @@
},
{
"cell_type": "code",
"execution_count": 12,
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"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"
]
}
Expand Down Expand Up @@ -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",
" )"
]
},
Expand Down

0 comments on commit 7a4952a

Please sign in to comment.