提交 d01bb4d2 编写于 作者: J jiangjiajun

update tutorial

上级 76a875e8
......@@ -12,7 +12,7 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 1,
"metadata": {},
"outputs": [
{
......@@ -45,7 +45,7 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
......@@ -62,12 +62,14 @@
"source": [
"### 保存模型为checkpoint格式\n",
"\n",
"tensorflow2fluid目前支持checkpoint格式的模型或者是将网络结构和参数序列化的pb格式模型,上面下载的`vgg_16.ckpt`仅仅存储了模型参数,因此我们需要重新加载参数,并将网络结构和参数一起保存为checkpoint模型"
"tensorflow2fluid目前支持checkpoint格式的模型或者是将网络结构和参数序列化的pb格式模型,上面下载的`vgg_16.ckpt`仅仅存储了模型参数,因此我们需要重新加载参数,并将网络结构和参数一起保存为checkpoint模型\n",
"\n",
"**注意:下面的代码里,运行TensorFlow模型和将TensorFlow模型转换为PaddlePaddle模型,依赖TensorFlow**"
]
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 3,
"metadata": {},
"outputs": [
{
......@@ -107,12 +109,28 @@
"source": [
"### 将模型转换为PaddlePaddle模型\n",
"\n",
"注意:部分OP在转换时,需要将参数写入文件;或者是运行tensorflow模型进行infer,获取tensor值。两种情况下均会消耗一定的时间用于IO或计算,对于后一种情况,建议转换模型时将`use_cuda`参数设为`True`,加快infer速度"
"**注意**:部分OP在转换时,需要将参数写入文件;或者是运行tensorflow模型进行infer,获取tensor值。两种情况下均会消耗一定的时间用于IO或计算,对于后一种情况,建议转换模型时将`use_cuda`参数设为`True`,加快infer速度\n",
"\n",
"可以通过下面的**模型转换python脚本**在代码中设置参数,在python脚本中进行模型转换。或者一般可以通过如下的命令行方式进行转换,\n",
"``` python\n",
"# 通过命令行也可进行模型转换\n",
"python tf2fluid/convert.py --meta_file checkpoint/model.meta --ckpt_dir checkpoint \\\n",
" --in_nodes inputs --input_shape None,224,224,3 \\\n",
" --output_nodes vgg_16/fc8/squeezed --use_cuda True \\\n",
" --input_format NHWC --save_dir paddle_model\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 模型转换python脚本"
]
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 4,
"metadata": {},
"outputs": [
{
......@@ -246,7 +264,9 @@
"metadata": {},
"source": [
"### 加载转换后的PaddlePaddle模型,并进行预测\n",
"**需要注意,转换后的PaddlePaddle CV模型输入格式为NCHW**"
"需要注意的是,转换后的PaddlePaddle CV模型**输入格式为NCHW**\n",
"\n",
"**注意:下面代码用于运行转换后的PaddlePaddle模型,并与TensorFlow计算结果对比diff,因此依赖PaddlePaddle**"
]
},
{
......@@ -254,8 +274,8 @@
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-14T10:18:46.124339Z",
"start_time": "2019-03-14T10:18:40.858372Z"
"end_time": "2019-03-15T05:51:40.544737Z",
"start_time": "2019-03-15T05:51:27.857863Z"
}
},
"outputs": [],
......@@ -263,7 +283,7 @@
"import numpy\n",
"import tf2fluid.model_loader as ml\n",
"\n",
"model = ml.ModelLoader(\"paddle_model\", use_cuda=True)\n",
"model = ml.ModelLoader(\"paddle_model\", use_cuda=False)\n",
"\n",
"numpy.random.seed(13)\n",
"data = numpy.random.rand(5, 224, 224, 3).astype(\"float32\")\n",
......@@ -287,8 +307,8 @@
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-14T10:20:13.611132Z",
"start_time": "2019-03-14T10:20:13.598874Z"
"end_time": "2019-03-15T05:52:02.126718Z",
"start_time": "2019-03-15T05:52:02.115849Z"
}
},
"outputs": [
......@@ -296,7 +316,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"3.33786e-06\n"
"6.67572e-06\n"
]
}
],
......@@ -315,15 +335,15 @@
"### 需要注意的点\n",
"1. 转换后的模型需要注意输入格式,PaddlePaddle中输入格式需为NCHW格式 \n",
"2. 此例中不涉及到输入中间层,如卷积层的输出,需要了解的是PaddlePaddle中的卷积层输出,卷积核的`shape`与Tensorflow有差异 \n",
"3. 模型转换完后,检查转换前后模型的diff,在本例中,最大diff为3.34-e06,满足转换需求 "
"3. 模型转换完后,检查转换前后模型的diff,在本例中,测试得到的最大diff满足转换需求 "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"display_name": "Python [conda env:GPU-Paddle]",
"language": "python",
"name": "python2"
"name": "conda-env-GPU-Paddle-py"
},
"language_info": {
"codemirror_mode": {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册