diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 58ce5d61c950d12630cfe1de354ffc2a2ba1fd59..cdd8de78cef63e14274db368755bbba44e8fb845 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,51 +1,2 @@ -if(NOT DEFINED SPHINX_THEME) - set(SPHINX_THEME default) -endif() - -if(NOT DEFINED SPHINX_THEME_DIR) - set(SPHINX_THEME_DIR) -endif() - -# configured documentation tools and intermediate build results -set(BINARY_BUILD_DIR_EN "${CMAKE_CURRENT_BINARY_DIR}/en/_build") - -# Sphinx cache with pickled ReST documents -set(SPHINX_CACHE_DIR_EN "${CMAKE_CURRENT_BINARY_DIR}/en/_doctrees") - -# HTML output director -set(SPHINX_HTML_DIR_EN "${CMAKE_CURRENT_BINARY_DIR}/en/html") - -configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/templates/conf.py.en.in" - "${BINARY_BUILD_DIR_EN}/conf.py" - @ONLY) - -sphinx_add_target(paddle_docs - html - ${BINARY_BUILD_DIR_EN} - ${SPHINX_CACHE_DIR_EN} - ${CMAKE_CURRENT_SOURCE_DIR} - ${SPHINX_HTML_DIR_EN}) - -# configured documentation tools and intermediate build results -set(BINARY_BUILD_DIR_CN "${CMAKE_CURRENT_BINARY_DIR}/cn/_build") - -# Sphinx cache with pickled ReST documents -set(SPHINX_CACHE_DIR_CN "${CMAKE_CURRENT_BINARY_DIR}/cn/_doctrees") - -# HTML output directory -set(SPHINX_HTML_DIR_CN "${CMAKE_CURRENT_BINARY_DIR}/cn/html") - -configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/templates/conf.py.cn.in" - "${BINARY_BUILD_DIR_CN}/conf.py" - @ONLY) - -sphinx_add_target(paddle_docs_cn - html - ${BINARY_BUILD_DIR_CN} - ${SPHINX_CACHE_DIR_CN} - ${CMAKE_CURRENT_SOURCE_DIR} - ${SPHINX_HTML_DIR_CN}) - add_subdirectory(api) +add_subdirectory(v2) diff --git a/doc/dev/contribute_to_paddle_en.md b/doc/dev/contribute_to_paddle_en.md deleted file mode 120000 index f939e75f21a8badb5c40f527abd0e098fe9bc472..0000000000000000000000000000000000000000 --- a/doc/dev/contribute_to_paddle_en.md +++ /dev/null @@ -1 +0,0 @@ -../../CONTRIBUTING.md \ No newline at end of file diff --git a/doc/dev/new_op_cn.md b/doc/fluid/dev/new_op_cn.md similarity index 100% rename from doc/dev/new_op_cn.md rename to doc/fluid/dev/new_op_cn.md diff --git a/doc/dev/new_op_en.md b/doc/fluid/dev/new_op_en.md similarity index 100% rename from doc/dev/new_op_en.md rename to doc/fluid/dev/new_op_en.md diff --git a/doc/dev/new_op_kernel_en.md b/doc/fluid/dev/new_op_kernel_en.md similarity index 100% rename from doc/dev/new_op_kernel_en.md rename to doc/fluid/dev/new_op_kernel_en.md diff --git a/doc/dev/use_eigen_cn.md b/doc/fluid/dev/use_eigen_cn.md similarity index 100% rename from doc/dev/use_eigen_cn.md rename to doc/fluid/dev/use_eigen_cn.md diff --git a/doc/dev/use_eigen_en.md b/doc/fluid/dev/use_eigen_en.md similarity index 100% rename from doc/dev/use_eigen_en.md rename to doc/fluid/dev/use_eigen_en.md diff --git a/doc/howto/cluster/fluid_cluster_train_en.md b/doc/fluid/howto/cluster/fluid_cluster_train_en.md similarity index 100% rename from doc/howto/cluster/fluid_cluster_train_en.md rename to doc/fluid/howto/cluster/fluid_cluster_train_en.md diff --git a/doc/howto/optimization/cpu_profiling_cn.md b/doc/fluid/howto/optimization/cpu_profiling_cn.md similarity index 100% rename from doc/howto/optimization/cpu_profiling_cn.md rename to doc/fluid/howto/optimization/cpu_profiling_cn.md diff --git a/doc/howto/optimization/cpu_profiling_en.md b/doc/fluid/howto/optimization/cpu_profiling_en.md similarity index 100% rename from doc/howto/optimization/cpu_profiling_en.md rename to doc/fluid/howto/optimization/cpu_profiling_en.md diff --git a/doc/howto/read_source.md b/doc/fluid/read_source.md similarity index 100% rename from doc/howto/read_source.md rename to doc/fluid/read_source.md diff --git a/doc/templates/conf.py.cn.in b/doc/templates/conf.py.cn.in index 32b2071385d9ae438be84dfab64dcaa46ac18880..260b6c9fd1b364433cae098bacea77aa7fe9e266 100644 --- a/doc/templates/conf.py.cn.in +++ b/doc/templates/conf.py.cn.in @@ -121,7 +121,7 @@ html_theme = 'sphinx_rtd_theme' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['@PADDLE_SOURCE_DIR@/doc_theme/static'] +#html_static_path = [] # Output file base name for HTML help builder. htmlhelp_basename = project + 'doc' diff --git a/doc/templates/conf.py.en.in b/doc/templates/conf.py.en.in index a454e80c61cdf28b3d6cd86f1ba8a528eae7d3ee..e5757b86b43001bc6090d8edd0aaa5ff4fc476ee 100644 --- a/doc/templates/conf.py.en.in +++ b/doc/templates/conf.py.en.in @@ -121,7 +121,7 @@ html_theme = 'sphinx_rtd_theme' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['@PADDLE_SOURCE_DIR@/doc_theme/static'] +#html_static_path = [] # Output file base name for HTML help builder. htmlhelp_basename = project + 'doc' diff --git a/doc/v2/CMakeLists.txt b/doc/v2/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..50714258f3057a99514d9b120f282190a7e66aae --- /dev/null +++ b/doc/v2/CMakeLists.txt @@ -0,0 +1,49 @@ +if(NOT DEFINED SPHINX_THEME) + set(SPHINX_THEME default) +endif() + +if(NOT DEFINED SPHINX_THEME_DIR) + set(SPHINX_THEME_DIR) +endif() + +# configured documentation tools and intermediate build results +set(BINARY_BUILD_DIR_EN "${CMAKE_CURRENT_BINARY_DIR}/en/_build") + +# Sphinx cache with pickled ReST documents +set(SPHINX_CACHE_DIR_EN "${CMAKE_CURRENT_BINARY_DIR}/en/_doctrees") + +# HTML output director +set(SPHINX_HTML_DIR_EN "${CMAKE_CURRENT_BINARY_DIR}/en/html") + +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/../templates/conf.py.en.in" + "${BINARY_BUILD_DIR_EN}/conf.py" + @ONLY) + +sphinx_add_target(paddle_docs + html + ${BINARY_BUILD_DIR_EN} + ${SPHINX_CACHE_DIR_EN} + ${CMAKE_CURRENT_SOURCE_DIR} + ${SPHINX_HTML_DIR_EN}) + +# configured documentation tools and intermediate build results +set(BINARY_BUILD_DIR_CN "${CMAKE_CURRENT_BINARY_DIR}/cn/_build") + +# Sphinx cache with pickled ReST documents +set(SPHINX_CACHE_DIR_CN "${CMAKE_CURRENT_BINARY_DIR}/cn/_doctrees") + +# HTML output directory +set(SPHINX_HTML_DIR_CN "${CMAKE_CURRENT_BINARY_DIR}/cn/html") + +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/../templates/conf.py.cn.in" + "${BINARY_BUILD_DIR_CN}/conf.py" + @ONLY) + +sphinx_add_target(paddle_docs_cn + html + ${BINARY_BUILD_DIR_CN} + ${SPHINX_CACHE_DIR_CN} + ${CMAKE_CURRENT_SOURCE_DIR} + ${SPHINX_HTML_DIR_CN}) diff --git a/doc/build_and_install/build_from_source_cn.rst b/doc/v2/build_and_install/build_from_source_cn.rst similarity index 100% rename from doc/build_and_install/build_from_source_cn.rst rename to doc/v2/build_and_install/build_from_source_cn.rst diff --git a/doc/build_and_install/build_from_source_en.rst b/doc/v2/build_and_install/build_from_source_en.rst similarity index 100% rename from doc/build_and_install/build_from_source_en.rst rename to doc/v2/build_and_install/build_from_source_en.rst diff --git a/doc/build_and_install/docker_install_cn.rst b/doc/v2/build_and_install/docker_install_cn.rst similarity index 100% rename from doc/build_and_install/docker_install_cn.rst rename to doc/v2/build_and_install/docker_install_cn.rst diff --git a/doc/build_and_install/docker_install_en.rst b/doc/v2/build_and_install/docker_install_en.rst similarity index 100% rename from doc/build_and_install/docker_install_en.rst rename to doc/v2/build_and_install/docker_install_en.rst diff --git a/doc/build_and_install/index_cn.rst b/doc/v2/build_and_install/index_cn.rst similarity index 100% rename from doc/build_and_install/index_cn.rst rename to doc/v2/build_and_install/index_cn.rst diff --git a/doc/build_and_install/index_en.rst b/doc/v2/build_and_install/index_en.rst similarity index 100% rename from doc/build_and_install/index_en.rst rename to doc/v2/build_and_install/index_en.rst diff --git a/doc/build_and_install/paddleci.png b/doc/v2/build_and_install/paddleci.png similarity index 100% rename from doc/build_and_install/paddleci.png rename to doc/v2/build_and_install/paddleci.png diff --git a/doc/build_and_install/pip_install_cn.rst b/doc/v2/build_and_install/pip_install_cn.rst similarity index 100% rename from doc/build_and_install/pip_install_cn.rst rename to doc/v2/build_and_install/pip_install_cn.rst diff --git a/doc/build_and_install/pip_install_en.rst b/doc/v2/build_and_install/pip_install_en.rst similarity index 100% rename from doc/build_and_install/pip_install_en.rst rename to doc/v2/build_and_install/pip_install_en.rst diff --git a/doc/dev/FullyConnected.jpg b/doc/v2/dev/FullyConnected.jpg similarity index 100% rename from doc/dev/FullyConnected.jpg rename to doc/v2/dev/FullyConnected.jpg diff --git a/doc/dev/contribute_to_paddle_cn.md b/doc/v2/dev/contribute_to_paddle_cn.md similarity index 100% rename from doc/dev/contribute_to_paddle_cn.md rename to doc/v2/dev/contribute_to_paddle_cn.md diff --git a/doc/v2/dev/contribute_to_paddle_en.md b/doc/v2/dev/contribute_to_paddle_en.md new file mode 120000 index 0000000000000000000000000000000000000000..c97564d93a7f0a753a23cd97d2467d595bd154ff --- /dev/null +++ b/doc/v2/dev/contribute_to_paddle_en.md @@ -0,0 +1 @@ +../../../CONTRIBUTING.md \ No newline at end of file diff --git a/doc/dev/index_cn.rst b/doc/v2/dev/index_cn.rst similarity index 84% rename from doc/dev/index_cn.rst rename to doc/v2/dev/index_cn.rst index 487db868bb2a0a5383d56c3a723912d9fd5910b7..c488191b8174531905e44cb9443ee539d4cb1ed3 100644 --- a/doc/dev/index_cn.rst +++ b/doc/v2/dev/index_cn.rst @@ -6,3 +6,4 @@ contribute_to_paddle_cn.md write_docs_cn.rst + new_layer_cn.rst diff --git a/doc/dev/index_en.rst b/doc/v2/dev/index_en.rst similarity index 84% rename from doc/dev/index_en.rst rename to doc/v2/dev/index_en.rst index 5fdc30a2d688a6a269b4972c2591af60893e7dfb..549f5fa9aace7eb699d229e5f61fe10ae4ed4d66 100644 --- a/doc/dev/index_en.rst +++ b/doc/v2/dev/index_en.rst @@ -6,3 +6,4 @@ Development contribute_to_paddle_en.md write_docs_en.rst + new_layer_en.rst diff --git a/doc/dev/new_layer_cn.rst b/doc/v2/dev/new_layer_cn.rst similarity index 99% rename from doc/dev/new_layer_cn.rst rename to doc/v2/dev/new_layer_cn.rst index 75037e693b32f923ee7dc9dfec322495fe4ce10a..0ded1c262adad44f4df000ef2933c7b68050f2fc 100644 --- a/doc/dev/new_layer_cn.rst +++ b/doc/v2/dev/new_layer_cn.rst @@ -1,6 +1,6 @@ -================ -实现新的网络层 -================ +================== +如何实现新的网络层 +================== 这份教程展示了如何在PaddlePaddle中实现一个自定义的网络层。在这里我们使用全连接层作为例子来展示实现新网络层所需要的四个步骤。 diff --git a/doc/dev/new_layer_en.rst b/doc/v2/dev/new_layer_en.rst similarity index 100% rename from doc/dev/new_layer_en.rst rename to doc/v2/dev/new_layer_en.rst diff --git a/doc/dev/write_docs_cn.rst b/doc/v2/dev/write_docs_cn.rst similarity index 100% rename from doc/dev/write_docs_cn.rst rename to doc/v2/dev/write_docs_cn.rst diff --git a/doc/dev/write_docs_en.rst b/doc/v2/dev/write_docs_en.rst similarity index 100% rename from doc/dev/write_docs_en.rst rename to doc/v2/dev/write_docs_en.rst diff --git a/doc/faq/build_and_install/index_cn.rst b/doc/v2/faq/build_and_install/index_cn.rst similarity index 100% rename from doc/faq/build_and_install/index_cn.rst rename to doc/v2/faq/build_and_install/index_cn.rst diff --git a/doc/faq/build_and_install/index_en.rst b/doc/v2/faq/build_and_install/index_en.rst similarity index 100% rename from doc/faq/build_and_install/index_en.rst rename to doc/v2/faq/build_and_install/index_en.rst diff --git a/doc/faq/cluster/index_cn.rst b/doc/v2/faq/cluster/index_cn.rst similarity index 100% rename from doc/faq/cluster/index_cn.rst rename to doc/v2/faq/cluster/index_cn.rst diff --git a/doc/faq/cluster/index_en.rst b/doc/v2/faq/cluster/index_en.rst similarity index 100% rename from doc/faq/cluster/index_en.rst rename to doc/v2/faq/cluster/index_en.rst diff --git a/doc/faq/index_cn.rst b/doc/v2/faq/index_cn.rst similarity index 100% rename from doc/faq/index_cn.rst rename to doc/v2/faq/index_cn.rst diff --git a/doc/faq/index_en.rst b/doc/v2/faq/index_en.rst similarity index 100% rename from doc/faq/index_en.rst rename to doc/v2/faq/index_en.rst diff --git a/doc/faq/local/index_cn.rst b/doc/v2/faq/local/index_cn.rst similarity index 100% rename from doc/faq/local/index_cn.rst rename to doc/v2/faq/local/index_cn.rst diff --git a/doc/faq/local/index_en.rst b/doc/v2/faq/local/index_en.rst similarity index 100% rename from doc/faq/local/index_en.rst rename to doc/v2/faq/local/index_en.rst diff --git a/doc/faq/local/src/reduce_min_pool_size.py b/doc/v2/faq/local/src/reduce_min_pool_size.py similarity index 100% rename from doc/faq/local/src/reduce_min_pool_size.py rename to doc/v2/faq/local/src/reduce_min_pool_size.py diff --git a/doc/faq/local/src/word2vec_config.py b/doc/v2/faq/local/src/word2vec_config.py similarity index 100% rename from doc/faq/local/src/word2vec_config.py rename to doc/v2/faq/local/src/word2vec_config.py diff --git a/doc/faq/local/src/word2vec_dataprovider.py b/doc/v2/faq/local/src/word2vec_dataprovider.py similarity index 100% rename from doc/faq/local/src/word2vec_dataprovider.py rename to doc/v2/faq/local/src/word2vec_dataprovider.py diff --git a/doc/faq/model/index_cn.rst b/doc/v2/faq/model/index_cn.rst similarity index 100% rename from doc/faq/model/index_cn.rst rename to doc/v2/faq/model/index_cn.rst diff --git a/doc/faq/model/index_en.rst b/doc/v2/faq/model/index_en.rst similarity index 100% rename from doc/faq/model/index_en.rst rename to doc/v2/faq/model/index_en.rst diff --git a/doc/faq/parameter/index_cn.rst b/doc/v2/faq/parameter/index_cn.rst similarity index 100% rename from doc/faq/parameter/index_cn.rst rename to doc/v2/faq/parameter/index_cn.rst diff --git a/doc/faq/parameter/index_en.rst b/doc/v2/faq/parameter/index_en.rst similarity index 100% rename from doc/faq/parameter/index_en.rst rename to doc/v2/faq/parameter/index_en.rst diff --git a/doc/getstarted/concepts/src/infer.py b/doc/v2/getstarted/concepts/src/infer.py similarity index 100% rename from doc/getstarted/concepts/src/infer.py rename to doc/v2/getstarted/concepts/src/infer.py diff --git a/doc/getstarted/concepts/src/train.py b/doc/v2/getstarted/concepts/src/train.py similarity index 100% rename from doc/getstarted/concepts/src/train.py rename to doc/v2/getstarted/concepts/src/train.py diff --git a/doc/getstarted/concepts/use_concepts_cn.rst b/doc/v2/getstarted/concepts/use_concepts_cn.rst similarity index 100% rename from doc/getstarted/concepts/use_concepts_cn.rst rename to doc/v2/getstarted/concepts/use_concepts_cn.rst diff --git a/doc/getstarted/concepts/use_concepts_en.rst b/doc/v2/getstarted/concepts/use_concepts_en.rst similarity index 100% rename from doc/getstarted/concepts/use_concepts_en.rst rename to doc/v2/getstarted/concepts/use_concepts_en.rst diff --git a/doc/getstarted/index_cn.rst b/doc/v2/getstarted/index_cn.rst similarity index 100% rename from doc/getstarted/index_cn.rst rename to doc/v2/getstarted/index_cn.rst diff --git a/doc/getstarted/index_en.rst b/doc/v2/getstarted/index_en.rst similarity index 100% rename from doc/getstarted/index_en.rst rename to doc/v2/getstarted/index_en.rst diff --git a/doc/getstarted/quickstart_cn.rst b/doc/v2/getstarted/quickstart_cn.rst similarity index 100% rename from doc/getstarted/quickstart_cn.rst rename to doc/v2/getstarted/quickstart_cn.rst diff --git a/doc/getstarted/quickstart_en.rst b/doc/v2/getstarted/quickstart_en.rst similarity index 100% rename from doc/getstarted/quickstart_en.rst rename to doc/v2/getstarted/quickstart_en.rst diff --git a/doc/howto/capi/compile_paddle_lib_cn.md b/doc/v2/howto/capi/compile_paddle_lib_cn.md similarity index 100% rename from doc/howto/capi/compile_paddle_lib_cn.md rename to doc/v2/howto/capi/compile_paddle_lib_cn.md diff --git a/doc/howto/capi/compile_paddle_lib_en.md b/doc/v2/howto/capi/compile_paddle_lib_en.md similarity index 100% rename from doc/howto/capi/compile_paddle_lib_en.md rename to doc/v2/howto/capi/compile_paddle_lib_en.md diff --git a/doc/howto/capi/images/csr.png b/doc/v2/howto/capi/images/csr.png similarity index 100% rename from doc/howto/capi/images/csr.png rename to doc/v2/howto/capi/images/csr.png diff --git a/doc/howto/capi/images/sequence_data.png b/doc/v2/howto/capi/images/sequence_data.png similarity index 100% rename from doc/howto/capi/images/sequence_data.png rename to doc/v2/howto/capi/images/sequence_data.png diff --git a/doc/howto/capi/images/workflow_of_CAPI.png b/doc/v2/howto/capi/images/workflow_of_CAPI.png similarity index 100% rename from doc/howto/capi/images/workflow_of_CAPI.png rename to doc/v2/howto/capi/images/workflow_of_CAPI.png diff --git a/doc/howto/capi/index_cn.rst b/doc/v2/howto/capi/index_cn.rst similarity index 100% rename from doc/howto/capi/index_cn.rst rename to doc/v2/howto/capi/index_cn.rst diff --git a/doc/howto/capi/index_en.rst b/doc/v2/howto/capi/index_en.rst similarity index 100% rename from doc/howto/capi/index_en.rst rename to doc/v2/howto/capi/index_en.rst diff --git a/doc/howto/capi/organization_of_the_inputs_cn.md b/doc/v2/howto/capi/organization_of_the_inputs_cn.md similarity index 100% rename from doc/howto/capi/organization_of_the_inputs_cn.md rename to doc/v2/howto/capi/organization_of_the_inputs_cn.md diff --git a/doc/howto/capi/organization_of_the_inputs_en.md b/doc/v2/howto/capi/organization_of_the_inputs_en.md similarity index 100% rename from doc/howto/capi/organization_of_the_inputs_en.md rename to doc/v2/howto/capi/organization_of_the_inputs_en.md diff --git a/doc/howto/capi/workflow_of_capi_cn.md b/doc/v2/howto/capi/workflow_of_capi_cn.md similarity index 100% rename from doc/howto/capi/workflow_of_capi_cn.md rename to doc/v2/howto/capi/workflow_of_capi_cn.md diff --git a/doc/howto/capi/workflow_of_capi_en.md b/doc/v2/howto/capi/workflow_of_capi_en.md similarity index 100% rename from doc/howto/capi/workflow_of_capi_en.md rename to doc/v2/howto/capi/workflow_of_capi_en.md diff --git a/doc/howto/cluster/cmd_argument_cn.md b/doc/v2/howto/cluster/cmd_argument_cn.md similarity index 100% rename from doc/howto/cluster/cmd_argument_cn.md rename to doc/v2/howto/cluster/cmd_argument_cn.md diff --git a/doc/howto/cluster/cmd_argument_en.md b/doc/v2/howto/cluster/cmd_argument_en.md similarity index 100% rename from doc/howto/cluster/cmd_argument_en.md rename to doc/v2/howto/cluster/cmd_argument_en.md diff --git a/doc/howto/cluster/index_cn.rst b/doc/v2/howto/cluster/index_cn.rst similarity index 100% rename from doc/howto/cluster/index_cn.rst rename to doc/v2/howto/cluster/index_cn.rst diff --git a/doc/howto/cluster/index_en.rst b/doc/v2/howto/cluster/index_en.rst similarity index 100% rename from doc/howto/cluster/index_en.rst rename to doc/v2/howto/cluster/index_en.rst diff --git a/doc/howto/cluster/multi_cluster/fabric_cn.md b/doc/v2/howto/cluster/multi_cluster/fabric_cn.md similarity index 100% rename from doc/howto/cluster/multi_cluster/fabric_cn.md rename to doc/v2/howto/cluster/multi_cluster/fabric_cn.md diff --git a/doc/howto/cluster/multi_cluster/fabric_en.md b/doc/v2/howto/cluster/multi_cluster/fabric_en.md similarity index 100% rename from doc/howto/cluster/multi_cluster/fabric_en.md rename to doc/v2/howto/cluster/multi_cluster/fabric_en.md diff --git a/doc/howto/cluster/multi_cluster/index_cn.rst b/doc/v2/howto/cluster/multi_cluster/index_cn.rst similarity index 100% rename from doc/howto/cluster/multi_cluster/index_cn.rst rename to doc/v2/howto/cluster/multi_cluster/index_cn.rst diff --git a/doc/howto/cluster/multi_cluster/index_en.rst b/doc/v2/howto/cluster/multi_cluster/index_en.rst similarity index 100% rename from doc/howto/cluster/multi_cluster/index_en.rst rename to doc/v2/howto/cluster/multi_cluster/index_en.rst diff --git a/doc/howto/cluster/multi_cluster/k8s_aws_cn.md b/doc/v2/howto/cluster/multi_cluster/k8s_aws_cn.md similarity index 100% rename from doc/howto/cluster/multi_cluster/k8s_aws_cn.md rename to doc/v2/howto/cluster/multi_cluster/k8s_aws_cn.md diff --git a/doc/howto/cluster/multi_cluster/k8s_aws_en.md b/doc/v2/howto/cluster/multi_cluster/k8s_aws_en.md similarity index 100% rename from doc/howto/cluster/multi_cluster/k8s_aws_en.md rename to doc/v2/howto/cluster/multi_cluster/k8s_aws_en.md diff --git a/doc/howto/cluster/multi_cluster/k8s_cn.md b/doc/v2/howto/cluster/multi_cluster/k8s_cn.md similarity index 100% rename from doc/howto/cluster/multi_cluster/k8s_cn.md rename to doc/v2/howto/cluster/multi_cluster/k8s_cn.md diff --git a/doc/howto/cluster/multi_cluster/k8s_distributed_cn.md b/doc/v2/howto/cluster/multi_cluster/k8s_distributed_cn.md similarity index 100% rename from doc/howto/cluster/multi_cluster/k8s_distributed_cn.md rename to doc/v2/howto/cluster/multi_cluster/k8s_distributed_cn.md diff --git a/doc/howto/cluster/multi_cluster/k8s_distributed_en.md b/doc/v2/howto/cluster/multi_cluster/k8s_distributed_en.md similarity index 100% rename from doc/howto/cluster/multi_cluster/k8s_distributed_en.md rename to doc/v2/howto/cluster/multi_cluster/k8s_distributed_en.md diff --git a/doc/howto/cluster/multi_cluster/k8s_en.md b/doc/v2/howto/cluster/multi_cluster/k8s_en.md similarity index 100% rename from doc/howto/cluster/multi_cluster/k8s_en.md rename to doc/v2/howto/cluster/multi_cluster/k8s_en.md diff --git a/doc/howto/cluster/multi_cluster/openmpi_cn.md b/doc/v2/howto/cluster/multi_cluster/openmpi_cn.md similarity index 100% rename from doc/howto/cluster/multi_cluster/openmpi_cn.md rename to doc/v2/howto/cluster/multi_cluster/openmpi_cn.md diff --git a/doc/howto/cluster/multi_cluster/openmpi_en.md b/doc/v2/howto/cluster/multi_cluster/openmpi_en.md similarity index 100% rename from doc/howto/cluster/multi_cluster/openmpi_en.md rename to doc/v2/howto/cluster/multi_cluster/openmpi_en.md diff --git a/doc/howto/cluster/multi_cluster/src/add_security_group.png b/doc/v2/howto/cluster/multi_cluster/src/add_security_group.png similarity index 100% rename from doc/howto/cluster/multi_cluster/src/add_security_group.png rename to doc/v2/howto/cluster/multi_cluster/src/add_security_group.png diff --git a/doc/howto/cluster/multi_cluster/src/create_efs.png b/doc/v2/howto/cluster/multi_cluster/src/create_efs.png similarity index 100% rename from doc/howto/cluster/multi_cluster/src/create_efs.png rename to doc/v2/howto/cluster/multi_cluster/src/create_efs.png diff --git a/doc/howto/cluster/multi_cluster/src/k8s-paddle-arch.png b/doc/v2/howto/cluster/multi_cluster/src/k8s-paddle-arch.png similarity index 100% rename from doc/howto/cluster/multi_cluster/src/k8s-paddle-arch.png rename to doc/v2/howto/cluster/multi_cluster/src/k8s-paddle-arch.png diff --git a/doc/howto/cluster/multi_cluster/src/k8s_data/Dockerfile b/doc/v2/howto/cluster/multi_cluster/src/k8s_data/Dockerfile similarity index 100% rename from doc/howto/cluster/multi_cluster/src/k8s_data/Dockerfile rename to doc/v2/howto/cluster/multi_cluster/src/k8s_data/Dockerfile diff --git a/doc/howto/cluster/multi_cluster/src/k8s_data/README.md b/doc/v2/howto/cluster/multi_cluster/src/k8s_data/README.md similarity index 100% rename from doc/howto/cluster/multi_cluster/src/k8s_data/README.md rename to doc/v2/howto/cluster/multi_cluster/src/k8s_data/README.md diff --git a/doc/howto/cluster/multi_cluster/src/k8s_data/get_data.sh b/doc/v2/howto/cluster/multi_cluster/src/k8s_data/get_data.sh similarity index 100% rename from doc/howto/cluster/multi_cluster/src/k8s_data/get_data.sh rename to doc/v2/howto/cluster/multi_cluster/src/k8s_data/get_data.sh diff --git a/doc/howto/cluster/multi_cluster/src/k8s_train/Dockerfile b/doc/v2/howto/cluster/multi_cluster/src/k8s_train/Dockerfile similarity index 100% rename from doc/howto/cluster/multi_cluster/src/k8s_train/Dockerfile rename to doc/v2/howto/cluster/multi_cluster/src/k8s_train/Dockerfile diff --git a/doc/howto/cluster/multi_cluster/src/k8s_train/README.md b/doc/v2/howto/cluster/multi_cluster/src/k8s_train/README.md similarity index 100% rename from doc/howto/cluster/multi_cluster/src/k8s_train/README.md rename to doc/v2/howto/cluster/multi_cluster/src/k8s_train/README.md diff --git a/doc/howto/cluster/multi_cluster/src/k8s_train/start.sh b/doc/v2/howto/cluster/multi_cluster/src/k8s_train/start.sh similarity index 100% rename from doc/howto/cluster/multi_cluster/src/k8s_train/start.sh rename to doc/v2/howto/cluster/multi_cluster/src/k8s_train/start.sh diff --git a/doc/howto/cluster/multi_cluster/src/k8s_train/start_paddle.py b/doc/v2/howto/cluster/multi_cluster/src/k8s_train/start_paddle.py similarity index 100% rename from doc/howto/cluster/multi_cluster/src/k8s_train/start_paddle.py rename to doc/v2/howto/cluster/multi_cluster/src/k8s_train/start_paddle.py diff --git a/doc/howto/cluster/multi_cluster/src/pserver_and_trainer.png b/doc/v2/howto/cluster/multi_cluster/src/pserver_and_trainer.png similarity index 100% rename from doc/howto/cluster/multi_cluster/src/pserver_and_trainer.png rename to doc/v2/howto/cluster/multi_cluster/src/pserver_and_trainer.png diff --git a/doc/howto/cluster/multi_cluster/src/route53_create_recordset.png b/doc/v2/howto/cluster/multi_cluster/src/route53_create_recordset.png similarity index 100% rename from doc/howto/cluster/multi_cluster/src/route53_create_recordset.png rename to doc/v2/howto/cluster/multi_cluster/src/route53_create_recordset.png diff --git a/doc/howto/cluster/multi_cluster/src/route53_create_zone.png b/doc/v2/howto/cluster/multi_cluster/src/route53_create_zone.png similarity index 100% rename from doc/howto/cluster/multi_cluster/src/route53_create_zone.png rename to doc/v2/howto/cluster/multi_cluster/src/route53_create_zone.png diff --git a/doc/howto/cluster/multi_cluster/src/worker_security_group.png b/doc/v2/howto/cluster/multi_cluster/src/worker_security_group.png similarity index 100% rename from doc/howto/cluster/multi_cluster/src/worker_security_group.png rename to doc/v2/howto/cluster/multi_cluster/src/worker_security_group.png diff --git a/doc/howto/cluster/preparations_cn.md b/doc/v2/howto/cluster/preparations_cn.md similarity index 100% rename from doc/howto/cluster/preparations_cn.md rename to doc/v2/howto/cluster/preparations_cn.md diff --git a/doc/howto/cluster/preparations_en.md b/doc/v2/howto/cluster/preparations_en.md similarity index 100% rename from doc/howto/cluster/preparations_en.md rename to doc/v2/howto/cluster/preparations_en.md diff --git a/doc/howto/cluster/src/Dockerfile b/doc/v2/howto/cluster/src/Dockerfile similarity index 100% rename from doc/howto/cluster/src/Dockerfile rename to doc/v2/howto/cluster/src/Dockerfile diff --git a/doc/howto/cluster/src/efs_mount.png b/doc/v2/howto/cluster/src/efs_mount.png similarity index 100% rename from doc/howto/cluster/src/efs_mount.png rename to doc/v2/howto/cluster/src/efs_mount.png diff --git a/doc/howto/cluster/src/managed_policy.png b/doc/v2/howto/cluster/src/managed_policy.png similarity index 100% rename from doc/howto/cluster/src/managed_policy.png rename to doc/v2/howto/cluster/src/managed_policy.png diff --git a/doc/howto/cluster/src/ps_cn.png b/doc/v2/howto/cluster/src/ps_cn.png similarity index 100% rename from doc/howto/cluster/src/ps_cn.png rename to doc/v2/howto/cluster/src/ps_cn.png diff --git a/doc/howto/cluster/src/ps_en.png b/doc/v2/howto/cluster/src/ps_en.png similarity index 100% rename from doc/howto/cluster/src/ps_en.png rename to doc/v2/howto/cluster/src/ps_en.png diff --git a/doc/howto/cluster/src/trainer.png b/doc/v2/howto/cluster/src/trainer.png similarity index 100% rename from doc/howto/cluster/src/trainer.png rename to doc/v2/howto/cluster/src/trainer.png diff --git a/doc/howto/cluster/src/trainer_cn.png b/doc/v2/howto/cluster/src/trainer_cn.png similarity index 100% rename from doc/howto/cluster/src/trainer_cn.png rename to doc/v2/howto/cluster/src/trainer_cn.png diff --git a/doc/howto/cluster/src/word2vec/api_train_v2.py b/doc/v2/howto/cluster/src/word2vec/api_train_v2.py similarity index 100% rename from doc/howto/cluster/src/word2vec/api_train_v2.py rename to doc/v2/howto/cluster/src/word2vec/api_train_v2.py diff --git a/doc/howto/cluster/src/word2vec/api_train_v2_cluster.py b/doc/v2/howto/cluster/src/word2vec/api_train_v2_cluster.py similarity index 100% rename from doc/howto/cluster/src/word2vec/api_train_v2_cluster.py rename to doc/v2/howto/cluster/src/word2vec/api_train_v2_cluster.py diff --git a/doc/howto/cluster/src/word2vec/prepare.py b/doc/v2/howto/cluster/src/word2vec/prepare.py similarity index 100% rename from doc/howto/cluster/src/word2vec/prepare.py rename to doc/v2/howto/cluster/src/word2vec/prepare.py diff --git a/doc/howto/cmd_parameter/arguments_cn.md b/doc/v2/howto/cmd_parameter/arguments_cn.md similarity index 100% rename from doc/howto/cmd_parameter/arguments_cn.md rename to doc/v2/howto/cmd_parameter/arguments_cn.md diff --git a/doc/howto/cmd_parameter/arguments_en.md b/doc/v2/howto/cmd_parameter/arguments_en.md similarity index 100% rename from doc/howto/cmd_parameter/arguments_en.md rename to doc/v2/howto/cmd_parameter/arguments_en.md diff --git a/doc/howto/cmd_parameter/detail_introduction_cn.md b/doc/v2/howto/cmd_parameter/detail_introduction_cn.md similarity index 100% rename from doc/howto/cmd_parameter/detail_introduction_cn.md rename to doc/v2/howto/cmd_parameter/detail_introduction_cn.md diff --git a/doc/howto/cmd_parameter/detail_introduction_en.md b/doc/v2/howto/cmd_parameter/detail_introduction_en.md similarity index 100% rename from doc/howto/cmd_parameter/detail_introduction_en.md rename to doc/v2/howto/cmd_parameter/detail_introduction_en.md diff --git a/doc/howto/cmd_parameter/index_cn.rst b/doc/v2/howto/cmd_parameter/index_cn.rst similarity index 100% rename from doc/howto/cmd_parameter/index_cn.rst rename to doc/v2/howto/cmd_parameter/index_cn.rst diff --git a/doc/howto/cmd_parameter/index_en.rst b/doc/v2/howto/cmd_parameter/index_en.rst similarity index 100% rename from doc/howto/cmd_parameter/index_en.rst rename to doc/v2/howto/cmd_parameter/index_en.rst diff --git a/doc/howto/cmd_parameter/use_case_cn.md b/doc/v2/howto/cmd_parameter/use_case_cn.md similarity index 100% rename from doc/howto/cmd_parameter/use_case_cn.md rename to doc/v2/howto/cmd_parameter/use_case_cn.md diff --git a/doc/howto/cmd_parameter/use_case_en.md b/doc/v2/howto/cmd_parameter/use_case_en.md similarity index 100% rename from doc/howto/cmd_parameter/use_case_en.md rename to doc/v2/howto/cmd_parameter/use_case_en.md diff --git a/doc/howto/index_cn.rst b/doc/v2/howto/index_cn.rst similarity index 100% rename from doc/howto/index_cn.rst rename to doc/v2/howto/index_cn.rst diff --git a/doc/howto/index_en.rst b/doc/v2/howto/index_en.rst similarity index 88% rename from doc/howto/index_en.rst rename to doc/v2/howto/index_en.rst index ae8b86f75b5de770312fb2fdc46db490a18e5ff6..2079be766f2d8e6d63ca11dccd98f80613309ceb 100644 --- a/doc/howto/index_en.rst +++ b/doc/v2/howto/index_en.rst @@ -6,5 +6,6 @@ HOW TO cmd_parameter/index_en.rst cluster/index_en.rst + capi/index_en.rst rnn/index_en.rst optimization/gpu_profiling_en.rst diff --git a/doc/howto/optimization/gpu_profiling_cn.rst b/doc/v2/howto/optimization/gpu_profiling_cn.rst similarity index 98% rename from doc/howto/optimization/gpu_profiling_cn.rst rename to doc/v2/howto/optimization/gpu_profiling_cn.rst index 0239eef4f118197bf92f9fc7d323be58344b0ded..25bcaccb6975bc21fba2e8c5843da15c69948d72 100644 --- a/doc/howto/optimization/gpu_profiling_cn.rst +++ b/doc/v2/howto/optimization/gpu_profiling_cn.rst @@ -55,7 +55,7 @@ above profilers. :code:`paddle/math/test` 目录中的 :code:`test_GpuProfiler` 就是用于展示上述分析工具的用法。 -.. literalinclude:: ../../../paddle/math/tests/test_GpuProfiler.cpp +.. literalinclude:: ../../../../paddle/math/tests/test_GpuProfiler.cpp :language: c++ :lines: 137-151 :linenos: @@ -83,7 +83,7 @@ program crashes when CPU version of PaddlePaddle invokes them. 1. 加入 :code:`REGISTER_TIMER_INFO` 和 :code:`printAllStatus` 函数(如高亮部分)。 - .. literalinclude:: ../../../paddle/math/tests/test_GpuProfiler.cpp + .. literalinclude:: ../../../../paddle/math/tests/test_GpuProfiler.cpp :language: c++ :lines: 137-151 :emphasize-lines: 8-12,14 @@ -130,7 +130,7 @@ nvprof 工具 1. 将 :code:`REGISTER_GPU_PROFILER` 函数加到代码中(参考强调部分)。 - .. literalinclude:: ../../../paddle/math/tests/test_GpuProfiler.cpp + .. literalinclude:: ../../../../paddle/math/tests/test_GpuProfiler.cpp :language: c++ :lines: 137-151 :emphasize-lines: 6-7 diff --git a/doc/howto/optimization/gpu_profiling_en.rst b/doc/v2/howto/optimization/gpu_profiling_en.rst similarity index 97% rename from doc/howto/optimization/gpu_profiling_en.rst rename to doc/v2/howto/optimization/gpu_profiling_en.rst index ed208ceaf7af0c5aab88fd4fcb18fa96b8c9ff38..50adb7da24906515cb5977db565e9f8a76599fef 100644 --- a/doc/howto/optimization/gpu_profiling_en.rst +++ b/doc/v2/howto/optimization/gpu_profiling_en.rst @@ -54,7 +54,7 @@ In this tutorial, we will focus on nvprof and nvvp. :code:`test_GpuProfiler` from :code:`paddle/math/tests` directory will be used to evaluate above profilers. -.. literalinclude:: ../../../paddle/math/tests/test_GpuProfiler.cpp +.. literalinclude:: ../../../../paddle/math/tests/test_GpuProfiler.cpp :language: c++ :lines: 137-151 :linenos: @@ -80,7 +80,7 @@ As a simple example, consider the following: 1. Add :code:`REGISTER_TIMER_INFO` and :code:`printAllStatus` functions (see the emphasize-lines). - .. literalinclude:: ../../../paddle/math/tests/test_GpuProfiler.cpp + .. literalinclude:: ../../../../paddle/math/tests/test_GpuProfiler.cpp :language: c++ :lines: 137-151 :emphasize-lines: 8-12,14 @@ -127,7 +127,7 @@ To use this command line profiler **nvprof**, you can simply issue the following 1. Add :code:`REGISTER_GPU_PROFILER` function (see the emphasize-lines). - .. literalinclude:: ../../../paddle/math/tests/test_GpuProfiler.cpp + .. literalinclude:: ../../../../paddle/math/tests/test_GpuProfiler.cpp :language: c++ :lines: 137-151 :emphasize-lines: 6-7 diff --git a/doc/howto/optimization/nvvp1.png b/doc/v2/howto/optimization/nvvp1.png similarity index 100% rename from doc/howto/optimization/nvvp1.png rename to doc/v2/howto/optimization/nvvp1.png diff --git a/doc/howto/optimization/nvvp2.png b/doc/v2/howto/optimization/nvvp2.png similarity index 100% rename from doc/howto/optimization/nvvp2.png rename to doc/v2/howto/optimization/nvvp2.png diff --git a/doc/howto/optimization/nvvp3.png b/doc/v2/howto/optimization/nvvp3.png similarity index 100% rename from doc/howto/optimization/nvvp3.png rename to doc/v2/howto/optimization/nvvp3.png diff --git a/doc/howto/optimization/nvvp4.png b/doc/v2/howto/optimization/nvvp4.png similarity index 100% rename from doc/howto/optimization/nvvp4.png rename to doc/v2/howto/optimization/nvvp4.png diff --git a/doc/howto/optimization/pprof_1.png b/doc/v2/howto/optimization/pprof_1.png similarity index 100% rename from doc/howto/optimization/pprof_1.png rename to doc/v2/howto/optimization/pprof_1.png diff --git a/doc/howto/optimization/pprof_2.png b/doc/v2/howto/optimization/pprof_2.png similarity index 100% rename from doc/howto/optimization/pprof_2.png rename to doc/v2/howto/optimization/pprof_2.png diff --git a/doc/howto/rnn/hierarchical_layer_cn.rst b/doc/v2/howto/rnn/hierarchical_layer_cn.rst similarity index 100% rename from doc/howto/rnn/hierarchical_layer_cn.rst rename to doc/v2/howto/rnn/hierarchical_layer_cn.rst diff --git a/doc/howto/rnn/hierarchical_layer_en.rst b/doc/v2/howto/rnn/hierarchical_layer_en.rst similarity index 100% rename from doc/howto/rnn/hierarchical_layer_en.rst rename to doc/v2/howto/rnn/hierarchical_layer_en.rst diff --git a/doc/howto/rnn/hrnn_rnn_api_compare_cn.rst b/doc/v2/howto/rnn/hrnn_rnn_api_compare_cn.rst similarity index 100% rename from doc/howto/rnn/hrnn_rnn_api_compare_cn.rst rename to doc/v2/howto/rnn/hrnn_rnn_api_compare_cn.rst diff --git a/doc/howto/rnn/hrnn_rnn_api_compare_en.rst b/doc/v2/howto/rnn/hrnn_rnn_api_compare_en.rst similarity index 100% rename from doc/howto/rnn/hrnn_rnn_api_compare_en.rst rename to doc/v2/howto/rnn/hrnn_rnn_api_compare_en.rst diff --git a/doc/howto/rnn/index_cn.rst b/doc/v2/howto/rnn/index_cn.rst similarity index 100% rename from doc/howto/rnn/index_cn.rst rename to doc/v2/howto/rnn/index_cn.rst diff --git a/doc/howto/rnn/index_en.rst b/doc/v2/howto/rnn/index_en.rst similarity index 100% rename from doc/howto/rnn/index_en.rst rename to doc/v2/howto/rnn/index_en.rst diff --git a/doc/howto/rnn/recurrent_group_cn.md b/doc/v2/howto/rnn/recurrent_group_cn.md similarity index 100% rename from doc/howto/rnn/recurrent_group_cn.md rename to doc/v2/howto/rnn/recurrent_group_cn.md diff --git a/doc/howto/rnn/recurrent_group_en.md b/doc/v2/howto/rnn/recurrent_group_en.md similarity index 100% rename from doc/howto/rnn/recurrent_group_en.md rename to doc/v2/howto/rnn/recurrent_group_en.md diff --git a/doc/howto/rnn/rnn_config_cn.rst b/doc/v2/howto/rnn/rnn_config_cn.rst similarity index 100% rename from doc/howto/rnn/rnn_config_cn.rst rename to doc/v2/howto/rnn/rnn_config_cn.rst diff --git a/doc/howto/rnn/rnn_config_en.rst b/doc/v2/howto/rnn/rnn_config_en.rst similarity index 100% rename from doc/howto/rnn/rnn_config_en.rst rename to doc/v2/howto/rnn/rnn_config_en.rst diff --git a/doc/howto/rnn/src/bi_lstm.jpg b/doc/v2/howto/rnn/src/bi_lstm.jpg similarity index 100% rename from doc/howto/rnn/src/bi_lstm.jpg rename to doc/v2/howto/rnn/src/bi_lstm.jpg diff --git a/doc/howto/rnn/src/encoder-decoder-attention-model.png b/doc/v2/howto/rnn/src/encoder-decoder-attention-model.png similarity index 100% rename from doc/howto/rnn/src/encoder-decoder-attention-model.png rename to doc/v2/howto/rnn/src/encoder-decoder-attention-model.png diff --git a/doc/howto/rnn/src/glossary_rnn.dot b/doc/v2/howto/rnn/src/glossary_rnn.dot similarity index 100% rename from doc/howto/rnn/src/glossary_rnn.dot rename to doc/v2/howto/rnn/src/glossary_rnn.dot diff --git a/doc/howto/rnn/src/glossary_rnn_with_memory.dot b/doc/v2/howto/rnn/src/glossary_rnn_with_memory.dot similarity index 100% rename from doc/howto/rnn/src/glossary_rnn_with_memory.dot rename to doc/v2/howto/rnn/src/glossary_rnn_with_memory.dot diff --git a/doc/howto/rnn/src/simple_full_hierarchical_recurrent.dot b/doc/v2/howto/rnn/src/simple_full_hierarchical_recurrent.dot similarity index 100% rename from doc/howto/rnn/src/simple_full_hierarchical_recurrent.dot rename to doc/v2/howto/rnn/src/simple_full_hierarchical_recurrent.dot diff --git a/doc/howto/rnn/src/simple_full_recurrent.dot b/doc/v2/howto/rnn/src/simple_full_recurrent.dot similarity index 100% rename from doc/howto/rnn/src/simple_full_recurrent.dot rename to doc/v2/howto/rnn/src/simple_full_recurrent.dot diff --git a/doc/index_cn.rst b/doc/v2/index_cn.rst similarity index 100% rename from doc/index_cn.rst rename to doc/v2/index_cn.rst diff --git a/doc/index_en.rst b/doc/v2/index_en.rst similarity index 100% rename from doc/index_en.rst rename to doc/v2/index_en.rst diff --git a/paddle/fluid/operators/detection_map_op.cc b/paddle/fluid/operators/detection_map_op.cc index 0af3ba621aa5c3ee0599249ce868cfda72eddd18..880bfe3b04394f20079af98d07dc2a12db920b97 100644 --- a/paddle/fluid/operators/detection_map_op.cc +++ b/paddle/fluid/operators/detection_map_op.cc @@ -47,11 +47,10 @@ class DetectionMAPOp : public framework::OperatorWithKernel { PADDLE_ENFORCE_EQ(det_dims[1], 6UL, "The shape is of Input(DetectRes) [N, 6]."); auto label_dims = ctx->GetInputDim("Label"); - PADDLE_ENFORCE_EQ(label_dims.size(), 2UL, + PADDLE_ENFORCE_EQ(label_dims.size(), 2, "The rank of Input(Label) must be 2, " "the shape is [N, 6]."); - PADDLE_ENFORCE_EQ(label_dims[1], 6UL, - "The shape is of Input(Label) [N, 6]."); + PADDLE_ENFORCE_EQ(label_dims[1], 6, "The shape is of Input(Label) [N, 6]."); if (ctx->HasInput("PosCount")) { PADDLE_ENFORCE(ctx->HasInput("TruePos"), @@ -96,6 +95,10 @@ class DetectionMAPOpMaker : public framework::OpProtoAndCheckerMaker { "instance, the offsets in first dimension are called LoD, " "the number of offset is N + 1, if LoD[i + 1] - LoD[i] == 0, " "means there is no ground-truth data."); + AddInput("HasState", + "(Tensor) A tensor with shape [1], 0 means ignoring input " + "states, which including PosCount, TruePos, FalsePos.") + .AsDispensable(); AddInput("PosCount", "(Tensor) A tensor with shape [Ncls, 1], store the " "input positive example count of each class, Ncls is the count of " @@ -145,7 +148,7 @@ class DetectionMAPOpMaker : public framework::OpProtoAndCheckerMaker { "(float) " "The lower bound jaccard overlap threshold of detection output and " "ground-truth data.") - .SetDefault(.3f); + .SetDefault(.5f); AddAttr("evaluate_difficult", "(bool, default true) " "Switch to control whether the difficult data is evaluated.") diff --git a/paddle/fluid/operators/detection_map_op.h b/paddle/fluid/operators/detection_map_op.h index 92e05108393f9c8fa9259d16d2dd4c6685f2c1e2..b2b0995b35bf16432e73ebcfd3341adb00c11fd8 100644 --- a/paddle/fluid/operators/detection_map_op.h +++ b/paddle/fluid/operators/detection_map_op.h @@ -87,7 +87,13 @@ class DetectionMAPOpKernel : public framework::OpKernel { std::map>> true_pos; std::map>> false_pos; - if (in_pos_count != nullptr) { + auto* has_state = ctx.Input("HasState"); + int state = 0; + if (has_state) { + state = has_state->data()[0]; + } + + if (in_pos_count != nullptr && state) { GetInputPos(*in_pos_count, *in_true_pos, *in_false_pos, label_pos_count, true_pos, false_pos); } @@ -202,6 +208,7 @@ class DetectionMAPOpKernel : public framework::OpKernel { int* pos_count_data = output_pos_count.mutable_data( framework::make_ddim({max_class_id + 1, 1}), ctx.GetPlace()); + T* true_pos_data = output_true_pos.mutable_data( framework::make_ddim({true_pos_count, 2}), ctx.GetPlace()); T* false_pos_data = output_false_pos.mutable_data( diff --git a/paddle/scripts/travis/build_doc.sh b/paddle/scripts/travis/build_doc.sh index aa223d87ba8ff09e774172d049f73039d5c9fc28..70c821fad94b688536a38c7a5cd02b66de553155 100755 --- a/paddle/scripts/travis/build_doc.sh +++ b/paddle/scripts/travis/build_doc.sh @@ -12,8 +12,8 @@ make -j `nproc` copy_paddle_pybind make -j `nproc` paddle_docs paddle_docs_cn paddle_api_docs # check websites for broken links -linkchecker doc/en/html/index.html -linkchecker doc/cn/html/index.html +linkchecker doc/v2/en/html/index.html +linkchecker doc/v2/cn/html/index.html linkchecker doc/api/en/html/index.html # Parse Github URL @@ -55,8 +55,8 @@ function deploy_docs() { set +e rm -rf ${DIR}/doc ${DIR}/doc_cn ${DIR}/api_doc set -e - cp -r ../doc/cn/html ${DIR}/doc_cn - cp -r ../doc/en/html ${DIR}/doc + cp -r ../doc/v2/cn/html ${DIR}/doc_cn + cp -r ../doc/v2/en/html ${DIR}/doc cp -r ../doc/api/en/html ${DIR}/api_doc git add . } diff --git a/python/paddle/fluid/evaluator.py b/python/paddle/fluid/evaluator.py index 38c6a98279021a1a28a46078a0af47ea97bd4aeb..364789233bf9cd8667b2e0c0b927adee9dd9a65c 100644 --- a/python/paddle/fluid/evaluator.py +++ b/python/paddle/fluid/evaluator.py @@ -18,11 +18,13 @@ import layers from framework import Program, Variable, program_guard import unique_name from layer_helper import LayerHelper +from initializer import Constant __all__ = [ 'Accuracy', 'ChunkEvaluator', 'EditDistance', + 'DetectionMAP', ] @@ -285,3 +287,120 @@ class EditDistance(Evaluator): result = executor.run( eval_program, fetch_list=[avg_distance, avg_instance_error]) return np.array(result[0]), np.array(result[1]) + + +class DetectionMAP(Evaluator): + """ + Calculate the detection mean average precision (mAP). + + TODO (Dang Qingqing): update the following doc. + The general steps are as follows: + 1. calculate the true positive and false positive according to the input + of detection and labels. + 2. calculate mAP value, support two versions: '11 point' and 'integral'. + + Please get more information from the following articles: + https://sanchom.wordpress.com/tag/average-precision/ + https://arxiv.org/abs/1512.02325 + + Args: + input (Variable): The detection results, which is a LoDTensor with shape + [M, 6]. The layout is [label, confidence, xmin, ymin, xmax, ymax]. + gt_label (Variable): The ground truth label index, which is a LoDTensor + with shape [N, 1]. + gt_difficult (Variable): Whether this ground truth is a difficult + bounding box (bbox), which is a LoDTensor [N, 1]. + gt_box (Variable): The ground truth bounding box (bbox), which is a + LoDTensor with shape [N, 6]. The layout is [xmin, ymin, xmax, ymax]. + overlap_threshold (float): The threshold for deciding true/false + positive, 0.5 by defalut. + evaluate_difficult (bool): Whether to consider difficult ground truth + for evaluation, True by defalut. + ap_version (string): The average precision calculation ways, it must be + 'integral' or '11point'. Please check + https://sanchom.wordpress.com/tag/average-precision/ for details. + - 11point: the 11-point interpolated average precision. + - integral: the natural integral of the precision-recall curve. + + Example: + + exe = fluid.executor(place) + map_evaluator = fluid.Evaluator.DetectionMAP(input, + gt_label, gt_difficult, gt_box) + cur_map, accum_map = map_evaluator.get_map_var() + fetch = [cost, cur_map, accum_map] + for epoch in PASS_NUM: + map_evaluator.reset(exe) + for data in batches: + loss, cur_map_v, accum_map_v = exe.run(fetch_list=fetch) + + In the above example: + + 'cur_map_v' is the mAP of current mini-batch. + 'accum_map_v' is the accumulative mAP of one pass. + """ + + def __init__(self, + input, + gt_label, + gt_box, + gt_difficult, + overlap_threshold=0.5, + evaluate_difficult=True, + ap_version='integral'): + super(DetectionMAP, self).__init__("map_eval") + + gt_label = layers.cast(x=gt_label, dtype=gt_box.dtype) + gt_difficult = layers.cast(x=gt_difficult, dtype=gt_box.dtype) + label = layers.concat([gt_label, gt_difficult, gt_box], axis=1) + + # calculate mean average precision (mAP) of current mini-batch + map = layers.detection_map( + input, + label, + overlap_threshold=overlap_threshold, + evaluate_difficult=evaluate_difficult, + ap_version=ap_version) + + self.create_state(dtype='int32', shape=None, suffix='accum_pos_count') + self.create_state(dtype='float32', shape=None, suffix='accum_true_pos') + self.create_state(dtype='float32', shape=None, suffix='accum_false_pos') + + self.has_state = None + var = self.helper.create_variable( + persistable=True, dtype='int32', shape=[1]) + self.helper.set_variable_initializer( + var, initializer=Constant(value=int(0))) + self.has_state = var + + # calculate accumulative mAP + accum_map = layers.detection_map( + input, + label, + overlap_threshold=overlap_threshold, + evaluate_difficult=evaluate_difficult, + has_state=self.has_state, + input_states=self.states, + out_states=self.states, + ap_version=ap_version) + + layers.fill_constant( + shape=self.has_state.shape, + value=1, + dtype=self.has_state.dtype, + out=self.has_state) + + self.cur_map = map + self.accum_map = accum_map + + def get_map_var(self): + return self.cur_map, self.accum_map + + def reset(self, executor, reset_program=None): + if reset_program is None: + reset_program = Program() + with program_guard(main_program=reset_program): + var = _clone_var_(reset_program.current_block(), self.has_state) + layers.fill_constant( + shape=var.shape, value=0, dtype=var.dtype, out=var) + executor.run(reset_program) diff --git a/python/paddle/fluid/layers/detection.py b/python/paddle/fluid/layers/detection.py index d16b4dc3a482d657158636f0e3a2c1d07bae7d8c..420d3de7f73aaad2ffbd4f285a2e28672fd853f1 100644 --- a/python/paddle/fluid/layers/detection.py +++ b/python/paddle/fluid/layers/detection.py @@ -151,23 +151,34 @@ def detection_output(loc, @autodoc() def detection_map(detect_res, label, - pos_count=None, - true_pos=None, - false_pos=None, overlap_threshold=0.3, evaluate_difficult=True, - ap_type='integral'): + has_state=None, + input_states=None, + out_states=None, + ap_version='integral'): helper = LayerHelper("detection_map", **locals()) - map_out = helper.create_tmp_variable(dtype='float32') - accum_pos_count_out = helper.create_tmp_variable(dtype='int32') - accum_true_pos_out = helper.create_tmp_variable(dtype='float32') - accum_false_pos_out = helper.create_tmp_variable(dtype='float32') + def __create_var(type): + return helper.create_tmp_variable(dtype=type) + + map_out = __create_var('float32') + accum_pos_count_out = out_states[0] if out_states else __create_var('int32') + accum_true_pos_out = out_states[1] if out_states else __create_var( + 'float32') + accum_false_pos_out = out_states[2] if out_states else __create_var( + 'float32') + + pos_count = input_states[0] if input_states else None + true_pos = input_states[1] if input_states else None + false_pos = input_states[2] if input_states else None + helper.append_op( type="detection_map", inputs={ 'Label': label, 'DetectRes': detect_res, + 'HasState': has_state, 'PosCount': pos_count, 'TruePos': true_pos, 'FalsePos': false_pos @@ -181,9 +192,9 @@ def detection_map(detect_res, attrs={ 'overlap_threshold': overlap_threshold, 'evaluate_difficult': evaluate_difficult, - 'ap_type': ap_type + 'ap_type': ap_version }) - return map_out, accum_pos_count_out, accum_true_pos_out, accum_false_pos_out + return map_out def bipartite_match(dist_matrix, diff --git a/python/paddle/fluid/tests/book/test_understand_sentiment.py b/python/paddle/fluid/tests/book/test_understand_sentiment.py index 1b7e84ea05cab5750865032ee7440cd5f5aa519b..d2f3f7404697feb0768f873070b97aeb3ba0cd64 100644 --- a/python/paddle/fluid/tests/book/test_understand_sentiment.py +++ b/python/paddle/fluid/tests/book/test_understand_sentiment.py @@ -274,7 +274,7 @@ def main(word_dict, net_method, use_cuda, parallel=False, save_dirname=None): use_cuda, parallel=parallel, save_dirname=save_dirname) - infer(use_cuda, save_dirname) + infer(word_dict, use_cuda, save_dirname) class TestUnderstandSentiment(unittest.TestCase): diff --git a/python/paddle/fluid/tests/test_detection.py b/python/paddle/fluid/tests/test_detection.py index 0d2d653c01cb994bb10ea6bc5c6c8b8ce5004d7c..b183db55b2afa23136a07a5dbc8d0925d0868f95 100644 --- a/python/paddle/fluid/tests/test_detection.py +++ b/python/paddle/fluid/tests/test_detection.py @@ -158,26 +158,9 @@ class TestDetectionMAP(unittest.TestCase): append_batch_size=False, dtype='float32') - map_out, accum_pos_count_out, accum_true_pos_out, accum_false_pos_out = layers.detection_map( - detect_res=detect_res, label=label) + map_out = layers.detection_map(detect_res=detect_res, label=label) self.assertIsNotNone(map_out) - self.assertIsNotNone(accum_pos_count_out) - self.assertIsNotNone(accum_true_pos_out) - self.assertIsNotNone(accum_false_pos_out) self.assertEqual(map_out.shape, (1, )) - map_out, accum_pos_count_out2, accum_true_pos_out2, accum_false_pos_out2 = layers.detection_map( - detect_res=detect_res, label=label) - self.assertIsNotNone(map_out) - self.assertIsNotNone(accum_pos_count_out2) - self.assertIsNotNone(accum_true_pos_out2) - self.assertIsNotNone(accum_false_pos_out2) - self.assertEqual(map_out.shape, (1, )) - self.assertEqual(accum_pos_count_out.shape, - accum_pos_count_out2.shape) - self.assertEqual(accum_true_pos_out.shape, - accum_true_pos_out2.shape) - self.assertEqual(accum_false_pos_out.shape, - accum_false_pos_out2.shape) print(str(program)) diff --git a/python/paddle/fluid/tests/unittests/test_detection_map_op.py b/python/paddle/fluid/tests/unittests/test_detection_map_op.py index 70ccd885d89f245df492bad0fbcecc093dc1928c..9857cc58456b51f99bd06aa4496298d33c4abcd6 100644 --- a/python/paddle/fluid/tests/unittests/test_detection_map_op.py +++ b/python/paddle/fluid/tests/unittests/test_detection_map_op.py @@ -34,10 +34,12 @@ class TestDetectionMAPOp(OpTest): 'int32') self.true_pos = np.array(self.true_pos).astype('float32') self.false_pos = np.array(self.false_pos).astype('float32') + self.has_state = np.array([1]).astype('int32') self.inputs = { 'Label': (self.label, self.label_lod), 'DetectRes': (self.detect, self.detect_lod), + 'HasState': self.has_state, 'PosCount': self.class_pos_count, 'TruePos': (self.true_pos, self.true_pos_lod), 'FalsePos': (self.false_pos, self.false_pos_lod)