From 272a6bccfeed7f63b943121f2ee129e2df2116a4 Mon Sep 17 00:00:00 2001 From: Cheerego <35982308+shanyi15@users.noreply.github.com> Date: Mon, 13 May 2019 20:04:09 +0800 Subject: [PATCH] syn_cn_en_apidoc (#856) --- doc/fluid/api_cn/fluid_cn.rst | 284 +++++++++------------------------ doc/fluid/api_cn/layers_cn.rst | 106 +++++------- 2 files changed, 115 insertions(+), 275 deletions(-) diff --git a/doc/fluid/api_cn/fluid_cn.rst b/doc/fluid/api_cn/fluid_cn.rst index 468a346df..e0acc6ef3 100644 --- a/doc/fluid/api_cn/fluid_cn.rst +++ b/doc/fluid/api_cn/fluid_cn.rst @@ -2,138 +2,6 @@ fluid ################# - - -.. _cn_api_fluid_AsyncExecutor: - -AsyncExecutor -------------------------------- - -.. py:class:: paddle.fluid.AsyncExecutor(place=None, run_mode='') - -**AsyncExecutor正在积极开发,API可能在短期内进行调整。** - -Python中的异步执行器。AsyncExecutor利用多核处理器和数据排队的强大功能,使数据读取和融合解耦,每个线程并行运行。 - -AsyncExecutor不是在python端读取数据,而是接受一个训练文件列表,该列表将在c++中检索,然后训练输入将被读取、解析并在c++代码中提供给训练网络。 - - -参数: - - **place** (fluid.CPUPlace|None) - 指示 executor 将在哪个设备上运行。目前仅支持CPU - -**代码示例:** - -.. code-block:: python - - data_feed = fluid.DataFeedDesc('data.proto') - startup_program = fluid.default_startup_program() - main_program = fluid.default_main_program() - filelist = ["train_data/part-%d" % i for i in range(100)] - thread_num = len(filelist) / 4 - place = fluid.CPUPlace() - async_executor = fluid.AsyncExecutor(place) - async_executor.run_startup_program(startup_program) - epoch = 10 - for i in range(epoch): - async_executor.run(main_program, - data_feed, - filelist, - thread_num, - [acc], - debug=False) - -.. note:: - - 对于并行gpu调试复杂网络,您可以在executor上测试。他们有完全相同的参数,并可以得到相同的结果。 - - 目前仅支持CPU - -.. py:method:: run(program, data_feed, filelist, thread_num, fetch, mode='', debug=False) - -使用此 ``AsyncExecutor`` 来运行 ``program`` 。 - -``filelist`` 中包含训练数据集。用户也可以通过在参数 ``fetch`` 中提出变量来检查特定的变量, 正如 ``fluid.Executor`` 。 - -但不像 ``fluid.Executor`` , ``AsyncExecutor`` 不返回获取到的变量,而是将每个获取到的变量作为标准输出展示给用户。 - -数据集上的运算在多个线程上执行,每个线程中都会独立出一个线程本地作用域,并在此域中建立运算。 -所有运算同时更新参数值。 - -参数: - - **program** (Program) – 需要执行的program。如果没有提供该参数,默认使用 ``default_main_program`` - - **data_feed** (DataFeedDesc) – ``DataFeedDesc`` 对象 - - **filelist** (str) – 一个包含训练数据集文件的文件列表 - - **thread_num** (int) – 并发训练线程数。参照 *注解* 部分获取合适的设置方法 - - **fetch** (str|list) – 变量名,或者变量名列表。指明最后要进行观察的变量命名 - - **mode** (str) – 该接口的运行模式 - - **debug** (bool) – 如果为True, 在每一个minibatch处理后,fetch 中指明的变量将会通过标准输出打印出来 - -.. note:: - 1.该执行器会运行program中的所有运算,不只是那些依赖于fetchlist的运算 - - 2.该类执行器在多线程上运行,每个线程占用一个CPU核。为了实现效率最大化,建议将 ``thread_num`` 等于或稍微小于CPU核心数 - -.. py:method:: download_data(afs_path, local_path, fs_default_name, ugi, file_cnt, hadoop_home='$HADOOP_HOME', process_num=12) - -download_data是用于分布式训练的默认下载方法,用户可不使用该方法下载数据。 - -**示例** - -.. code-block:: python - - exe = fluid.AsyncExecutor() - exe.download_data("/xxx/xxx/xx/", - "./data", "afs:// - xxx.xxx.xxx.xxx:9901", "xxx,yyy") - -参数: - - **afs_path** (str) - 用户定义的afs_path - - **local_path** (str) - 下载数据路径 - - **fs_default_name** (str) - 文件系统服务器地址 - - **ugi** (str) - hadoop ugi - - **file_cnt** (int) - 用户可以指定用于调试的文件号 - - **hadoop_home** (str) - hadoop home path - - **process_num** (int) - 下载进程号 - -.. py:method:: get_instance() - -获取当前节点的实例,以便用户可以在分布式背景下中执行操作。 - -.. py:method:: config_distributed_nodes() - -如果用户需要运行分布式AsyncExecutor,则需要进行全局配置,以便获取当前进程的信息。 - -.. py:method:: stop() - -在流程结束时,用户应该停止服务器并阻止所有workers。 - -.. py:method:: init_server(dist_desc) - -如果当前进程是server,则初始化当前节点的服务器。 - -参数: - - **dist_desc** (str)- 描述如何初始化worker和server的protobuf字符串 - -.. py:method:: init_worker(dist_desc, startup_program) - -如果当前进程是worker,则初始化当前节点的worker - -参数: - - **dist_desc** (str)- 描述如何初始化worker和server的protobuf字符串 - - **startup_program** (fluid.Program)- 当前进程的startup program - -.. py:method:: init_model() - -可以从其中一个worker中调用的init_model命令。随之,在server中初始化模型参数。 - -.. py:method:: save_model(save_path) - -可以从其中一个worker调用的save_model命令。随之,模型参数会保存在server中并上传到文件系统的save_path指定的位置。 - -参数: - - **save_path** (str)- 文件系统的保存路径 - - .. _cn_api_fluid_BuildStrategy: BuildStrategy @@ -263,7 +131,7 @@ CompiledProgram用于转换程序以进行各种优化。例如, cpu_places ------------------------------- -.. py:function:: paddle.fluid.cpu_places(device_count=None) +.. py:function:: paddle.fluid.cpu_places(device_count=None) 创建 ``fluid.CPUPlace`` 对象列表。 @@ -299,7 +167,7 @@ CPUPlace是设备的描述符。它代表一个CPU,可以访问CPUPlace对应 create_lod_tensor ------------------------------- -.. py:function:: paddle.fluid.create_lod_tensor(data, recursive_seq_lens, place) +.. py:function:: paddle.fluid.create_lod_tensor(data, recursive_seq_lens, place) 该函数从一个numpy数组,列表或者已经存在的lod tensor中创建一个lod tensor。 @@ -358,7 +226,7 @@ create_random_int_lodtensor 假如我们想用LoD Tensor来承载一词序列,其中每个词由一个整数来表示。现在,我们意图创建一个LoD Tensor来代表两个句子,其中一个句子有两个词,另外一个句子有三个。那么 ``base_shape`` 为[1], 输入的length-based ``recursive_seq_lens`` 是 [[2, 3]]。那么LoDTensor的整体形状应为[5, 1],并且为两个句子存储5个词。 -参数: +参数: - **recursive_seq_lens** (list) – 一组列表的列表, 表明了由用户指明的length-based level of detail信息 - **base_shape** (list) – LoDTensor所容纳的基本元素的形状 - **place** (Place) – CPU或GPU。 指明返回的新LoD Tensor存储地点 @@ -496,9 +364,9 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含 data_feed.set_batch_size(128) data_feed.set_dense_slots('wd') # The slot named 'wd' will be dense data_feed.set_use_slots('wd') # The slot named 'wd' will be used - + #Finally, the content can be dumped out for debugging purpose: - + print(data_feed.desc()) @@ -517,7 +385,7 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含 **代码示例:** .. code-block:: python - + data_feed = fluid.DataFeedDesc('data.proto') data_feed.set_batch_size(128) @@ -534,11 +402,11 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含 **代码示例:** .. code-block:: python - + data_feed = fluid.DataFeedDesc('data.proto') data_feed.set_dense_slots(['words']) -.. note:: +.. note:: 默认情况下,所有slot都是稀疏的 @@ -558,7 +426,7 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含 data_feed.set_use_slots(['words']) .. note:: - + 默认值不用于所有slot @@ -596,13 +464,13 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 以下是简单用法: .. code-block:: python - + place = fluid.CPUPlace() img = fluid.layers.data(name='image', shape=[1, 28, 28]) label = fluid.layers.data(name='label', shape=[1], dtype='int64') feeder = fluid.DataFeeder([img, label], fluid.CPUPlace()) result = feeder.feed([([0] * 784, [9]), ([1] * 784, [1])]) - + 在多GPU模型训练时,如果需要提前分别向各GPU输入数据,可以使用 ``decorate_reader`` 函数。 .. code-block:: python @@ -637,14 +505,14 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 for data in reader(): outs = exe.run(program=main_program, feed=feeder.feed(data)) - - + + .. py:method:: feed(iterable) 根据feed_list(数据输入表)和iterable(可遍历的数据)提供的信息,将输入数据转成一种特殊的数据结构,使它们可以输入到 ``Executor`` 和 ``ParallelExecutor`` 中。 -参数: +参数: - **iterable** (list|tuple) – 要输入的数据 返回: 转换结果 @@ -657,7 +525,7 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 该方法获取的多个minibatch,并把每个minibatch提前输入进各个设备中。 -参数: +参数: - **iterable** (list|tuple) – 要输入的数据 - **num_places** (int) – 设备数目。默认为None。 @@ -673,23 +541,23 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 .. py:method:: decorate_reader(reader, multi_devices, num_places=None, drop_last=True) - + 将reader返回的输入数据batch转换为多个mini-batch,之后每个mini-batch都会被输入进各个设备(CPU或GPU)中。 - + 参数: - **reader** (fun) – 该参数是一个可以生成数据的函数 - **multi_devices** (bool) – bool型,指明是否使用多个设备 - **num_places** (int) – 如果 ``multi_devices`` 为 ``True`` , 可以使用此参数来设置GPU数目。如果 ``multi_devices`` 为 ``None`` ,该函数默认使用当前训练机所有GPU设备。默认为None。 - - **drop_last** (bool) – 如果最后一个batch的大小比 ``batch_size`` 要小,则可使用该参数来指明是否选择丢弃最后一个batch数据。 默认为 ``True`` + - **drop_last** (bool) – 如果最后一个batch的大小比 ``batch_size`` 要小,则可使用该参数来指明是否选择丢弃最后一个batch数据。 默认为 ``True`` 返回:转换结果 返回类型: dict - + 抛出异常: ``ValueError`` – 如果 ``drop_last`` 值为False并且data batch与设备不匹配时,产生此异常 - + @@ -746,7 +614,7 @@ default_startup_program 该函数可以获取默认/全局 startup program (启动程序)。 -``fluid.layers`` 中的layer函数会新建参数、readers(读取器)、NCCL句柄作为全局变量。 +``fluid.layers`` 中的layer函数会新建参数、readers(读取器)、NCCL句柄作为全局变量。 startup_program会使用内在的operators(算子)去初始化他们,并由layer函数将这些operators追加到startup program中。 @@ -777,7 +645,7 @@ DistributeTranspiler 该类可以把fluid program转变为分布式数据并行计算程序(distributed data-parallelism programs),可以有Pserver和NCCL2两种模式。 当program在Pserver(全称:parameter server)模式下, ``main_program`` (主程序)转为使用一架远程parameter server(即pserver,参数服务器)来进行参数优化,并且优化图会被输入到一个pserver program中。 在NCCL2模式下,transpiler会在 ``startup_program`` 中附加一个 ``NCCL_ID`` 广播算子(broadcasting operators)来实现在该集群中所有工作结点共享 ``NCCL_ID`` 。 -调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``ParallelExecutor`` 来启动NCCL2分布式模式。 +调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``ParallelExecutor`` 来启动NCCL2分布式模式。 @@ -822,11 +690,11 @@ DistributeTranspiler 该方法可以运行该transpiler(转译器)。 -参数: +参数: - **trainer_id** (int) – 当前Trainer worker的id, 如果有n个Trainer worker, id 取值范围为0 ~ n-1 - - **program** (Program|None) – 待transpile(转译)的program, 缺省为 ``fluid.default_main_program()`` + - **program** (Program|None) – 待transpile(转译)的program, 缺省为 ``fluid.default_main_program()`` - **startup_program** (Program|None) - 要转译的 ``startup_program`` ,默认为 ``fluid.default_startup_program()`` - - **pservers** (str) – 内容为Pserver列表的字符串,格式为:按逗号区分不同的Pserver,每个Pserver的格式为 *ip地址:端口号* + - **pservers** (str) – 内容为Pserver列表的字符串,格式为:按逗号区分不同的Pserver,每个Pserver的格式为 *ip地址:端口号* - **trainers** (int|str) – 在Pserver模式下,该参数指Trainer机的个数;在nccl2模式下,它是一个内容为Trainer终端列表的字符串 - **sync_mode** (bool) – 是否做同步训练(synchronous training), 默认为True - **startup_program** (Program|None) – 待transpile(转译)的startup_program,默认为 ``fluid.default_main_program()`` @@ -847,10 +715,10 @@ DistributeTranspiler 该方法可以得到Pserver(参数服务器)侧的程序 - -参数: + +参数: - **endpoint** (str) – 当前Pserver终端 - + 返回: 当前Pserver需要执行的program 返回类型: Program @@ -861,21 +729,21 @@ DistributeTranspiler 该方法可以得到Pserver侧用于分布式训练的 ``main_program`` 和 ``startup_program`` 。 -参数: +参数: - **endpoint** (str) – 当前Pserver终端 返回: (main_program, startup_program), “Program”类型的元组 -返回类型: tuple - - +返回类型: tuple + + .. py:method:: get_startup_program(endpoint, pserver_program=None, startup_program=None) **该函数已停止使用** 获取当前Pserver的startup_program,如果有多个被分散到不同blocks的变量,则修改operator的输入变量。 -参数: +参数: - **endpoint** (str) – 当前Pserver终端 - **pserver_program** (Program) – 已停止使用。 先调用get_pserver_program - **startup_program** (Program) – 已停止使用。应在初始化时传入startup_program @@ -947,18 +815,18 @@ ExecutionStrategy .. py:attribute:: allow_op_delay - + 这是一个bool类型成员,表示是否推迟communication operators(交流运算)的执行,这样做会使整体执行过程更快一些。但是在一些模型中,allow_op_delay会导致程序中断。默认为False。 - + .. py:attribute:: num_iteration_per_drop_scope - + int型成员。它表明了清空执行时产生的临时变量需要的程序执行重复次数。因为临时变量的形状可能在两次重复过程中保持一致,所以它会使整体执行过程更快。默认值为100。 .. note:: 1. 如果在调用 ``run`` 方法时获取结果数据,``ParallelExecutor`` 会在当前程序重复执行尾部清空临时变量 - + 2. 在一些NLP模型里,该成员会致使GPU内存不足。此时,你应减少 ``num_iteration_per_drop_scope`` 的值 @@ -1005,12 +873,12 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局 .. code-block:: python - # 新建一个执行引擎Executor名为exe。 + # 新建一个执行引擎Executor名为exe。 place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() exe = fluid.Executor(place) # 仅运行一次startup program. - # 不需要优化/编译这个startup program. + # 不需要优化/编译这个startup program. exe.run(fluid.default_startup_program()) # 无需编译,直接运行main program @@ -1018,7 +886,7 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局 feed=feed_dict, fetch_list=[loss.name]) - # 另一种方法是,编译这个main program然后运行. 参考CompiledProgram + # 另一种方法是,编译这个main program然后运行. 参考CompiledProgram compiled_prog = compiler.CompiledProgram( fluid.default_main_program()).with_data_parallel( loss_name=loss.name) @@ -1027,7 +895,7 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局 fetch_list=[loss.name]) -参数: +参数: - **place** (core.CPUPlace|core.CUDAPlace(n)) – 指明了 ``Executor`` 的执行场所 @@ -1038,11 +906,11 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局 关闭这个执行器(Executor)。 调用这个方法后不可以再使用这个执行器。 对于分布式训练, 该函数会释放在PServers上和目前Trainer有关联的资源。 - + **示例代码** .. code-block:: python - + cpu = core.CPUPlace() exe = Executor(cpu) ... @@ -1059,7 +927,7 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后 应注意,执行器会执行program中的所有算子而不仅仅是依赖于fetch_list的那部分。 -参数: +参数: - **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (未编译的) - **feed** (dict) – 前向输入的变量,数据,词典dict类型, 例如 {“image”: ImageData, “label”: LabelData} - **fetch_list** (list) – 用户想得到的变量或者命名的列表, 该方法会根据这个列表给出结果 @@ -1068,7 +936,7 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后 - **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。缺省为全局域 - **return_numpy** (bool) – 如果为True,则将结果张量(fetched tensor)转化为numpy - **use_program_cache** (bool) – 是否跨批使用缓存程序设置。设置为True时,只有当(1)程序没有用数据并行编译,并且(2)program、 feed变量名和fetch_list变量名与上一步相比没有更改时,运行速度才会更快。 - + 返回: 根据fetch_list来获取结果 返回类型: list(numpy.array) @@ -1088,19 +956,19 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后 .. code-block:: python - - + + cpu = core.CPUPlace() exe = Executor(cpu) exe.run(default_startup_program()) - + .. code-block:: python - + x = numpy.random.random(size=(10, 1)).astype('float32') outs = exe.run( feed={'X': x}, fetch_list=[loss.name]) - + @@ -1155,7 +1023,7 @@ LoDTensor LoDTensor是一个具有LoD信息的张量(Tensor) -``np.array(lod_tensor)`` 可以将LoDTensor转换为numpy array。 +``np.array(lod_tensor)`` 可以将LoDTensor转换为numpy array。 ``lod_tensor.lod()`` 可以获得LoD信息。 @@ -1169,7 +1037,7 @@ X 为 LoDTensor,它包含两个序列。第一个长度是2,第二个长度 :: - x.lod = [[2, 3]] + x.lod = [[2, 3]] x.data = [[1, 2], [3, 4], // seq 1 [5, 6], [7, 8], [9, 10]] // seq 2 @@ -1204,9 +1072,9 @@ LoD可以有多个level(例如,一个段落可以有多个句子,一个句 .. py:method:: lod(self: paddle.fluid.core.LoDTensor) → List[List[int]] -得到LoD Tensor的LoD。 +得到LoD Tensor的LoD。 -返回:LoD Tensor的LoD。 +返回:LoD Tensor的LoD。 返回类型:out(List [List [int]]) @@ -1287,7 +1155,7 @@ memory_optimize - **skip_opt_set** (set) – set中的vars将不被内存优化。 - **print_log** (bool) – 是否打印debug日志。 - **level** (int) 如果 level=0 并且shape是完全相等,则重用。 - + 返回: None @@ -1309,13 +1177,13 @@ name_scope 注意: 这个函数只能用于调试和可视化。不要将其用于分析,比如graph/program转换。 -参数: +参数: - **prefix** (str) - 前缀 **示例代码** .. code-block:: python - + with name_scope("encoder"): ... with name_scope("decoder"): @@ -1344,7 +1212,7 @@ ParallelExecutor -参数: +参数: - **use_cuda** (bool) – 是否使用CUDA - **loss_name** (str) – 在训练阶段,必须提供loss function名称。默认为None - **main_program** (Program) – 需要执行的program。如果未提供, 那么将使用 ``default_main_program``。 默认为None @@ -1385,11 +1253,11 @@ ParallelExecutor 例如,如果 ``feed`` 是个 ``dict`` 类型变量,则有 .. code-block:: python - + exe = ParallelExecutor() # 图像会被split到设备中。假设有两个设备,那么每个设备将会处理形为 (24, 1, 28, 28)的图像 exe.run(feed={'image': numpy.random.random(size=(48, 1, 28, 28))}) - + 如果 ``feed`` 是个 ``list`` 类型变量,则有 .. code-block:: python @@ -1404,7 +1272,7 @@ ParallelExecutor {"image": numpy.random.random(size=(32, 1, 28, 28))}, ]) -参数: +参数: - **fetch_list** (list) – 获取的变量名列表 - **feed** (list|dict|None) – feed变量。 如果该参数是 ``dict`` 类型,feed中的数据将会被分割(split)并分送给多个设备(CPU/GPU)。反之,如果它是 ``list`` ,则列表中的各个元素都直接分别被拷贝到各设备中。默认为None - **feed_dict** – 该参数已经停止使用。feed参数的别名, 为向后兼容而立。默认为None @@ -1414,7 +1282,7 @@ ParallelExecutor 返回类型:List -抛出异常: +抛出异常: - ``ValueError`` - 如果feed参数是list类型,但是它的长度不等于可用设备(执行场所)的数目,再或者给定的feed不是dict类型,抛出此异常 - ``TypeError`` - 如果feed参数是list类型,但是它里面的元素不是dict类型时,弹出此异常 @@ -1442,7 +1310,7 @@ ParallelExecutor .. _cn_api_fluid_ParamAttr: - + ParamAttr ------------------------------- @@ -1451,7 +1319,7 @@ ParamAttr 该类代表了参数的各种属性。 为了使神经网络训练过程更加流畅,用户可以根据需要调整参数属性。比如learning rate(学习率), regularization(正则化), trainable(可训练性), do_model_average(平均化模型)和参数初始化方法. -参数: +参数: - **name** (str) – 参数名。默认为None。 - **initializer** (Initializer) – 初始化该参数的方法。 默认为None - **learning_rate** (float) – 参数的学习率。计算方法为 :math:`global\_lr*parameter\_lr∗scheduler\_factor` 。 默认为1.0 @@ -1459,7 +1327,7 @@ ParamAttr - **trainable** (bool) – 该参数是否可训练。默认为True - **gradient_clip** (BaseGradientClipAttr) – 减少参数梯度的方法。默认为None - **do_model_average** (bool) – 该参数是否服从模型平均值。默认为False - + **代码示例** .. code-block:: python @@ -1553,7 +1421,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。 用于debug -参数: +参数: - **throw_on_error** (bool): 没有设置任何必需的字段时,抛出值错误。 - **with_details** (bool): 值为true时,打印更多关于变量和参数的信息,如trainable, optimize_attr等 @@ -1561,7 +1429,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。 返回类型: str -抛出异常: +抛出异常: - ``ValueError`` - 当 ``throw_on_error == true`` ,但没有设置任何必需的字段时,抛出 ``ValueError`` 。 @@ -1610,8 +1478,8 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。 test_program = train_program.clone(for_test=True) sgd = fluid.optimizer.SGD(learning_rate=1e-3) with fluid.program_guard(train_program, startup_program): - sgd.minimize(loss) - + sgd.minimize(loss) + 2.如果分别运行 train Program 和 test Program,则可以不使用clone。 .. code-block:: python @@ -1650,7 +1518,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。 注意:在序列化和反序列化之后,所有关于参数的信息都会丢失。 -参数: +参数: - **binary_str_type** (str) – prootbuf二进制字符串 返回: 反序列化后的ProgramDesc @@ -1691,7 +1559,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。 返回:generator 会yield每个Program中的变量 返回类型:iterable - + @@ -1736,7 +1604,7 @@ program_guard data = ... -参数: +参数: - **main_program** (Program) – “with”语句中将使用的新的main program。 - **startup_program** (Program) – “with”语句中将使用的新的startup program。若传入 ``None`` 则不改变当前的启动程序。 @@ -1754,7 +1622,7 @@ program_guard release_memory ------------------------------- -.. py:function:: paddle.fluid.release_memory(input_program, skip_opt_set=None) +.. py:function:: paddle.fluid.release_memory(input_program, skip_opt_set=None) 该函数可以调整输入program,插入 ``delete_op`` 删除算子,提前删除不需要的变量。 @@ -1762,8 +1630,8 @@ release_memory **提醒**: 该API还在试验阶段,会在后期版本中删除。不建议用户使用。 -参数: - - **input_program** (Program) – 在此program中插入 ``delete_op`` +参数: + - **input_program** (Program) – 在此program中插入 ``delete_op`` - **skip_opt_set** (set) – 在内存优化时跳过的变量的集合 返回: None @@ -1788,7 +1656,7 @@ scope_guard .. code-block:: python import paddle.fluid as fluid - + new_scope = fluid.Scope() with fluid.scope_guard(new_scope): ... diff --git a/doc/fluid/api_cn/layers_cn.rst b/doc/fluid/api_cn/layers_cn.rst index 7781e67a1..dd87b4fce 100644 --- a/doc/fluid/api_cn/layers_cn.rst +++ b/doc/fluid/api_cn/layers_cn.rst @@ -2882,8 +2882,8 @@ dropout op可以从Program中删除,提高执行效率。 1. downgrade_in_infer(default), 在预测时减小输出结果 - train: out = input * mask - - - inference: out = input * (1.0 - dropout_prob) + + - inference: out = input * (1.0 - dropout_prob) (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``dropout_prob`` ) @@ -3179,9 +3179,9 @@ LSTMP层(具有循环映射的LSTM)在LSTM层后有一个分离的映射层, - **proj_activation** (str) - 投影输出的激活函数。Choices = [“sigmoid”,“tanh”,“relu”,“identity”],默认“tanh”。 - **dtype** (str) - 数据类型。Choices = [“float32”,“float64”],默认“float32”。 - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - - **h_0** (Variable) - 初始隐藏状态是可选输入,默认为0。这是一个具有形状的张量(N x D),其中N是批大小,D是投影大小。 + - **h_0** (Variable) - 初始隐藏状态是可选输入,默认为0。这是一个具有形状的张量(N x D),其中N是批大小,D是投影大小。 - **c_0** (Variable) - 初始cell状态是可选输入,默认为0。这是一个具有形状(N x D)的张量,其中N是批大小。h_0和c_0可以为空,但只能同时为空。 - - **cell_clip** (float) - 如果提供该参数,则在单元输出激活之前,单元状态将被此值剪裁。 + - **cell_clip** (float) - 如果提供该参数,则在单元输出激活之前,单元状态将被此值剪裁。 - **proj_clip** (float) - 如果 num_proj > 0 并且 proj_clip 被提供,那么将投影值沿元素方向剪切到[-proj_clip,proj_clip]内 返回:含有两个输出变量的元组,隐藏状态(hidden state)的投影和LSTMP的cell状态。投影的shape为(T*P),cell state的shape为(T*D),两者的LoD和输入相同。 @@ -3827,12 +3827,12 @@ fc data_1.data = [[[0.1, 0.2], [0.3, 0.4]]] data_1.shape = (1, 2, 2) # 1 is batch_size - + data_2 = [[[0.1, 0.2, 0.3]]] data_2.shape = (1, 1, 3) - + out = fluid.layers.fc(input=[data_1, data_2], size=2) - + Then: out.data = [[0.18669507, 0.1893476]] out.shape = (1, 2) @@ -8597,7 +8597,7 @@ shape层。 返回: (Tensor),输入变量的形状 返回类型: Variable - + **代码示例:** .. code-block:: python @@ -9012,7 +9012,7 @@ softmax操作符计算k维向量输入中所有其他维的指数和指数值的 fc = fluid.layers.fc(input=x, size=10) # 在第二维执行softmax softmax = fluid.layers.softmax(input=fc, axis=1) - # 在最后一维执行softmax + # 在最后一维执行softmax softmax = fluid.layers.softmax(input=fc, axis=-1) @@ -9061,7 +9061,7 @@ softmax_with_cross_entropy - **logits** (Variable) - 未标准化(unscaled)的log概率,一个形为 N X K 的二维张量。 N是batch大小,K是类别总数。 - **label** (Variable) - 2-D 张量,代表了正确标注(ground truth), 如果 ``soft_label`` 为 False,则该参数是一个形为 N X 1 的Tensor 。如果 ``soft_label`` 为 True,它是 Tensor ,形为 N X K 。 - **soft_label** (bool) - 是否将输入标签当作软标签。默认为False。 - - **ignore_index** (int) - 指明要无视的目标值,使之不对输入梯度有贡献。仅在 ``soft_label`` 为False时有效,默认为kIgnoreIndex。 + - **ignore_index** (int) - 指明要无视的目标值,使之不对输入梯度有贡献。仅在 ``soft_label`` 为False时有效,默认为kIgnoreIndex。 - **numeric_stable_mode** (bool) – 标志位,指明是否使用一个具有更佳数学稳定性的算法。仅在 ``soft_label`` 为 False的GPU模式下生效. 若 ``soft_label`` 为 True 或者执行场所为CPU, 算法一直具有数学稳定性。 注意使用稳定算法时速度可能会变慢。默认为 True。 - **return_softmax** (bool) – 标志位,指明是否额外返回一个softmax值, 同时返回交叉熵计算结果。默认为False。 @@ -9387,7 +9387,7 @@ stack [5.0, 6.0] ] ] Out.dims = [1, 3, 2] -参数: +参数: - **x** (Variable|list(Variable)|tuple(Variable)) – 输入变量 - **axis** (int|None) – 对输入进行stack运算所在的轴 @@ -9909,9 +9909,9 @@ abs 参数: - - **x** - abs算子的输入 + - **x** - abs算子的输入 - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - + 返回: abs算子的输出。 @@ -9931,8 +9931,8 @@ arccosine激活函数。 out = cos^{-1}(x) 参数: - - **x** - acos算子的输入 - + - **x** - acos算子的输入 + 返回: acos算子的输出。 @@ -9950,8 +9950,8 @@ arcsine激活函数。 out = sin^{-1}(x) 参数: - - **x** - asin算子的输入 - + - **x** - asin算子的输入 + 返回: asin算子的输出。 @@ -9968,8 +9968,8 @@ arctanh激活函数。 out = tanh^{-1}(x) 参数: - - **x** - atan算子的输入 - + - **x** - atan算子的输入 + 返回: atan算子的输出。 @@ -9993,7 +9993,7 @@ ceil 参数: - - **x** - Ceil算子的输入 + - **x** - Ceil算子的输入 - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn 返回: Ceil算子的输出。 @@ -10024,7 +10024,7 @@ Cosine余弦激活函数。 参数: - - **x** - cos算子的输入 + - **x** - cos算子的输入 - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn @@ -10085,7 +10085,7 @@ Exp激活函数(Exp指以自然常数e为底的指数运算)。 参数: - - **x** - Exp算子的输入 + - **x** - Exp算子的输入 - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn @@ -10116,7 +10116,7 @@ floor 参数: - - **x** - Floor算子的输入 + - **x** - Floor算子的输入 - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn @@ -10188,8 +10188,8 @@ Logsigmoid激活函数。 参数: - **x** - LogSigmoid算子的输入 - - - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn + + - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn 返回: LogSigmoid算子的输出 @@ -10217,8 +10217,8 @@ Reciprocal(取倒数)激活函数 参数: - - **x** - reciprocal算子的输入 - - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn + - **x** - reciprocal算子的输入 + - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn 返回: Reciprocal算子的输出。 @@ -10247,8 +10247,8 @@ Round取整激活函数。 参数: - - **x** - round算子的输入 - - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn + - **x** - round算子的输入 + - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn 返回: Round算子的输出。 @@ -10276,7 +10276,7 @@ sigmoid激活函数 参数: - - **x** - Sigmoid算子的输入 + - **x** - Sigmoid算子的输入 - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn 返回: Sigmoid运算输出. @@ -10305,7 +10305,7 @@ sin 参数: - - **x** - sin算子的输入 + - **x** - sin算子的输入 - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn @@ -10423,7 +10423,7 @@ sqrt 参数: - - **x** - Sqrt算子的输入 + - **x** - Sqrt算子的输入 - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn 返回: Sqrt算子的输出。 @@ -10482,7 +10482,7 @@ tanh 激活函数。 参数: - - **x** - Tanh算子的输入 + - **x** - Tanh算子的输入 - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn 返回: Tanh算子的输出。 @@ -10511,7 +10511,7 @@ tanh_shrink激活函数。 参数: - - **x** - TanhShrink算子的输入 + - **x** - TanhShrink算子的输入 - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn 返回: tanh_shrink算子的输出 @@ -11295,37 +11295,9 @@ zeros -============ +========================== learning_rate_scheduler -============ - - -.. _cn_api_fluid_layers_append_LARS: - -append_LARS -------------------------------- - -.. py:function:: paddle.fluid.layers.append_LARS(params_grads,learning_rate,weight_decay) - -对每一层的学习率运用LARS(LAYER-WISE ADAPTIVE RATE SCALING) - - - -参数: - - **learning_rate** -变量学习率。LARS的全局学习率。 - - **weight_decay** -Python float类型数 - -返回: 衰减的学习率 - -**代码示例** : - -.. code-block:: python - - learning_rate*=local_gw_ratio * sqrt(sumsq(param)) - / (sqrt(sumsq(gradient))+ weight_decay * sqrt(sumsq(param))) - - - +========================== .. _cn_api_fluid_layers_cosine_decay: @@ -11354,7 +11326,7 @@ cosine_decay .. code-block:: python - base_lr = 0.1 + base_lr = 0.1 lr = fluid.layers.cosine_decay( learning_rate = base_lr, step_each_epoch=10000, epochs=120) @@ -11922,7 +11894,7 @@ box decode过程得出decode_box,然后分配方案如下所述: scores = fluid.layers.data( name='scores', shape=[20, 81], dtype='float32') decoded_box, output_assign_box = fluid.layers.box_decoder_and_assign( - pb, pbv, loc, scores, 4.135) + pb, pbv, loc, scores, 4.135) .. _cn_api_fluid_layers_density_prior_box: @@ -12858,7 +12830,7 @@ yolo_box 先前网络的输出形状为[N,C,H,W],而H和W应相同,用来指定网格大小。对每个网格点预测给定的数目的框,这个数目记为S,由anchor的数量指定。 在第二维(通道维度)中,C应该等于S *(5 + class_num),class_num是源数据集中对象类别数目(例如coco数据集中的80),此外第二个(通道)维度中还有4个框位置坐标x,y,w,h,以及anchor box的one-hot key的置信度得分。 -假设4个位置坐标是 :math:`t_x` ,:math:`t_y` ,:math:`t_w` , :math:`t_h` +假设4个位置坐标是 :math:`t_x` ,:math:`t_y` ,:math:`t_w` , :math:`t_h` ,则框的预测算法为: .. math:: -- GitLab