From 55be9c7460010055fc0c54173084e3f814a809aa Mon Sep 17 00:00:00 2001
From: Cheerego <35982308+shanyi15@users.noreply.github.com>
Date: Sat, 23 Feb 2019 10:56:21 +0800
Subject: [PATCH] Cherrypick1.3 (#652)
* thorough clean
* delete_DS_Store
* [Don't merge now]update_install_doc (#643)
* update_install_doc
* follow_comments
* add maxdepth (#646)
* upload_md (#649)
* update_version (#650)
* Translation of 16 new apis (#651)
* fix_windows
---
doc/fluid/api/gen_index.py | 2 +-
doc/fluid/api/index_en.rst | 2 +-
doc/fluid/api_cn/fluid_cn.rst | 103 +--
doc/fluid/api_cn/gen_index.py | 2 +-
doc/fluid/api_cn/index_cn.rst | 2 +-
doc/fluid/api_cn/initializer_cn.rst | 48 +-
doc/fluid/api_cn/layers_cn.rst | 780 +++++++++++++++++-
doc/fluid/beginners_guide/install/FAQ.md | 100 +--
doc/fluid/beginners_guide/install/Tables.md | 218 +++--
.../install/compile/compile_CentOS.md | 104 ++-
.../install/compile/compile_MacOS.md | 121 ++-
.../install/compile/compile_Ubuntu.md | 128 +--
.../install/compile/compile_Windows.md | 96 ++-
.../install/compile/fromsource.rst | 5 +-
.../beginners_guide/install/index_cn.rst | 6 +-
.../beginners_guide/install/install_CentOS.md | 173 +---
.../beginners_guide/install/install_Docker.md | 89 ++
.../beginners_guide/install/install_MacOS.md | 137 +--
.../beginners_guide/install/install_Ubuntu.md | 178 +---
.../install/install_Windows.md | 58 +-
.../beginners_guide/install/install_script.md | 53 ++
21 files changed, 1493 insertions(+), 912 deletions(-)
create mode 100644 doc/fluid/beginners_guide/install/install_Docker.md
create mode 100644 doc/fluid/beginners_guide/install/install_script.md
diff --git a/doc/fluid/api/gen_index.py b/doc/fluid/api/gen_index.py
index 4189918e8..51aa256fe 100644
--- a/doc/fluid/api/gen_index.py
+++ b/doc/fluid/api/gen_index.py
@@ -10,7 +10,7 @@ API Reference
=============
.. toctree::
-
+ :maxdepth: 1
''')
file_object.write(' ../api_guides/index_en.rst'+'\n')
diff --git a/doc/fluid/api/index_en.rst b/doc/fluid/api/index_en.rst
index d49136c06..b66676b23 100644
--- a/doc/fluid/api/index_en.rst
+++ b/doc/fluid/api/index_en.rst
@@ -3,7 +3,7 @@ API Reference
=============
.. toctree::
-
+ :maxdepth: 1
../api_guides/index_en.rst
fluid.rst
diff --git a/doc/fluid/api_cn/fluid_cn.rst b/doc/fluid/api_cn/fluid_cn.rst
index a358254fc..29bb278e0 100644
--- a/doc/fluid/api_cn/fluid_cn.rst
+++ b/doc/fluid/api_cn/fluid_cn.rst
@@ -128,9 +128,62 @@ BOOL类型。如果设置为True, GPU操作中的一些锁将被释放,Paralle
+.. _cn_api_fluid_CompiledProgram:
+CompiledProgram
+-------------------------------
+
+.. py:class:: paddle.fluid.CompiledProgram(program)
+
+编译一个接着用来执行的Program。
+
+1. 首先使用layers(网络层)创建程序。
+2. (可选)可使用CompiledProgram来在运行之前优化程序。
+3. 定义的程序或CompiledProgram由Executor运行。
+
+CompiledProgram用于转换程序以进行各种优化。例如,
+
+- 预先计算一些逻辑,以便每次运行更快。
+- 转换Program,使其可以在多个设备中运行。
+- 转换Program以进行优化预测或分布式训练。
+
+**代码示例**
+
+.. code-block:: python
+
+ place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
+ exe = fluid.Executor(place)
+ exe.run(startup)
+ compiled_prog = compiler.CompiledProgram(main).with_data_parallel(
+ loss_name=loss.name)
+ for i in range(5):
+ test_loss, = exe.run(compiled_prog,
+ feed=feed_dict,
+ fetch_list=[loss.name])
+
+参数:
+ - **program** : 一个Program对象,承载着用户定义的模型计算逻辑
+
+.. py:method:: with_data_parallel(loss_name=None, build_strategy=None, exec_strategy=None, share_vars_from=None)
+配置Program使其以数据并行方式运行。
+参数:
+ - **loss_name** (str) - 损失函数名称必须在训练过程中设置。 默认None。
+ - **build_strategy** (BuildStrategy) - build_strategy用于构建图,因此它可以在具有优化拓扑的多个设备/核上运行。 有关更多信息,请参阅 ``fluid.BuildStrategy`` 。 默认None。
+ - **exec_strategy** (ExecutionStrategy) - exec_strategy用于选择执行图的方式,例如使用多少线程,每次清理临时变量之前进行的迭代次数。 有关更多信息,请参阅 ``fluid.ExecutionStrategy`` 。 默认None。
+ - **share_vars_from** (CompiledProgram) - 如果有,此CompiledProgram将共享来自share_vars_from的变量。 share_vars_from指定的Program必须由此CompiledProgram之前的Executor运行,以便vars准备就绪。
+
+返回: self
+
+.. py:method:: with_inference_optimize(config)
+
+添加预测优化。
+
+参数:
+ - **config** - 用于创建预测器的NativeConfig或AnalysisConfig的实例
+
+返回: self
@@ -1512,56 +1565,6 @@ release_memory
-
-
-
-
-
-
-
-
-
-
-
-.. _cn_api_fluid_Scope:
-
-Scope
--------------------------------
-
-.. py:class:: paddle.fluid.scope(scope)
-
-(作用域)Scope为变量名的联合。所有变量都属于Scope。
-
-从本地作用域中可以拉取到其双亲作用域的变量。
-
-要想运行一个网络,需要指明它运行所在的域,确切的说: exe.Run(&scope) 。
-
-一个网络可以在不同域上运行,并且更新该域的各类变量。
-
-在作用域上创建一个变量,并在域中获取。
-
-**代码示例**
-
-.. code-block:: python
-
- # create tensor from a scope and set value to it.
- param = scope.var('Param').get_tensor()
- param_array = np.full((height, row_numel), 5.0).astype("float32")
- param.set(param_array, place)
-
-
-.. py:method:: drop_kids(self: paddle.fluid.core.Scope) → None
-.. py:method:: find_var(self: paddle.fluid.core.Scope, arg0: unicode) → paddle.fluid.core.Variable
-.. py:method:: new_scope(self: paddle.fluid.core.Scope) → paddle.fluid.core.Scope
-.. py:method:: var(self: paddle.fluid.core.Scope, arg0: unicode) → paddle.fluid.core.Variable
-
-
-
-
-
-
-
-
.. _cn_api_fluid_scope_guard:
scope_guard
diff --git a/doc/fluid/api_cn/gen_index.py b/doc/fluid/api_cn/gen_index.py
index 9e77c1d19..860866b02 100644
--- a/doc/fluid/api_cn/gen_index.py
+++ b/doc/fluid/api_cn/gen_index.py
@@ -10,7 +10,7 @@ API Reference
=============
.. toctree::
-
+ :maxdepth: 1
''')
file_object.write(' ../api_guides/index.rst'+'\n')
diff --git a/doc/fluid/api_cn/index_cn.rst b/doc/fluid/api_cn/index_cn.rst
index 2b0266f6e..5686f640f 100644
--- a/doc/fluid/api_cn/index_cn.rst
+++ b/doc/fluid/api_cn/index_cn.rst
@@ -3,7 +3,7 @@ API
=====
.. toctree::
-
+ :maxdepth: 1
../api_guides/index.rst
fluid_cn.rst
diff --git a/doc/fluid/api_cn/initializer_cn.rst b/doc/fluid/api_cn/initializer_cn.rst
index 98bd68c54..9815d4365 100644
--- a/doc/fluid/api_cn/initializer_cn.rst
+++ b/doc/fluid/api_cn/initializer_cn.rst
@@ -6,7 +6,7 @@
.. _cn_api_fluid_initializer_Bilinear:
Bilinear
->>>>>>>>>>>
+-------------------------------
.. py:attribute:: paddle.fluid.initializer.Bilinear
@@ -16,7 +16,7 @@ Bilinear
.. _cn_api_fluid_initializer_BilinearInitializer:
BilinearInitializer
->>>>>>>>>>>>>>>>>>>>>
+-------------------------------
.. py:class:: paddle.fluid.initializer.BilinearInitializer
@@ -49,7 +49,7 @@ num_filters = C和groups = C 表示这是按通道转置的卷积函数。滤波
.. _cn_api_fluid_initializer_Constant:
Constant
->>>>>>>>>>
+-------------------------------
.. py:attribute:: paddle.fluid.initializer.Constant
@@ -59,7 +59,7 @@ Constant
.. _cn_api_fluid_initializer_ConstantInitializer:
ConstantInitializer
->>>>>>>>>>>>
+-------------------------------
.. py:class:: paddle.fluid.initializer.ConstantInitializer(value=0.0, force_cpu=False)
@@ -84,7 +84,7 @@ ConstantInitializer
.. _cn_api_fluid_initializer_force_init_on_cpu:
force_init_on_cpu
->>>>>>>>>>>>>>>>>>>
+-------------------------------
.. py:function:: paddle.fluid.initializer.force_init_on_cpu()
@@ -114,7 +114,7 @@ force_init_on_cpu
.. _cn_api_fluid_initializer_init_on_cpu:
init_on_cpu
->>>>>>>>>>>>
+-------------------------------
.. py:function:: paddle.fluid.initializer.init_on_cpu(*args, **kwds)
@@ -135,7 +135,7 @@ init_on_cpu
.. _cn_api_fluid_initializer_MSRA:
MSRA
->>>>>>
+-------------------------------
.. py:attribute:: paddle.fluid.initializer.MSRA
@@ -144,7 +144,7 @@ MSRA
.. _cn_api_fluid_initializer_MSRAInitializer:
MSRAInitializer
->>>>>>>>>>>>>>>>>
+-------------------------------
.. py:class:: paddle.fluid.initializer.MSRAInitializer(uniform=True, fan_in=None, seed=0)
@@ -189,7 +189,7 @@ MSRAInitializer
.. _cn_api_fluid_initializer_Normal:
Normal
->>>>>>>>
+-------------------------------
.. py:attribute:: paddle.fluid.initializer.Normal
@@ -199,7 +199,7 @@ Normal
.. _cn_api_fluid_initializer_NormalInitializer:
NormalInitializer
->>>>>>>>>>>>
+-------------------------------
.. py:class:: paddle.fluid.initializer.NormalInitializer(loc=0.0, scale=1.0, seed=0)
@@ -218,15 +218,30 @@ NormalInitializer
param_attr=fluid.initializer.Normal(loc=0.0, scale=2.0)
+.. _cn_api_fluid_initializer_NumpyArrayInitializer:
+NumpyArrayInitializer
+-------------------------------
+.. py:class:: paddle.fluid.initializer.NumpyArrayInitializer(value)
+使用Numpy型数组来初始化参数变量。
+
+参数:
+ - **value** (numpy) - 用于初始化变量的一个Numpy型数组。
+
+**代码示例**
+
+.. code-block:: python
+
+ fc = fluid.layers.fc(input=x, size=10,
+ param_attr=fluid.initializer.NumpyArrayInitializer(numpy.array([1,2])))
.. _cn_api_fluid_initializer_TruncatedNormal:
TruncatedNormal
->>>>>>>>>>>>>>>>>
+-------------------------------
.. py:attribute:: paddle.fluid.initializer.TruncatedNormal
@@ -236,7 +251,7 @@ TruncatedNormal
.. _cn_api_fluid_initializer_TruncatedNormalInitializer:
TruncatedNormalInitializer
->>>>>>>>>>>>
+-------------------------------
.. py:class:: paddle.fluid.initializer.TruncatedNormalInitializer(loc=0.0, scale=1.0, seed=0)
@@ -265,7 +280,7 @@ Random Truncated Normal(高斯)分布初始化器
.. _cn_api_fluid_initializer_Uniform:
Uniform
->>>>>>>>>
+-------------------------------
.. py:attribute:: paddle.fluid.initializer.Uniform
@@ -276,7 +291,7 @@ Uniform
.. _cn_api_fluid_initializer_UniformInitializer:
UniformInitializer
->>>>>>>>>>>>
+-------------------------------
.. py:class:: paddle.fluid.initializer.UniformInitializer(low=-1.0, high=1.0, seed=0)
@@ -305,7 +320,7 @@ UniformInitializer
.. _cn_api_fluid_initializer_Xavier:
Xavier
->>>>>>>>>
+-------------------------------
.. py:attribute:: paddle.fluid.initializer.Xavier
@@ -319,7 +334,8 @@ Xavier
.. _cn_api_fluid_initializer_XavierInitializer:
XavierInitializer
->>>>>>>>>>>>>>>>>>>
+-------------------------------
+
.. py:class:: paddle.fluid.initializer.XavierInitializer(uniform=True, fan_in=None, fan_out=None, seed=0)
该类实现Xavier权重初始化方法( Xavier weight initializer),Xavier权重初始化方法出自Xavier Glorot和Yoshua Bengio的论文 `Understanding the difficulty of training deep feedforward neural networks `_
diff --git a/doc/fluid/api_cn/layers_cn.rst b/doc/fluid/api_cn/layers_cn.rst
index f77c667c2..2e47ff1be 100644
--- a/doc/fluid/api_cn/layers_cn.rst
+++ b/doc/fluid/api_cn/layers_cn.rst
@@ -4,7 +4,7 @@ fluid.layers
============
- control_flow
+control_flow
============
@@ -1282,6 +1282,151 @@ shuffle
nn
============
+.. _cn_api_fluid_layers_adaptive_pool2d:
+
+adaptive_pool2d
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.adaptive_pool2d(input, pool_size, pool_type='max', require_index=False, name=None)
+
+pooling2d操作根据输入 ``input`` , ``pool_size`` , ``pool_type`` 参数计算输出。 输入(X)和输出(Out)采用NCHW格式,其中N是批大小batch size,C是通道数,H是feature(特征)的高度,W是feature(特征)的宽度。 参数 ``pool_size`` 由两个元素构成, 这两个元素分别代表高度和宽度。 输出(Out)的H和W维与 ``pool_size`` 大小相同。
+
+
+对于平均adaptive pool2d:
+
+.. math::
+
+ hstart &= floor(i * H_{in} / H_{out})
+
+ hend &= ceil((i + 1) * H_{in} / H_{out})
+
+ wstart &= floor(j * W_{in} / W_{out})
+
+ wend &= ceil((j + 1) * W_{in} / W_{out})
+
+ Output(i ,j) &= \frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)}
+
+参数:
+ - **input** (Variable) - 池化操作的输入张量。 输入张量的格式为NCHW,其中N是batch大小,C是通道数,H是特征的高度,W是特征的宽度。
+ - **pool_size** (int | list | tuple) - 池化核大小。 如果池化核大小是元组或列表,则它必须包含两个整数(pool_size_Height,pool_size_Width)。
+ - **pool_type** (string)- 池化类型,可输入“max”代表max-pooling,或者“avg”代表average-pooling。
+ - **require_index** (bool) - 如果为true,则输出中带有最大池化点所在的索引。 如果pool_type为avg,该项不可被设置为true。
+ - **name** (str | None) - 此层的名称(可选)。 如果设置为None,则将自动命名该层。
+
+
+返回: 池化结果
+
+返回类型: Variable
+
+
+抛出异常:
+
+ - ``ValueError`` – ``pool_type`` 不是 ‘max’ 或 ‘avg’
+ - ``ValueError`` – 当 ``pool_type`` 是 ‘avg’ 时,错误地设置 ‘require_index’ 为true .
+ - ``ValueError`` – ``pool_size`` 应为一个长度为2的列表或元组
+
+.. code-block:: python
+
+ # 假设输入形为[N, C, H, W], `pool_size` 为 [m, n],
+ # 输出形为 [N, C, m, n], adaptive pool 将输入的 H 和 W 纬度
+ # 平均分割为 m * n 个栅格(grid) ,然后为每个栅格进行池化得到输出
+ # adaptive average pool 进行如下操作
+ #
+ # for i in range(m):
+ # for j in range(n):
+ # hstart = floor(i * H / m)
+ # hend = ceil((i + 1) * H / m)
+ # wstart = floor(i * W / n)
+ # wend = ceil((i + 1) * W / n)
+ # output[:, :, i, j] = avg(input[:, :, hstart: hend, wstart: wend])
+ #
+ data = fluid.layers.data(
+ name='data', shape=[3, 32, 32], dtype='float32')
+ pool_out = fluid.layers.adaptive_pool2d(
+ input=data,
+ pool_size=[3, 3],
+ pool_type='avg')
+
+
+
+
+.. _cn_api_fluid_layers_adaptive_pool3d:
+
+adaptive_pool3d
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.adaptive_pool3d(input, pool_size, pool_type='max', require_index=False, name=None)
+
+pooling3d操作根据输入 ``input`` ,``pool_size`` , ``pool_type`` 参数计算输出。 输入(X)和输出(输出)采用NCDHW格式,其中N是批大小batch size,C是通道数,D是特征(feature)的深度,H是特征的高度,W是特征的宽度。 参数 ``pool_size`` 由三个元素组成。 这三个元素分别代表深度,高度和宽度。输出(Out)的D,H,W维与 ``pool_size`` 相同。
+
+
+对于平均adaptive pool3d:
+
+.. math::
+
+ dstart &= floor(i * D_{in} / D_{out})
+
+ dend &= ceil((i + 1) * D_{in} / D_{out})
+
+ hstart &= floor(j * H_{in} / H_{out})
+
+ hend &= ceil((j + 1) * H_{in} / H_{out})
+
+ wstart &= floor(k * W_{in} / W_{out})
+
+ wend &= ceil((k + 1) * W_{in} / W_{out})
+
+ Output(i ,j, k) &= \frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{(dend - dstart) * (hend - hstart) * (wend - wstart)}
+
+
+
+参数:
+ - **input** (Variable) - 池化操作的输入张量。 输入张量的格式为NCDHW,其中N是batch大小,C是通道数,D为特征的深度,H是特征的高度,W是特征的宽度。
+ - **pool_size** (int | list | tuple) - 池化核大小。 如果池化核大小是元组或列表,则它必须包含三个整数(Depth, Height, Width)。
+ - **pool_type** (string)- 池化类型,可输入“max”代表max-pooling,或者“avg”代表average-pooling。
+ - **require_index** (bool) - 如果为true,则输出中带有最大池化点所在的索引。 如果pool_type为avg,该项不可被设置为true。
+ - **name** (str | None) - 此层的名称(可选)。 如果设置为None,则将自动命名该层。
+
+
+返回: 池化结果
+
+返回类型: Variable
+
+
+抛出异常:
+
+ - ``ValueError`` – ``pool_type`` 不是 ‘max’ 或 ‘avg’
+ - ``ValueError`` – 当 ``pool_type`` 是 ‘avg’ 时,错误地设置 ‘require_index’ 为true .
+ - ``ValueError`` – ``pool_size`` 应为一个长度为3的列表或元组
+
+.. code-block:: python
+
+ # 假设输入形为[N, C, D, H, W], `pool_size` 为 [l, m, n],
+ # 输出形为 [N, C, l, m, n], adaptive pool 将输入的D, H 和 W 纬度
+ # 平均分割为 l * m * n 个栅格(grid) ,然后为每个栅格进行池化得到输出
+ # adaptive average pool 进行如下操作
+ #
+ # for i in range(l):
+ # for j in range(m):
+ # for k in range(n):
+ # dstart = floor(i * D / l)
+ # dend = ceil((i + 1) * D / l)
+ # hstart = floor(j * H / m)
+ # hend = ceil((j + 1) * H / m)
+ # wstart = floor(k * W / n)
+ # wend = ceil((k + 1) * W / n)
+ # output[:, :, i, j, k] =
+ # avg(input[:, :, dstart:dend, hstart: hend, wstart: wend])
+ #
+ data = fluid.layers.data(
+ name='data', shape=[3, 32, 32], dtype='float32')
+ pool_out, mask = fluid.layers.adaptive_pool3d(
+ input=data,
+ pool_size=[3, 3, 3],
+ pool_type='avg')
+
+
+
.. _cn_api_fluid_layers_add_position_encoding:
@@ -1700,7 +1845,36 @@ bilinear_tensor_product
+.. _cn_api_fluid_layers_bpr_loss:
+
+bpr_loss
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.bpr_loss(input, label, name=None)
+
+
+Bayesian Personalized Ranking Loss Operator. (贝叶斯个性化排序损失计算)
+
+该算子属于pairwise的排序类型,其标签是期望物品。在某次会话中某一给定点的损失值由下式计算而得:
+
+.. math::
+
+ Y[i] = -\frac{1}{N_{i}-1} * \sum_{0\le j`_
+
+参数:
+ - **input** (Variable|list): 一个形为[N x D]的2-D tensor , 其中 N 为批大小batch size ,D 为种类的数量。该输入为logits而非概率。
+ - **label** (Variable|list): 2-D tensor 类型的真实值, 形为[N x 1]
+ - **name** (str|None): (可选)该层的命名。 如果为None, 则自动为该层命名。 默认为None.
+
+返回: 形为[N x 1]的2D张量,即bpr损失
+
+**代码示例:**
+
+.. code-block:: python
+ cost = fluid.layers.bpr_loss(input=predict, label=label)
@@ -2563,6 +2737,57 @@ ctc_greedy_decoder
+.. _cn_api_fluid_layers_data_norm:
+
+data_norm
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.data_norm(input, act=None, epsilon=1e-05, param_attr=None, data_layout='NCHW', in_place=False, use_mkldnn=False, name=None, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False)
+
+**数据正则化层**
+
+可用作conv2d和fully_connected操作的正则化函数。 此层所需的数据格式为以下之一:
+
+1. NHWC [batch, in_height, in_width, in_channels]
+2. NCHW [batch, in_channels, in_height, in_width]
+
+:math:`input` 为一个mini-batch上的特征:
+
+.. math::
+ \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \qquad &//\
+ \ mini-batch\ mean \\
+ \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \
+ \mu_{\beta})^2 \qquad &//\ mini-batch\ variance \\
+ \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\
+ \sigma_{\beta}^{2} + \epsilon}} \qquad &//\ normalize \\
+ y_i &\gets \gamma \hat{x_i} + \beta \qquad &//\ scale\ and\ shift
+
+参数:
+ - **input** (variable) - 输入变量,它是一个LoDTensor。
+ - **act** (string,默认None) - 激活函数类型,线性| relu | prelu | ...
+ - **epsilon** (float,默认1e-05) -
+ - **param_attr** (ParamAttr) - 参数比例的参数属性。
+ - **data_layout** (string,默认NCHW) - NCHW | NHWC
+ - **in_place** (bool,默认值False) - 使data_norm的输入和输出复用同一块内存。
+ - **use_mkldnn** (bool,默认为false) - 是否使用mkldnn
+ - **name** (string,默认None) - 此层的名称(可选)。 如果设置为None,则将自动命名该层。
+ - **moving_mean_name** (string,Default None) - 存储全局Mean的moving_mean的名称。
+ - **moving_variance_name** (string,默认None) - 存储全局Variance的moving_variance的名称。
+ - **do_model_average_for_mean_and_var** (bool,默认值为false) - 是否为mean和variance进行模型平均。
+
+返回: 张量变量,是对输入数据进行正则化后的结果。
+
+返回类型: Variable
+
+**代码示例**
+
+.. code-block:: python
+
+ data = fluid.layers.data(input=x, size=200, param_attr='fc1.w')
+ hidden2 = fluid.layers.data_norm(input=hidden1)
+
+
+
@@ -4143,7 +4368,43 @@ hsigmoid可以把时间复杂度 :math:`O(N)` 优化到 :math:`O(logN)` ,其中
+.. _cn_api_fluid_layers_huber_loss:
+
+huber_loss
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.huber_loss(input, label, delta)
+
+Huber损失是更具鲁棒性的损失函数。 huber损失可以评估输入对标签的合适度。 与MSE损失不同,Huber损失可更为稳健地处理异常值。
+
+当输入和标签之间的距离大于delta时:
+
+.. math::
+ huber\_loss = delta * (label - input) - 0.5 * delta * delta
+
+当输入和标签之间的距离小于delta时:
+
+.. math::
+ huber\_loss = 0.5 * (label - input) * (label - input)
+
+
+参数:
+ - **input** (Variable) - 此输入是前一个算子计算得到的概率。 第一个维度是批大小batch_size,最后一个维度是1。
+ - **label** (Variable) - 第一个维度为批量大小batch_size且最后一个维度为1的真实值
+ - **delta** (float) - huber loss的参数,用于控制异常值的范围
+
+返回: 形为[batch_size, 1]的huber loss.
+
+返回类型: huber_loss (Variable)
+
+
+
+**代码示例**
+
+.. code-block:: python
+ predictions = fluid.layers.softmax(x)
+ loss = fluid.layers.huber_loss(input=predictions, label=label, 1.0)
@@ -5954,11 +6215,117 @@ prelu
返回类型: 变量(Variable)
-
-
+.. _cn_api_fluid_layers_psroi_pool:
+
+psroi_pool
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.psroi_pool(input, rois, output_channels, spatial_scale, pooled_height, pooled_width, name=None)
+
+PSROIPool运算
+
+区分位置的感兴趣区域池化方法(Position sensitive region of interest pooling,也称为PSROIPooling)是对输入的 "感兴趣区域"(RoI)执行按位置的average池化,并将N个按位置评分图(score map)和一个由num_rois个感兴趣区域所组成的列表作为输入。
+
+用于R-FCN的PSROIPooling。 有关更多详细信息,请参阅 https://arxiv.org/abs/1605.06409。
+
+参数:
+ - **input** (Variable) - (Tensor),PSROIPoolOp的输入。 输入张量的格式是NCHW。 其中N是批大小batch_size,C是输入通道的数量,H是输入特征图的高度,W是特征图宽度
+ - **rois** (Variable) - 要进行池化的RoI(感兴趣区域)。
+ - **output_channels** (integer) - (int),输出特征图的通道数。 对于共C个种类的对象分类任务,output_channels应该是(C + 1),该情况仅适用于分类任务。
+ - **spatial_scale** (float) - (float,default 1.0),乘法空间比例因子,用于将ROI坐标从其输入比例转换为池化使用的比例。默认值:1.0
+ - **pooled_height** (integer) - (int,默认值1),池化输出的高度。默认值:1
+ - **pooled_width** (integer) - (int,默认值1),池化输出的宽度。默认值:1
+ - **name** (str,default None) - 此层的名称。
+
+返回: (Tensor),PSROIPoolOp的输出是形为 (num_rois,output_channels,pooled_h,pooled_w) 的4-D Tensor。
+
+返回类型: 变量(Variable)
+
+**代码示例:**
+
+.. code-block:: python
+
+ pool_out = fluid.layers.psroi_pool(input=x, rois=rois, 490, 1.0, 7, 7)
+
+
+
+
+
+.. _cn_api_fluid_layers_py_func:
+
+py_func
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.py_func(func, x, out, backward_func=None, skip_vars_in_backward_input=None)
+
+PyFunc运算。
+
+用户可以使用 ``py_func`` 在Python端注册operator。 ``func`` 的输入 ``x`` 是LoDTensor,输出可以是numpy数组或LoDTensor。 Paddle将在前向部分调用注册的 ``func`` ,并在反向部分调用 ``backward_func`` (如果 ``backward_func`` 不是None)。
+
+在调用此函数之前,应正确设置 ``out`` 的数据类型和形状。 但是,``out`` 和 ``x`` 对应梯度的数据类型和形状将自动推断而出。
+
+``backward_func`` 的输入顺序为:前向输入x,前向输出 ``out`` 和反向输入 ``out`` 的梯度。 如果 ``out`` 的某些变量没有梯度,则输入张量在Python端将为None。
+
+如果in的某些变量没有梯度,则用户应返回None。
+
+此功能还可用于调试正在运行的网络,可以通过添加没有输出的py_func运算,并在func中打印输入x。
+
+参数:
+ - **func** (callable) - 前向Python函数。
+ - **x** (Variable|list(Variable)|tuple(Variable)) - func的输入。
+ - **out** (Variable|list(Variable)|tuple(Variable)) - func的输出。 Paddle无法自动推断out的形状和数据类型。 应事先创建 ``out`` 。
+ - **backward_func** (callable|None) - 反向Python函数。 None意味着没有反向计算。 默认None。
+ - **skip_vars_in_backward_input** (Variable|list(Variable)|tuple(Variable)) - backward_func输入中不需要的变量。 这些变量必须是x和out中的一个。 如果设置,这些变量将不是backward_func的输入,仅在backward_func不是None时有用。 默认None。
+
+返回: 传入的 ``out``
+
+返回类型: out (Variable|list(Variable)|tuple(Variable))
+
+**代码示例**:
+
+.. code-block:: python
+
+ import paddle.fluid as fluid
+ import six
+
+ def create_tmp_var(name, dtype, shape):
+ return fluid.default_main_program().current_block().create_var(
+ name=name, dtype=dtype, shape=shape)
+
+ # Paddle C++ op提供的tanh激活函数
+ # 此处仅采用tanh作为示例展示py_func的使用方法
+ def tanh(x):
+ return np.tanh(x)
+
+ # 跳过前向输入x
+ def tanh_grad(y, dy):
+ return np.array(dy) * (1 - np.square(np.array(y)))
+
+ def debug_func(x):
+ print(x)
+
+ def simple_net(img, label):
+ hidden = img
+ for idx in six.moves.range(4):
+ hidden = fluid.layers.fc(hidden, size=200)
+ new_hidden = create_tmp_var(name='hidden_{}'.format(idx),
+ dtype=hidden.dtype, shape=hidden.shape)
+
+ # 用户自定义的前向反向计算
+ hidden = fluid.layers.py_func(func=tanh, x=hidden,
+ out=new_hidden, backward_func=tanh_grad,
+ skip_vars_in_backward_input=hidden)
+
+ # 用户自定义的调试层,可以打印出变量细则
+ fluid.layers.py_func(func=debug_func, x=hidden, out=None)
+
+ prediction = fluid.layers.fc(hidden, size=10, act='softmax')
+ loss = fluid.layers.cross_entropy(input=prediction, label=label)
+ return fluid.layers.mean(loss)
+
@@ -7711,6 +8078,73 @@ shape算子
+.. _cn_api_fluid_layers_shuffle_channel:
+
+shuffle_channel
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.shuffle_channel(x, group, name=None)
+
+**Shuffle Channel 运算(通道重排运算)**
+
+该运算符将输入 ``x`` 的通道混洗重排。 它将每个组中的输入通道分成 ``group`` 个子组,并通过逐个从每个子组中选择元素来获得新的顺序。
+
+请参阅 https://arxiv.org/pdf/1707.01083.pdf
+
+::
+
+ 输入一个形为 (N, C, H, W) 的4-D tensor:
+
+ input.shape = (1, 4, 2, 2)
+ input.data =[[[[0.1, 0.2],
+ [0.2, 0.3]],
+
+ [[0.3, 0.4],
+ [0.4, 0.5]],
+
+ [[0.5, 0.6],
+ [0.6, 0.7]],
+
+ [[0.7, 0.8],
+ [0.8, 0.9]]]]
+
+ 指定组数 group: 2
+ 可得到与输入同形的输出 4-D tensor:
+
+ out.shape = (1, 4, 2, 2)
+ out.data = [[[[0.1, 0.2],
+ [0.2, 0.3]],
+
+ [[0.5, 0.6],
+ [0.6, 0.7]],
+
+ [[0.3, 0.4],
+ [0.4, 0.5]],
+
+ [[0.7, 0.8],
+ [0.8, 0.9]]]]
+
+参数:
+ - **x** (Variable) – 输入张量变量。 应是形状为[N,C,H,W]的4-D张量
+ - **group** (int) – 表示子组的数目,它应该整除通道数。
+
+返回:通道混洗结果是一个张量变量,其形状和类型与输入相同。
+
+返回类型:输出(Variable)
+
+
+**代码示例:**
+
+.. code-block:: python
+
+ input = fluid.layers.data(name='input', shape=[4,2,2], dtype='float32')
+ out = fluid.layers.shuffle_channel(x=input, group=2)
+
+
+
+
+
+
@@ -8424,7 +8858,37 @@ Swish 激活函数
y = fluid.layers.swish(x, beta=2.0)
+.. _cn_api_fluid_layers_teacher_student_sigmoid_loss:
+teacher_student_sigmoid_loss
+-----------------------------------
+
+.. py:function:: paddle.fluid.layers.teacher_student_sigmoid_loss(input, label, soft_max_up_bound=15.0, soft_max_lower_bound=-15.0)
+
+**Teacher Student Log Loss Layer(教师--学生对数损失层)**
+
+此图层接受输入预测和目标标签,并返回teacher_student损失。
+
+.. math::
+
+ loss = max(x, 0) - x * z + log(1 + exp(-abs(x))) + max(x, 0) - x * z' + log(1 + exp(-abs(x)))
+
+
+参数:
+ - **input** (Variable|list) – 形状为[N x 1]的二维张量,其中N是批大小batch size。 该输入是由前一个运算计算而得的概率。
+ - **label** (Variable|list) – 具有形状[N x 1]的二维张量的真实值,其中N是批大小batch_size。
+ - **soft_max_up_bound** (float) – 若input > soft_max_up_bound, 输入会被向下限制。默认为15.0
+ - **soft_max_lower_bound** (float) – 若input < soft_max_lower_bound, 输入将会被向上限制。默认为-15.0
+
+返回:具有形状[N x 1]的2-D张量,teacher_student_sigmoid_loss。
+
+返回类型:变量
+
+**代码示例**:
+
+.. code-block:: python
+
+ cost = fluid.layers.teacher_student_sigmoid_loss(input=similarity, label=label)
@@ -8522,6 +8986,61 @@ transpose
+.. _cn_api_fluid_layers_tree_conv:
+
+tree_conv
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.tree_conv(nodes_vector, edge_set, output_size, num_filters=1, max_depth=2, act='tanh', param_attr=None, bias_attr=None, name=None)
+
+基于树结构的卷积Tree-Based Convolution运算。
+
+基于树的卷积是基于树的卷积神经网络(TBCNN,Tree-Based Convolution Neural Network)的一部分,它用于对树结构进行分类,例如抽象语法树。 Tree-Based Convolution提出了一种称为连续二叉树的数据结构,它将多路(multiway)树视为二叉树。 提出基于树的卷积论文: https://arxiv.org/abs/1409.5718v1
+
+参数:
+ - **nodes_vector** (Variable) – (Tensor) 树上每个节点的特征向量(vector)。特征向量的形状必须为[max_tree_node_size,feature_size]
+ - **edge_set** (Variable) – (Tensor) 树的边。边必须带方向。边集的形状必须是[max_tree_node_size,2]
+ - **output_size** (int) – 输出特征宽度
+ - **num_filters** (int) – filter数量,默认值1
+ - **max_depth** (int) – filter的最大深度,默认值2
+ - **act** (str) – 激活函数,默认 tanh
+ - **param_attr** (ParamAttr) – filter的参数属性,默认None
+ - **bias_attr** (ParamAttr) – 此层bias的参数属性,默认None
+ - **name** (str) – 此层的名称(可选)。如果设置为None,则将自动命名层,默认为None
+
+
+返回: (Tensor)子树的特征向量。输出张量的形状是[max_tree_node_size,output_size,num_filters]。输出张量可以是下一个树卷积层的新特征向量
+
+返回类型:out(Variable)
+
+**代码示例**:
+
+.. code-block:: python
+
+ nodes_vector = layers.data(name='vectors', shape=[None, 10, 5], dtype='float32)
+ # batch size为None, 10代表数据集最大节点大小max_node_size,5表示向量宽度
+ edge_set = layers.data(name='edge_set', shape=[None, 10, 2], dtype='float32')
+ # None 代表batch size, 10 代表数据集的最大节点大小max_node_size, 2 代表每条边连接两个节点
+ # 边必须为有向边
+ out_vector = layers.tree_conv(nodes_vector, edge_set, 6, 1, 2, 'tanh',
+ ParamAttr(initializer=Constant(1.0), ParamAttr(initializer=Constant(1.0))
+ # 输出的形会是[None, 10, 6, 1],
+ # None 代表batch size, 10数据集的最大节点大小max_node_size, 6 代表输出大小output size, 1 代表 1 个filter
+ out_vector = layers.reshape(out_vector, shape=[None, 10, 6])
+ # reshape之后, 输出张量output tensor为下一个树卷积的nodes_vector
+ out_vector_2 = layers.tree_conv(out_vector, edge_set, 3, 4, 2, 'tanh',
+ ParamAttr(initializer=Constant(1.0), ParamAttr(initializer=Constant(1.0))
+ # 输出tensor也可以用来池化(论文中称为global pooling)
+ pooled = layers.reduce_max(out_vector, dims=2) # global 池化
+
+
+
+
+
+
+
+
+
@@ -10272,7 +10791,49 @@ bipartite_match
+.. _cn_api_fluid_layers_box_clip:
+
+box_clip
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.box_clip(input, im_info, name=None)
+
+将box框剪切为 ``im_info`` 给出的大小。对于每个输入框,公式如下:
+
+::
+
+ xmin = max(min(xmin, im_w - 1), 0)
+ ymin = max(min(ymin, im_h - 1), 0)
+ xmax = max(min(xmax, im_w - 1), 0)
+ ymax = max(min(ymax, im_h - 1), 0)
+
+其中im_w和im_h是从im_info计算的:
+
+::
+
+ im_h = round(height / scale)
+ im_w = round(weight / scale)
+
+
+参数:
+ - **input (variable)** – 输入框,最后一个维度为4
+ - **im_info (variable)** – 具有(高度height,宽度width,比例scale)排列的形为[N,3]的图像的信息。高度和宽度是输入大小,比例是输入大小和原始大小的比率
+ - **name (str)** – 该层的名称。 为可选项
+
+返回:剪切后的tensor
+
+返回类型: Variable
+
+
+**代码示例**
+
+.. code-block:: python
+ boxes = fluid.layers.data(
+ name='data', shape=[8, 4], dtype='float32', lod_level=1)
+ im_info = fluid.layers.data(name='im_info', shape=[3])
+ out = fluid.layers.box_clip(
+ input=boxes, im_info=im_info, inplace=True)
@@ -10546,7 +11107,84 @@ Detection Output Layer for Single Shot Multibox Detector(SSD)
+.. _cn_api_fluid_layers_generate_mask_labels:
+
+generate_mask_labels
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.generate_mask_labels(im_info, gt_classes, is_crowd, gt_segms, rois, labels_int32, num_classes, resolution)
+**为Mask-RCNN生成mask标签**
+
+对于给定的 RoI (Regions of Interest) 和相应的标签,该运算符可以对前景RoI进行采样。 该mask branch对每个前景RoI还具有 :math:`K*M^{2}` 维输出目标,用于编码分辨率为M×M的K个二进制mask,K个种类中的各种类分别对应一个这样的二进制mask。 此mask输出目标用于计算掩码分支的损失。
+
+请注意groud-truth(真实值,下简称GT)分段的数据格式。假设分段如下, 第一个实例有两个GT对象。 第二个实例有一个GT对象,该对象有两个GT分段。
+
+
+::
+
+ #[
+ # [[[229.14, 370.9, 229.14, 370.9, ...]],
+ # [[343.7, 139.85, 349.01, 138.46, ...]]], # 第0个实例对象
+ # [[[500.0, 390.62, ...],[115.48, 187.86, ...]]] # 第1个实例对象
+ #]
+
+ batch_masks = []
+ for semgs in batch_semgs:
+ gt_masks = []
+ for semg in semgs:
+ gt_segm = []
+ for polys in semg:
+ gt_segm.append(np.array(polys).reshape(-1, 2))
+ gt_masks.append(gt_segm)
+ batch_masks.append(gt_masks)
+
+
+ place = fluid.CPUPlace()
+ feeder = fluid.DataFeeder(place=place, feed_list=feeds)
+ feeder.feed(batch_masks)
+
+
+参数:
+ - **im_info** (Variable) – 具有形状[N,3]的2-D张量。 N是批量大小,其每个元素是图像的[高度,宽度,比例],对应第二维中的3。图像比例是 :math:`\frac{target\_size}{original\_size}` 。
+ - **gt_classes** (Variable) – 形为[M,1]的2-D LoDTensor。 M是真实值的总数,其每个元素都是一个类标签,对应第二维中的1。
+ - **is_crowd** (Variable) – 一个形为 ``gt_classes`` 的2-D LoDTensor,每个元素都是一个标志,指示一个groundtruth是否为crowd(群)。
+ - **gt_segms** (Variable) – 这个输入是一个形状为[S,2]的2D LoDTensor,它的LoD级别为3。通常用户不需要理解LoD,但用户应该在Reader中返回正确的数据格式。LoD [0]表示每个实例中GT对象的数目。 LoD [1]表示每个对象的分段数。 LoD [2]表示每个分段的多边形(polygon)数。S为多边形坐标点的总数。每个元素是(x,y)坐标点。
+ - **rois** (Variable) – 形为[R,4]的2-D LoDTensor。 R是RoI的总数,其中每个元素是在原始图像范围内具有(xmin,ymin,xmax,ymax)格式的边界框(bounding box)。
+ - **labels_int32** (Variable) – 形为[R,1]且类型为int32的2-D LoDTensor。 R与rois中的R含义相同。每个元素都反映了RoI的一个类标签。
+ - **num_classes** (int) – 种类数目
+ - **resolution** (int) – mask预测的分辨率
+
+返回:
+ - 形为[P,4]的2D LoDTensor。 P是采样出的RoI总数。每个元素都是在原始图像大小范围内具有[xmin,ymin,xmax,ymax]格式的边界框(bounding box)。
+ - mask_rois_has_mask_int32(Variable):形状为[P,1]的2D LoDTensor,其中每个元素为对于输入的RoI进行输出的mask RoI 索引
+ - mask_int32(Variable):形状为[P,K * M * M]的2D LoDTensor,K为种类数,M为mask预测的分辨率,每个元素都是二进制目标mask值。
+
+返回类型:mask_rois (Variable)
+
+**代码示例**:
+
+.. code-block:: python
+
+ im_info = fluid.layers.data(name="im_info", shape=[3],
+ dtype="float32")
+ gt_classes = fluid.layers.data(name="gt_classes", shape=[1],
+ dtype="float32", lod_level=1)
+ is_crowd = fluid.layers.data(name="is_crowd", shape=[1],
+ dtype="float32", lod_level=1)
+ gt_masks = fluid.layers.data(name="gt_masks", shape=[2],
+ dtype="float32", lod_level=3)
+ # rois, labels_int32 可以是
+ # fluid.layers.generate_proposal_labels 的输出
+ mask_rois, mask_index, mask_int32 = fluid.layers.generate_mask_labels(
+ im_info=im_info,
+ gt_classes=gt_classes,
+ is_crowd=is_crowd,
+ gt_segms=gt_masks,
+ rois=rois,
+ labels_int32=labels_int32,
+ num_classes=81,
+ resolution=14)
@@ -10738,9 +11376,62 @@ multi_box_head
+.. _cn_api_fluid_layers_multiclass_nms:
+multiclass_nms
+-------------------------------
+.. py:function:: paddle.fluid.layers.multiclass_nms(bboxes, scores, score_threshold, nms_top_k, keep_top_k, nms_threshold=0.3, normalized=True, nms_eta=1.0, background_label=0, name=None)
+**多分类NMS**
+
+该运算用于对边界框(bounding box)和评分进行多类非最大抑制(NMS)。
+
+在NMS中,如果提供 ``score_threshold`` 阈值,则此运算符贪婪地选择具有高于 ``score_threshold`` 的高分数的检测边界框(bounding box)的子集,然后如果nms_top_k大于-1,则选择最大的nms_top_k置信度分数。 接着,该运算符基于 ``nms_threshold`` 和 ``nms_eta`` 参数,通过自适应阈值NMS移去与已经选择的框具有高IOU(intersection over union)重叠的框。
+
+在NMS步骤后,如果keep_top_k大于-1,则每个图像最多保留keep_top_k个总bbox数。
+
+
+参数:
+ - **bboxes** (Variable) – 支持两种类型的bbox(bounding box):
+
+ 1. (Tensor)具有形[N,M,4]或[8 16 24 32]的3-D张量表示M个边界bbox的预测位置, N是批大小batch size。当边界框(bounding box)大小等于4时,每个边界框有四个坐标值,布局为[xmin,ymin,xmax,ymax]。
+ 2. (LoDTensor)形状为[M,C,4] M的三维张量是边界框的数量,C是种类数量
+
+ - **scores** (Variable) – 支持两种类型的分数:
+
+ 1. (tensor)具有形状[N,C,M]的3-D张量表示预测的置信度。 N是批量大小 batch size,C是种类数目,M是边界框bounding box的数量。对于每个类别,存在对应于M个边界框的总M个分数。请注意,M等于bboxes的第二维。
+ 2. (LoDTensor)具有形状[M,C]的2-D LoDTensor。 M是bbox的数量,C是种类数目。在这种情况下,输入bboxes应该是形为[M,C,4]的第二种情况。
+
+ - **background_label** (int) – 背景标签(类别)的索引,背景标签(类别)将被忽略。如果设置为-1,则将考虑所有类别。默认值:0
+ - **score_threshold** (float) – 过滤掉低置信度分数的边界框的阈值。如果没有提供,请考虑所有边界框。
+ - **nms_top_k** (int) – 根据通过score_threshold的过滤后而得的检测(detection)的置信度,所需要保留的最大检测数。
+ - **nms_threshold** (float) – 在NMS中使用的阈值。默认值:0.3 。
+ - **nms_eta** (float) – 在NMS中使用的阈值。默认值:1.0 。
+ - **keep_top_k** (int) – NMS步骤后每个图像要保留的总bbox数。 -1表示在NMS步骤之后保留所有bbox。
+ - **normalized** (bool) – 检测是否已经经过正则化。默认值:True 。
+ - **name** (str) – 多类nms op(此op)的名称,用于自定义op在网络中的命名。默认值:None 。
+
+返回:形为[No,6]的2-D LoDTensor,表示检测(detections)结果。每行有6个值:[标签label,置信度confidence,xmin,ymin,xmax,ymax]。或形为[No,10]的2-D LoDTensor,用来表示检测结果。 每行有10个值:[标签label,置信度confidence,x1,y1,x2,y2,x3,y3,x4,y4]。 No是检测的总数。 如果对所有图像都没有检测到的box,则lod将设置为{1},而Out仅包含一个值-1。 (1.3版本之后,当未检测到box时,lod从{0}更改为{1})
+
+返回类型:Out
+
+**代码示例**
+
+.. code-block:: python
+
+ boxes = fluid.layers.data(name='bboxes', shape=[81, 4],
+ dtype='float32', lod_level=1)
+ scores = fluid.layers.data(name='scores', shape=[81],
+ dtype='float32', lod_level=1)
+ out = fluid.layers.multiclass_nms(bboxes=boxes,
+ scores=scores,
+ background_label=0,
+ score_threshold=0.5,
+ nms_top_k=400,
+ nms_threshold=0.3,
+ keep_top_k=200,
+ normalized=False)
@@ -11085,7 +11776,90 @@ target_assign
gt, matched_indices, mismatch_value=0)
+.. _cn_api_fluid_layers_yolov3_loss:
+
+yolov3_loss
+-------------------------------
+
+.. py:function:: paddle.fluid.layers.yolov3_loss(x, gtbox, gtlabel, anchors, anchor_mask, class_num, ignore_thresh, downsample_ratio, name=None)
+
+该运算通过给定的预测结果和真实框生成yolov3损失。
+
+之前的网络的输出形状为[N,C,H,W],而H和W应该相同,用来指定网格(grid)大小。每个网格点预测给定的数目的边界框(bounding boxes),这个给定的数字是由 ``anchors`` 指定的,我们将它记为S。在第二维(表示通道的维度)中,C的值应为S *(class_num + 5),class_num是源数据集的对象种类数(如coco中为80),另外,除了存储4个边界框位置坐标x,y,w,h,还包括边界框以及每个anchor框的one-hot关键字的置信度得分。
+
+假设有四个表征位置的坐标为 :math:`t_x, t_y, t_w, t_h` ,那么边界框的预测将会如下定义:
+
+ $$
+ b_x = \\sigma(t_x) + c_x
+ $$
+ $$
+ b_y = \\sigma(t_y) + c_y
+ $$
+ $$
+ b_w = p_w e^{t_w}
+ $$
+ $$
+ b_h = p_h e^{t_h}
+ $$
+
+在上面的等式中, :math:`c_x, c_y` 是当前网格的左上角, :math:`p_w, p_h` 由anchors指定。
+至于置信度得分,它是anchor框和真实框之间的IoU的逻辑回归值,anchor框的得分最高为1,此时该anchor框对应着最大IoU。
+如果anchor框之间的IoU大于忽略阀值ignore_thresh,则该anchor框的置信度评分损失将会被忽略。
+
+因此,yolov3损失包括三个主要部分,框位置损失,置信度评分损失,分类损失。L2损失用于
+框坐标(w,h),同时,sigmoid交叉熵损失用于框坐标(x,y),置信度评分损失和分类损失。
+
+每个真实框在所有anchor中找到最匹配的anchor,预测各anchor框都将会产生所有三种损失的计算,但是没有匹配GT box(ground truth box真实框)的anchor的预测只会产生目标损失。
+
+为了权衡大框(box)和小(box)之间的框坐标损失,框坐标损失将与比例权重相乘而得。即:
+
+ $$
+ weight_{box} = 2.0 - t_w * t_h
+ $$
+
+最后的loss值将如下计算:
+
+ $$
+ loss = (loss_{xy} + loss_{wh}) * weight_{box} + loss_{conf} + loss_{class}
+ $$
+
+
+参数:
+ - **x** (Variable) – YOLOv3损失运算的输入张量,这是一个形状为[N,C,H,W]的四维张量。H和W应该相同,第二维(C)存储框的位置信息,以及每个anchor box的置信度得分和one-hot分类
+ - **gtbox** (Variable) – 真实框,应该是[N,B,4]的形状。第三维用来承载x、y、w、h,x、y、w、h应该是输入图像相对值。 N是batch size,B是图像中所含有的的最多的box数目
+ - **gtlabel** (Variable) – 真实框的类id,应该形为[N,B]。
+ - **anchors** (list|tuple) – 指定anchor框的宽度和高度,它们将逐对进行解析
+ - **anchor_mask** (list|tuple) – 当前YOLOv3损失计算中使用的anchor的mask索引
+ - **class_num** (int) – 要预测的类数
+ - **ignore_thresh** (float) – 一定条件下忽略某框置信度损失的忽略阈值
+ - **downsample_ratio** (int) – 从网络输入到YOLOv3 loss输入的下采样率,因此应为第一,第二和第三个YOLOv3损失运算设置32,16,8
+ - **name** (string) – yolov3损失层的命名
+
+
+返回: 具有形状[1]的1-D张量,yolov3损失的值
+
+返回类型: 变量(Variable)
+
+抛出异常:
+ - ``TypeError`` – yolov3_loss的输入x必须是Variable
+ - ``TypeError`` – 输入yolov3_loss的gtbox必须是Variable
+ - ``TypeError`` – 输入yolov3_loss的gtlabel必须是Variable
+ - ``TypeError`` – 输入yolov3_loss的anchors必须是list或tuple
+ - ``TypeError`` – 输入yolov3_loss的class_num必须是整数integer类型
+ - ``TypeError`` – 输入yolov3_loss的ignore_thresh必须是一个浮点数float类型
+
+**代码示例**
+
+.. code-block:: python
+ x = fluid.layers.data(name='x', shape=[255, 13, 13], dtype='float32')
+ gtbox = fluid.layers.data(name='gtbox', shape=[6, 5], dtype='float32')
+ gtlabel = fluid.layers.data(name='gtlabel', shape=[6, 1], dtype='int32')
+ anchors = [10, 13, 16, 30, 33, 23, 30, 61, 62, 45, 59, 119, 116, 90, 156, 198, 373, 326]
+ anchor_mask = [0, 1, 2]
+ loss = fluid.layers.yolov3_loss(x=x, gtbox=gtbox, gtlabel=gtlabel, anchors=anchors,
+ anchor_mask=anchor_mask, class_num=80,
+ ignore_thresh=0.7, downsample_ratio=32)
diff --git a/doc/fluid/beginners_guide/install/FAQ.md b/doc/fluid/beginners_guide/install/FAQ.md
index 97455a1f7..595dc4443 100644
--- a/doc/fluid/beginners_guide/install/FAQ.md
+++ b/doc/fluid/beginners_guide/install/FAQ.md
@@ -1,26 +1,33 @@
-***
-
-
+
# **FAQ**
-- CentOS6下如何编译python2.7为共享库?
-
+
+- 报错“nccl.h找不到”
+
+ > 请[安装nccl2](https://developer.nvidia.com/nccl/nccl-download)
+
+- 报错`Cannot uninstall 'six'.`
+
+ > 此问题可能与系统中已有Python有关,请使用`pip install paddlepaddle --ignore-installed six`(CPU)或`pip install paddlepaddle --ignore-installed six`(GPU)解决
+
+- CentOS6下如何编译python2.7为共享库?
+
> 使用以下指令:
-
- ./configure --prefix=/usr/local/python2.7 --enable-shared
- make && make install
+
+ ./configure --prefix=/usr/local/python2.7 --enable-shared
+ make && make install
- Ubuntu18.04下libidn11找不到?
-
+
> 使用以下指令:
-
- apt install libidn11
+
+ apt install libidn11
- Ubuntu编译时出现大量的代码段不能识别?
-
+
> 这可能是由于cmake版本不匹配造成的,请在gcc的安装目录下使用以下指令:
-
+
apt install gcc-4.8 g++-4.8
cp gcc gcc.bak
cp g++ g++.bak
@@ -28,46 +35,21 @@
rm g++
ln -s gcc-4.8 gcc
ln -s g++-4.8 g++
-
+- 遇到paddlepaddle.whl is not a supported wheel on this platform?
+ > 出现这个问题的主要原因是,没有找到和当前系统匹配的paddlepaddle安装包。 请检查Python版本是否为2.7系列。另外最新的pip官方源中的安装包默认是manylinux1标准, 需要使用最新的pip (>9.0.0) 才可以安装。您可以执行以下指令更新您的pip:
-- 遇到paddlepaddle*.whl is not a supported wheel on this platform?
-
- > 出现这个问题的主要原因是,没有找到和当前系统匹配的paddlepaddle安装包。 请检查Python版本是否为2.7系列。另外最新的pip官方源中的安装包默认是manylinux1标准, 需要使用最新的pip (>9.0.0) 才可以安装。您可以执行以下指令更新您的pip:
-
- pip install --upgrade pip
- 或者
-
- python -c "import pip; print(pip.pep425tags.get_supported())"
+ pip install --upgrade pip
+ 或者
+
+ python -c "import pip; print(pip.pep425tags.get_supported())"
> 如果系统支持的是 linux_x86_64 而安装包是 manylinux1_x86_64 ,需要升级pip版本到最新; 如果系统支持 manylinux1_x86_64 而安装包 (本地)是 linux_x86_64, 可以重命名这个whl包为 manylinux1_x86_64 再安装。
- 使用Docker编译出现问题?
-
- > 请参照GitHub上[Issue12079](https://github.com/PaddlePaddle/Paddle/issues/12079)
-
-- 什么是 Docker?
-
- > 如果您没有听说 Docker,可以把它想象为一个类似 virtualenv 的系统,但是虚拟的不仅仅是 Python 的运行环境。
-
-- Docker 还是虚拟机?
-
- > 有人用虚拟机来类比 Docker。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
-- 为什么用 Docker?
-
- > 把工具和配置都安装在一个 Docker image 里可以标准化编译环境。这样如果遇到问题,其他人可以复现问题以便帮助。
- 另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。
-
-- 可以选择不用Docker吗?
-
- > 当然可以。大家可以用把开发工具安装进入 Docker image 一样的方式,把这些工具安装到本机。这篇文档介绍基于 Docker 的开发流程,是因为这个流程比其他方法都更简便。
-
-- 学习 Docker 有多难?
-
- > 理解 Docker 并不难,大概花十分钟看一下[这篇文章](https://zhuanlan.zhihu.com/p/19902938)。
- 这可以帮您省掉花一小时安装和配置各种开发工具,以及切换机器时需要新安装的辛苦。别忘了 PaddlePaddle 更新可能导致需要新的开发工具。更别提简化问题复现带来的好处了。
+ > 请参照GitHub上[Issue12079](https://github.com/PaddlePaddle/Paddle/issues/12079)
- 可以用 IDE 吗?
@@ -81,10 +63,6 @@
> 是的。我们的 Docker image 运行一个 [Bash 脚本](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/paddle/scripts/paddle_build.sh)。这个脚本调用`make -j$(nproc)` 来启动和 CPU 核一样多的进程来并行编译。
-- Docker 需要 sudo?
-
- > 如果用自己的电脑开发,自然也就有管理员权限(sudo)了。如果用公用的电脑开发,需要请管理员安装和配置好 Docker。此外,PaddlePaddle 项目在努力开始支持其他不需要 sudo 的集装箱技术,比如 rkt。
-
- 在 Windows/MacOS 上编译很慢?
> Docker 在 Windows 和 MacOS 都可以运行。不过实际上是运行在一个 Linux 虚拟机上。可能需要注意给这个虚拟机多分配一些 CPU 和内存,以保证编译高效。具体做法请参考[issue627](https://github.com/PaddlePaddle/Paddle/issues/627)。
@@ -94,24 +72,24 @@
> 本文中的例子里,`docker run` 命令里都用了 `--rm` 参数,这样保证运行结束之后的 containers 不会保留在磁盘上。可以用 `docker ps -a` 命令看到停止后但是没有删除的 containers。`docker build` 命令有时候会产生一些中间结果,是没有名字的 images,也会占用磁盘。可以参考 [这篇文章](https://zaiste.net/posts/removing_docker_containers) 来清理这些内容。
- 在DockerToolbox下使用book时`http://localhost:8888/`无法打开?
-
+
> 需要将localhost替换成虚拟机ip,一般需要在浏览器中输入:`http://192.168.99.100:8888/`
- pip install gpu版本的PaddlePaddle后运行出现SegmentFault如下:
-
+
@ 0x7f6c8d214436 paddle::platform::EnforceNotMet::EnforceNotMet()
-
- @ 0x7f6c8dfed666 paddle::platform::GetCUDADeviceCount()
-
+
+ @ 0x7f6c8dfed666 paddle::platform::GetCUDADeviceCount()
+
@ 0x7f6c8d2b93b6 paddle::framework::InitDevices()
-
-
+
+
> 出现这个问题原因主要是由于您的显卡驱动低于对应CUDA版本的要求,请保证您的显卡驱动支持所使用的CUDA版本
-
-
-- MacOS下安装PaddlePaddle后import paddle.fluid出现`Fatal Python error: PyThreadState_Get: no current thread running`错误
+
+
+- MacOS下安装PaddlePaddle后import paddle.fluid出现`Fatal Python error: PyThreadState_Get: no current thread running`错误
- For Python2.7.x (install by brew): 请使用`export LD_LIBRARY_PATH=/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7 && export DYLD_LIBRARY_PATH=/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7`
- For Python2.7.x (install by Python.org): 请使用`export LD_LIBRARY_PATH=/Library/Frameworks/Python.framework/Versions/2.7 && export DYLD_LIBRARY_PATH=/Library/Frameworks/Python.framework/Versions/2.7`
@@ -120,11 +98,11 @@
- MACOS下使用自定义的openblas 详见issue:
-
+
> [ISSUE 13217](https://github.com/PaddlePaddle/Paddle/issues/13721)
- 已经安装swig但是仍旧出现swig找不到的问题 详见issue:
-
+
> [ISSUE 13759](https://github.com/PaddlePaddle/Paddle/issues/13759)
- 出现 “target pattern contain no '%'.”的问题 详见issue:
diff --git a/doc/fluid/beginners_guide/install/Tables.md b/doc/fluid/beginners_guide/install/Tables.md
index 6ef975c29..1620a711e 100644
--- a/doc/fluid/beginners_guide/install/Tables.md
+++ b/doc/fluid/beginners_guide/install/Tables.md
@@ -324,40 +324,7 @@ PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。
您可以在 [Release History](https://pypi.org/project/paddlepaddle-gpu/#history) 中找到PaddlePaddle-gpu的各个发行版本。
***
-
-
-## **安装镜像表及简介**
-
-
-
-
- 版本号 |
- 版本说明 |
-
-
-
-
- hub.baidubce.com/paddlepaddle/paddle:latest |
- 最新的预先安装好PaddlePaddle CPU版本的镜像 |
-
-
- hub.baidubce.com/paddlepaddle/paddle:latest-dev |
- 最新的PaddlePaddle的开发环境 |
-
-
- hub.baidubce.com/paddlepaddle/paddle:[Version] |
- 将version换成具体的版本,历史版本的预安装好PaddlePaddle的镜像 |
-
-
- hub.baidubce.com/paddlepaddle/paddle:latest-gpu |
- 最新的预先安装好PaddlePaddle GPU版本的镜像 |
-
-
-
-
-
-您可以在 [DockerHub](https://hub.docker.com/r/paddlepaddle/paddle/tags/) 中找到PaddlePaddle的各个发行的版本的docker镜像。
***
@@ -381,81 +348,82 @@ PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。
cpu-noavx-mkl |
-
- paddlepaddle-1.2.0-cp27-cp27mu-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp27-cp27m-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp35-cp35m-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp36-cp36m-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp37-cp37m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp27-cp27mu-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp27-cp27m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp35-cp35m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp36-cp36m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp37-cp37m-linux_x86_64.whl |
cpu_avx_mkl |
-
- paddlepaddle-1.2.0-cp27-cp27mu-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp27-cp27m-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp35-cp35m-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp36-cp36m-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp37-cp37m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp27-cp27mu-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp27-cp27m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp35-cp35m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp36-cp36m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp37-cp37m-linux_x86_64.whl |
cpu_avx_openblas |
-
- paddlepaddle-1.2.0-cp27-cp27mu-linux_x86_64.whl |
- paddlepaddle-1.2.0-cp27-cp27m-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp35-cp35m-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp36-cp36m-linux_x86_64.whl |
-
- paddlepaddle-1.2.0-cp37-cp37m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp27-cp27mu-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp27-cp27m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp35-cp35m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp36-cp36m-linux_x86_64.whl |
+
+ paddlepaddle-1.3.0-cp37-cp37m-linux_x86_64.whl |
cuda8.0_cudnn5_avx_mkl |
- paddlepaddle_gpu-1.2.0-cp27-cp27mu-linux_x86_64.whl |
- paddlepaddle_gpu-1.2.0-cp27-cp27m-linux_x86_64.whl |
- paddlepaddle_gpu-1.2.0-cp35-cp35m-linux_x86_64.whl |
-
- paddlepaddle_gpu-1.2.0-cp36-cp36m-linux_x86_64.whl |
-
- paddlepaddle_gpu-1.2.0-cp37-cp37m-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0-cp27-cp27mu-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0-cp27-cp27m-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl |
+
+ paddlepaddle_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl |
+
+ paddlepaddle_gpu-1.3.0-cp37-cp37m-linux_x86_64.whl |
cuda8.0_cudnn7_noavx_mkl |
- paddlepaddle_gpu-1.2.0-cp27-cp27mu-linux_x86_64.whl |
- paddlepaddle_gpu-1.2.0-cp27-cp27m-linux_x86_64.whl |
- paddlepaddle_gpu-1.2.0-cp35-cp35m-linux_x86_64.whl |
-
- paddlepaddle_gpu-1.2.0-cp36-cp36m-linux_x86_64.whl |
-
- paddlepaddle_gpu-1.2.0-cp37-cp37m-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0-cp27-cp27mu-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0-cp27-cp27m-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl |
+
+ paddlepaddle_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl |
+
+ paddlepaddle_gpu-1.3.0-cp37-cp37m-linux_x86_64.whl |
cuda8.0_cudnn7_avx_mkl |
- paddlepaddle_gpu-1.2.0.post87-cp27-cp27mu-linux_x86_64.whl |
- paddlepaddle_gpu-1.2.0.post87-cp27-cp27m-linux_x86_64.whl |
- paddlepaddle_gpu-1.2.0.post87-cp35-cp35m-linux_x86_64.whl |
-
- paddlepaddle_gpu-1.2.0.post87-cp36-cp36m-linux_x86_64.whl |
-
- paddlepaddle_gpu-1.2.0.post87-cp37-cp37m-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0.post87-cp27-cp27mu-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0.post87-cp27-cp27m-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0.post87-cp35-cp35m-linux_x86_64.whl |
+
+ paddlepaddle_gpu-1.3.0.post87-cp36-cp36m-linux_x86_64.whl |
+
+ paddlepaddle_gpu-1.3.0.post87-cp37-cp37m-linux_x86_64.whl |
cuda9.0_cudnn7_avx_mkl |
- paddlepaddle_gpu-1.2.0-cp27-cp27mu-linux_x86_64.whl |
- paddlepaddle_gpu-1.2.0-cp27-cp27m-linux_x86_64.whl |
- paddlepaddle_gpu-1.2.0-cp35-cp35m-linux_x86_64.whl |
-
- paddlepaddle_gpu-1.2.0-cp36-cp36m-linux_x86_64.whl |
-
- paddlepaddle_gpu-1.2.0-cp37-cp37m-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0-cp27-cp27mu-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0-cp27-cp27m-linux_x86_64.whl |
+ paddlepaddle_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl |
+
+ paddlepaddle_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl |
+
+ paddlepaddle_gpu-1.3.0-cp37-cp37m-linux_x86_64.whl |
@@ -479,75 +447,75 @@ PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。
cpu-noavx-mkl |
-
+ |
paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl |
-
+ |
paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl |
-
+ |
paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl |
-
+ |
paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl |
-
+ |
paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl |
cpu_avx_mkl |
-
+ |
paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl |
-
+ |
paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl |
-
+ |
paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl |
-
+ |
paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl |
-
+ |
paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl |
cpu_avx_openblas |
-
+ |
paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl |
- paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl |
-
+ | paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl |
+
paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl |
-
+ |
paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl |
-
+ |
paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl |
cuda8.0_cudnn5_avx_mkl |
- paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl |
cuda8.0_cudnn7_noavx_mkl |
- paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl |
-
+ | paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl |
+
paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl |
-
+ |
paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl |
cuda8.0_cudnn7_avx_mkl |
- paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl |
cuda9.0_cudnn7_avx_mkl |
- paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl |
- paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl |
+ paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl |
diff --git a/doc/fluid/beginners_guide/install/compile/compile_CentOS.md b/doc/fluid/beginners_guide/install/compile/compile_CentOS.md
index dee7be403..d6f2b19bf 100644
--- a/doc/fluid/beginners_guide/install/compile/compile_CentOS.md
+++ b/doc/fluid/beginners_guide/install/compile/compile_CentOS.md
@@ -1,42 +1,35 @@
-***
# **CentOS下从源码编译**
-本说明将介绍如何在*64位台式机或笔记本电脑*以及CentOS系统下编译PaddlePaddle,我们支持的Ubuntu系统需满足以下要求:
+## 环境准备
-* CentOS 7 / 6(这涉及到相关工具是否能被正常安装)
+* *64位操作系统*
+* *CentOS 6 / 7*
+* *Python 2.7/3.5/3.6/3.7*
+* *pip或pip3 >= 9.0.1*
-## 确定要编译的版本
-* **仅支持CPU的PaddlePaddle**。
+## 选择CPU/GPU
-
+* 目前仅支持在CentOS环境下编译安装CPU版本的PaddlePaddle
-## 选择如何编译
-我们在CentOS的系统下提供2种编译方式:
+## 安装步骤
-* Docker源码编译(不支持CentOS 6 / 7的GPU版本)(该镜像已经包含python2.7、python3.6、python3.7环境)
-* 直接本机源码编译(不支持CentOS 6的全部版本以及CentOS 7的GPU版本)
+在CentOS的系统下有2种编译方式:
-我们更加推荐**使用Docker进行编译**,因为我们在把工具和配置都安装在一个 Docker image 里。这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
-
-
-
-同样对于那些出于各种原因不能够安装Docker的用户我们也提供了可以从**本机直接源码编译**的方法,但是由于在本机上的情况更加复杂,因此我们只支持特定的系统。
+* Docker源码编译
+* 本机源码编译(不支持CentOS 6)
-
-
-
### ***使用Docker编译***
-为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)。
+[Docker](https://docs.docker.com/install/)是一个开源的应用容器引擎。使用Docker,既可以将PaddlePaddle的安装&使用与系统环境隔离,也可以与主机共享GPU、网络等资源
+
+使用Docker编译PaddlePaddle,您需要:
+- 在本地主机上[安装Docker](https://hub.docker.com/search/?type=edition&offering=community)
-
+- 如需在Linux开启GPU支持,请[安装nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
-当您已经**正确安装Docker**后你就可以开始**使用Docker编译PaddlePaddle**啦:
+请您按照以下步骤安装:
1. 请首先选择您希望储存PaddlePaddle的路径,然后在该路径下使用以下命令将PaddlePaddle的源码从github克隆到本地当前目录下名为Paddle的文件夹中:
@@ -44,27 +37,36 @@
2. 进入Paddle目录下: `cd Paddle`
-3. 利用我们提供的镜像(使用该命令您可以不必提前下载镜像):
+3. 创建并进入已配置好编译环境的Docker容器:
`docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash`
> --name paddle-test为您创建的Docker容器命名为paddle-test,-v $PWD:/paddle 将当前目录挂载到Docker容器中的/paddle目录下(Linux中PWD变量会展开为当前路径的[绝对路径](https://baike.baidu.com/item/绝对路径/481185)),-it 与宿主机保持交互状态,`hub.baidubce.com/paddlepaddle/paddle` 使用名为`hub.baidubce.com/paddlepaddle/paddle:latest-dev`的镜像创建Docker容器,/bin/bash 进入容器后启动/bin/bash命令。
-4. 进入Docker后进入paddle目录下:`cd paddle`
+4. 进入Docker后进入paddle目录下:
+
+ `cd paddle`
5. 切换到较稳定版本下进行编译:
- `git checkout v1.1`
+ `git checkout [分支名]`
+
+ 例如:
+
+ `git checkout release/1.2`
+
+ 注意:python3.6、python3.7版本从release/1.2分支开始支持
6. 创建并进入/paddle/build路径下:
`mkdir -p /paddle/build && cd /paddle/build`
-7. 使用以下命令安装相关依赖:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
+7. 使用以下命令安装相关依赖:
For Python2: pip install protobuf==3.1.0
For Python3: pip3.5 install protobuf==3.1.0
+ 注意:以上用Python3.5命令来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
> 安装protobuf 3.1.0。
@@ -75,7 +77,7 @@
8. 执行cmake:
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
- >请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 如以下命令中`-DPY_VERSION=3.5`表示python版本为3.5.x
+ >请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 例如`-DPY_VERSION=3.5`表示python版本为3.5.x
* 对于需要编译**CPU版本PaddlePaddle**的用户:
@@ -91,35 +93,23 @@
10. 编译成功后进入`/paddle/build/python/dist`目录下找到生成的`.whl`包: `cd /paddle/build/python/dist`
-11. 在当前机器或目标机器安装编译好的`.whl`包:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
+11. 在当前机器或目标机器安装编译好的`.whl`包:
For Python2: pip install (whl包的名字)
For Python3: pip3.5 install (whl包的名字)
+ 注意:以上涉及Python3的命令,用Python3.5来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
-至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)。
-
-> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
-
-恭喜您,现在您已经完成使用Docker编译PaddlePaddle的过程。
-
-
-
+恭喜,至此您已完成PaddlePaddle的编译安装。您只需要进入Docker容器后运行PaddlePaddle,即可开始使用。更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
+> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 来安装
-
-
-
### ***本机编译***
-**请严格按照以下指令顺序执行**
-
-
-
1. 检查您的计算机和操作系统是否符合我们支持的编译标准: `uname -m && cat /etc/*release`
-2. 更新`yum`的源: `yum update`, 并添加必要的yum源:`yum install -y epel-release`, 并提前安装openCV
+2. 更新`yum`的源: `yum update`, 并添加必要的yum源:`yum install -y epel-release`, 并提前安装[OpenCV](https://opencv.org/releases.html)
3. 安装必要的工具`bzip2`以及`make`: `yum install -y bzip2` , `yum install -y make`
@@ -159,7 +149,7 @@
5. 进入虚环境:`workon paddle-venv`
-6. **执行编译前**请您确认在虚环境中安装有[编译依赖表](../Tables.html/#third_party)中提到的相关依赖:
+6. **执行编译前**请您确认在虚环境中安装有[编译依赖表](../Tables.html/#third_party)中提到的相关依赖:
* 这里特别提供`patchELF`的安装方法,其他的依赖可以使用`yum install`或者`pip install`/`pip3 install` 后跟依赖名称和版本安装:
@@ -172,7 +162,11 @@
- `cd Paddle`
-8. 切换到较稳定release分支下进行编译(从1.2分支开始支持python3.6及3.7版本):
+8. 切换到较稳定release分支下进行编译:
+
+ `git checkout [分支名]`
+
+ 例如:
`git checkout release/1.2`
@@ -182,7 +176,7 @@
10. 执行cmake:
- >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
+ >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
* 对于需要编译**CPU版本PaddlePaddle**的用户:
@@ -203,16 +197,14 @@
`pip install (whl包的名字)`或`pip3 install (whl包的名字)`
-恭喜您,现在您已经完成使本机编译PaddlePaddle的过程了。
+恭喜,至此您已完成PaddlePaddle的编译安装
-
-
-
## ***验证安装***
-安装完成后您可以使用:`python` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
+安装完成后您可以使用:`python` 或 `python3` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
-
## ***如何卸载***
-请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用对应版本pip):
+请使用以下命令卸载PaddlePaddle:
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle`
+
+使用Docker安装PaddlePaddle的用户,请进入包含PaddlePaddle的容器中使用上述命令,注意使用对应版本的pip
diff --git a/doc/fluid/beginners_guide/install/compile/compile_MacOS.md b/doc/fluid/beginners_guide/install/compile/compile_MacOS.md
index d85d19694..1ca671b86 100644
--- a/doc/fluid/beginners_guide/install/compile/compile_MacOS.md
+++ b/doc/fluid/beginners_guide/install/compile/compile_MacOS.md
@@ -1,48 +1,34 @@
-***
# **MacOS下从源码编译**
-本说明将介绍如何在*64位台式机或笔记本电脑*以及MacOS系统下编译PaddlePaddle,我们支持的MacOS系统需满足#以下要求:
+## 环境准备
-* MacOS 10.12/10.13/10.14(这涉及到相关工具是否能被正常安装)
+* *64位操作系统*
+* *MacOS 10.12/10.13/10.14*
+* *Python 2.7/3.5/3.6/3.7*
+* *pip或pip3 >= 9.0.1*
-## 确定要编译的版本
-* **仅支持CPU的PaddlePaddle**。
-
-
-
-## 选择如何编译
-在MacOS 10.12/10.13/10.14 的系统下我们提供2种编译方式:
-
-
-* Docker源码编译 (该镜像已经包含python2.7、python3.6、python3.7环境)
-* 直接本机源码编译
-
-
-
-
-我们更加推荐**使用Docker进行编译**,因为我们在把工具和配置都安装在一个 Docker image 里。这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
-
-同样对于那些出于各种原因不能够安装Docker的用户我们也提供了可以从**本机直接源码编译**的方法,但是由于在本机上的情况更加复杂,因此我们只支持特定的系统。
+## 选择CPU/GPU
+* 目前仅支持在MacOS环境下编译安装CPU版本的PaddlePaddle
+## 安装步骤
+在MacOS系统下有2种编译方式:
+* Docker源码编译
+* 本机源码编译
-
-
-
-
### ***使用Docker编译***
-为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)。
+[Docker](https://docs.docker.com/install/)是一个开源的应用容器引擎。使用Docker,既可以将PaddlePaddle的安装&使用与系统环境隔离,也可以与主机共享GPU、网络等资源
+
+使用Docker编译PaddlePaddle,您需要:
-> 请注意,在MacOS系统下登陆docker需要使用您的dockerID进行登录,否则将出现`Authenticate Failed`错误。
+- 在本地主机上[安装Docker](https://hub.docker.com/search/?type=edition&offering=community)
+- 使用Docker ID登陆Docker,以避免出现`Authenticate Failed`错误
-当您已经**正确安装Docker**后你就可以开始**使用Docker编译PaddlePaddle**啦:
+请您按照以下步骤安装:
1. 进入Mac的终端
@@ -52,27 +38,36 @@
3. 进入Paddle目录下: `cd Paddle`
-4. 利用我们提供的镜像(使用该命令您可以不必提前下载镜像):
+4. 创建并进入满足编译环境的Docker容器:
`docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash`
> --name paddle-test为您创建的Docker容器命名为paddle-test,-v $PWD:/paddle 将当前目录挂载到Docker容器中的/paddle目录下(Linux中PWD变量会展开为当前路径的[绝对路径](https://baike.baidu.com/item/绝对路径/481185)),-it 与宿主机保持交互状态,`hub.baidubce.com/paddlepaddle/paddle:latest-dev` 使用名为`hub.baidubce.com/paddlepaddle/paddle:latest-dev`的镜像创建Docker容器,/bin/bash 进入容器后启动/bin/bash命令。
-5. 进入Docker后进入paddle目录下:`cd paddle`
+5. 进入Docker后进入paddle目录下:
+
+ `cd paddle`
6. 切换到较稳定版本下进行编译:
- `git checkout v1.1`
+ `git checkout [分支名]`
+
+ 例如:
+
+ `git checkout release/1.2`
+
+ 注意:python3.6、python3.7版本从release/1.2分支开始支持
7. 创建并进入/paddle/build路径下:
`mkdir -p /paddle/build && cd /paddle/build`
-8. 使用以下命令安装相关依赖:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
+8. 使用以下命令安装相关依赖:
For Python2: pip install protobuf==3.1.0
For Python3: pip3.5 install protobuf==3.1.0
+ 注意:以上用Python3.5命令来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
> 安装protobuf 3.1.0。
@@ -82,18 +77,14 @@
9. 执行cmake:
- >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
- >请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 如以下命令中`-DPY_VERSION=3.5`表示python版本为3.5.x
-
+ >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
+ >请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 例如`-DPY_VERSION=3.5`表示python版本为3.5.x
* 对于需要编译**CPU版本PaddlePaddle**的用户:
`cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release`
- > 我们目前不支持CentOS下GPU版本PaddlePaddle的编译
-
-
-
+ > 我们目前不支持MacOS下GPU版本PaddlePaddle的编译
10. 执行编译:
@@ -103,30 +94,28 @@
11. 编译成功后进入`/paddle/build/python/dist`目录下找到生成的`.whl`包: `cd /paddle/build/python/dist`
-12. 在当前机器或目标机器安装编译好的`.whl`包:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
+12. 在当前机器或目标机器安装编译好的`.whl`包:
For Python2: pip install (whl包的名字)
For Python3: pip3.5 install (whl包的名字)
+ 注意:以上涉及Python3的命令,用Python3.5来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
-至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)。
-
-> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
-
-恭喜您,现在您已经完成使用Docker编译PaddlePaddle的过程。
+恭喜,至此您已完成PaddlePaddle的编译安装。您只需要进入Docker容器后运行PaddlePaddle,即可开始使用。更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
+> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 来安装
+
### ***本机编译***
**请严格按照以下指令顺序执行**
+1. 检查您的计算机和操作系统是否符合我们支持的编译标准: `uname -m` 并且在`关于本机`中查看系统版本。并提前安装[OpenCV](https://opencv.org/releases.html)
-1. 检查您的计算机和操作系统是否符合我们支持的编译标准: `uname -m` 并且在`关于本机`中查看系统版本。并提前安装openCV。
+2. 安装Python以及pip:
-2. 安装python以及pip:
-
- > **请不要使用MacOS中自带python**,我们强烈建议您使用[Homebrew](https://brew.sh)安装python(对于**Python3**请使用python[官方下载](https://www.python.org/downloads/mac-osx/)python3.5.x、python3.6.x、python3.7.x), pip以及其他的依赖,这会大大降低您安装编译的难度。
+ > **请不要使用MacOS中自带Python**,我们强烈建议您使用[Homebrew](https://brew.sh)安装python(对于**Python3**请使用python[官方下载](https://www.python.org/downloads/mac-osx/)python3.5.x、python3.6.x、python3.7.x), pip以及其他的依赖,这将会使您高效编译。
For python2: brew install python@2
For python3: 使用Python官网安装
@@ -155,9 +144,6 @@
- g. (可选)如果您是在MacOS 10.14上编译PaddlePaddle,请保证您已经安装了[对应版本](http://developer.apple.com/download)的Xcode。
-
-
-
5. **执行编译前**请您确认您的环境中安装有[编译依赖表](../Tables.html/#third_party)中提到的相关依赖,否则我们强烈推荐使用`Homebrew`安装相关依赖。
> MacOS下如果您未自行修改或安装过“编译依赖表”中提到的依赖,则仅需要使用`pip`安装`numpy,protobuf,wheel`,使用`homebrew`安装`wget,swig`,另外安装`cmake`即可
@@ -171,24 +157,29 @@
- b. 如果您不想使用系统默认的blas而希望使用自己安装的OPENBLAS请参见[FAQ](../FAQ.html/#OPENBLAS)
-
6. 将PaddlePaddle的源码clone在当下目录下的Paddle的文件夹中,并进入Padde目录下:
- `git clone https://github.com/PaddlePaddle/Paddle.git`
- `cd Paddle`
-7. 切换到较稳定release分支下进行编译:(注意,python3.6、python3.7版本是从1.2分支开始支持)
+7. 切换到较稳定release分支下进行编译:
+
+ `git checkout [分支名]`
+
+ 例如:
`git checkout release/1.2`
+ 注意:python3.6、python3.7版本从release/1.2分支开始支持
+
8. 并且请创建并进入一个叫build的目录下:
`mkdir build && cd build`
9. 执行cmake:
- >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
+ >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
* 对于需要编译**CPU版本PaddlePaddle**的用户:
@@ -197,7 +188,6 @@
-DPYTHON_LIBRARY=${PYTHON_LIBRARY} -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
>`-DPY_VERSION=3.5`请修改为安装环境的Python版本
-
10. 使用以下命令来编译:
`make -j4`
@@ -210,17 +200,14 @@
> 如果您的电脑上安装有多个python环境以及pip请参见[FAQ](../Tables.html/#MACPRO)
-恭喜您,现在您已经完成使用本机编译PaddlePaddle的过程了。
-
+恭喜,至此您已完成PaddlePaddle的编译安装
-
-
-
## ***验证安装***
-安装完成后您可以使用:`python` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
+安装完成后您可以使用:`python` 或 `python3` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
-
## ***如何卸载***
-请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用相应版本的pip):
+请使用以下命令卸载PaddlePaddle
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle`
+
+使用Docker安装PaddlePaddle的用户,请进入包含PaddlePaddle的容器中使用上述命令,注意使用对应版本的pip
diff --git a/doc/fluid/beginners_guide/install/compile/compile_Ubuntu.md b/doc/fluid/beginners_guide/install/compile/compile_Ubuntu.md
index bdd28ac3f..c5df79010 100644
--- a/doc/fluid/beginners_guide/install/compile/compile_Ubuntu.md
+++ b/doc/fluid/beginners_guide/install/compile/compile_Ubuntu.md
@@ -1,44 +1,41 @@
-***
-
# **Ubuntu下从源码编译**
-本说明将介绍如何在*64位台式机或笔记本电脑*以及Ubuntu系统下编译PaddlePaddle,我们支持的Ubuntu系统需满足以下要求:
-
-* Ubuntu 14.04/16.04/18.04(这涉及到相关工具是否能被正常安装)
-
-## 确定要编译的版本
-* **仅支持CPU的PaddlePaddle**,如果您的系统没有 NVIDIA® GPU,则必须安装此版本。而此版本较GPU版本更加容易安
-因此即使您的计算机上拥有GPU我们也推荐您先安装CPU版本的PaddlePaddle来检测您本地的环境是否适合。
+## 环境准备
-* **支持GPU的PaddlePaddle**,为了使得PaddlePaddle程序运行的更加迅速,我们通常使用GPU对PaddlePaddle程序进行加速,但安装GPU版本的PaddlePaddle需要先拥有满足以下条件的NVIDIA® GPU(具体安装流程和配置请务必参见NVIDIA官方文档:[For CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/),[For cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/))
- * *CUDA 工具包9.0配合cuDNN v7*
- * *CUDA 工具包8.0配合cuDNN v7*
- * *GPU运算能力超过1.0的硬件设备*
+* *64位操作系统*
+* *Ubuntu 14.04 /16.04 /18.04*
+* *Python 2.7/3.5/3.6/3.7*
+* *pip或pip3 >= 9.0.1*
-## 选择如何编译
-在Ubuntu的系统下我们提供2种编译方式:
+## 选择CPU/GPU
-* Docker源码编译 (该镜像已经包含python2.7、python3.6、python3.7环境)
-* 直接本机源码编译(不支持ubuntu18.04下GPU版本)
+* 如果您的计算机没有 NVIDIA® GPU,请编译CPU版的PaddlePaddle
-我们更加推荐**使用Docker进行编译**,因为我们在把工具和配置都安装在一个 Docker image 里。这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。有人用虚拟机来类比 Docker。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
+* 如果您的计算机有NVIDIA® GPU,并且满足以下条件,推荐编译GPU版的PaddlePaddle
+ * *CUDA 工具包9.0配合cuDNN v7*
+ * *CUDA 工具包8.0配合cuDNN v7*
+ * *CUDA 工具包8.0配合cuDNN v5*
+ * *GPU运算能力超过1.0的硬件设备*
+## 安装步骤
+在Ubuntu的系统下有2种编译方式:
-我们也提供了可以从**本机直接源码编译**的方法,但是由于在本机上的情况更加复杂,我们只对特定系统提供了支持。
+* Docker源码编译(暂不支持Ubuntu18.04下GPU版本)
+* 本机源码编译
+### 用Docker编译
-
-### ***使用Docker编译***
-为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)
+[Docker](https://docs.docker.com/install/)是一个开源的应用容器引擎。使用Docker,既可以将PaddlePaddle的安装&使用与系统环境隔离,也可以与主机共享GPU、网络等资源
+使用Docker编译PaddlePaddle,您需要:
-> 请注意,要安装和使用支持 GPU 的PaddlePaddle版本,您必须先安装[nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
+- 在本地主机上[安装Docker](https://hub.docker.com/search/?type=edition&offering=community)
+- 如需在Linux开启GPU支持,请[安装nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
-
-当您已经**正确安装Docker**后你就可以开始**使用Docker编译PaddlePaddle**:
+请您按照以下步骤安装:
1. 请首先选择您希望储存PaddlePaddle的路径,然后在该路径下使用以下命令将PaddlePaddle的源码从github克隆到本地当前目录下名为Paddle的文件夹中:
@@ -46,47 +43,58 @@
2. 进入Paddle目录下: `cd Paddle`
-3. 利用我们提供的镜像(使用该命令您可以不必提前下载镜像):
+3. 创建并进入满足编译环境的Docker容器:
`docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash`
> --name paddle-test为您创建的Docker容器命名为paddle-test,-v $PWD:/paddle 将当前目录挂载到Docker容器中的/paddle目录下(Linux中PWD变量会展开为当前路径的[绝对路径](https://baike.baidu.com/item/绝对路径/481185)),-it 与宿主机保持交互状态,`hub.baidubce.com/paddlepaddle/paddle:latest-dev` 使用名为`hub.baidubce.com/paddlepaddle/paddle:latest-dev`的镜像创建Docker容器,/bin/bash 进入容器后启动/bin/bash命令。
-4. 进入Docker后进入paddle目录下:`cd paddle`
+4. 进入Docker后进入paddle目录下:
+
+ `cd paddle`
+
+5. 切换到较稳定release分支下进行编译:
-5. 切换到较稳定release分支下进行编译:(注意,python3.6、python3.7版本是从1.2分支开始支持)
+ `git checkout [分支名]`
+
+ 例如:
`git checkout release/1.2`
+ 注意:python3.6、python3.7版本从release/1.2分支开始支持
+
6. 创建并进入/paddle/build路径下:
`mkdir -p /paddle/build && cd /paddle/build`
-7. 使用以下命令安装相关依赖:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
+7. 使用以下命令安装相关依赖:
For Python2: pip install protobuf==3.1.0
For Python3: pip3.5 install protobuf==3.1.0
+ 注意:以上用Python3.5命令来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
+
> 安装protobuf 3.1.0。
`apt install patchelf`
- > 安装patchelf,PatchELF 是一个小而实用的程序,用于修改ELF可执行文件的动态链接器和RPATH。
+ > 安装patchelf
+ 这是一个小而实用的程序,用于修改ELF可执行文件的动态链接器和RPATH
8. 执行cmake:
- >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
- >请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 如以下命令中`-DPY_VERSION=3.5`表示python版本为3.5.x
+ >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
- * 对于需要编译**CPU版本PaddlePaddle**的用户:
+ >请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 例如`-DPY_VERSION=3.5`表示python版本为3.5.x
+
+ * 编译**CPU版本PaddlePaddle**:
`cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release`
- * 对于需要编译**GPU版本PaddlePaddle**的用户:
+ * 编译**GPU版本PaddlePaddle**:
`cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release`
-
9. 执行编译:
`make -j$(nproc)`
@@ -95,42 +103,37 @@
10. 编译成功后进入`/paddle/build/python/dist`目录下找到生成的`.whl`包: `cd /paddle/build/python/dist`
-11. 在当前机器或目标机器安装编译好的`.whl`包:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
+11. 在当前机器或目标机器安装编译好的`.whl`包:
For Python2: pip install (whl包的名字)
For Python3: pip3.5 install (whl包的名字)
+ 注意:以上涉及Python3的命令,用Python3.5来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
-至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)。
-
-> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
+恭喜,至此您已完成PaddlePaddle的编译安装。您只需要进入Docker容器后运行PaddlePaddle,即可开始使用。更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
-恭喜您,现在您已经完成使用Docker编译PaddlePaddle的过程。
+> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 来安装。
-
-
### ***本机编译***
-**请严格按照以下指令顺序执行**
-
1. 检查您的计算机和操作系统是否符合我们支持的编译标准: `uname -m && cat /etc/*release`
-2. 更新`apt`的源: `apt update`, 并提前安装openCV
+2. 更新`apt`的源: `apt update`, 并提前安装[OpenCV](https://opencv.org/releases.html)
3. 我们支持使用virtualenv进行编译安装,首先请使用以下命令创建一个名为`paddle-venv`的虚环境:
- * a. 安装Python-dev:(请安装与当前环境python版本匹配的python3.x-dev)
+ * a. 安装Python-dev:
For Python2: apt install python-dev
For Python3: apt install python3.5-dev
- * b. 安装pip: (请保证拥有9.0.1及以上版本的pip):(请注意修改对应python3的版本)
+ * b. 安装pip: (请保证拥有9.0.1及以上版本的pip):
For Python2: apt install python-pip
For Python3: apt-get udpate && apt-get install -y software-properties-common && add-apt-repository ppa:deadsnakes/ppa && apt install curl && curl https://bootstrap.pypa.io/get-pip.py -o - | python3.5 && easy_install pip
- * c. 安装虚环境`virtualenv`以及`virtualenvwrapper`并创建名为`paddle-venv`的虚环境:(请注意修改python版本)
+ * c. 安装虚环境`virtualenv`以及`virtualenvwrapper`并创建名为`paddle-venv`的虚环境:
1. `apt install virtualenv` 或 `pip install virtualenv` 或 `pip3 install virtualenv`
2. `apt install virtualenvwrapper` 或 `pip install virtualenvwrapper` 或 `pip3 install virtualenvwrapper`
@@ -140,9 +143,11 @@
6. 按照`virtualenvwrapper.sh`中的描述,安装`virtualwrapper`
7. 创建名为`paddle-venv`的虚环境: `mkvirtualenv paddle-venv`
+ 注意:以上涉及Python3的命令,用Python3.5来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
+
4. 进入虚环境:`workon paddle-venv`
-5. **执行编译前**请您确认在虚环境中安装有[编译依赖表](../Tables.html/#third_party)中提到的相关依赖:
+5. **执行编译前**请您确认在虚环境中安装有[编译依赖表](../Tables.html/#third_party)中提到的相关依赖:
* 这里特别提供`patchELF`的安装方法,其他的依赖可以使用`apt install`或者`pip install` 后跟依赖名称和版本安装:
@@ -158,7 +163,11 @@
6. 切换到较稳定release分支下进行编译,将中括号以及其中的内容替换为**目标分支名**:
- `git checkout [name of target branch]`
+ `git checkout [分支名]`
+
+ 例如:
+
+ `git checkout release/1.2`
7. 并且请创建并进入一个叫build的目录下:
@@ -166,9 +175,9 @@
8. 执行cmake:
- >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
+ >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
- * 对于需要编译**CPU版本PaddlePaddle**的用户:(*For Python3: 请给PY_VERSION参数配置正确的python版本*)
+ * 对于需要编译**CPU版本PaddlePaddle**的用户:
For Python2: cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
For Python3: cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
@@ -182,10 +191,10 @@
2. 如果您已经正确安装了`nccl2`,就可以开始cmake了:(*For Python3: 请给PY_VERSION参数配置正确的python版本*)
- For Python2: cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
- For Python3: cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
-
- >`-DPY_VERSION=3.5`请修改为安装环境的Python版本
+ For Python2: cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
+ For Python3: cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
+
+ 注意:以上涉及Python3的命令,用Python3.5来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
9. 使用以下命令来编译:
@@ -197,17 +206,16 @@
`pip install (whl包的名字)`或`pip3 install (whl包的名字)`
-恭喜您,现在您已经完成使本机编译PaddlePaddle的过程了。
+恭喜,至此您已完成PaddlePaddle的编译安装
-
## ***验证安装***
安装完成后您可以使用:`python` 或 `python3` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
-
## ***如何卸载***
-请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用对应版本的pip):
+请使用以下命令卸载PaddlePaddle:
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle`
* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu` 或 `pip3 uninstall paddlepaddle-gpu`
+使用Docker安装PaddlePaddle的用户,请进入包含PaddlePaddle的容器中使用上述命令,注意使用对应版本的pip
diff --git a/doc/fluid/beginners_guide/install/compile/compile_Windows.md b/doc/fluid/beginners_guide/install/compile/compile_Windows.md
index 6205563fc..3454e15dc 100644
--- a/doc/fluid/beginners_guide/install/compile/compile_Windows.md
+++ b/doc/fluid/beginners_guide/install/compile/compile_Windows.md
@@ -1,85 +1,81 @@
-***
# **Windows下从源码编译**
-本说明将介绍如何在*64位台式机或笔记本电脑*以及Windows 10系统下编译PaddlePaddle,我们支持的Windows系统需满足以下要求:
+## 环境准备
-* Windows 10 家庭版/专业版/企业版
-* Visual Studio 2015 Update3
+* *64位操作系统*
+* *Windows 10 家庭版/专业版/企业版*
+* *Python 2.7/3.5/3.6/3.7*
+* *pip或pip3 >= 9.0.1*
+* *Visual Studio 2015 Update3*
-## 确定要编译的版本
+## 选择CPU/GPU
-* 1.3支持GPU的PaddlePaddle,为了使得PaddlePaddle程序运行的更加迅速,我们通常使用GPU对PaddlePaddle程序进行加速,但安装GPU版本的PaddlePaddle需要先拥有满足以下条件的NVIDIA GPU(具体安装流程和配置请务必参见NVIDIA官方文档:[For CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/),[For cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/))
-* Cuda 工具包8.0配合cuDNN v7
-* GPU运算能力超过1.0的硬件设备
+* 如果您的计算机没有 NVIDIA® GPU,请编译CPU版的PaddlePaddle
-## 选择如何编译
-我们在Windows的系统下提供1种编译方式:
+* 如果您的计算机有NVIDIA® GPU,并且满足以下条件,推荐编译GPU版的PaddlePaddle
+ * *CUDA 工具包8.0配合cuDNN v7*
+ * *GPU运算能力超过1.0的硬件设备*
-* 直接本机源码编译
+## 安装步骤
-由于在本机上的情况更加复杂,因此我们只支持特定的系统。
+在Windows的系统下提供1种编译方式:
-请注意:当前版本不支持NCCL,分布式等相关功能。
-
-
+* 直接本机源码编译(暂不支持NCCL,分布式等相关功能)
+
### ***本机编译***
-**请严格按照以下指令顺序执行**
+1. 安装必要的工具 cmake,git 以及 python :
-1. 检查您的计算机和操作系统是否符合我们支持的编译标准
+ > cmake 需要3.5 及以上版本, 可在官网[下载](https://cmake.org/download/),并添加到环境变量中。
- * Windows 10 家庭版/专业版/企业版
-
- * Visual Studio 2015 Update3
+ > python 需要2.7 及以上版本, 可在官网[下载](https://www.python.org/download/releases/2.7/)。
-2. 安装必要的工具 cmake,git 以及 python :
+ > 需要安装`numpy, protobuf, wheel` 。python2.7下, 请使用`pip`命令; 如果是python3.x, 请使用`pip3`命令。
- > cmake 需要3.5 及以上版本, 可以在官网进行下载,并添加到环境变量中。 [下载地址](https://cmake.org/download/)
-
- > git可以在官网进行下载,并添加到环境变量中。 [下载地址](https://gitforwindows.org/)
-
- > python 需要2.7 及以上版本, 同时确保 `numpy, protobuf, wheel` 等模块得到安装 [下载地址](https://www.python.org/download/releases/2.7/)
-
- > python2.7下, 使用`pip`命令就可以; 如果是python3.x, 则建议使用`pip3`命令来使用pip安装工具。
-
* 安装 numpy 包可以通过命令 `pip install numpy` 或 `pip3 install numpy`
-
+
* 安装 protobuf 包可以通过命令 `pip install protobuf` 或 `pip3 install protobuf`
-
+
* 安装 wheel 包可以通过命令 `pip install wheel` 或 `pip3 install wheel`
-3. 将PaddlePaddle的源码clone在当下目录下的Paddle的文件夹中,并进入Padde目录下:
+ > git可以在官网[下载](https://gitforwindows.org/),并添加到环境变量中。
+
+2. 将PaddlePaddle的源码clone在当下目录下的Paddle的文件夹中,并进入Padde目录下:
- `git clone https://github.com/PaddlePaddle/Paddle.git`
- `cd Paddle`
-4. 切换到较稳定release分支下进行编译(支持1.3.x及以上版本):
+3. 切换到较稳定release分支下进行编译:
+
+ `git checkout [分支名]`
+
+ 例如:
- - `git checkout release/x.x.x`
+ `git checkout release/1.2`
-5. 创建名为build的目录并进入:
+ 注意:python3.6、python3.7版本从release/1.2分支开始支持
+
+4. 创建名为build的目录并进入:
- `mkdir build`
- `cd build`
-6. 执行cmake:
-
- >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
+5. 执行cmake:
+ >具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
- * 对于需要编译**CPU版本PaddlePaddle**的用户:
+ * 编译**CPU版本PaddlePaddle**:
For Python2: `cmake .. -G "Visual Studio 14 2015 Win64" -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIRS}
-DPYTHON_LIBRARY=${PYTHON_LIBRARY}
-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release`
-
+
For Python3: `cmake .. -G "Visual Studio 14 2015 Win64" -DPY_VERSION=3.5 -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIRS}
-DPYTHON_LIBRARY=${PYTHON_LIBRARY}
-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release`
-
- * 对于需要编译**GPU版本PaddlePaddle**的用户:
+ * 编译**GPU版本PaddlePaddle**:
For Python2: `cmake .. -G "Visual Studio 14 2015 Win64" -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIRS}
-DPYTHON_LIBRARY=${PYTHON_LIBRARY}
@@ -91,24 +87,22 @@
-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
-DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCUDA_TOOLKIT_ROOT_DIR=${CUDA_TOOLKIT_ROOT_DIR}`
+6. 部分第三方依赖包(openblas,snappystream)目前需要用户自己提供预编译版本,也可以到 `https://github.com/wopeizl/Paddle_deps` 下载预编译好的文件, 将整个 `third_party` 文件夹放到 `build` 目录下.
-7. 部分第三方依赖包(openblas,snappystream)目前需要用户自己提供预编译版本,也可以到 `https://github.com/wopeizl/Paddle_deps` 下载预编译好的文件, 将整个 `third_party` 文件夹放到 `build` 目录下.
+7. 使用Blend for Visual Studio 2015 打开 `paddle.sln` 文件,选择平台为 `x64`,配置为 `Release`,先编译third_party模块,然后编译其他模块
-8. 使用Blend for Visual Studio 2015 打开 `paddle.sln` 文件,选择平台为 `x64`,配置为 `Release`,先编译third_party模块,然后编译其他模块
+8. 编译成功后进入 `\paddle\build\python\dist` 目录下找到生成的 `.whl` 包:
-9. 编译成功后进入 `\paddle\build\python\dist` 目录下找到生成的 `.whl` 包:
-
`cd \paddle\build\python\dist`
-10. 在当前机器或目标机器安装编译好的 `.whl` 包:
+9. 在当前机器或目标机器安装编译好的 `.whl` 包:
`pip install (whl包的名字)` 或 `pip3 install (whl包的名字)`
-恭喜您,现在您已经完成使本机编译PaddlePaddle的过程了。
-
+恭喜,至此您已完成PaddlePaddle的编译安装
## ***验证安装***
-安装完成后您可以使用:`python` 进入Python解释器,然后使用 `import paddle.fluid`, 如沒有提示错误,则表明安装成功。
+安装完成后您可以使用:`python` 或 `python3`进入Python解释器,然后使用 `import paddle.fluid`, 如沒有提示错误,则表明安装成功。
## ***如何卸载***
请使用以下命令卸载PaddlePaddle:
@@ -116,3 +110,5 @@
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle`
* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu` 或 `pip3 uninstall paddlepaddle-gpu`
+
+使用Docker安装PaddlePaddle的用户,请进入包含PaddlePaddle的容器中使用上述命令,注意使用对应版本的pip
diff --git a/doc/fluid/beginners_guide/install/compile/fromsource.rst b/doc/fluid/beginners_guide/install/compile/fromsource.rst
index 72f5256ce..6af432290 100644
--- a/doc/fluid/beginners_guide/install/compile/fromsource.rst
+++ b/doc/fluid/beginners_guide/install/compile/fromsource.rst
@@ -2,11 +2,8 @@
**从源码编译**
===========================
-您也可以选择源码编译的方式编译安装PaddlePaddle,但由于本机环境的多样性,在编译源码时易出现复杂问题,可能会造成您安装失败。为保证您顺利安装,推荐您优先选择普通安装方式。
-
-
.. toctree::
- :hidden:
+ :maxdepth: 1
compile_Ubuntu.md
compile_CentOS.md
diff --git a/doc/fluid/beginners_guide/install/index_cn.rst b/doc/fluid/beginners_guide/install/index_cn.rst
index adfc8adba..6f00b5a9a 100644
--- a/doc/fluid/beginners_guide/install/index_cn.rst
+++ b/doc/fluid/beginners_guide/install/index_cn.rst
@@ -1,7 +1,7 @@
==========
安装说明
==========
-本说明将指导您在64位台式机或笔记本电脑上编译和安装PaddlePaddle
+本说明将指导您在64位操作系统编译和安装PaddlePaddle
PaddlePaddle目前支持的Python版本包括:Python 2.7-3.7
@@ -12,8 +12,7 @@ PaddlePaddle目前支持以下环境:
* *MacOS 10.11 / 10.12 / 10.13 / 10.14*
* *Windows7 / 8/ 10(专业版/企业版)*
-
-请确保您的环境满足以上条件,我们默认提供的安装同时需要您的计算机拥有64位操作系统,处理器支持AVX指令集,否则请选择 `多版本whl包安装列表 `_ 中 :code:`no_avx` 的版本
+请确保您的环境满足以上条件,我们默认提供的安装同时需要您的计算机拥有64位操作系统,处理器支持AVX指令集和MKL,如您有其他需求,请参考 `多版本whl包安装列表 `_
- 如果您希望使用 `pip `_ 进行安装PaddlePaddle可以直接使用以下命令:
@@ -37,6 +36,7 @@ PaddlePaddle目前支持以下环境:
install_CentOS.md
install_MacOS.md
install_Windows.md
+ install_Docker.md
compile/fromsource.rst
FAQ.md
Tables.md
diff --git a/doc/fluid/beginners_guide/install/install_CentOS.md b/doc/fluid/beginners_guide/install/install_CentOS.md
index 6a1a56369..23fe44e87 100644
--- a/doc/fluid/beginners_guide/install/install_CentOS.md
+++ b/doc/fluid/beginners_guide/install/install_CentOS.md
@@ -1,166 +1,61 @@
-***
-
# **CentOS下安装**
-本说明将介绍如何在*64位台式机或笔记本电脑*以及CentOS系统下安装PaddlePaddle,我们支持的CentOS系统需满足以下要求:
-
-
-
-请注意:在其他系统上的尝试可能会导致安装失败。请确保您的环境满足以上条件,我们默认提供的安装同时需要您的计算机处理器支持AVX指令集,否则请选择[[最新Release安装包列表](./Tables.html/#ciwhls-release)中`no_avx`的版本。
-
-CentOS系统下您可以使用`cat /proc/cpuinfo | grep avx`来检测您的处理器是否支持AVX指令集
+## 环境准备
+* *64位操作系统*
* *CentOS 6 / 7*
+* *Python 2.7/3.5/3.6/3.7*
+* *pip或pip3 >= 9.0.1*
-## 确定要安装的版本
-* 仅支持CPU的PaddlePaddle。如果您的计算机没有 NVIDIA® GPU,则只能安装此版本。如果您的计算机有GPU,
-推荐您先安装CPU版本的PaddlePaddle,来检测您本地的环境是否适合。
-
-* 支持GPU的PaddlePaddle,为了使PaddlePaddle程序运行的更加迅速,我们通过GPU对PaddlePaddle程序进行加速,但安装GPU版本的PaddlePaddle需要先拥有满足以下条件的NVIDIA® GPU(具体安装流程和配置请务必参见NVIDIA官方文档:[For CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/),[For cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/))
- * *CUDA 工具包9.0配合cuDNN v7*
- * *CUDA 工具包8.0配合cuDNN v7*
- * *GPU运算能力超过1.0的硬件设备*
-
-
-
-## 选择如何安装
-在CentOS的系统下我们提供4种安装方式:
-
-* pip安装
-* Docker安装(不支持GPU版本)(镜像中python的版本为2.7)
-* 源码编译安装(不支持CentOS 6的所有版本以及CentOS 7的GPU版本)
-* Docker源码编译安装(不支持GPU版本)(镜像中的python版本为2.7,3.5,3.6,3.7)
-
-
-
-
-**使用pip安装**(最便捷的安装方式),我们为您提供pip安装方法,但它更依赖您的本机环境,可能会出现和您本机环境相关的一些问题。
-
-
-**使用Docker进行安装**(最保险的安装方式),因为我们在把工具和配置都安装在一个 Docker image 里,这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
-
-
-从[**源码编译安装**](#ct_source)以及[**使用Docker进行源码编译安装**](#ct_docker),这是一种通过将PaddlePaddle源代码编译成为二进制文件,然后在安装这个二进制文件的过程,相比使用我们为您编译过的已经通过测试的二进制文件形式的PaddlePaddle,手动编译更为复杂,我们将在说明的最后详细为您解答。
-
-
-
-
-
-### ***使用pip安装PaddlePaddle***
-
-
-首先,我们使用以下指令来**检测本机的环境**是否适合安装PaddlePaddle:
-
-`uname -m && cat /etc/*release`
-
-> 上面的命令将会显示本机的操作系统和位数信息,请确保您的计算机和本教程的要求一致。
-
-
-其次,您的计算机需要满足以下要求:
-
-* Python2.7.x (devel),Pip >= 9.0.1
-
- > CentOS6需要编译Python2.7成[共享库](./FAQ.html/#FAQ)。
-
-* Python3.5+.x (devel),Pip3 >= 9.0.1
-
- > 您的CentOS上可能已经安装pip请使用pip -V来确认我们建议使用pip 9.0.1或更高版本来安装。
-
- 更新yum的源: `yum update` 并安装拓展源以安装pip: `yum install -y epel-release`
-
- 使用以下命令安装或升级Python和pip到需要的版本:
+### 注意事项
- - For Python2: `sudo yum install python-devel python-pip`
- - For Python3: (请参照Python官方流程安装,并注意pip3命令对应的python3版本是否一致,如果有多个python3版本,请指定pip版本如pip3.7,或者将pip3软链到您使用的python版本下)
+* 可以使用`uname -m && cat /etc/*release`查看本机的操作系统和位数信息
+* 可以使用`pip -V`(Python版本为2.7)或`pip3 -V`(Python版本为3.5/3.6/3.7),确认pip/pip3版本是否满足要求
+* 默认提供的安装包需要计算机支持AVX指令集和MKL。如果您对机器环境不了解,请下载使用[快速安装脚本](https://fast-install.bj.bcebos.com/fast_install.sh),配套说明请参考[这里](https://github.com/PaddlePaddle/FluidDoc/tree/develop/doc/fluid/beginners_guide/install/install_script.md)。或者您也可以使用`cat /proc/cpuinfo | grep avx`来检测您的处理器是否支持该指令集,如不支持,请在[这里](./Tables.html/#ciwhls-release)下载`no_avx`版本的安装包
- > 即使您的环境中已经有`Python`也需要安装`python develop`套装。
+## 选择CPU/GPU
-下面将说明如何安装PaddlePaddle:
+* 如果您的计算机没有 NVIDIA® GPU,请安装CPU版本的PaddlePaddle
-1. 使用pip install来安装PaddlePaddle:
+* 如果您的计算机有NVIDIA® GPU,并且满足以下条件,推荐安装GPU版PaddlePaddle
+ * *CUDA 工具包9.0配合cuDNN v7*
+ * *CUDA 工具包8.0配合cuDNN v7*
+ * *CUDA 工具包8.0配合cuDNN v5*
+ * *GPU运算能力超过1.0的硬件设备*
- * 对于需要**CPU版本PaddlePaddle**的用户:`pip install paddlepaddle` 或 `pip3 install paddlepaddle`
+您可参考NVIDIA官方文档了解CUDA和CUDNN的安装流程和配置方法,请见[CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/),[cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
- * 对于需要**GPU版本PaddlePaddle**的用户: `pip install paddlepaddle-gpu` 或 `pip3 install paddlepaddle-gpu`
+## 安装方式
- > 1. 为防止出现nccl.h找不到的问题请首先按照NVIDIA[官方网站](https://developer.nvidia.com/nccl/nccl-download)的指示正确安装nccl2
- > 2. 如果您不规定pypi包版本号,我们默认为您提供支持Cuda 9/cuDNN v7的PaddlePaddle版本。
+CentOS系统下有4种安装方式:
- * 对于出现`Cannot uninstall 'six'.`问题的用户,可是由于您的系统中已有的Python安装问题造 成的,请使用`pip install paddlepaddle --ignore-installed six`(CPU)或`pip install paddlepaddle-gpu --ignore-installed six`(GPU)解决。
+* pip安装(推荐)
+* [Docker安装](./install_Docker.html)
+* [源码编译安装](./compile/compile_CentOS.html/#ct_source)
+* [Docker源码编译安装](./compile/compile_CentOS.html/#ct_docker)
- * 对于有**其他要求**的用户:`pip install paddlepaddle==[版本号]` 或 `pip3 install paddlepaddle==[版本号]`
+这里为您介绍pip安装方式
- > `版本号`参见[最新Release安装包列表](./Tables.html/#whls)或者您如果需要获取并安装**最新的PaddlePaddle开发分支**,可以从[[最新dev安装包列表](./Tables.html/#ciwhls)或者我们的[CI系统](https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview) 中下载最新的whl安装包和c-api开发包并安装。如需登录,请点击“Log in as guest”。
+## 安装步骤
+* CPU版PaddlePaddle:`pip install paddlepaddle` 或 `pip3 install paddlepaddle`
+* GPU版PaddlePaddle:`pip install paddlepaddle-gpu` 或 `pip3 install paddlepaddle-gpu`
+您可[验证是否安装成功](#check),如有问题请查看[FAQ](./FAQ.html)
+注:
+* pip与python版本对应。如果是python2.7, 建议使用`pip`命令; 如果是python3.x, 则建议使用`pip3`命令
+* `pip install paddlepaddle-gpu` 此命令将安装支持CUDA 9.0 cuDNN v7的PaddlePaddle,如您对CUDA或cuDNN版本有不同要求,可用`pip install paddlepaddle==[版本号]`或 `pip3 install paddlepaddle==[版本号]`命令来安装,版本号请见[这里](https://pypi.org/project/paddlepaddle-gpu/#history)
+* 默认下载最新稳定版的安装包,如需获取开发版安装包,请参考[这里](./Tables.html/#ciwhls)
-
-现在您已经完成通过`pip install` 来安装的PaddlePaddle的过程。
-
-
-
-
-### ***使用Docker进行安装***
-
-
-
-为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)
-
-
-> 请注意,要安装和使用支持 GPU 的PaddlePaddle版本,您必须先安装[nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
-
-
-
-
-当您已经**正确安装Docker**后你就可以开始**使用Docker安装PaddlePaddle**
-
-1. 使用以下指令拉取我们为您预安装好PaddlePaddle的镜像:
-
- * 对于需要**CPU版本的PaddlePaddle**的用户请使用以下指令拉取我们为您预安装好*PaddlePaddle For CPU*的镜像:
-
- `docker pull hub.baidubce.com/paddlepaddle/paddle:1.2`
-
- * 您也可以通过以下指令拉取任意的我们提供的Docker镜像:
-
- `docker pull hub.baidubce.com/paddlepaddle/paddle:[tag]`
-
- > (请把[tag]替换为[镜像表](./Tables.html/#dockers)中的内容)
-
-
-
-2. 使用以下指令用已经拉取的镜像构建并进入Docker容器:
-
- `docker run --name [Name of container] -it -v $PWD:/paddle /bin/bash`
-
- > 上述命令中,--name [Name of container] 设定Docker的名称;-it 参数说明容器已和本机交互式运行; -v $PWD:/paddle 指定将当前路径(Linux中PWD变量会展开为当前路径的[绝对路径](https://baike.baidu.com/item/绝对路径/481185))挂载到容器内部的 /paddle 目录; `` 指定需要使用的image名称,如果您需要使用我们的镜像请使用`hub.baidubce.com/paddlepaddle/paddle:[tag]` 注:tag的意义同第二步,/bin/bash是在Docker中要执行的命令。
-
-3. (可选:当您需要第二次进入Docker容器中)使用如下命令使用PaddlePaddle:
-
- `docker start [Name of container]`
-
- > 启动之前创建的容器。
-
- `docker attach [Name of container]`
-
- > 进入启动的容器。
-
-至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)。
-
-> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
-
-
-
+
## ***验证安装***
-安装完成后您可以使用:`python` 或 `python3` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
+安装完成后您可以使用命令`python` 或 `python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
-
## ***如何卸载***
-请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用相应版本的pip):
+请使用以下命令卸载PaddlePaddle:
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle`
* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu` 或 `pip3 uninstall paddlepaddle-gpu`
-
-
diff --git a/doc/fluid/beginners_guide/install/install_Docker.md b/doc/fluid/beginners_guide/install/install_Docker.md
new file mode 100644
index 000000000..530ff54ab
--- /dev/null
+++ b/doc/fluid/beginners_guide/install/install_Docker.md
@@ -0,0 +1,89 @@
+# **使用Docker安装**
+
+[Docker](https://docs.docker.com/install/)是一个开源的应用容器引擎。使用Docker,既可以将PaddlePaddle的安装&使用与系统环境隔离,也可以与主机共享GPU、网络等资源
+
+## 环境准备
+
+- 在本地主机上[安装Docker](https://hub.docker.com/search/?type=edition&offering=community)
+
+- 如需在Linux开启GPU支持,请[安装nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
+
+## 安装步骤
+
+1. 拉取PaddlePaddle镜像
+
+ * CPU版的PaddlePaddle: `docker pull hub.baidubce.com/paddlepaddle/paddle:[版本号]`
+
+ * GPU版的PaddlePaddle: `docker pull hub.baidubce.com/paddlepaddle/paddle:[版本号]-gpu-cuda9.0-cudnn7`
+
+ 在`:`后请您填写PaddlePaddle版本号,例如1.2,更多请见[镜像简介](#dockers)
+
+2. 构建、进入Docker容器
+
+ `docker run --name [Name of container] -it -v $PWD:/paddle /bin/bash`
+
+ > 上述命令中,各项参数分别指: --name [Name of container] 设定Docker的名称;-it 参数说明容器已和本机交互式运行; -v $PWD:/paddle 指定将当前路径(Linux中PWD变量会展开为当前路径的绝对路径)挂载到容器内部的 /paddle 目录; `` 指定需要使用的image名称,您可以通过`docker images`命令查看;/bin/bash是在Docker中要执行的命令
+
+至此,您已经成功使用Docker安装PaddlePaddle,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
+
+
+
+### **镜像简介**
+
+
+
+
+ 版本名称 |
+ 版本说明 |
+
+
+
+
+ hub.baidubce.com/paddlepaddle/paddle:latest |
+ 最新的预先安装好PaddlePaddle CPU版本的镜像 |
+
+
+ hub.baidubce.com/paddlepaddle/paddle:[Version] |
+ 将version换成具体的版本,历史版本的预安装好PaddlePaddle的镜像 |
+
+
+ hub.baidubce.com/paddlepaddle/paddle:latest-gpu |
+ 最新的预先安装好PaddlePaddle GPU版本的镜像 |
+
+
+ hub.baidubce.com/paddlepaddle/paddle:latest-dev |
+ 最新的PaddlePaddle的开发环境 |
+
+
+
+
+
+您可以在 [DockerHub](https://hub.docker.com/r/paddlepaddle/paddle/tags/) 中找到PaddlePaddle的各个发行的版本的docker镜像。
+
+### 注意事项
+
+* 镜像中Python版本为2.7
+* PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码
+
+### 补充说明
+
+* 当您需要第二次进入Docker容器中,使用如下命令:
+```
+ #启动之前创建的容器
+ docker start [Name of container]
+
+ #进入启动的容器
+ docker attach [Name of container]
+```
+* 如您是Docker新手,您可以参考互联网上的资料学习,例如[Docker教程](http://www.runoob.com/docker/docker-hello-world.html)
+
+## 如何卸载
+
+请您进入Docker容器后,执行如下命令
+
+* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle`
+
+* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu` 或 `pip3 uninstall paddlepaddle-gpu`
+
+或通过`docker rm [Name of container]`来直接删除Docker容器
+
diff --git a/doc/fluid/beginners_guide/install/install_MacOS.md b/doc/fluid/beginners_guide/install/install_MacOS.md
index 50280990a..cffb5386a 100644
--- a/doc/fluid/beginners_guide/install/install_MacOS.md
+++ b/doc/fluid/beginners_guide/install/install_MacOS.md
@@ -1,129 +1,50 @@
-***
-
# **MacOS下安装**
-本说明将介绍如何在*64位台式机或笔记本电脑*以及MacOS系统下安装PaddlePaddle,我们支持的MacOS系统需满足以下要求。
-
-请注意:在其他系统上的尝试可能会导致安装失败。
-
-* MacOS 10.11/10.12/10.13/10.14
-
-## 确定要安装的版本
-
-* 仅支持CPU的PaddlePaddle。
-
-
-
-## 选择如何安装
-在MacOS的系统下我们提供3种安装方式:
-
-* pip安装(不支持GPU版本)(python3下不支持分布式)
-* Docker安装(不支持GPU版本)(镜像中python的版本为2.7)
-* Docker源码编译安装(不支持GPU版本)(镜像中的python版本为2.7,3.5,3.6,3.7)
-
-
-**使用pip安装**(最便捷的安装方式),我们为您提供pip安装方法,但它更依赖您的本机环境,可能会出现和您本机环境相关的一些问题。
-
-
-**使用Docker进行安装**(最保险的安装方式),因为我们在把工具和配置都安装在一个 Docker image 里,这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
-
-
-
-
-### ***使用pip安装***
-
-由于在MacOS中的Python情况差别较大我们暂不提供快速安装的命令,请您按照以下步骤进行安装
-
-首先,**检查您的计算机和操作系统**是否符合我们支持的编译标准: `uname -m` 并且在`关于本机`中查看系统版本。
-
-其次,您的计算机需要满足以下要求:
-
-> **请不要使用MacOS中自带python**,对于**Python2**,建议您使用[Homebrew](https://brew.sh)或[Python.org](https://www.python.org/ftp/python/2.7.15/python-2.7.15-macosx10.9.pkg)提供的python2.7.15;对于**Python3**,请使用[Python.org](https://www.python.org/downloads/mac-osx/)提供的python3.5.x、python3.6.x或python3.7.x。
-
- For python2: brew install python@2 或 使用Python官方下载的python2.7.15
- For python3: 使用Python官方下载的python3.5.x、python3.6.x或python3.7.x
-
-* Python2.7.x,Pip >= 9.0.1
-* Python3.5.x,Pip3 >= 9.0.1
-* Python3.6.x,Pip3 >= 9.0.1
-* Python3.7.x,Pip3 >= 9.0.1
-
- > 注: 您的MacOS上可能已经安装pip请使用pip -V来确认我们建议使用pip 9.0.1或更高版本来安装。
-
-下面将说明如何安装PaddlePaddle:
-
-
-1. 使用pip install来安装PaddlePaddle:
-
- * 对于需要**CPU版本PaddlePaddle**的用户:`pip install paddlepaddle` 或 `pip3 install paddlepaddle`
-
- * 对于有**其他要求**的用户:`pip install paddlepaddle==[版本号]` 或 `pip3 install paddlepaddle==[版本号]`
-
- > `版本号`参见[最新Release安装包列表](./Tables.html/#ciwhls-release)或者您如果需要获取并安装**最新的PaddlePaddle开发分支**,可以从[CI系统](https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview) 中下载最新的whl安装包和c-api开发包并安装。如需登录,请点击“Log in as guest”。
-
-
-
-
-现在您已经完成通过`pip install` 来安装的PaddlePaddle的过程。
-
-
-
-
-
-### ***使用Docker安装***
-
-
-
-为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)。
-
-> 请注意,在MacOS系统下登陆docker需要使用您的dockerID进行登录,否则将出现`Authenticate Failed`错误。
-
-如果已经**正确安装Docker**,即可以开始**使用Docker安装PaddlePaddle**
-
-1. 使用以下指令拉取我们为您预安装好PaddlePaddle的镜像:
-
- * 对于需要**CPU版本的PaddlePaddle**的用户请使用以下指令拉取我们为您预安装好*PaddlePaddle For CPU*的镜像:
-
- `docker pull hub.baidubce.com/paddlepaddle/paddle:1.2`
-
- * 您也可以通过以下指令拉取任意的我们提供的Docker镜像:
-
- `docker pull hub.baidubce.com/paddlepaddle/paddle:[tag]`
-
- > (请把[tag]替换为[镜像表](./Tables.html/#dockers)中的内容)
+## 环境准备
-2. 使用以下指令用已经拉取的镜像构建并进入Docker容器:
+* *64位操作系统*
+* *MacOS 10.11/10.12/10.13/10.14*
+* *Python 2.7/3.5/3.6/3.7*
+* *pip或pip3 >= 9.0.1*
- `docker run --name [Name of container] -it -v $PWD:/paddle /bin/bash`
+### 注意事项
- > 上述命令中,--name [Name of container] 设定Docker的名称;-it 参数说明容器已和本机交互式运行; -v $PWD:/paddle 指定将当前路径(Linux中PWD变量会展开为当前路径的[绝对路径](https://baike.baidu.com/item/绝对路径/481185))挂载到容器内部的 /paddle 目录; `` 指定需要使用的image名称,如果您需要使用我们的镜像请使用`hub.baidubce.com/paddlepaddle/paddle:[tag]` 注:tag的意义同第二步;/bin/bash是在Docker中要执行的命令。
+* 可以使用`pip -V`(Python版本为2.7)或`pip3 -V`(Python版本为3.5/3.6/3.7),确认pip/pip3版本是否满足要求
+* 默认提供的安装包需要计算机支持AVX指令集
-3. (可选:当您需要第二次进入Docker容器中)使用如下命令使用PaddlePaddle:
+## 选择CPU/GPU
- `docker start [Name of container]`
+* 目前在MacOS环境仅支持CPU版PaddlePaddle
- > 启动之前创建的容器。
+## 安装方式
- `docker attach [Name of container]`
+MacOS系统下有4种安装方式:
- > 进入启动的容器。
+* pip安装(推荐)
+* [Docker安装](./install_Docker.html)
+* [源码编译安装](./compile/compile_MacOS.html/#mac_source)
+* [Docker源码编译安装](./compile/compile_MacOS.html/#mac_docker)
+这里为您介绍pip安装方式
-至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)。
+## 安装步骤
-> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
+* CPU版PaddlePaddle:`pip install paddlepaddle` 或 `pip3 install paddlepaddle`
-
+您可[验证是否安装成功](#check),如有问题请查看[FAQ](./FAQ.html)
+注:
+* pip与python版本对应。如果是python2.7, 建议使用`pip`命令; 如果是python3.x, 则建议使用`pip3`命令
+* 默认下载最新稳定版的安装包,如需获取开发版安装包,请参考[这里](./Tables.html/#ciwhls)
+* 使用MacOS中自带Python可能会导致安装失败。对于**Python2**,建议您使用[Homebrew](https://brew.sh)或[Python.org](https://www.python.org/ftp/python/2.7.15/python-2.7.15-macosx10.9.pkg)提供的python2.7.15;对于**Python3**,请使用[Python.org](https://www.python.org/downloads/mac-osx/)提供的python3.5.x、python3.6.x或python3.7.x。
-
-## ***验证安装***
+
+## 验证安装
安装完成后您可以使用:`python` 或 `python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
-
-## ***如何卸载***
-请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用相应版本的pip):
+## 如何卸载
-* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle`
+请使用以下命令卸载PaddlePaddle:
+* `pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle`
diff --git a/doc/fluid/beginners_guide/install/install_Ubuntu.md b/doc/fluid/beginners_guide/install/install_Ubuntu.md
index 8dc394687..17c668946 100644
--- a/doc/fluid/beginners_guide/install/install_Ubuntu.md
+++ b/doc/fluid/beginners_guide/install/install_Ubuntu.md
@@ -1,167 +1,61 @@
-***
-
# **Ubuntu下安装**
-本说明将介绍如何在*64位台式机或笔记本电脑*以及Ubuntu系统下安装PaddlePaddle,我们支持的Ubuntu系统需满足以下要求:
-
-
-
-请注意:在其他系统上的尝试可能会导致安装失败。请确保您的环境满足以上条件,我们默认提供的安装同时需要您的计算机处理器支持AVX指令集,否则请选择[最新Release安装包列表](./Tables.html/#ciwhls-release)中`no_avx`的版本。
-
-Ubuntu系统下您可以使用`cat /proc/cpuinfo | grep avx`来检测您的处理器是否支持AVX指令集
+## 环境准备
+* *64位操作系统*
* *Ubuntu 14.04 /16.04 /18.04*
+* *Python 2.7/3.5/3.6/3.7*
+* *pip或pip3 >= 9.0.1*
-## 确定要安装的版本
-
-* 仅支持CPU的PaddlePaddle。如果您的计算机没有 NVIDIA® GPU,则只能安装此版本。如果您的计算机有GPU,
-也推荐您先安装CPU版本的PaddlePaddle,来检测您本地的环境是否适合。
-
-* 支持GPU的PaddlePaddle。为了使PaddlePaddle程序运行更加迅速,我们通过GPU对PaddlePaddle程序进行加速,但安装GPU版本的PaddlePaddle需要先拥有满足以下条件的NVIDIA® GPU(具体安装流程和配置请务必参见NVIDIA官方文档:[For CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/),[For cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/))
- * *CUDA 工具包9.0配合cuDNN v7*
- * *CUDA 工具包8.0配合cuDNN v7*
- * *GPU运算能力超过1.0的硬件设备*
-
-
-
-## 选择如何安装
-在Ubuntu的系统下我们提供4种安装方式:
-
-* pip安装
-* Docker安装(镜像中python的版本为2.7)
-* 源码编译安装
-* Docker源码编译安装(镜像中的python版本为2.7,3.5,3.6,3.7)
-
-
-
-**使用pip安装**(最便捷的安装方式),我们为您提供pip安装方法,但它更依赖您的本机环境,可能会出现和您本机环境相关的一些问题。
-
-**使用Docker进行安装**(最保险的安装方式),因为我们在把工具和配置都安装在一个 Docker image 里,这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
-
-
-
-从[**源码编译安装**](#ubt_source)以及[**使用Docker进行源码编译安装**](#ubt_docker),这是一种通过将PaddlePaddle源代码编译成为二进制文件,然后在安装这个二进制文件的过程,相比使用我们为您编译过的已经通过测试的二进制文件形式的PaddlePaddle,手动编译更为复杂,我们将在说明的最后详细为您解答。
-
-
-
-
-### ***使用pip安装***
-
-
-首先,我们使用以下指令来**检测本机的环境**是否适合安装PaddlePaddle:
-
- uname -m && cat /etc/*release
-
-> 上面的命令将会显示本机的操作系统和位数信息,请确保您的计算机和本教程的要求一致。
-
-
-其次,您的电脑需要满足以下任一要求:
-
-* Python2.7.x (dev),Pip >= 9.0.1
-* Python3.5+.x (dev),Pip3 >= 9.0.1
-
-> 您的Ubuntu上可能已经安装pip请使用pip -V或pip3 -V来确认我们建议使用pip 9.0.1或更高版本来安装
-
- 更新apt的源: `apt update`
-
-使用以下命令安装或升级Python和pip到需要的版本:(python3.6、python3.7安装pip和dev在不同Ubuntu版本下差别较大,不一一描述)
-
- - For python2: `sudo apt install python-dev python-pip`
- - For python3.5:`sudo apt install python3.5-dev` and `curl https://bootstrap.pypa.io/get-pip.py -o - | python3.5 && easy_install pip`
- - For python3.6、python3.7: 我们默认您应准备好python3.6(3.7)以及对应版本的dev和pip3
-> 即使您的环境中已经有Python2或Python3也需要安装Python-dev或Python3.5(3.6、3.7)-dev。
+### 注意事项
-现在,让我们来安装PaddlePaddle:
+* 可以使用`uname -m && cat /etc/*release`查看本机的操作系统和位数信息
+* 可以使用`pip -V`(Python版本为2.7)或`pip3 -V`(Python版本为3.5/3.6/3.7),确认pip/pip3版本是否满足要求
+* 默认提供的安装包需要计算机支持AVX指令集和MKL。如果您对机器环境不了解,请下载使用[快速安装脚本](https://fast-install.bj.bcebos.com/fast_install.sh),配套说明请参考[这里](https://github.com/PaddlePaddle/FluidDoc/tree/develop/doc/fluid/beginners_guide/install/install_script.md)。或者您也可以使用`cat /proc/cpuinfo | grep avx`来检测您的处理器是否支持该指令集,如不支持,请在[这里](./Tables.html/#ciwhls-release)下载`no_avx`版本的安装包
-1. 使用pip install来安装PaddlePaddle
+## 选择CPU/GPU
- * 对于需要**CPU版本PaddlePaddle**的用户:`pip install paddlepaddle` 或 `pip3 install paddlepaddle`
+* 如果您的计算机没有 NVIDIA® GPU,请安装CPU版的PaddlePaddle
- * 对于需要**GPU版本PaddlePaddle**的用户:`pip install paddlepaddle-gpu` 或 `pip3 install paddlepaddle-gpu`
+* 如果您的计算机有 NVIDIA® GPU,并且满足以下条件,推荐安装GPU版的PaddlePaddle
+ * *CUDA 工具包9.0配合cuDNN v7*
+ * *CUDA 工具包8.0配合cuDNN v7*
+ * *CUDA 工具包8.0配合cuDNN v5*
+ * *GPU运算能力超过1.0的硬件设备*
- > 1. 为防止出现nccl.h找不到的问题请首先按照以下命令安装nccl2(这里提供的是ubuntu 16.04,CUDA9,cuDNN v7下nccl2的安装指令),更多版本的安装信息请参考NVIDIA[官方网站](https://developer.nvidia.com/nccl/nccl-download):
- i. `wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb`
- ii. `dpkg -i nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb`
- iii. `sudo apt-get install -y libnccl2=2.2.13-1+cuda9.0 libnccl-dev=2.2.13-1+cuda9.0`
+您可参考NVIDIA官方文档了解CUDA和CUDNN的安装流程和配置方法,请见[CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/),[cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
- > 2. 如果您不规定pypi包版本号,我们默认为您提供支持Cuda 9/cuDNN v7的PaddlePaddle版本。
+## 安装方式
- * 对于出现`Cannot uninstall 'six'.`问题的用户,可是由于您的系统中已有的Python安装问题造成的,请使用`pip install paddlepaddle --ignore-installed six`(CPU)或`pip install paddlepaddle --ignore-installed six`(GPU)解决。
+Ubuntu系统下有4种安装方式:
- * 对于有**其他要求**的用户:`pip install paddlepaddle==[版本号]` 或 `pip3 install paddlepaddle==[版本号]`
+* pip安装(推荐)
+* [Docker安装](./install_Docker.html)
+* [源码编译安装](./compile/compile_Ubuntu.html/#ubt_source)
+* [Docker源码编译安装](./compile/compile_Ubuntu.html/#ubt_docker)
- > `版本号`参见[最新Release安装包列表](./Tables.html/#whls)或者您如果需要获取并安装**最新的PaddlePaddle开发分支**,可以从[最新dev安装包列表](./Tables.html/#ciwhls)或者我们的[CI系统](https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview) 中下载最新的whl安装包和c-api开发包并安装。如需登录,请点击“Log in as guest”。
+这里为您介绍pip安装方式
+## 安装步骤
+* CPU版PaddlePaddle:`pip install paddlepaddle` 或 `pip3 install paddlepaddle`
+* GPU版PaddlePaddle:`pip install paddlepaddle-gpu` 或 `pip3 install paddlepaddle-gpu`
+您可[验证是否安装成功](#check),如有问题请查看[FAQ](./FAQ.html)
+注:
-现在您已经完成使用`pip install` 来安装的PaddlePaddle的过程。
+* pip与python版本对应。如果是python2.7, 建议使用`pip`命令; 如果是python3.x, 则建议使用`pip3`命令
+* `pip install paddlepaddle-gpu` 此命令将安装支持CUDA 9.0 cuDNN v7的PaddlePaddle,如您对CUDA或cuDNN版本有不同要求,可用`pip install paddlepaddle==[版本号]`或 `pip3 install paddlepaddle==[版本号]`命令来安装,版本号请见[这里](https://pypi.org/project/paddlepaddle-gpu/#history)
+* 默认下载最新稳定版的安装包,如需获取开发版安装包,请参考[这里](./Tables.html/#ciwhls)
+
+## 验证安装
+安装完成后您可以使用命令`python` 或 `python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
-
-### ***使用Docker安装***
-
-
-
-为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)。
-
-
-
-> 请注意,要安装和使用支持 GPU 的PaddlePaddle版本,您必须先安装[nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
-
-
-
-如果已经**正确安装Docker**,即可以开始**使用Docker安装PaddlePaddle**
-
-1. 使用以下指令拉取我们为您预安装好PaddlePaddle的镜像:
-
- * 对于需要**CPU版本的PaddlePaddle**的用户请使用以下指令拉取我们为您预安装好*PaddlePaddle For CPU*的镜像:
-
- `docker pull hub.baidubce.com/paddlepaddle/paddle:1.2`
-
- * 对于需要**GPU版本的PaddlePaddle**的用户请使用以下指令拉取我们为您预安装好*PaddlePaddle For GPU*的镜像:
-
- `docker pull hub.baidubce.com/paddlepaddle/paddle:1.2-gpu-cuda9.0-cudnn7`
-
- * 您也可以通过以下指令拉取任意的我们提供的Docker镜像:
-
- `docker pull hub.baidubce.com/paddlepaddle/paddle:[tag]`
-
- > (请把[tag]替换为[镜像表](./Tables.html/#dockers)中的内容)
-
-2. 使用以下指令用已经拉取的镜像构建并进入Docker容器:
-
- `docker run --name [Name of container] -it -v $PWD:/paddle /bin/bash`
-
- > 上述命令中,--name [Name of container] 设定Docker的名称;-it 参数说明容器已和本机交互式运行; -v $PWD:/paddle 指定将当前路径(Linux中PWD变量会展开为当前路径的绝对路径)挂载到容器内部的 /paddle 目录; `` 指定需要使用的image名称,如果您需要使用我们的镜像请使用`hub.baidubce.com/paddlepaddle/paddle:[tag]` 注:tag的意义同第二步;/bin/bash是在Docker中要执行的命令。
-
-3. (可选:当您需要第二次进入Docker容器中)使用如下命令使用PaddlePaddle:
-
- `docker start [Name of container]`
-
- > 启动之前创建的容器。
-
- `docker attach [Name of container]`
-
- > 进入启动的容器。
-
-至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)。
-
-> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
-
-
-
-
-
-## ***验证安装***
-安装完成后您可以使用:`python` 或 `python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
-
-
-## ***如何卸载***
-请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用相应版本的pip):
+## 如何卸载
+请使用以下命令卸载PaddlePaddle:
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle`
* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu` 或 `pip3 uninstall paddlepaddle-gpu`
-
diff --git a/doc/fluid/beginners_guide/install/install_Windows.md b/doc/fluid/beginners_guide/install/install_Windows.md
index 49496c9f8..8ef5a6be7 100644
--- a/doc/fluid/beginners_guide/install/install_Windows.md
+++ b/doc/fluid/beginners_guide/install/install_Windows.md
@@ -1,45 +1,55 @@
-***
-
# **Windows下安装**
-本文将介绍如何在Windows系统下安装PaddlePaddle,您的计算机需要满足以下要求:
-
-* *64位台式机或笔记本电脑*
+## 环境准备
+* *64位操作系统*
* *Windows 7/8 ,Windows 10 专业版/企业版*
+* *Python 2.7/3.5/3.6/3.7*
+* *pip或pip3 >= 9.0.1*
-注:
+### 注意事项
+* 默认提供的安装包需要计算机支持AVX指令集和MKL
* 当前版本暂不支持NCCL,分布式等相关功能
-## 安装步骤
+## 选择CPU/GPU
-### ***使用pip安装***
+* 如果您的计算机没有 NVIDIA® GPU,请安装CPU版的PaddlePaddle
-* 对Python版本的要求
+* 如果您的计算机有 NVIDIA® GPU,并且满足以下条件,推荐安装GPU版的PaddlePaddle
+ * *CUDA 工具包8.0配合cuDNN v7*
+ * *GPU运算能力超过1.0的硬件设备*
-我们支持[Python官方提供](https://www.python.org/downloads/)的Python2.7.15,Python3.5.x,Python3.6.x,Python3.7.x
+您可参考NVIDIA官方文档了解CUDA和CUDNN的安装流程和配置方法,请见[CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/),[cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
-* 对pip版本的要求
+## 安装方式
-您的pip或pip3版本号需不低于9.0.1。pip与python版本是对应的, 如果是python2.7, 建议使用`pip`命令; 如果是python3.x, 则建议使用`pip3`命令。
+Windows系统下有3种安装方式:
-* 开始安装
+* pip安装(推荐)
+* [Docker安装](./install_Docker.html)
+* [源码编译安装](./compile/compile_Windows.html/#win_source)
-* ***CPU版本的PaddlePaddle***:
-执行如下命令:`pip install paddlepaddle`(python2.7) 或 `pip3 install paddlepaddle`(python3.x) 安装PaddlePaddle
+这里为您介绍pip安装方式
-* ***GPU版本的PaddlePaddle***:
-执行如下命令:`pip install paddlepaddle-gpu`(python2.7) 或 `pip3 install paddlepaddle-gpu`(python3.x) 安装PaddlePaddle
+## 安装步骤
-## ***验证安装***
-安装完成后您可以使用 `python` 或 `python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
+* CPU版PaddlePaddle:`pip install paddlepaddle` 或 `pip3 install paddlepaddle`
+* GPU版PaddlePaddle:`pip install paddlepaddle-gpu` 或 `pip3 install paddlepaddle-gpu`
-## ***如何卸载***
+您可[验证是否安装成功](#check),如有问题请查看[FAQ](./FAQ.html)
+
+注:
+
+* pip与python版本对应。如果是python2.7, 建议使用`pip`命令; 如果是python3.x, 则建议使用`pip3`命令
+* `pip install paddlepaddle-gpu` 此命令将安装支持CUDA 8.0 cuDNN v7的PaddlePaddle,目前windows环境下暂不支持其他版本的CUDA和cuDNN。
+
+
+## 验证安装
+安装完成后您可以使用 `python` 或 `python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
-* ***CPU版本的PaddlePaddle***:
-请使用以下命令:`pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle` 卸载PaddlePaddle
+## 如何卸载
-* ***GPU版本的PaddlePaddle***:
-请使用以下命令:`pip uninstall paddlepaddle-gpu` 或 `pip3 uninstall paddlepaddle-gpu` 卸载PaddlePaddle
+* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle` 或 `pip3 uninstall paddlepaddle`
+* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu` 或 `pip3 uninstall paddlepaddle-gpu`
diff --git a/doc/fluid/beginners_guide/install/install_script.md b/doc/fluid/beginners_guide/install/install_script.md
new file mode 100644
index 000000000..4823b5907
--- /dev/null
+++ b/doc/fluid/beginners_guide/install/install_script.md
@@ -0,0 +1,53 @@
+# 辅助安装脚本
+
+## 使用方法
+
+下载脚本至本地后,使用命令`/bin/bash fast_install.sh`启动脚本
+
+### Ubuntu和CentOS
+
+脚本会执行以下几步:
+
+1. GPU检测
+
+ 检测您的机器是否含有我们支持的GPU,如果有,会安装GPU版本的PaddlePaddle,否则会安装CPU版本。
+ (PaddlePaddle目前支持NVIDIA[官网](https://developer.nvidia.com/cuda-gpus#collapseOne)列出的,算力7.0以下的GPU和v100系列的GPU)
+
+2. CUDA,cuDNN检测
+
+ 检测您的机器是否安装我们支持的CUDA,cuDNN,具体地:
+
+ 1. 在`/usr/local/` 及其子目录下寻找 `cuda/cuda8/cuda9` 目录下的`version.txt`文件(通常如果您以默认方式安装了CUDA)。 如果提示未找到CUDA请使用命令`find / -name version.txt`找到您所需要的CUDA目录下的“version.txt”路径,然后按照提示输入。
+ 2. 在`/usr` 及其子目录下寻找文件 `cudnn.h` , 如果您的cuDNN未安装在默认路径请使用命令`find / -name cudnn.h`寻找您希望使用的cuDNN版本的`cudnn.h`路径并按提示输入
+
+ 如果未找到相应文件,则会安装CPU版本的PaddlePaddle
+
+3. 选择数学库
+脚本默认会为您安装支持[MKL](https://software.intel.com/en-us/mkl)数学库的PaddlePaddle,如果您的机器不支持`MKL`,请选择安装支持[OPENBLAS](https://www.openblas.net)的PaddlePaddle
+
+4. 选择PaddlePaddle版本
+我们为您提供2种版本:开发版和稳定版,推荐您选择测试验证过的稳定版
+
+5. 选择Python版本
+脚本默认会使用您机器中的Python,您也可以输入您希望使用的Python的路径
+
+6. 检查[AVX](https://zh.wikipedia.org/zh-hans/AVX指令集)指令集
+
+7. 使用[Python virtualenv](https://virtualenv.pypa.io/en/latest/)
+脚本也支持按您的需求创建Python的虚拟环境
+
+以上检查完成后就会为您安装对应您系统的PaddlePaddle了,安装一般需要1~2分钟会根据您的网络来决定,请您耐心等待。
+
+
+### MacOS
+
+脚本会执行以下几步:
+
+1. 选择PaddlePaddle版本
+我们为您提供2种版本:开发版和稳定版,推荐您选择测试验证过的稳定版
+
+2. 检查Python版本
+由于MacOS自带的Python通常依赖于系统环境,因此我们不支持MacOS自带的Python环境,请重新从Python.org安装Python,然后根据提示输入您希望使用的Python的路径
+
+3. 检查是否支持[AVX](https://zh.wikipedia.org/zh-hans/AVX指令集)指令集
+
--
GitLab