未验证 提交 7131ab5f 编写于 作者: Z Zhou Wei 提交者: GitHub

fix regularizaiton documention to dispel puzzle of user, test=develop (#1948)

fix regularizaiton documention to dispel puzzle of user
上级 119a58dd
......@@ -17,7 +17,9 @@ ParamAttr
- **name** (str,可选) - 参数的名称。默认值为None,表示框架自动创建参数的名称。
- **initializer** (Initializer,可选) - 参数的初始化方式。默认值为None,表示权重参数采用Xavier初始化方式,偏置参数采用全0初始化方式。
- **learning_rate** (float) - 参数的学习率。实际参数的学习率等于全局学习率乘以参数的学习率,再乘以learning rate schedule的系数。
- **regularizer** (WeightDecayRegularizer,可选) - 正则化因子。默认值为None,表示没有正则化因子。
- **regularizer** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` ,如果在 ``optimizer`` (例如 :ref:`cn_api_fluid_optimizer_SGDOptimizer` ) 中也
设置了正则化,``optimizer`` 中的正则化将被忽略。默认值为None,表示没有正则化。
- **trainable** (bool) - 参数是否需要训练。默认值为True,表示需要训练。
- **do_model_average** (bool) - 是否做模型平均。默认值为False,表示不做模型平均。
......
......@@ -18,7 +18,9 @@ WeightNormParamAttr
- **name** (None|str) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认为None。
- **initializer** (Initializer) - 初始化参数方法,例如 ``initializer = fluid.initializer.ConstantInitializer(1.0)`` 。默认为None,如果为None则使用默认初始化函数 `Xavier()` 。
- **learning_rate** (float32) - 学习率,优化过程 :math:`global\_lr∗parameter\_lr∗scheduler\_factor` 的学习速率,默认为1.0。
- **regularizer** (WeightDecayRegularizer) - 正则化方法,例如 ``regularizer = fluid.regularizer.L2DecayRegularizer(regularization_coeff=0.1)`` 。默认为None,如果为None则对权重不做正则化。
- **regularizer** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` ,如果在 ``optimizer`` (例如 :ref:`cn_api_fluid_optimizer_SGDOptimizer` ) 中也
设置了正则化,``optimizer`` 中的正则化将被忽略。默认值为None,表示没有正则化。
- **trainable** (bool) - 可选,指明参数是否可训练,默认为True。
- **do_model_average** (bool) - 可选,指明参数是否需要模型平均化操作(Model Average),默认为False。
......
......@@ -23,7 +23,9 @@ Adadelta优化器,具体细节可参考论文 `ADADELTA: AN ADAPTIVE LEARNING
- **epsilon** (float) - 维持数值稳定性的浮点型值,默认值为1.0e-6。
- **rho** (float) - 算法中的衰减率,默认值为0.95。
- **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法,例如fluid.regularizer.L2DecayRegularizer等。默认值为None,表示无正则化。
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
**代码示例**
......
......@@ -25,7 +25,9 @@ Adaptive Gradient 优化器(自适应梯度优化器,简称Adagrad)可以针
- **learning_rate** (float|Variable) - 学习率,用于参数更新的计算。可以是一个浮点型值或者一个值为浮点型的Variable
- **epsilon** (float, 可选) - 维持数值稳定性的浮点型值,默认值为1e-06
- **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。
- **regularization** (WeightDecayRegularizer, 可选) - 正则化函数,用于减少泛化误差。例如可以是 :ref:`cn_api_fluid_regularizer_L2DecayRegularizer` ,默认值为None
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str, 可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None
- **initial_accumulator_value** (float, 可选) - moment累加器的初始值,默认值为0.0
......
......@@ -28,7 +28,9 @@ Adam优化器出自 `Adam论文 <https://arxiv.org/abs/1412.6980>`_ 的第二节
- **beta1** (float|Variable, 可选) - 一阶矩估计的指数衰减率,是一个float类型或者一个shape为[1],数据类型为float32的Variable类型。默认值为0.9
- **beta2** (float|Variable, 可选) - 二阶矩估计的指数衰减率,是一个float类型或者一个shape为[1],数据类型为float32的Variable类型。默认值为0.999
- **epsilon** (float, 可选) - 保持数值稳定性的短浮点类型值,默认值为1e-08
- **regularization** (WeightDecayRegularizer, 可选) - 正则化函数,用于减少泛化误差。例如可以是 :ref:`cn_api_fluid_regularizer_L2DecayRegularizer` ,默认值为None
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str, 可选)- 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None
- **lazy_mode** (bool, 可选) - 设为True时,仅更新当前具有梯度的元素。官方Adam算法有两个移动平均累加器(moving-average accumulators)。累加器在每一步都会更新。在密集模式和稀疏模式下,两条移动平均线的每个元素都会更新。如果参数非常大,那么更新可能很慢。 lazy mode仅更新当前具有梯度的元素,所以它会更快。但是这种模式与原始的算法有不同的描述,可能会导致不同的结果,默认为False
......
......@@ -30,7 +30,9 @@ Adamax优化器是参考 `Adam论文 <https://arxiv.org/abs/1412.6980>`_ 第7节
- **beta2** (float, 可选) - 二阶矩估计的指数衰减率,默认值为0.999
- **epsilon** (float, 可选) - 保持数值稳定性的短浮点类型值,默认值为1e-08
- **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。
- **regularization** (WeightDecayRegularizer, 可选) - 正则化函数,用于减少泛化误差。例如可以是 :ref:`cn_api_fluid_regularizer_L2DecayRegularizer` ,默认值为None
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str, 可选)- 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None
.. note::
......
......@@ -33,7 +33,9 @@ DGC还使用动量因子掩藏(momentum factor masking)和预训练(warm-u
- **use_nesterov** (bool) - 启用Nesterov momentum。 True意味着使用Nesterov。默认值False。
- **local_grad_clip_norm** (float,可选) - 局部梯度裁减标准值。可选,默认为None,表示不需要裁减。
- **num_trainers** (int,可选) - 训练节点的数量。可选,默认为None。
- **regularization** (WeightDecayRegularizer,可选) - 正则器, 如 :ref:`cn_api_fluid_regularizer_L2DecayRegularizer`。可选,默认为None。
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。
**代码示例**
......
......@@ -23,7 +23,9 @@ Decayed Adagrad优化器,可以看做是引入了衰减率的 `Adagrad <http:/
- **learning_rate** (float|Variable) - 学习率,用于参数更新的计算。可以是一个浮点型值或者一个值为浮点型的Variable
- **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。
- **decay** (float,可选) – 衰减率,默认值为0.95
- **regularization** (WeightDecayRegularizer, 可选) - 正则化函数,用于减少泛化误差。例如可以是 :ref:`cn_api_fluid_regularizer_L2DecayRegularizer` ,默认值为None
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **epsilon** (float,可选) - 保持数值稳定性的短浮点类型值,默认值为1e-06
- **name** (str, 可选)- 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None
......
......@@ -34,7 +34,9 @@ FTRL 原始论文: ( `https://www.eecs.tufts.edu/~dsculley/papers/ad-click-predi
- **l1** (float,可选) - L1 regularization strength,默认值0.0。
- **l2** (float,可选) - L2 regularization strength,默认值0.0。
- **lr_power** (float,可选) - 学习率降低指数,默认值-0.5。
- **regularization** - 正则化器,例如 ``fluid.regularizer.L2DecayRegularizer`` 。
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str, 可选) - 可选的名称前缀,一般无需设置,默认值为None。
抛出异常:
......
......@@ -30,7 +30,9 @@ Deep Learning: Training BERT in 76 minutes <https://arxiv.org/pdf/1904.00962.pdf
- **beta2** (float) – 第二个动量估计的指数衰减率。
- **epsilon** (float) – 一个小的浮点值,目的是维持数值稳定性。
- **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。
- **regularization** (Regularizer) – 一个正则化器,如fluid.regularizer.L1DecayRegularizer。
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **exclude_from_weight_decay_fn** (function) – 当某个参数作为输入该函数返回值为 ``True`` 时,为该参数跳过权重衰减。
- **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。
......
......@@ -22,7 +22,9 @@ LarsMomentumOptimizer
- **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。
- **lars_coeff** (float,可选) - 定义LARS本地学习率的权重,默认值0.001。
- **lars_weight_decay** (float,可选) - 使用LARS进行衰减的权重衰减系数,默认值0.0005。
- **regularization** - 正则化函数,例如 :code:`fluid.regularizer.L2DecayRegularizer`。
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str, 可选) - 可选的名称前缀,一般无需设置,默认值为None。
......
......@@ -26,7 +26,9 @@ ModelAverage优化器,在训练过程中累积特定连续的历史Parameters
- **average_window_rate** (float) – 相对于Parameters更新次数的窗口长度计算比率
- **min_average_window** (int, 可选) – 平均值计算窗口长度的最小值,默认值为10000
- **max_average_window** (int, 可选) – 平均值计算窗口长度的最大值,推荐设置为一轮训练中mini-batchs的数目,默认值为10000
- **regularization** (WeightDecayRegularizer, 可选) – 正则化函数,用于减少泛化误差。例如可以是 :ref:`cn_api_fluid_regularizer_L2DecayRegularizer` ,默认值为None
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str, 可选)– 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None
**代码示例**
......
......@@ -20,7 +20,9 @@ MomentumOptimizer
- **momentum** (float) - 动量因子。
- **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。
- **use_nesterov** (bool,可选) - 赋能牛顿动量,默认值False。
- **regularization** - 正则化函数,,例如 :code:`fluid.regularizer.L2DecayRegularizer`,默认值None。
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str, 可选) - 可选的名称前缀,一般无需设置,默认值为None。
**代码示例**:
......
......@@ -35,7 +35,9 @@ RMSPropOptimizer
- **epsilon** (float,可选) - 等式中的epsilon是平滑项,避免被零除,默认值1e-6。
- **momentum** (float,可选) - 方程中的β是动量项,默认值0.0。
- **centered** (bool,可选) - 如果为True,则通过梯度的估计方差,对梯度进行归一化;如果False,则由未centered的第二个moment归一化。将此设置为True有助于模型训练,但会消耗额外计算和内存资源。默认为False。
- **regularization** - 正则器项,如 ``fluid.regularizer.L2DecayRegularizer`` 。
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str, 可选) - 可选的名称前缀,一般无需设置,默认值为None。
抛出异常:
......
......@@ -14,9 +14,11 @@ SGDOptimizer
参数:
- **learning_rate** (float|Variable) - 用于更新参数的学习率。可以是浮点值,也可以是具有一个浮点值作为数据元素的变量。
- **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。
- **regularization** - 一个正则化器,例如 ``fluid.regularizer.L2DecayRegularizer`` 。
- **regularization** (WeightDecayRegularizer,可选) - 正则化方法。支持两种正则化策略: :ref:`cn_api_fluid_regularizer_L1Decay` 、
:ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略;
如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。
- **name** (str, 可选) - 可选的名称前缀,一般无需设置,默认值为None。
**代码示例**
......
......@@ -8,6 +8,11 @@ L1Decay
L1Decay实现L1权重衰减正则化,用于模型训练,使得权重矩阵稀疏。
该类生成的实例对象,需要设置在 :ref:`cn_api_fluid_ParamAttr` 或者 ``optimizer``
(例如 :ref:`cn_api_fluid_optimizer_SGDOptimizer` )中,在 ``ParamAttr`` 中设置时,
只对该网络层中的参数生效;在 ``optimizer`` 中设置时,会对所有的参数生效;如果同时设置,
在 ``ParamAttr`` 中设置的优先级会高于在 ``optimizer`` 中设置。
具体实现中,L1权重衰减正则化的计算公式如下:
.. math::
......@@ -16,7 +21,7 @@ L1Decay实现L1权重衰减正则化,用于模型训练,使得权重矩阵
参数:
- **regularization_coeff** (float) – L1正则化系数,默认值为0.0。
**代码示例**
**代码示例1**
.. code-block:: python
......@@ -38,4 +43,29 @@ L1Decay实现L1权重衰减正则化,用于模型训练,使得权重矩阵
optimizer.minimize(avg_loss)
**代码示例2**
.. code-block:: python
# 在 ParamAttr 和 optimizer 中同时设置正则化
import paddle.fluid as fluid
l1 = fluid.regularizer.L1Decay(regularization_coeff=0.1)
l2 = fluid.regularizer.L2Decay(regularization_coeff=0.1)
x = fluid.layers.uniform_random([3,4])
# 在ParamAttr中设置L1正则化
w_param = fluid.ParamAttr(regularizer=l1)
hidden1 = fluid.layers.fc(x, 8, param_attr=w_param) # fc_0.w_0(L1), fc_0.b_0
hidden2 = fluid.layers.fc(hidden1, 16, param_attr=w_param) # fc_1.w_0(L1), fc_1.b_0
predict = fluid.layers.fc(hidden2, 32) # fc_3.w_0, fc_3.b_0
avg_loss = fluid.layers.mean(predict)
# 在optimizer中设置L2正则化
optimizer = fluid.optimizer.SGD(learning_rate=1e-4, regularization=l2)
optimizer.minimize(avg_loss)
# 将会打印出提示信息:
# Regularization of [fc_0.w_0, fc_1.w_0] have been set by ParamAttr or WeightNormParamAttr already.
# So, the Regularization of Optimizer will not take effect for these parameters!
......@@ -7,6 +7,11 @@ L2Decay
L2Decay实现L2权重衰减正则化,用于模型训练,有助于防止模型对训练数据过拟合。
该类生成的实例对象,需要设置在 :ref:`cn_api_fluid_ParamAttr` 或者 ``optimizer``
(例如 :ref:`cn_api_fluid_optimizer_SGDOptimizer` )中,在 ``ParamAttr`` 中设置时,
只对该网络层中的参数生效;在 ``optimizer`` 中设置时,会对所有的参数生效;如果同时设置,
在 ``ParamAttr`` 中设置的优先级会高于在 ``optimizer`` 中设置。
具体实现中,L2权重衰减正则化的计算公式如下:
.. math::
......@@ -15,7 +20,7 @@ L2Decay实现L2权重衰减正则化,用于模型训练,有助于防止模
参数:
- **regularization_coeff** (float) – 正则化系数,默认值为0.0。
**代码示例**
**代码示例1**
.. code-block:: python
......@@ -37,4 +42,28 @@ L2Decay实现L2权重衰减正则化,用于模型训练,有助于防止模
optimizer.minimize(avg_loss)
**代码示例2**
.. code-block:: python
# 在 ParamAttr 和 optimizer 中同时设置正则化
import paddle.fluid as fluid
l1 = fluid.regularizer.L1Decay(regularization_coeff=0.1)
l2 = fluid.regularizer.L2Decay(regularization_coeff=0.1)
x = fluid.layers.uniform_random([3,4])
# 在ParamAttr中设置L1正则化
w_param = fluid.ParamAttr(regularizer=l1)
hidden1 = fluid.layers.fc(x, 8, param_attr=w_param) # fc_0.w_0(L1), fc_0.b_0
hidden2 = fluid.layers.fc(hidden1, 16, param_attr=w_param) # fc_1.w_0(L1), fc_1.b_0
predict = fluid.layers.fc(hidden2, 32) # fc_3.w_0, fc_3.b_0
avg_loss = fluid.layers.mean(predict)
# 在optimizer中设置L2正则化
optimizer = fluid.optimizer.SGD(learning_rate=1e-4, regularization=l2)
optimizer.minimize(avg_loss)
# 将会打印出提示信息:
# Regularization of [fc_0.w_0, fc_1.w_0] have been set by ParamAttr or WeightNormParamAttr already.
# So, the Regularization of Optimizer will not take effect for these parameters!
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册