diff --git a/doc/paddle/api/alias_api_mapping b/doc/paddle/api/alias_api_mapping new file mode 100644 index 0000000000000000000000000000000000000000..9af28a536172370f2c5ad8b7e2bdfa251aa22ec2 --- /dev/null +++ b/doc/paddle/api/alias_api_mapping @@ -0,0 +1,727 @@ +paddle.fluid.layers.swish paddle.nn.functional.activation.swish +paddle.fluid.layers.space_to_depth paddle.nn.functional.space_to_depth +paddle.fluid.layers.soft_relu paddle.nn.functional.soft_relu +paddle.fluid.layers.reciprocal paddle.tensor.math.reciprocal +paddle.fluid.layers.pixel_shuffle paddle.nn.functional.vision.pixel_shuffle +paddle.tensor.math.mm paddle.mm +paddle.fluid.layers.mean paddle.mean +paddle.tensor.math.inverse paddle.tensor.inverse +paddle.tensor.creation.full paddle.full +paddle.tensor.manipulation.flip paddle.tensor.reverse +paddle.fluid.layers.erf paddle.nn.functional.activation.erf +paddle.tensor.math.abs paddle.abs +paddle.fluid.layers.unique_with_counts paddle.unique_with_counts +paddle.fluid.layers.similarity_focus paddle.nn.functional.similarity_focus +paddle.fluid.layers.rpn_target_assign paddle.nn.functional.rpn_target_assign +paddle.tensor.math.increment paddle.tensor.increment +paddle.fluid.layers.hash paddle.nn.functional.lod.hash +paddle.tensor.math.elementwise_sub paddle.elementwise_sub +paddle.fluid.layers.create_tensor paddle.tensor.create_tensor +paddle.nn.functional.conv.conv2d paddle.nn.functional.conv2d +paddle.tensor.linalg.cholesky paddle.cholesky +paddle.fluid.layers.case paddle.nn.control_flow.case +paddle.fluid.layers.bipartite_match paddle.nn.functional.vision.bipartite_match +paddle.framework.ParamAttr paddle.ParamAttr +paddle.nn.layer.activation.HSigmoid paddle.nn.HSigmoid +paddle.tensor.math.square paddle.square +paddle.fluid.layers.roi_align paddle.nn.functional.roi_align +paddle.tensor.math.logsumexp paddle.logsumexp +paddle.fluid.layers.expand paddle.expand +paddle.tensor.math.exp paddle.tensor.exp +paddle.fluid.layers.elu paddle.nn.functional.elu +paddle.fluid.layers.cast paddle.cast +paddle.fluid.layers.beam_search paddle.nn.decode.beam_search +paddle.fluid.layers.affine_grid paddle.nn.functional.affine_grid +paddle.nn.layer.activation.Sigmoid paddle.nn.Sigmoid +paddle.nn.layer.loss.NLLLoss paddle.nn.layer.NLLLoss +paddle.nn.layer.loss.MSELoss paddle.nn.layer.MSELoss +paddle.nn.layer.loss.BCELoss paddle.nn.layer.BCELoss +paddle.tensor.manipulation.unsqueeze paddle.unsqueeze +paddle.fluid.layers.unique paddle.unique +paddle.fluid.layers.teacher_student_sigmoid_loss paddle.nn.functional.loss.teacher_student_sigmoid_loss +paddle.fluid.layers.sums paddle.tensor.math.sums +paddle.tensor.math.stanh paddle.stanh +paddle.fluid.layers.inverse_time_decay paddle.nn.functional.inverse_time_decay +paddle.fluid.layers.expand_as paddle.expand_as +paddle.framework.default_startup_program paddle.default_startup_program +paddle.fluid.layers.crop_tensor paddle.tensor.crop_tensor +paddle.nn.layer.loss.L1Loss paddle.nn.layer.L1Loss +paddle.fluid.clip.GradientClipByValue paddle.nn.clip.GradientClipByValue +paddle.tensor.math.tanh paddle.tanh +paddle.fluid.layers.square_error_cost paddle.nn.functional.loss.square_error_cost +paddle.framework.py_func paddle.py_func +paddle.fluid.layers.pad paddle.nn.functional.common.pad +paddle.fluid.layers.natural_exp_decay paddle.nn.functional.natural_exp_decay +paddle.tensor.math.kron paddle.tensor.kron +paddle.fluid.layers.is_empty paddle.tensor.is_empty +paddle.fluid.layers.exponential_decay paddle.nn.functional.exponential_decay +paddle.fluid.layers.elementwise_floordiv paddle.tensor.math.elementwise_floordiv +paddle.nn.layer.conv paddle.nn.conv +paddle.fluid.layers.brelu paddle.nn.functional.brelu +paddle.fluid.layers.box_clip paddle.nn.functional.vision.box_clip +paddle.fluid.layers.add_position_encoding paddle.nn.functional.extension.add_position_encoding +paddle.fluid.layers.target_assign paddle.nn.functional.target_assign +paddle.fluid.layers.strided_slice paddle.tensor.manipulation.strided_slice +paddle.tensor.manipulation.squeeze paddle.squeeze +paddle.nn.functional.activation.relu paddle.nn.functional.relu +paddle.fluid.layers.polynomial_decay paddle.nn.functional.polynomial_decay +paddle.framework.random.manual_seed paddle.manual_seed +paddle.fluid.io.load paddle.tensor.io.load +paddle.fluid.layers.label_smooth paddle.nn.functional.label_smooth +paddle.fluid.layers.hash paddle.nn.functional.hash +paddle.fluid.layers.assign paddle.nn.functional.common.assign +paddle.fluid.layers.acos paddle.tensor.math.acos +paddle.nn.layer.conv.Conv3D paddle.nn.layer.Conv3D +paddle.fluid.dygraph.BilinearTensorProduct paddle.nn.layer.BilinearTensorProduct +paddle.fluid.layers.selu paddle.nn.functional.selu +paddle.tensor.random.rand paddle.rand +paddle.fluid.layers.piecewise_decay paddle.nn.functional.piecewise_decay +paddle.fluid.layers.iou_similarity paddle.nn.functional.loss.iou_similarity +paddle.fluid.layers.increment paddle.tensor.math.increment +paddle.fluid.layers.hard_swish paddle.nn.functional.hard_swish +paddle.fluid.layers.elementwise_add paddle.tensor.math.elementwise_add +paddle.framework.default_main_program paddle.default_main_program +paddle.tensor.math.cumsum paddle.tensor.cumsum +paddle.fluid.layers.cos paddle.tensor.math.cos +paddle.tensor.math.add paddle.tensor.add +paddle.fluid.layers.unfold paddle.nn.functional.common.unfold +paddle.fluid.layers.switch_case paddle.nn.switch_case +paddle.tensor.math.round paddle.tensor.round +paddle.fluid.layers.pixel_shuffle paddle.nn.functional.pixel_shuffle +paddle.tensor.math.inverse paddle.inverse +paddle.tensor.manipulation.flip paddle.reverse +paddle.fluid.layers.clip_by_norm paddle.nn.clip.clip_by_norm +paddle.tensor.math.asin paddle.tensor.asin +paddle.fluid.layers.teacher_student_sigmoid_loss paddle.nn.functional.teacher_student_sigmoid_loss +paddle.tensor.random.randperm paddle.tensor.randperm +paddle.tensor.random.randn paddle.tensor.randn +paddle.tensor.math.multiply paddle.tensor.multiply +paddle.fluid.layers.multiclass_nms paddle.nn.functional.multiclass_nms +paddle.fluid.io.load paddle.tensor.load +paddle.tensor.math.increment paddle.increment +paddle.fluid.layers.create_tensor paddle.create_tensor +paddle.fluid.layers.bipartite_match paddle.nn.functional.bipartite_match +paddle.nn.layer.loss.NLLLoss paddle.nn.NLLLoss +paddle.nn.layer.loss.MSELoss paddle.nn.MSELoss +paddle.fluid.clip.GradientClipByValue paddle.nn.GradientClipByValue +paddle.nn.layer.loss.BCELoss paddle.nn.BCELoss +paddle.fluid.layers.square_error_cost paddle.nn.functional.square_error_cost +paddle.fluid.layers.softplus paddle.nn.functional.softplus +paddle.fluid.layers.logical_not paddle.tensor.logic.logical_not +paddle.tensor.math.exp paddle.exp +paddle.fluid.layers.elementwise_sub paddle.tensor.math.elementwise_sub +paddle.tensor.math.elementwise_div paddle.tensor.elementwise_div +paddle.fluid.layers.elementwise_div paddle.tensor.math.elementwise_div +paddle.fluid.layers.cosine_decay paddle.nn.functional.cosine_decay +paddle.fluid.layers.cond paddle.nn.control_flow.cond +paddle.fluid.layers.beam_search paddle.nn.beam_search +paddle.nn.layer.loss.L1Loss paddle.nn.L1Loss +paddle.fluid.layers.temporal_shift paddle.nn.functional.extension.temporal_shift +paddle.tensor.math.sum paddle.tensor.sum +paddle.fluid.layers.softsign paddle.nn.functional.softsign +paddle.tensor.linalg.histogram paddle.tensor.histogram +paddle.fluid.layers.diag paddle.tensor.creation.diag +paddle.fluid.layers.crop_tensor paddle.crop_tensor +paddle.fluid.layers.beam_search_decode paddle.nn.decode.beam_search_decode +paddle.fluid.layers.adaptive_pool3d paddle.nn.functional.pooling.adaptive_pool3d +paddle.tensor.search.where paddle.tensor.where +paddle.fluid.layers.swish paddle.nn.functional.swish +paddle.fluid.layers.smooth_l1 paddle.nn.functional.loss.smooth_l1 +paddle.fluid.layers.reduce_any paddle.tensor.logic.reduce_any +paddle.fluid.layers.pad paddle.nn.functional.pad +paddle.fluid.layers.noam_decay paddle.nn.functional.noam_decay +paddle.tensor.math.kron paddle.kron +paddle.fluid.layers.is_empty paddle.is_empty +paddle.fluid.layers.iou_similarity paddle.nn.functional.iou_similarity +paddle.tensor.manipulation.gather paddle.tensor.gather +paddle.fluid.layers.erf paddle.nn.functional.erf +paddle.fluid.layers.box_clip paddle.nn.functional.box_clip +paddle.tensor.search.argsort paddle.tensor.argsort +paddle.nn.layer.conv.Conv3D paddle.nn.Conv3D +paddle.framework.CompiledProgram paddle.CompiledProgram +paddle.fluid.dygraph.BilinearTensorProduct paddle.nn.BilinearTensorProduct +paddle.tensor.creation.triu paddle.tensor.triu +paddle.tensor.math.reduce_prod paddle.tensor.reduce_prod +paddle.tensor.creation.meshgrid paddle.tensor.meshgrid +paddle.fluid.layers.clip_by_norm paddle.nn.clip_by_norm +paddle.fluid.layers.assign paddle.nn.functional.assign +paddle.tensor.math.acos paddle.tensor.acos +paddle.fluid.initializer.Xavier paddle.nn.initializer.Xavier +paddle.tensor.creation.zeros_like paddle.tensor.zeros_like +paddle.fluid.layers.slice paddle.tensor.manipulation.slice +paddle.fluid.layers.sigmoid_focal_loss paddle.nn.functional.loss.sigmoid_focal_loss +paddle.fluid.io.shuffle paddle.tensor.random.shuffle +paddle.fluid.layers.linear_lr_warmup paddle.nn.functional.linear_lr_warmup +paddle.tensor.logic.greater_than paddle.tensor.greater_than +paddle.tensor.math.cumsum paddle.cumsum +paddle.framework.create_parameter paddle.create_parameter +paddle.tensor.math.clamp paddle.tensor.clamp +paddle.tensor.math.add paddle.add +paddle.fluid.layers.unfold paddle.nn.functional.unfold +paddle.tensor.search.sort paddle.tensor.sort +paddle.fluid.layers.rsqrt paddle.tensor.math.rsqrt +paddle.tensor.math.round paddle.round +paddle.fluid.layers.resize_nearest paddle.nn.functional.vision.resize_nearest +paddle.tensor.creation.ones_like paddle.tensor.ones_like +paddle.framework.global_scope paddle.global_scope +paddle.tensor.creation.full_like paddle.tensor.full_like +paddle.tensor.math.elementwise_max paddle.tensor.elementwise_max +paddle.fluid.layers.deformable_roi_pooling paddle.nn.functional.vision.deformable_roi_pooling +paddle.fluid.layers.ceil paddle.tensor.math.ceil +paddle.fluid.layers.case paddle.nn.case +paddle.tensor.math.asin paddle.asin +paddle.fluid.layers.add_position_encoding paddle.nn.functional.add_position_encoding +paddle.fluid.layers.retinanet_detection_output paddle.nn.functional.vision.retinanet_detection_output +paddle.tensor.random.randperm paddle.randperm +paddle.tensor.random.randn paddle.randn +paddle.tensor.math.multiply paddle.multiply +paddle.fluid.layers.margin_rank_loss paddle.nn.functional.loss.margin_rank_loss +paddle.fluid.layers.logical_not paddle.tensor.logical_not +paddle.fluid.io.load paddle.load +paddle.fluid.layers.grid_sampler paddle.nn.functional.vision.grid_sampler +paddle.fluid.layers.elementwise_mul paddle.tensor.math.elementwise_mul +paddle.fluid.layers.elementwise_max paddle.tensor.math.elementwise_max +paddle.fluid.layers.continuous_value_model paddle.nn.functional.extension.continuous_value_model +paddle.fluid.layers.smooth_l1 paddle.nn.functional.smooth_l1 +paddle.tensor.linalg.norm paddle.tensor.norm +paddle.framework.name_scope paddle.name_scope +paddle.tensor.logic.less_than paddle.tensor.less_than +paddle.fluid.layers.l2_normalize paddle.nn.functional.norm.l2_normalize +paddle.tensor.math.elementwise_min paddle.tensor.elementwise_min +paddle.tensor.math.elementwise_div paddle.elementwise_div +paddle.tensor.math.sum paddle.sum +paddle.fluid.layers.shard_index paddle.tensor.manipulation.shard_index +paddle.fluid.layers.scatter paddle.tensor.manipulation.scatter +paddle.fluid.layers.reduce_any paddle.tensor.reduce_any +paddle.tensor.search.nonzero paddle.tensor.nonzero +paddle.fluid.layers.logical_xor paddle.tensor.logic.logical_xor +paddle.tensor.linalg.histogram paddle.histogram +paddle.fluid.layers.elementwise_mod paddle.tensor.math.elementwise_mod +paddle.fluid.layers.elementwise_min paddle.tensor.math.elementwise_min +paddle.fluid.layers.distribute_fpn_proposals paddle.nn.functional.vision.distribute_fpn_proposals +paddle.fluid.layers.beam_search_decode paddle.nn.beam_search_decode +paddle.fluid.layers.yolov3_loss paddle.nn.functional.vision.yolov3_loss +paddle.tensor.search.where paddle.where +paddle.fluid.layers.strided_slice paddle.tensor.strided_slice +paddle.fluid.layers.sigmoid_focal_loss paddle.nn.functional.sigmoid_focal_loss +paddle.tensor.manipulation.gather paddle.gather +paddle.fluid.layers.filter_by_instag paddle.nn.functional.extension.filter_by_instag +paddle.tensor.math.erf paddle.tensor.erf +paddle.tensor.search.argsort paddle.argsort +paddle.tensor.math.addcmul paddle.tensor.addcmul +paddle.fluid.layers.adaptive_pool3d paddle.nn.functional.adaptive_pool3d +paddle.tensor.creation.triu paddle.triu +paddle.fluid.layers.topk paddle.tensor.search.topk +paddle.tensor.math.reduce_prod paddle.reduce_prod +paddle.tensor.math.reduce_max paddle.tensor.reduce_max +paddle.fluid.layers.pool3d paddle.nn.functional.pooling.pool3d +paddle.tensor.creation.meshgrid paddle.meshgrid +paddle.fluid.layers.diag paddle.tensor.diag +paddle.tensor.math.acos paddle.acos +paddle.framework.Program paddle.Program +paddle.framework.ParallelExecutor paddle.ParallelExecutor +paddle.tensor.creation.zeros_like paddle.zeros_like +paddle.fluid.layers.temporal_shift paddle.nn.functional.temporal_shift +paddle.fluid.io.shuffle paddle.tensor.shuffle +paddle.fluid.layers.reduce_max paddle.tensor.math.reduce_max +paddle.fluid.layers.margin_rank_loss paddle.nn.functional.margin_rank_loss +paddle.tensor.logic.greater_than paddle.greater_than +paddle.tensor.math.elementwise_mod paddle.tensor.elementwise_mod +paddle.fluid.layers.collect_fpn_proposals paddle.nn.functional.vision.collect_fpn_proposals +paddle.tensor.math.clamp paddle.clamp +paddle.fluid.layers.center_loss paddle.nn.functional.loss.center_loss +paddle.fluid.layers.atan paddle.tensor.math.atan +paddle.fluid.layers.unstack paddle.tensor.manipulation.unstack +paddle.tensor.creation.tril paddle.tensor.tril +paddle.tensor.search.sort paddle.sort +paddle.tensor.math.sin paddle.tensor.sin +paddle.tensor.math.sign paddle.tensor.sign +paddle.fluid.layers.resize_nearest paddle.nn.functional.resize_nearest +paddle.fluid.layers.reduce_prod paddle.tensor.math.reduce_prod +paddle.tensor.math.reduce_min paddle.tensor.reduce_min +paddle.tensor.creation.ones_like paddle.ones_like +paddle.fluid.layers.npair_loss paddle.nn.functional.loss.npair_loss +paddle.fluid.layers.l2_normalize paddle.nn.functional.l2_normalize +paddle.fluid.layers.kldiv_loss paddle.nn.functional.loss.kldiv_loss +paddle.fluid.layers.image_resize paddle.nn.functional.vision.image_resize +paddle.fluid.layers.huber_loss paddle.nn.functional.loss.huber_loss +paddle.tensor.creation.full_like paddle.full_like +paddle.fluid.layers.flatten paddle.tensor.manipulation.flatten +paddle.tensor.math.elementwise_max paddle.elementwise_max +paddle.fluid.layers.deformable_roi_pooling paddle.nn.functional.deformable_roi_pooling +paddle.fluid.layers.clip paddle.nn.clip.clip +paddle.fluid.layers.retinanet_detection_output paddle.nn.functional.retinanet_detection_output +paddle.fluid.layers.reduce_min paddle.tensor.math.reduce_min +paddle.fluid.layers.rank_loss paddle.nn.functional.loss.rank_loss +paddle.tensor.random.randint paddle.tensor.randint +paddle.fluid.layers.logical_not paddle.logical_not +paddle.fluid.layers.grid_sampler paddle.nn.functional.grid_sampler +paddle.fluid.layers.gather_tree paddle.nn.decode.gather_tree +paddle.tensor.math.elementwise_pow paddle.tensor.elementwise_pow +paddle.fluid.layers.elementwise_pow paddle.tensor.math.elementwise_pow +paddle.fluid.layers.dice_loss paddle.nn.functional.loss.dice_loss +paddle.fluid.layers.cond paddle.nn.cond +paddle.tensor.math.atan paddle.tensor.atan +paddle.fluid.layers.tanh_shrink paddle.nn.functional.activation.tanh_shrink +paddle.fluid.layers.ssd_loss paddle.nn.functional.loss.ssd_loss +paddle.tensor.linalg.norm paddle.norm +paddle.fluid.layers.mse_loss paddle.nn.functional.loss.mse_loss +paddle.fluid.layers.logical_xor paddle.tensor.logical_xor +paddle.fluid.layers.log_loss paddle.nn.functional.loss.log_loss +paddle.tensor.logic.less_than paddle.less_than +paddle.fluid.layers.hard_shrink paddle.nn.functional.activation.hard_shrink +paddle.fluid.layers.generate_proposals paddle.nn.functional.vision.generate_proposals +paddle.tensor.math.elementwise_min paddle.elementwise_min +paddle.tensor.math.elementwise_floordiv paddle.tensor.elementwise_floordiv +paddle.fluid.layers.dropout paddle.nn.functional.common.dropout +paddle.fluid.layers.bpr_loss paddle.nn.functional.loss.bpr_loss +paddle.fluid.layers.softshrink paddle.nn.functional.activation.softshrink +paddle.fluid.layers.reduce_any paddle.reduce_any +paddle.tensor.search.nonzero paddle.nonzero +paddle.fluid.layers.has_inf paddle.tensor.search.has_inf +paddle.fluid.layers.distribute_fpn_proposals paddle.nn.functional.distribute_fpn_proposals +paddle.framework.create_global_var paddle.create_global_var +paddle.fluid.dygraph.Embedding paddle.nn.layer.common.Embedding +paddle.fluid.layers.yolov3_loss paddle.nn.functional.yolov3_loss +paddle.fluid.layers.strided_slice paddle.strided_slice +paddle.fluid.layers.softmax paddle.nn.functional.activation.softmax +paddle.fluid.layers.multiplex paddle.tensor.math.multiplex +paddle.tensor.manipulation.flip paddle.tensor.flip +paddle.tensor.math.erf paddle.erf +paddle.fluid.layers.detection_output paddle.nn.functional.vision.detection_output +paddle.fluid.layers.continuous_value_model paddle.nn.functional.continuous_value_model +paddle.fluid.layers.center_loss paddle.nn.functional.center_loss +paddle.fluid.layers.box_coder paddle.nn.functional.vision.box_coder +paddle.tensor.math.addcmul paddle.addcmul +paddle.fluid.layers.topk paddle.tensor.topk +paddle.fluid.layers.slice paddle.tensor.slice +paddle.fluid.layers.sign paddle.tensor.math.sign +paddle.fluid.layers.round paddle.tensor.math.round +paddle.tensor.math.reduce_max paddle.reduce_max +paddle.fluid.layers.reduce_all paddle.tensor.logic.reduce_all +paddle.fluid.layers.npair_loss paddle.nn.functional.npair_loss +paddle.tensor.math.multiplex paddle.tensor.multiplex +paddle.fluid.layers.linspace paddle.tensor.creation.linspace +paddle.fluid.layers.kldiv_loss paddle.nn.functional.kldiv_loss +paddle.fluid.layers.huber_loss paddle.nn.functional.huber_loss +paddle.fluid.layers.diag paddle.diag +paddle.tensor.math.cos paddle.tensor.cos +paddle.fluid.layers.clip paddle.nn.clip +paddle.fluid.layers.argmin paddle.tensor.search.argmin +paddle.fluid.dygraph.Pool2D paddle.nn.layer.common.Pool2D +paddle.tensor.linalg.t paddle.t +paddle.fluid.io.shuffle paddle.shuffle +paddle.tensor.math.rsqrt paddle.tensor.rsqrt +paddle.tensor.manipulation.roll paddle.tensor.roll +paddle.fluid.layers.reduce_sum paddle.tensor.math.reduce_sum +paddle.fluid.layers.rank_loss paddle.nn.functional.rank_loss +paddle.fluid.layers.pool3d paddle.nn.functional.pool3d +paddle.fluid.one_hot paddle.nn.functional.common.one_hot +paddle.tensor.math.elementwise_mod paddle.elementwise_mod +paddle.fluid.layers.dice_loss paddle.nn.functional.dice_loss +paddle.fluid.layers.collect_fpn_proposals paddle.nn.functional.collect_fpn_proposals +paddle.tensor.linalg.bmm paddle.tensor.bmm +paddle.nn.layer.extension.RowConv paddle.nn.layer.RowConv +paddle.fluid.clip.GradientClipByGlobalNorm paddle.nn.clip.GradientClipByGlobalNorm +paddle.framework.Executor paddle.Executor +paddle.tensor.creation.tril paddle.tril +paddle.fluid.layers.ssd_loss paddle.nn.functional.ssd_loss +paddle.tensor.math.sqrt paddle.tensor.sqrt +paddle.tensor.math.sin paddle.sin +paddle.tensor.math.sign paddle.sign +paddle.fluid.layers.resize_trilinear paddle.nn.functional.vision.resize_trilinear +paddle.tensor.math.reduce_min paddle.reduce_min +paddle.fluid.layers.mse_loss paddle.nn.functional.mse_loss +paddle.fluid.layers.maxout paddle.nn.functional.activation.maxout +paddle.fluid.layers.log_loss paddle.nn.functional.log_loss +paddle.tensor.search.index_sample paddle.tensor.index_sample +paddle.fluid.layers.image_resize paddle.nn.functional.image_resize +paddle.fluid.layers.generate_proposal_labels paddle.nn.functional.vision.generate_proposal_labels +paddle.fluid.layers.filter_by_instag paddle.nn.functional.filter_by_instag +paddle.fluid.layers.bpr_loss paddle.nn.functional.bpr_loss +paddle.fluid.layers.asin paddle.tensor.math.asin +paddle.fluid.dygraph.container.Sequential paddle.nn.Sequential +paddle.nn.layer.common.Pad2D paddle.nn.layer.Pad2D +paddle.fluid.layers.resize_bilinear paddle.nn.functional.vision.resize_bilinear +paddle.tensor.random.randint paddle.randint +paddle.fluid.layers.gather_tree paddle.nn.gather_tree +paddle.tensor.math.elementwise_pow paddle.elementwise_pow +paddle.nn.functional.extension.diag_embed paddle.nn.functional.diag_embed +paddle.tensor.math.atan paddle.atan +paddle.tensor.math.addmm paddle.tensor.addmm +paddle.tensor.math.sums paddle.tensor.sums +paddle.tensor.manipulation.split paddle.tensor.split +paddle.fluid.layers.shuffle_channel paddle.nn.functional.vision.shuffle_channel +paddle.fluid.layers.shard_index paddle.tensor.shard_index +paddle.fluid.layers.scatter_nd paddle.tensor.manipulation.scatter_nd +paddle.fluid.layers.scatter paddle.tensor.scatter +paddle.fluid.layers.logical_xor paddle.logical_xor +paddle.fluid.framework.in_dygraph_mode paddle.in_imperative_mode +paddle.fluid.layers.generate_proposals paddle.nn.functional.generate_proposals +paddle.tensor.math.elementwise_floordiv paddle.elementwise_floordiv +paddle.fluid.layers.edit_distance paddle.nn.functional.loss.edit_distance +paddle.fluid.layers.dropout paddle.nn.functional.dropout +paddle.nn.layer.common.UpSample paddle.nn.layer.UpSample +paddle.fluid.layers.while_loop paddle.nn.control_flow.while_loop +paddle.fluid.layers.scatter_nd_add paddle.tensor.manipulation.scatter_nd_add +paddle.fluid.layers.scale paddle.tensor.math.scale +paddle.fluid.layers.logical_and paddle.tensor.logic.logical_and +paddle.fluid.layers.has_inf paddle.tensor.has_inf +paddle.fluid.layers.gather_nd paddle.tensor.manipulation.gather_nd +paddle.fluid.layers.fill_constant paddle.tensor.creation.fill_constant +paddle.fluid.layers.cumsum paddle.tensor.math.cumsum +paddle.tensor.search.argmax paddle.tensor.argmax +paddle.fluid.layers.affine_channel paddle.nn.functional.vision.affine_channel +paddle.fluid.dygraph.Embedding paddle.nn.layer.Embedding +paddle.framework.CUDAPinnedPlace paddle.CUDAPinnedPlace +paddle.fluid.layers.sampled_softmax_with_cross_entropy paddle.nn.functional.loss.sampled_softmax_with_cross_entropy +paddle.fluid.layers.reduce_all paddle.tensor.reduce_all +paddle.nn.functional.activation.log_softmax paddle.nn.functional.log_softmax +paddle.fluid.layers.has_nan paddle.tensor.search.has_nan +paddle.fluid.layers.generate_mask_labels paddle.nn.functional.vision.generate_mask_labels +paddle.tensor.manipulation.flip paddle.flip +paddle.tensor.linalg.dot paddle.tensor.dot +paddle.fluid.layers.detection_output paddle.nn.functional.detection_output +paddle.nn.functional.conv.conv3d paddle.nn.functional.conv3d +paddle.fluid.layers.box_coder paddle.nn.functional.box_coder +paddle.fluid.clip.GradientClipByGlobalNorm paddle.nn.GradientClipByGlobalNorm +paddle.fluid.layers.topk paddle.topk +paddle.fluid.layers.slice paddle.slice +paddle.tensor.math.multiplex paddle.multiplex +paddle.tensor.logic.equal_all paddle.tensor.equal_all +paddle.tensor.math.cos paddle.cos +paddle.fluid.layers.argmin paddle.tensor.argmin +paddle.fluid.dygraph.SpectralNorm paddle.nn.layer.norm.SpectralNorm +paddle.nn.layer.extension.RowConv paddle.nn.RowConv +paddle.fluid.dygraph.Pool2D paddle.nn.layer.Pool2D +paddle.fluid.clip.GradientClipByNorm paddle.nn.clip.GradientClipByNorm +paddle.fluid.layers.unstack paddle.tensor.unstack +paddle.fluid.layers.tanh_shrink paddle.nn.functional.tanh_shrink +paddle.tensor.math.rsqrt paddle.rsqrt +paddle.tensor.manipulation.roll paddle.roll +paddle.fluid.layers.reshape paddle.tensor.manipulation.reshape +paddle.fluid.layers.random_crop paddle.nn.functional.extension.random_crop +paddle.fluid.layers.psroi_pool paddle.nn.functional.vision.psroi_pool +paddle.fluid.layers.prroi_pool paddle.nn.functional.vision.prroi_pool +paddle.fluid.one_hot paddle.nn.functional.one_hot +paddle.fluid.layers.isfinite paddle.tensor.logic.isfinite +paddle.fluid.layers.hard_shrink paddle.nn.functional.hard_shrink +paddle.fluid.layers.flatten paddle.tensor.flatten +paddle.tensor.linalg.bmm paddle.bmm +paddle.nn.layer.common.Pad2D paddle.nn.Pad2D +paddle.tensor.math.sqrt paddle.sqrt +paddle.fluid.layers.softshrink paddle.nn.functional.softshrink +paddle.fluid.layers.resize_trilinear paddle.nn.functional.resize_trilinear +paddle.fluid.layers.linspace paddle.tensor.linspace +paddle.tensor.search.index_sample paddle.index_sample +paddle.fluid.layers.generate_proposal_labels paddle.nn.functional.generate_proposal_labels +paddle.fluid.layers.edit_distance paddle.nn.functional.edit_distance +paddle.fluid.layers.density_prior_box paddle.nn.functional.vision.density_prior_box +paddle.tensor.manipulation.stack paddle.tensor.stack +paddle.fluid.layers.square paddle.tensor.math.square +paddle.fluid.layers.softmax paddle.nn.functional.softmax +paddle.fluid.layers.roi_pool paddle.nn.functional.vision.roi_pool +paddle.fluid.layers.resize_bilinear paddle.nn.functional.resize_bilinear +paddle.tensor.linalg.matmul paddle.tensor.matmul +paddle.nn.functional.common.interpolate paddle.nn.functional.interpolate +paddle.tensor.math.div paddle.tensor.div +paddle.tensor.manipulation.concat paddle.tensor.concat +paddle.tensor.math.addmm paddle.addmm +paddle.nn.layer.common.UpSample paddle.nn.UpSample +paddle.fluid.dygraph.LayerNorm paddle.nn.layer.norm.LayerNorm +paddle.fluid.dygraph.GroupNorm paddle.nn.layer.norm.GroupNorm +paddle.fluid.dygraph.BatchNorm paddle.nn.layer.norm.BatchNorm +paddle.tensor.manipulation.unbind paddle.tensor.unbind +paddle.tensor.math.sums paddle.sums +paddle.tensor.manipulation.split paddle.split +paddle.fluid.layers.shuffle_channel paddle.nn.functional.shuffle_channel +paddle.fluid.layers.shard_index paddle.shard_index +paddle.fluid.layers.scatter paddle.scatter +paddle.fluid.layers.sampled_softmax_with_cross_entropy paddle.nn.functional.sampled_softmax_with_cross_entropy +paddle.fluid.layers.roi_perspective_transform paddle.nn.functional.vision.roi_perspective_transform +paddle.fluid.layers.logical_and paddle.tensor.logical_and +paddle.tensor.math.log paddle.tensor.log +paddle.fluid.initializer.TruncatedNormal paddle.nn.initializer.TruncatedNormal +paddle.nn.layer.activation.LeakyReLU paddle.nn.layer.LeakyReLU +paddle.fluid.dygraph.Embedding paddle.nn.Embedding +paddle.fluid.initializer.Constant paddle.nn.initializer.Constant +paddle.framework.CUDAPlace paddle.CUDAPlace +paddle.tensor.linalg.t paddle.tensor.t +paddle.fluid.layers.polygon_box_transform paddle.nn.functional.extension.polygon_box_transform +paddle.fluid.layers.has_inf paddle.has_inf +paddle.tensor.logic.greater_equal paddle.tensor.greater_equal +paddle.nn.functional.conv.conv3d_transpose paddle.nn.functional.conv3d_transpose +paddle.nn.functional.conv.conv2d_transpose paddle.nn.functional.conv2d_transpose +paddle.tensor.search.argmax paddle.argmax +paddle.fluid.layers.affine_channel paddle.nn.functional.affine_channel +paddle.fluid.dygraph.SpectralNorm paddle.nn.layer.SpectralNorm +paddle.nn.layer.activation.LogSoftmax paddle.nn.layer.LogSoftmax +paddle.nn.layer.norm.InstanceNorm paddle.nn.layer.InstanceNorm +paddle.fluid.clip.GradientClipByNorm paddle.nn.GradientClipByNorm +paddle.nn.layer.conv.Conv2D paddle.nn.layer.Conv2D +paddle.framework.CPUPlace paddle.CPUPlace +paddle.fluid.layers.transpose paddle.tensor.manipulation.transpose +paddle.fluid.layers.shape paddle.tensor.attribute.shape +paddle.fluid.layers.reduce_all paddle.reduce_all +paddle.fluid.layers.maxout paddle.nn.functional.maxout +paddle.fluid.layers.image_resize_short paddle.nn.functional.vision.image_resize_short +paddle.fluid.layers.has_nan paddle.tensor.has_nan +paddle.fluid.layers.hard_sigmoid paddle.nn.functional.activation.hard_sigmoid +paddle.fluid.layers.generate_mask_labels paddle.nn.functional.generate_mask_labels +paddle.tensor.linalg.dot paddle.dot +paddle.fluid.dygraph.Pool2D paddle.nn.Pool2D +paddle.tensor.math.trace paddle.tensor.trace +paddle.fluid.layers.softmax_with_cross_entropy paddle.nn.functional.loss.softmax_with_cross_entropy +paddle.fluid.layers.isfinite paddle.tensor.isfinite +paddle.tensor.search.index_select paddle.tensor.index_select +paddle.fluid.layers.fill_constant paddle.tensor.fill_constant +paddle.tensor.logic.equal_all paddle.equal_all +paddle.fluid.layers.argmin paddle.argmin +paddle.fluid.layers.unstack paddle.unstack +paddle.tensor.math.reciprocal paddle.tensor.reciprocal +paddle.fluid.layers.psroi_pool paddle.nn.functional.psroi_pool +paddle.fluid.layers.prroi_pool paddle.nn.functional.prroi_pool +paddle.tensor.math.max paddle.tensor.max +paddle.fluid.layers.logsigmoid paddle.nn.functional.activation.logsigmoid +paddle.tensor.logic.less_equal paddle.tensor.less_equal +paddle.fluid.layers.flatten paddle.flatten +paddle.fluid.dygraph.base.disable_dygraph paddle.disable_imperative +paddle.tensor.math.cosh paddle.tensor.cosh +paddle.tensor.math.ceil paddle.tensor.ceil +paddle.fluid.dygraph.LayerNorm paddle.nn.layer.LayerNorm +paddle.fluid.dygraph.GroupNorm paddle.nn.layer.GroupNorm +paddle.framework.ExecutionStrategy paddle.ExecutionStrategy +paddle.fluid.dygraph.BatchNorm paddle.nn.layer.BatchNorm +paddle.tensor.logic.not_equal paddle.tensor.not_equal +paddle.fluid.layers.linspace paddle.linspace +paddle.fluid.dygraph.base.enable_dygraph paddle.enable_imperative +paddle.fluid.layers.density_prior_box paddle.nn.functional.density_prior_box +paddle.fluid.layers.anchor_generator paddle.nn.functional.vision.anchor_generator +paddle.nn.layer.activation.ReLU paddle.nn.layer.ReLU +paddle.fluid.dygraph.container.ParameterList paddle.nn.ParameterList +paddle.fluid.initializer.Bilinear paddle.nn.initializer.Bilinear +paddle.tensor.manipulation.stack paddle.stack +paddle.fluid.layers.scatter_nd paddle.tensor.scatter_nd +paddle.fluid.layers.roi_pool paddle.nn.functional.roi_pool +paddle.fluid.layers.prior_box paddle.nn.functional.vision.prior_box +paddle.tensor.math.min paddle.tensor.min +paddle.tensor.linalg.matmul paddle.matmul +paddle.nn.layer.loss paddle.nn.loss +paddle.tensor.math.floor paddle.tensor.floor +paddle.tensor.math.elementwise_add paddle.tensor.elementwise_add +paddle.tensor.math.div paddle.div +paddle.tensor.manipulation.concat paddle.concat +paddle.fluid.layers.adaptive_pool2d paddle.nn.functional.pooling.adaptive_pool2d +paddle.fluid.dygraph.Linear paddle.nn.layer.common.Linear +paddle.nn.layer.activation.LeakyReLU paddle.nn.LeakyReLU +paddle.fluid.layers.yolo_box paddle.nn.functional.vision.yolo_box +paddle.fluid.layers.while_loop paddle.nn.while_loop +paddle.tensor.manipulation.unbind paddle.unbind +paddle.fluid.layers.scatter_nd_add paddle.tensor.scatter_nd_add +paddle.fluid.layers.roi_perspective_transform paddle.nn.functional.roi_perspective_transform +paddle.fluid.layers.random_crop paddle.nn.functional.random_crop +paddle.fluid.layers.logical_and paddle.logical_and +paddle.tensor.math.log paddle.log +paddle.fluid.layers.gather_nd paddle.tensor.gather_nd +paddle.tensor.creation.eye paddle.tensor.eye +paddle.fluid.data paddle.nn.input.data +paddle.tensor.linalg.cross paddle.tensor.cross +paddle.fluid.dygraph.SpectralNorm paddle.nn.SpectralNorm +paddle.nn.layer.activation.LogSoftmax paddle.nn.LogSoftmax +paddle.nn.layer.norm.InstanceNorm paddle.nn.InstanceNorm +paddle.nn.layer.conv.Conv3DTranspose paddle.nn.layer.Conv3DTranspose +paddle.nn.layer.conv.Conv2DTranspose paddle.nn.layer.Conv2DTranspose +paddle.nn.layer.conv.Conv2D paddle.nn.Conv2D +paddle.fluid.layers.unique_with_counts paddle.tensor.manipulation.unique_with_counts +paddle.fluid.layers.transpose paddle.tensor.linalg.transpose +paddle.fluid.layers.softmax_with_cross_entropy paddle.nn.functional.softmax_with_cross_entropy +paddle.fluid.layers.reduce_mean paddle.tensor.stat.reduce_mean +paddle.tensor.logic.greater_equal paddle.greater_equal +paddle.tensor.creation.arange paddle.tensor.arange +paddle.framework.Print paddle.Print +paddle.framework.BuildStrategy paddle.BuildStrategy +paddle.tensor.stat.var paddle.tensor.var +paddle.fluid.layers.thresholded_relu paddle.nn.functional.activation.thresholded_relu +paddle.fluid.layers.sigmoid_cross_entropy_with_logits paddle.nn.functional.loss.sigmoid_cross_entropy_with_logits +paddle.fluid.layers.rank paddle.tensor.attribute.rank +paddle.fluid.layers.image_resize_short paddle.nn.functional.image_resize_short +paddle.fluid.layers.has_nan paddle.has_nan +paddle.fluid.layers.expand paddle.tensor.manipulation.expand +paddle.fluid.layers.erf paddle.tensor.math.erf +paddle.tensor.logic.equal paddle.tensor.equal +paddle.fluid.layers.cast paddle.tensor.manipulation.cast +paddle.fluid.initializer.Normal paddle.nn.initializer.Normal +paddle.fluid.dygraph.container.LayerList paddle.nn.LayerList +paddle.fluid.layers.unique paddle.tensor.manipulation.unique +paddle.tensor.math.trace paddle.trace +paddle.fluid.layers.reshape paddle.tensor.reshape +paddle.fluid.layers.lrn paddle.nn.functional.norm.lrn +paddle.fluid.layers.isfinite paddle.isfinite +paddle.tensor.search.index_select paddle.index_select +paddle.fluid.layers.gelu paddle.nn.functional.activation.gelu +paddle.fluid.layers.fill_constant paddle.fill_constant +paddle.fluid.layers.expand_as paddle.tensor.manipulation.expand_as +paddle.tensor.math.elementwise_sum paddle.tensor.elementwise_sum +paddle.fluid.initializer.MSRA paddle.nn.initializer.MSRA +paddle.fluid.dygraph.LayerNorm paddle.nn.LayerNorm +paddle.fluid.dygraph.GroupNorm paddle.nn.GroupNorm +paddle.fluid.dygraph.BatchNorm paddle.nn.BatchNorm +paddle.tensor.math.scale paddle.tensor.scale +paddle.tensor.math.reciprocal paddle.reciprocal +paddle.fluid.layers.polygon_box_transform paddle.nn.functional.polygon_box_transform +paddle.fluid.layers.pad2d paddle.nn.functional.common.pad2d +paddle.tensor.math.max paddle.max +paddle.fluid.layers.logical_or paddle.tensor.logic.logical_or +paddle.tensor.logic.less_equal paddle.less_equal +paddle.tensor.math.cosh paddle.cosh +paddle.tensor.math.ceil paddle.ceil +paddle.nn.layer.activation.ReLU paddle.nn.ReLU +paddle.fluid.layers.shape paddle.tensor.shape +paddle.tensor.math.pow paddle.tensor.pow +paddle.tensor.creation.ones paddle.tensor.ones +paddle.tensor.logic.not_equal paddle.not_equal +paddle.fluid.layers.anchor_generator paddle.nn.functional.anchor_generator +paddle.tensor.logic.allclose paddle.tensor.allclose +paddle.fluid.layers.warpctc paddle.nn.functional.extension.warpctc +paddle.fluid.layers.scatter_nd paddle.scatter_nd +paddle.fluid.layers.reduce_mean paddle.tensor.reduce_mean +paddle.fluid.layers.prior_box paddle.nn.functional.prior_box +paddle.tensor.math.min paddle.min +paddle.fluid.layers.log paddle.tensor.math.log +paddle.fluid.layers.hard_sigmoid paddle.nn.functional.hard_sigmoid +paddle.tensor.math.floor paddle.floor +paddle.tensor.math.elementwise_add paddle.elementwise_add +paddle.fluid.data paddle.nn.data +paddle.fluid.dygraph.Linear paddle.nn.layer.Linear +paddle.nn.layer.conv.Conv3DTranspose paddle.nn.Conv3DTranspose +paddle.nn.layer.conv.Conv2DTranspose paddle.nn.Conv2DTranspose +paddle.fluid.layers.yolo_box paddle.nn.functional.yolo_box +paddle.fluid.layers.sigmoid_cross_entropy_with_logits paddle.nn.functional.sigmoid_cross_entropy_with_logits +paddle.fluid.layers.scatter_nd_add paddle.scatter_nd_add +paddle.fluid.layers.relu6 paddle.nn.functional.activation.relu6 +paddle.fluid.layers.gather_nd paddle.gather_nd +paddle.tensor.creation.eye paddle.eye +paddle.tensor.linalg.cross paddle.cross +paddle.fluid.layers.adaptive_pool2d paddle.nn.functional.adaptive_pool2d +paddle.fluid.layers.transpose paddle.tensor.transpose +paddle.tensor.stat.std paddle.tensor.std +paddle.tensor.math.sinh paddle.tensor.sinh +paddle.fluid.save paddle.tensor.io.save +paddle.fluid.layers.retinanet_target_assign paddle.nn.functional.vision.retinanet_target_assign +paddle.tensor.math.reduce_sum paddle.tensor.reduce_sum +paddle.fluid.layers.pool2d paddle.nn.functional.pooling.pool2d +paddle.tensor.math.mm paddle.tensor.mm +paddle.fluid.layers.mean paddle.tensor.stat.mean +paddle.fluid.layers.lrn paddle.nn.functional.lrn +paddle.fluid.layers.logsigmoid paddle.nn.functional.logsigmoid +paddle.fluid.layers.leaky_relu paddle.nn.functional.activation.leaky_relu +paddle.tensor.linalg.dist paddle.tensor.dist +paddle.tensor.creation.arange paddle.arange +paddle.fluid.dygraph.layers.Layer paddle.nn.Layer +paddle.tensor.stat.var paddle.var +paddle.fluid.layers.soft_relu paddle.nn.functional.activation.soft_relu +paddle.nn.functional.extension.row_conv paddle.nn.functional.row_conv +paddle.fluid.layers.inverse_time_decay paddle.nn.functional.learning_rate.inverse_time_decay +paddle.fluid.layers.fsp_matrix paddle.nn.functional.vision.fsp_matrix +paddle.tensor.logic.equal paddle.equal +paddle.fluid.layers.cross_entropy paddle.nn.functional.loss.cross_entropy +paddle.fluid.layers.box_decoder_and_assign paddle.nn.functional.vision.box_decoder_and_assign +paddle.fluid.layers.stanh paddle.tensor.math.stanh +paddle.fluid.layers.reshape paddle.reshape +paddle.fluid.layers.natural_exp_decay paddle.nn.functional.learning_rate.natural_exp_decay +paddle.fluid.layers.logical_or paddle.tensor.logical_or +paddle.tensor.math.log1p paddle.tensor.log1p +paddle.nn.functional.activation.hsigmoid paddle.nn.functional.hsigmoid +paddle.fluid.layers.exponential_decay paddle.nn.functional.learning_rate.exponential_decay +paddle.tensor.math.elementwise_sum paddle.elementwise_sum +paddle.fluid.layers.sinh paddle.tensor.math.sinh +paddle.fluid.layers.similarity_focus paddle.nn.functional.extension.similarity_focus +paddle.nn.functional.activation.sigmoid paddle.nn.functional.sigmoid +paddle.tensor.math.scale paddle.scale +paddle.fluid.save paddle.tensor.save +paddle.fluid.layers.rpn_target_assign paddle.nn.functional.extension.rpn_target_assign +paddle.fluid.layers.polynomial_decay paddle.nn.functional.learning_rate.polynomial_decay +paddle.fluid.layers.pad2d paddle.nn.functional.pad2d +paddle.fluid.layers.elu paddle.nn.functional.activation.elu +paddle.framework.WeightNormParamAttr paddle.WeightNormParamAttr +paddle.tensor.creation.zeros paddle.tensor.zeros +paddle.fluid.layers.shape paddle.shape +paddle.fluid.layers.rank paddle.tensor.rank +paddle.tensor.math.pow paddle.pow +paddle.fluid.layers.piecewise_decay paddle.nn.functional.learning_rate.piecewise_decay +paddle.fluid.layers.pad_constant_like paddle.nn.functional.common.pad_constant_like +paddle.tensor.creation.ones paddle.ones +paddle.fluid.layers.create_tensor paddle.tensor.creation.create_tensor +paddle.tensor.logic.allclose paddle.allclose +paddle.fluid.dygraph.Linear paddle.nn.Linear +paddle.fluid.layers.thresholded_relu paddle.nn.functional.thresholded_relu +paddle.fluid.layers.space_to_depth paddle.nn.functional.vision.space_to_depth +paddle.fluid.layers.reduce_mean paddle.reduce_mean +paddle.fluid.layers.mean paddle.tensor.mean +paddle.tensor.creation.full paddle.tensor.full +paddle.fluid.layers.brelu paddle.nn.functional.activation.brelu +paddle.tensor.math.abs paddle.tensor.abs +paddle.fluid.layers.abs paddle.tensor.math.abs +paddle.framework.Variable paddle.Variable +paddle.nn.layer.loss.CrossEntropyLoss paddle.nn.layer.CrossEntropyLoss +paddle.fluid.layers.unique_with_counts paddle.tensor.unique_with_counts +paddle.fluid.layers.switch_case paddle.nn.control_flow.switch_case +paddle.framework.gradients paddle.gradients +paddle.fluid.layers.gelu paddle.nn.functional.gelu +paddle.fluid.layers.exp paddle.tensor.math.exp +paddle.tensor.math.elementwise_sub paddle.tensor.elementwise_sub +paddle.fluid.layers.cross_entropy paddle.nn.functional.cross_entropy +paddle.fluid.layers.crop_tensor paddle.tensor.creation.crop_tensor +paddle.tensor.linalg.cholesky paddle.tensor.cholesky +paddle.fluid.layers.transpose paddle.transpose +paddle.fluid.layers.target_assign paddle.nn.functional.extension.target_assign +paddle.tensor.stat.std paddle.std +paddle.tensor.math.square paddle.tensor.square +paddle.tensor.math.sinh paddle.sinh +paddle.fluid.layers.selu paddle.nn.functional.activation.selu +paddle.fluid.layers.roi_align paddle.nn.functional.vision.roi_align +paddle.fluid.layers.retinanet_target_assign paddle.nn.functional.retinanet_target_assign +paddle.tensor.math.reduce_sum paddle.reduce_sum +paddle.tensor.math.logsumexp paddle.tensor.logsumexp +paddle.fluid.layers.hard_swish paddle.nn.functional.activation.hard_swish +paddle.fluid.layers.expand paddle.tensor.expand +paddle.tensor.linalg.dist paddle.dist +paddle.fluid.layers.cosine_decay paddle.nn.functional.learning_rate.cosine_decay +paddle.fluid.layers.cast paddle.tensor.cast +paddle.fluid.layers.affine_grid paddle.nn.functional.vision.affine_grid +paddle.nn.layer.activation.HSigmoid paddle.nn.layer.HSigmoid +paddle.fluid.layers.warpctc paddle.nn.functional.warpctc +paddle.tensor.manipulation.unsqueeze paddle.tensor.unsqueeze +paddle.fluid.layers.unique paddle.tensor.unique +paddle.tensor.math.stanh paddle.tensor.stanh +paddle.framework.program_guard paddle.program_guard +paddle.fluid.layers.pool2d paddle.nn.functional.pool2d +paddle.fluid.layers.fsp_matrix paddle.nn.functional.fsp_matrix +paddle.fluid.layers.expand_as paddle.tensor.expand_as +paddle.fluid.layers.cosh paddle.tensor.math.cosh +paddle.fluid.layers.box_decoder_and_assign paddle.nn.functional.box_decoder_and_assign +paddle.framework.append_backward paddle.append_backward +paddle.nn.layer.activation.Sigmoid paddle.nn.layer.Sigmoid +paddle.tensor.math.tanh paddle.tensor.tanh +paddle.fluid.layers.noam_decay paddle.nn.functional.learning_rate.noam_decay +paddle.fluid.layers.logical_or paddle.logical_or +paddle.tensor.math.log1p paddle.log1p +paddle.fluid.layers.floor paddle.tensor.math.floor +paddle.fluid.initializer.Uniform paddle.nn.initializer.Uniform +paddle.tensor.manipulation.squeeze paddle.tensor.squeeze +paddle.fluid.layers.softplus paddle.nn.functional.activation.softplus +paddle.framework.scope_guard paddle.scope_guard +paddle.fluid.save paddle.save +paddle.fluid.layers.relu6 paddle.nn.functional.relu6 +paddle.fluid.layers.multiclass_nms paddle.nn.functional.extension.multiclass_nms +paddle.fluid.layers.label_smooth paddle.nn.functional.common.label_smooth +paddle.fluid.layers.is_empty paddle.tensor.logic.is_empty +paddle.fluid.dygraph.BilinearTensorProduct paddle.nn.layer.common.BilinearTensorProduct +paddle.tensor.creation.zeros paddle.zeros +paddle.fluid.layers.softsign paddle.nn.functional.activation.softsign +paddle.fluid.layers.rank paddle.rank +paddle.tensor.random.rand paddle.tensor.rand +paddle.fluid.layers.pad_constant_like paddle.nn.functional.pad_constant_like +paddle.fluid.layers.linear_lr_warmup paddle.nn.functional.learning_rate.linear_lr_warmup +paddle.fluid.layers.leaky_relu paddle.nn.functional.leaky_relu +paddle.nn.layer.loss.CrossEntropyLoss paddle.nn.CrossEntropyLoss diff --git a/doc/paddle/api/display_doc_list b/doc/paddle/api/display_doc_list new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/doc/paddle/api/gen_doc.py b/doc/paddle/api/gen_doc.py index 6be7ce4e1b68f8608e69e0b361d2034e593a5ffc..e4439535acabea6d9fbeefaaede65c5578b3bc1d 100644 --- a/doc/paddle/api/gen_doc.py +++ b/doc/paddle/api/gen_doc.py @@ -10,122 +10,149 @@ import argparse en_suffix = "_en.rst" cn_suffix = "_cn.rst" file_path_dict = {} +same_api_map = {} +alias_api_map = {} +not_display_doc_map = {} +display_doc_map = {} +api_set = set() -def _str2bool(s): - if s.lower() in ('yes', 'true'): - return True - elif s.lower() in ('no', 'false'): - return False - else: - raise argparse.ArgumentTypeError('Unsupported value encountered.') - - -def parse_args(): - parser = argparse.ArgumentParser() - parser.add_argument( - '--gen_cn', - type=_str2bool, - default=False, - help='Generate the cn documentations') - parser.add_argument( - '--gen_en', - type=_str2bool, - default=True, - help='Generate the en documentations') - return parser.parse_args() - - -def gen_doc_dir(root_path='paddle'): - backup_path = root_path + "_" + str(int(time.time())) - # move old dirs - if os.path.isdir(root_path): - os.rename(root_path, backup_path) - - os.mkdir(root_path) +def get_all_api(root_path='paddle'): for filefiner, name, ispkg in pkgutil.walk_packages( path=paddle.__path__, prefix=paddle.__name__ + '.'): - path = name.replace(".", "/") - try: m = eval(name) except AttributeError: pass else: if hasattr(eval(name), "__all__"): - os.makedirs(path) + #may have duplication of api for api in list(set(eval(name).__all__)): - os.mknod(path + "/" + api + en_suffix) - gen = EnDocGenerator() - with gen.guard(path + "/" + api + en_suffix): - if api != 'test, get_dict': - gen.module_name = name - gen.api = api - gen.print_header_reminder() - gen.print_item() + api_all = name + "." + api + if "," in api: + continue + + try: + fc_id = id(eval(api_all)) + except AttributeError: + pass + else: + api_set.add(api_all) + + +def get_all_same_api(): + for api in api_set: + fc_id = id(eval(api)) + if fc_id in same_api_map: + same_api_map[fc_id].append(api) + else: + same_api_map[fc_id] = [api] -def clean_en_files(path="./paddle"): - for root, dirs, files in os.walk(path): - for file in files: - if file.endswith(en_suffix): - os.remove(os.path.join(root, file)) +def get_not_display_doc_list(file="./not_display_doc_list"): + with open(file, 'r') as f: + for line in f.readlines(): + line = line.strip() + not_display_doc_map[line] = 1 -def gen_en_files(root_path='paddle'): - for filefiner, name, ispkg in pkgutil.walk_packages( - path=paddle.__path__, prefix=paddle.__name__ + '.'): - path = name.replace(".", "/") +def get_display_doc_map(file="./display_doc_list"): + with open(file, 'r') as f: + for line in f.readlines(): + line = line.strip() + display_doc_map[line] = 1 - try: - m = eval(name) - except AttributeError: - pass + +def get_alias_mapping(file="./alias_api_mapping"): + with open(file, 'r') as f: + for line in f.readlines(): + t = line.strip().split('\t') + real_api = t[0].strip() + alias_api = t[1].strip() + alias_api_map[real_api] = alias_api + + +def is_filter_api(api): + #if api in display_list, just return False + if api in display_doc_map: + return False + + #check in api in not_display_list + for key in not_display_doc_map: + #find the api + if key == api: + return True + #find the module + if api.startswith(key): + k_segs = key.split(".") + a_segs = api.split(".") + if k_segs[len(k_segs) - 1] == a_segs[len(k_segs) - 1]: + return True + + #check api in alias map + if alias_api_map.has_key(api): + return False + + #check api start with paddle.fluid + #if has no alias, return True + #if has alias also in paddle.fluid, return True + #if has alias in other module, return False + same_apis = same_api_map[id(eval(api))] + if api.startswith("paddle.fluid"): + all_fluid_flag = True + for x in same_apis: + if not x.startswith("paddle.fluid"): + all_fluid_flag = False + + if all_fluid_flag: + return True + + #if the api in alias_map key, others api is alias api + for x in same_apis: + if alias_api_map.has_key(x): + return True + + if len(same_apis) > 1: + # find shortest path of api as the real api + # others api as the alias api + shortest = len(same_apis[0].split(".")) + for x in same_apis: + if len(x.split(".")) < shortest: + shortest = len(x.split(".")) + + if len(api.split(".")) == shortest: + return False else: - if hasattr(eval(name), "__all__"): - for api in list(set(eval(name).__all__)): - gen = EnDocGenerator() - with gen.guard(path + "/" + api + en_suffix): - if api != 'test, get_dict': - gen.module_name = name - gen.api = api - gen.print_header_reminder() - gen.print_item() + return True + return False -def get_cn_files_path_dict(path=None): - if path == None: - path = os.getcwd() + "/../../fluid/api_cn" +def gen_en_files(root_path='paddle'): + backup_path = root_path + "_" + str(int(time.time())) + + for api in api_set: + if is_filter_api(api): + continue - for root, dirs, files in os.walk(path): - for file in files: - file = file.replace(cn_suffix, "", 1) - val = str(root + "/" + file) - if file in file_path_dict: - file_path_dict[file].append(val) - else: - file_path_dict[file] = [val] + doc_file = api.split(".")[-1] + path = "/".join(api.split(".")[0:-1]) + if not os.path.exists(path): + os.makedirs(path) + f = api.replace(".", "/") + os.mknod(f + en_suffix) + gen = EnDocGenerator() + with gen.guard(f + en_suffix): + gen.module_name = ".".join(api.split(".")[0:-1]) + gen.api = doc_file + gen.print_header_reminder() + gen.print_item() -def copy_cn_files(): - path = "./paddle" +def clean_en_files(path="./paddle"): for root, dirs, files in os.walk(path): for file in files: - f = file.replace(en_suffix, "", 1) - if f in file_path_dict: - key = root[len(path):] + "/" + f - isfind = False - for p in file_path_dict[f]: - if p.find(key) != -1: - src = p + cn_suffix - dst = root + "/" + f + cn_suffix - shutil.copy(src, dst) - isfind = True - break - if not isfind: - src = find_max_size_file(file_path_dict[f]) + cn_suffix - dst = root + "/" + f + cn_suffix - shutil.copy(src, dst) + if file.endswith(en_suffix): + os.remove(os.path.join(root, file)) def check_cn_en_match(path="./paddle", diff_file="en_cn_files_diff"): @@ -149,17 +176,6 @@ def check_cn_en_match(path="./paddle", diff_file="en_cn_files_diff"): fo.close() -def find_max_size_file(files): - max_size = 0 - file = "" - for f in files: - if os.path.getsize(f + cn_suffix) > max_size: - max_size = os.path.getsize(f + cn_suffix) - file = f - - return file - - class EnDocGenerator(object): def __init__(self, name=None, api=None): self.module_name = name @@ -238,20 +254,19 @@ class EnDocGenerator(object): def print_function(self): self._print_ref_() self._print_header_(self.api, dot='-', is_title=False) - self.stream.write('''.. autofunction:: paddle.{0}.{1} + self.stream.write('''.. autofunction:: {0}.{1} :noindex: '''.format(self.module_name, self.api)) if __name__ == "__main__": - args = parse_args() - if args.gen_cn: - gen_doc_dir() - get_cn_files_path_dict() - copy_cn_files() + get_all_api() + get_not_display_doc_list() + get_display_doc_map() + get_all_same_api() + get_alias_mapping() clean_en_files() - if args.gen_en: - gen_en_files() - check_cn_en_match() + gen_en_files() + check_cn_en_match() diff --git a/doc/paddle/api/gen_doc.sh b/doc/paddle/api/gen_doc.sh new file mode 100644 index 0000000000000000000000000000000000000000..3f8895de66d87e5831e91e166ab24c08349cb7c8 --- /dev/null +++ b/doc/paddle/api/gen_doc.sh @@ -0,0 +1,2 @@ +#!/bin/bash +python gen_doc.py diff --git a/doc/paddle/api/not_display_doc_list b/doc/paddle/api/not_display_doc_list index 8f398a3315d0dc715ff8dd6c253b208c40747423..e9d5620785987f7bc5e4b6b3876344f4042b0d9c 100644 --- a/doc/paddle/api/not_display_doc_list +++ b/doc/paddle/api/not_display_doc_list @@ -1 +1,2 @@ -paddle/utils +paddle.utils +paddle.incubate diff --git a/doc/paddle/api/paddle/fluid/dataset/DatasetFactory_cn.rst b/doc/paddle/api/paddle/fleet/DatasetFactory_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dataset/DatasetFactory_cn.rst rename to doc/paddle/api/paddle/fleet/DatasetFactory_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dataset/InMemoryDataset_cn.rst b/doc/paddle/api/paddle/fleet/InMemoryDataset_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dataset/InMemoryDataset_cn.rst rename to doc/paddle/api/paddle/fleet/InMemoryDataset_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dataset/QueueDataset_cn.rst b/doc/paddle/api/paddle/fleet/QueueDataset_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dataset/QueueDataset_cn.rst rename to doc/paddle/api/paddle/fleet/QueueDataset_cn.rst diff --git a/doc/paddle/api/paddle/fluid/optimizer/LambOptimizer_cn.rst b/doc/paddle/api/paddle/fleet/meta_optimizers/LambOptimizer_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/optimizer/LambOptimizer_cn.rst rename to doc/paddle/api/paddle/fleet/meta_optimizers/LambOptimizer_cn.rst diff --git a/doc/paddle/api/paddle/fleet/meta_optimizers/recompute_optimizer/RecomputeOptimizer_cn.rst b/doc/paddle/api/paddle/fleet/meta_optimizers/recompute_optimizer/RecomputeOptimizer_cn.rst deleted file mode 100644 index d521b74471a50245f85085500ca9f716e9ba5d62..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fleet/meta_optimizers/recompute_optimizer/RecomputeOptimizer_cn.rst +++ /dev/null @@ -1,196 +0,0 @@ -.. _cn_api_fluid_optimizer_RecomputeOptimizer: - -RecomputeOptimizer -------------------------------- - - -.. py:class:: paddle.fluid.optimizer.RecomputeOptimizer(optimizer) - -:api_attr: 声明式编程模式(静态图) - - - -通常来讲,一个深度学习的训练流程包含了三个子步骤:首先,运行前向算子来计算Variable和loss的值;其次,运行反向算子来计算参数的梯度;最后,应用优化算法以更新参数值。 - -在前向运算过程中,反向运算会用到的Variable都会保存在内存中,当模型深度很深时,这会占用大量的内存。 - -重计算将深度学习网络切分为k个部分(segments)。在每个segment,运行反向运算时会首先运算前向计算。在重计算模式下,前向计算除了checkpoint和一些必须存储在内存中的特殊Variable,其他临时Variable都会被释放,这对节省内存非常有益。 - -把一个深度学习网络切分为k个segments的Variables被称为checkpoints。用户在使用运行RecomputeOptimizer之前需要先设置checkpoints。 - -参数: - - **optimizer** (Optimizer)-内部优化器 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return {"x": np.random.random(size=(32, 32)).astype('float32'), - "y": np.random.randint(2, size=(32, 1)).astype('int64')} - def mlp(input_x, input_y, hid_dim=128, label_dim=2): - print(input_x) - fc_1 = fluid.layers.fc(input=input_x, size=hid_dim) - prediction = fluid.layers.fc(input=[fc_1], size=label_dim, act='softmax') - cost = fluid.layers.cross_entropy(input=prediction, label=input_y) - sum_cost = fluid.layers.reduce_mean(cost) - return sum_cost, fc_1, prediction - input_x = fluid.layers.data(name="x", shape=[32], dtype='float32') - input_y = fluid.layers.data(name="y", shape=[1], dtype='int64') - cost, fc_1, pred = mlp(input_x, input_y) - - sgd = fluid.optimizer.Adam(learning_rate=0.01) - sgd = fluid.optimizer.RecomputeOptimizer(sgd) - sgd._set_checkpoints([fc_1, pred]) - sgd.minimize(cost) - - print("Finished optimize") - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - step = 10 - - for i in range(step): - cost_val = exe.run(feed=gen_data(), - program=fluid.default_main_program(), - fetch_list=[cost.name]) - print("step=%d cost=%f" % (i, cost_val[0])) - - -.. py:method:: apply_gradients(params_grads) - -调用self.apply_gradients - -参数: - - **params_grads** (list)- 用于优化的(param, grad)对组成的列表 - -返回: 附加在当前Program的优化算子组成的列表 - -返回类型: list - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.framework as framework - - def mlp(input_x, input_y, hid_dim=128, label_dim=2): - fc_1 = fluid.layers.fc(input=input_x, size=hid_dim) - prediction = fluid.layers.fc(input=[fc_1], size=label_dim, act='softmax') - cost = fluid.layers.cross_entropy(input=prediction, label=input_y) - sum_cost = fluid.layers.reduce_mean(cost) - return sum_cost, fc_1, prediction - - - input_x = fluid.layers.data(name="x", shape=[32], dtype='float32') - input_y = fluid.layers.data(name="y", shape=[1], dtype='int64') - cost, fc_1, pred = mlp(input_x, input_y) - print("Finished FF") - - sgd = fluid.optimizer.Adam(learning_rate=0.01) - sgd = fluid.optimizer.RecomputeOptimizer(sgd) - params_grads = sgd.backward( - cost, - startup_program=None, - parameter_list=None, - no_grad_set=None) - - program = cost.block.program - with framework.program_guard(program, None): - optimize_ops = sgd.apply_gradients(params_grads) - - print("Finished apply gradients") - -.. py:method:: apply_optimize(loss, startup_program, params_grads) - -调用self._optimizer的apply_optimize函数 - -参数: - - **loss** (Variable) – 用于优化过程的损失值变量 - - **startup_program** (Program) – 用于初始化在parameter_list中参数的startup_program - - **params_grads** (list)- 用于优化的(param, grad)对组成的列表 - -返回: 附加在当前Program的算子组成的列表 - -返回类型: list - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - def mlp(input_x, input_y, hid_dim=128, label_dim=2): - fc_1 = fluid.layers.fc(input=input_x, size=hid_dim) - prediction = fluid.layers.fc(input=[fc_1], size=label_dim, act='softmax') - cost = fluid.layers.cross_entropy(input=prediction, label=input_y) - sum_cost = fluid.layers.reduce_mean(cost) - return sum_cost, fc_1, prediction - - input_x = fluid.layers.data(name="x", shape=[32], dtype='float32') - input_y = fluid.layers.data(name="y", shape=[1], dtype='int64') - cost, fc_1, pred = mlp(input_x, input_y) - print("Finished FF") - - sgd = fluid.optimizer.Adam(learning_rate=0.01) - sgd = fluid.optimizer.RecomputeOptimizer(sgd) - params_grads = sgd.backward( - cost, - startup_program=None, - parameter_list=None, - no_grad_set=None) - - optimize_ops = sgd.apply_optimize( - cost, startup_program=None, params_grads=params_grads) - - print("Finished apply_optimize") - -.. py:method:: backward(loss, startup_program=None, parameter_list=None, no_grad_set=None, callbacks=None) - -带checkpoint的backward函数 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的的集合,默认值为None - - **callbacks** (list, 可选) – 当为某参数附加反向算子时所要运行的callables组成的列表 - - **checkpoints** (list, 可选) – 一批作为checkpoints的Variables - -返回: 由(param, grad)对构成的列表,其中param是参数,grad是其对应的梯度 - -返回类型: list - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - def mlp(input_x, input_y, hid_dim=128, label_dim=2): - fc_1 = fluid.layers.fc(input=input_x, size=hid_dim) - prediction = fluid.layers.fc(input=[fc_1], size=label_dim, act='softmax') - cost = fluid.layers.cross_entropy(input=prediction, label=input_y) - sum_cost = fluid.layers.reduce_mean(cost) - return sum_cost, fc_1, prediction - - - input_x = fluid.layers.data(name="x", shape=[32], dtype='float32') - input_y = fluid.layers.data(name="y", shape=[1], dtype='int64') - cost, fc_1, pred = mlp(input_x, input_y) - print("Finished FF") - - sgd = fluid.optimizer.Adam(learning_rate=0.01) - sgd = fluid.optimizer.RecomputeOptimizer(sgd) - params_grads = sgd.backward( - cost, - startup_program=None, - parameter_list=None, - no_grad_set=None) - print("Finished backward") - - - diff --git a/doc/paddle/api/paddle/fluid/CPUPlace_cn.rst b/doc/paddle/api/paddle/fluid/CPUPlace_cn.rst deleted file mode 100644 index e091352c9018b355e234f8407625199d51c48555..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/CPUPlace_cn.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. _cn_api_fluid_CPUPlace: - -CPUPlace -------------------------------- - -.. py:class:: paddle.fluid.CPUPlace - - - - -``CPUPlace`` 是一个设备描述符,表示一个分配或将要分配 ``Tensor`` 或 ``LoDTensor`` 的 ``CPU`` 设备。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - cpu_place = fluid.CPUPlace() - - diff --git a/doc/paddle/api/paddle/fluid/CUDAPinnedPlace_cn.rst b/doc/paddle/api/paddle/fluid/CUDAPinnedPlace_cn.rst deleted file mode 100644 index a3e669344b2bac46b8cb57d24bbc633bb3549be3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/CUDAPinnedPlace_cn.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. _cn_api_fluid_CUDAPinnedPlace: - -CUDAPinnedPlace -------------------------------- - -.. py:class:: paddle.fluid.CUDAPinnedPlace - - - - -``CUDAPinnedPlace`` 是一个设备描述符,它所指代的页锁定内存由 CUDA 函数 ``cudaHostAlloc()`` 在主机内存上分配,主机的操作系统将不会对这块内存进行分页和交换操作,可以通过直接内存访问技术访问,加速主机和 GPU 之间的数据拷贝。 -有关 CUDA 的数据转移和 ``pinned memory``,参见 `官方文档 `_ 。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - place = fluid.CUDAPinnedPlace() - diff --git a/doc/paddle/api/paddle/fluid/CUDAPlace_cn.rst b/doc/paddle/api/paddle/fluid/CUDAPlace_cn.rst deleted file mode 100644 index ba7cf62280b52b17dc310c8d9c1a5a4ca2cc6feb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/CUDAPlace_cn.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. _cn_api_fluid_CUDAPlace: - -CUDAPlace -------------------------------- - -.. py:class:: paddle.fluid.CUDAPlace - - - - -.. note:: - 多卡任务请先使用 FLAGS_selected_gpus 环境变量设置可见的GPU设备,下个版本将会修正 CUDA_VISIBLE_DEVICES 环境变量无效的问题。 - -``CUDAPlace`` 是一个设备描述符,表示一个分配或将要分配 ``Tensor`` 或 ``LoDTensor`` 的 GPU 设备。 -每个 ``CUDAPlace`` 有一个 ``dev_id`` (设备id)来表明当前的 ``CUDAPlace`` 所代表的显卡编号,编号从 0 开始。 -``dev_id`` 不同的 ``CUDAPlace`` 所对应的内存不可相互访问。 -这里编号指的是可见显卡的逻辑编号,而不是显卡实际的编号。 -可以通过 ``CUDA_VISIBLE_DEVICES`` 环境变量限制程序能够使用的 GPU 设备,程序启动时会遍历当前的可见设备,并从 0 开始为这些设备编号。 -如果没有设置 ``CUDA_VISIBLE_DEVICES``,则默认所有的设备都是可见的,此时逻辑编号与实际编号是相同的。 - -参数: - - **id** (int,可选) - GPU的设备ID。如果为 ``None``,则默认会使用 id 为 0 的设备。默认值为 ``None``。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - gpu_place = fluid.CUDAPlace(0) - - - - diff --git a/doc/paddle/api/paddle/fluid/DataFeedDesc_cn.rst b/doc/paddle/api/paddle/fluid/DataFeedDesc_cn.rst deleted file mode 100644 index 29cf9b2a43c30fe7c6dd47af702eef29f9a863ec..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/DataFeedDesc_cn.rst +++ /dev/null @@ -1,207 +0,0 @@ -.. _cn_api_fluid_DataFeedDesc: - -DataFeedDesc -------------------------------- - - -.. py:class:: paddle.fluid.DataFeedDesc(proto_file) - -:api_attr: 声明式编程模式(静态图) - - - -描述训练数据的格式。输入是一个文件路径名,其内容是protobuf message。 - -可以参考 :code:`paddle/fluid/framework/data_feed.proto` 查看我们如何定义message - -一段典型的message可能是这样的: - -.. code-block:: python - - import paddle.fluid as fluid - f = open("data.proto", "w") - print >> f, 'name: "MultiSlotDataFeed"' - print >> f, 'batch_size: 2' - print >> f, 'multi_slot_desc {' - print >> f, ' slots {' - print >> f, ' name: "words"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, ' slots {' - print >> f, ' name: "label"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, '}' - f.close() - data_feed = fluid.DataFeedDesc('data.proto') - -用户需要了解DataFeedDesc中每个字段的含义,以便自定义字段的值。例如: - -.. code-block:: python - - import paddle.fluid as fluid - data_feed = fluid.DataFeedDesc('data.proto') - data_feed.set_batch_size(128) - data_feed.set_dense_slots('words') # 名为'words'的slot将被设置为密集的 - data_feed.set_use_slots('words') # 名为'words'的slot将被用于训练 - - # 最后,可以打印变量详细信息便于排查错误 - print(data_feed.desc()) - - -参数: - - **proto_file** (string) : 包含数据描述的protobuf message的磁盘文件 - - -.. py:method:: set_batch_size(batch_size) - -该接口用于设置DataFeedDesc中的 :code:`batch_size` 。可以在训练期间调用修改 :code:`batch_size` 。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - f = open("data.proto", "w") - print >> f, 'name: "MultiSlotDataFeed"' - print >> f, 'batch_size: 2' - print >> f, 'multi_slot_desc {' - print >> f, ' slots {' - print >> f, ' name: "words"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, ' slots {' - print >> f, ' name: "label"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, '}' - f.close() - data_feed = fluid.DataFeedDesc('data.proto') - data_feed.set_batch_size(128) - -参数: - - **batch_size** (int) - 新的批尺寸。 - -返回:无 - -.. py:method:: set_dense_slots(dense_slots_name) - -将 :code:`dense_slots_name` 指定的slots设置为密集的slot。**注意:默认情况下,所有slots都是稀疏的。** - -密集slot的特征将被输入一个Tensor,而稀疏slot的特征将被输入一个LoDTensor。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - f = open("data.proto", "w") - print >> f, 'name: "MultiSlotDataFeed"' - print >> f, 'batch_size: 2' - print >> f, 'multi_slot_desc {' - print >> f, ' slots {' - print >> f, ' name: "words"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, ' slots {' - print >> f, ' name: "label"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, '}' - f.close() - data_feed = fluid.DataFeedDesc('data.proto') - data_feed.set_dense_slots(['words']) - -参数: - - **dense_slots_name** (list(str)) - slot名称的列表,这些slot将被设置为密集的。 - -返回:无 - -.. py:method:: set_use_slots(use_slots_name) - - -设置一个特定的slot是否用于训练。一个数据集包含了很多特征,通过这个函数可以选择哪些特征将用于指定的模型。 - -参数: - - **use_slots_name** (list) : 将在训练中使用的slot名列表,类型为list,其中每个元素为一个字符串 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - f = open("data.proto", "w") - print >> f, 'name: "MultiSlotDataFeed"' - print >> f, 'batch_size: 2' - print >> f, 'multi_slot_desc {' - print >> f, ' slots {' - print >> f, ' name: "words"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, ' slots {' - print >> f, ' name: "label"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, '}' - f.close() - data_feed = fluid.DataFeedDesc('data.proto') - data_feed.set_use_slots(['words']) - -.. note:: - - 默认值是不使用所有slot - - -.. py:method:: desc() - -返回此DataFeedDesc的protobuf message - -返回:一个protobuf message字符串 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - f = open("data.proto", "w") - print >> f, 'name: "MultiSlotDataFeed"' - print >> f, 'batch_size: 2' - print >> f, 'multi_slot_desc {' - print >> f, ' slots {' - print >> f, ' name: "words"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, ' slots {' - print >> f, ' name: "label"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, '}' - f.close() - data_feed = fluid.DataFeedDesc('data.proto') - print(data_feed.desc()) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/DataFeeder_cn.rst b/doc/paddle/api/paddle/fluid/DataFeeder_cn.rst deleted file mode 100644 index 1151d922e5db990139ac616e2aca2d617c1931f5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/DataFeeder_cn.rst +++ /dev/null @@ -1,211 +0,0 @@ -.. _cn_api_fluid_DataFeeder: - -DataFeeder -------------------------------- - - -.. py:class:: paddle.fluid.DataFeeder(feed_list, place, program=None) - -:api_attr: 声明式编程模式(静态图) - - - - - -``DataFeeder`` 负责将reader(读取器)返回的数据转成一种特殊的数据结构,使它们可以输入到 ``Executor`` 和 ``ParallelExecutor`` 中。 -reader通常返回一个minibatch条目列表。在列表中每一条目都是一个样本(sample),它是由具有一至多个特征的列表或元组组成的。 - - -以下是简单用法: - -.. code-block:: python - - import paddle.fluid as fluid - 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 - - import paddle - import paddle.fluid as fluid - - place=fluid.CUDAPlace(0) - data = fluid.layers.data(name='data', shape=[3, 224, 224], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - - feeder = fluid.DataFeeder(place=place, feed_list=[data, label]) - reader = feeder.decorate_reader( - paddle.batch(paddle.dataset.flowers.train(), batch_size=16), multi_devices=False) - - - -参数: - - **feed_list** (list) – 向模型输入的变量表或者变量表名 - - **place** (Place) – place表明是向GPU还是CPU中输入数据。如果想向GPU中输入数据, 请使用 ``fluid.CUDAPlace(i)`` (i 代表 the GPU id);如果向CPU中输入数据, 请使用 ``fluid.CPUPlace()`` - - **program** (Program) – 需要向其中输入数据的Program。如果为None, 会默认使用 ``default_main_program()``。 缺省值为None - - -抛出异常: - - ``ValueError`` – 如果一些变量不在此 Program 中 - - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - place = fluid.CPUPlace() - - def reader(): - yield [np.random.random([4]).astype('float32'), np.random.random([3]).astype('float32')], - - main_program = fluid.Program() - startup_program = fluid.Program() - - with fluid.program_guard(main_program, startup_program): - data_1 = fluid.layers.data(name='data_1', shape=[1, 2, 2]) - data_2 = fluid.layers.data(name='data_2', shape=[1, 1, 3]) - out = fluid.layers.fc(input=[data_1, data_2], size=2) - # ... - - feeder = fluid.DataFeeder([data_1, data_2], place) - - exe = fluid.Executor(place) - exe.run(startup_program) - for data in reader(): - outs = exe.run(program=main_program, - feed=feeder.feed(data), - fetch_list=[out]) - - -.. py:method:: feed(iterable) - - -根据feed_list(数据输入表)和iterable(可遍历的数据)提供的信息,将输入数据转成一种特殊的数据结构,使它们可以输入到 ``Executor`` 和 ``ParallelExecutor`` 中。 - -参数: - - **iterable** (list|tuple) – 要输入的数据 - -返回: 转换结果 - -返回类型: dict - -**代码示例** - -.. code-block:: python - - import numpy.random as random - import paddle.fluid as fluid - - def reader(limit=5): - for i in range(limit): - yield random.random([784]).astype('float32'), random.random([1]).astype('int64'), random.random([256]).astype('float32') - - data_1 = fluid.layers.data(name='data_1', shape=[1, 28, 28]) - data_2 = fluid.layers.data(name='data_2', shape=[1], dtype='int64') - data_3 = fluid.layers.data(name='data_3', shape=[16, 16], dtype='float32') - feeder = fluid.DataFeeder(['data_1','data_2', 'data_3'], fluid.CPUPlace()) - - result = feeder.feed(reader()) - - -.. py:method:: feed_parallel(iterable, num_places=None) - - -该方法获取的多个minibatch,并把每个minibatch提前输入进各个设备中。 - -参数: - - **iterable** (list|tuple) – 要输入的数据 - - **num_places** (int) – 设备数目。默认为None。 - -返回: 转换结果 - -返回类型: dict - -.. note:: - 设备(CPU或GPU)的数目必须等于minibatch的数目 - -**代码示例** - -.. code-block:: python - - import numpy.random as random - import paddle.fluid as fluid - - def reader(limit=10): - for i in range(limit): - yield [random.random([784]).astype('float32'), random.random([1]).astype('float32')], - - x = fluid.layers.data(name='x', shape=[1, 28, 28]) - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - - fluid.layers.elementwise_add(x, y) - - feeder = fluid.DataFeeder(['x','y'], fluid.CPUPlace()) - place_num = 2 - places = [fluid.CPUPlace() for x in range(place_num)] - data = [] - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - program = fluid.CompiledProgram(fluid.default_main_program()).with_data_parallel(places=places) - for item in reader(): - data.append(item) - if place_num == len(data): - exe.run(program=program, feed=list(feeder.feed_parallel(data, place_num)), fetch_list=[]) - data = [] - -.. 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`` - -返回:转换结果 - -返回类型: dict - -抛出异常: ``ValueError`` – 如果 ``drop_last`` 值为False并且data batch与设备不匹配时,产生此异常 - -**代码示例** - -.. code-block:: python - - import numpy.random as random - import paddle - import paddle.fluid as fluid - - def reader(limit=5): - for i in range(limit): - yield (random.random([784]).astype('float32'), random.random([1]).astype('int64')), - - place=fluid.CPUPlace() - data = fluid.layers.data(name='data', shape=[1, 28, 28], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - - feeder = fluid.DataFeeder(place=place, feed_list=[data, label]) - reader = feeder.decorate_reader(reader, multi_devices=False) - - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in reader(): - exe.run(feed=data) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/DistributeTranspilerConfig_cn.rst b/doc/paddle/api/paddle/fluid/DistributeTranspilerConfig_cn.rst deleted file mode 100644 index 4a95daa6428ad1d9be20ae1edc6dd1a0a0549920..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/DistributeTranspilerConfig_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_transpiler_DistributeTranspilerConfig: - -DistributeTranspilerConfig -------------------------------- - - -.. py:class:: paddle.fluid.transpiler.DistributeTranspilerConfig - -:api_attr: 声明式编程模式(静态图) - - - -单机任务切换为分布式任务的配置类,用户可根据需求进行配置,如指定同步/异步训练,指定节点个数及模型切分逻辑。 - -返回:None - -.. py:attribute:: slice_var_up (bool) - -是否为Pserver将张量切片, 默认为True, bool类型属性, 默认为True。该参数将指定是否将参数/梯度切分后均匀分布于多个PServer上。slice_var_up为True的情况下,会将参数均匀切分后分布于多个PServer端,使每个PServer的负载相对均衡。 - - -.. py:attribute:: split_method (PSDispatcher) - -参数分发的方式,当前支持的方法包括 :ref:`cn_api_fluid_transpiler_RoundRobin` 和 :ref:`cn_api_fluid_transpiler_HashName` 两种, 默认为RoundRobin。 - -注意: 尝试选择最佳方法来达到负载均衡。 - -.. py:attribute:: min_block_size (int) - -参数切片时,最小数据块的大小,默认为8192。 - -注意: 根据:https://github.com/PaddlePaddle/Paddle/issues/8638#issuecomment-369912156 , 当数据块大小超过2MB时,我们可以有效地使用带宽。如果你想更改它,请详细查看slice_variable函数。 - -**代码示例** - -.. code-block:: python - - from paddle.fluid.transpiler.ps_dispatcher import RoundRobin - import paddle.fluid as fluid - - config = fluid.DistributeTranspilerConfig() - config.slice_var_up = True - config.split_method = RoundRobin - config.min_block_size = 81920 - - - diff --git a/doc/paddle/api/paddle/fluid/DistributeTranspiler_cn.rst b/doc/paddle/api/paddle/fluid/DistributeTranspiler_cn.rst deleted file mode 100644 index 92ea6dfbfd198334767f5f0afc6c958dd38d23ea..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/DistributeTranspiler_cn.rst +++ /dev/null @@ -1,226 +0,0 @@ -.. _cn_api_fluid_transpiler_DistributeTranspiler: - -DistributeTranspiler -------------------------------- - - -.. py:class:: paddle.fluid.transpiler.DistributeTranspiler (config=None) - -:api_attr: 声明式编程模式(静态图) - - - - -该类可以把fluid program转变为分布式数据并行计算的program, 有PServer和NCCL2两种模式。 -在Pserver(全称:parameter server)模式下, 通过 ``transpile`` 将用于单机训练的 ``program`` 转译为可用于parameter server的分布式架构(即PServer,参数服务器)来进行训练的program。 -在NCCL2模式下, 通过 ``transpile`` 将用于单机训练的 ``program`` 转译为可用于NCCL2的分布式架构来进行训练的program。在NCCL2模式下,transpiler会在 ``startup_program`` 中附加一个 ``NCCL_ID`` 广播算子(broadcasting operators)来实现在该集群中所有工作结点共享``NCCL_ID`` 。 调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``Executor`` 来启动NCCL2分布式模式。 - - -参数: - - **config** (DistributeTranspilerConfig) DistributeTranspiler属性配置实例,定义了program转变所需要的属性, 请参考:`DistributeTranspilerConfig` 相关文档。 - -返回:初始化后的DistributeTranspiler实例 - -返回类型:实例(DistributeTranspiler) - - -**代码示例** - -.. code-block:: python - - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_loss = fluid.layers.mean(cost) - - sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001) - sgd_optimizer.minimize(avg_loss) - - # pserver 模式下 - pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - current_endpoint = "192.168.0.1:6174" - trainer_id = 0 - trainers = 4 - role = "PSERVER" - t = fluid.DistributeTranspiler() - t.transpile( - trainer_id, pservers=pserver_endpoints, trainers=trainers) - if role == "PSERVER": - pserver_program = t.get_pserver_program(current_endpoint) - pserver_startup_program = t.get_startup_program(current_endpoint, - pserver_program) - elif role == "TRAINER": - trainer_program = t.get_trainer_program() - - # nccl2 模式下 - trainer_num = 2 - trainer_id = 0 - config = fluid.DistributeTranspilerConfig() - config.mode = "nccl2" - trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - t = fluid.DistributeTranspiler(config=config) - t.transpile(trainer_id=trainer_id, trainers=trainer_endpoints, current_endpoint="192.168.0.1:6174") - exe = fluid.ParallelExecutor( - use_cuda=True, - loss_name=avg_loss.name, - num_trainers=trainer_num, - trainer_id=trainer_id - ) - - - -.. py:method:: transpile(trainer_id, program=None, pservers='127.0.0.1:6174', trainers=1, sync_mode=True, startup_program=None, current_endpoint='127.0.0.1:6174') - -通过此方法,可根据用户配置将单机的program转换为当前节点可用的数据并行的分布式program。 - -参数: - - **trainer_id** (int) – 当前Trainer worker的id, 如果有n个Trainer worker, id 取值范围为0 ~ n-1 - - **program** (Program|None) – 待transpile(转译)的main program, 默认为 ``fluid.default_main_program()`` - - **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_startup_program()`` - - **current_endpoint** (str) – 当需要把program转译(transpile)至NCCL2模式时,需要将当前endpoint(终端)传入该参数。PServer模型下,当用户需要使用增量训练时,必须要指定该参数。 - -返回:None - - -**代码示例** - -.. code-block:: python - - transpiler = fluid.DistributeTranspiler() - t.transpile( - trainer_id=0, - pservers="127.0.0.1:7000,127.0.0.1:7001", - trainers=2, - sync_mode=False, - current_endpoint="127.0.0.1:7000") - - -.. py:method:: get_trainer_program(wait_port=True) - - -该方法可以得到Trainer侧的program。Trainer侧的program相较于原始的单机执行的program,主要有以下不同: - - - 删除了参数更新optimizer相关op,参数的更新由Pserver(参数服务器)执行 - - 在每个参数的反向梯度计算op后,添加了 ``Send_op`` 与 ``Recv_op`` ,用于发送参数的梯度与接受更新后的参数 - -参数: - - **wait_port** (bool,默认值True) - 是否等待参数服务器准备就绪后再返回program - -返回: Trainer侧的program - -返回类型: Program - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 这是一个示例,请根据你的情况更改endpoint - pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - trainer_id = 0 - trainers = 4 - t = fluid.DistributeTranspiler() - t.transpile(trainer_id, trainers=trainers, pservers=pserver_endpoints) - trainer_program = t.get_trainer_program() - - -.. py:method:: get_pserver_program(endpoint) - - -该方法可以得到Pserver(参数服务器)侧的program。Pserver侧的program相较于原始的单机执行的program,主要有以下不同: - - - 仅包含参数更新optimizer相关op,与分布式通信相关op - - 0号block仅包含变量的定义及 ``listen_and_serv_op`` - - Pserver为每个需要进行更新的参数新建了一个独立的block - -参数: - - **endpoint** (str) – 当前Pserver终端 - -返回: 当前Pserver需要执行的program - -返回类型: Program - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 这是一个示例,请根据你的情况更改endpoint - pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - current_endpoint = "192.168.0.1:6174" - trainer_id = 0 - trainers = 4 - t = fluid.DistributeTranspiler() - t.transpile( - trainer_id, pservers=pserver_endpoints, trainers=trainers) - pserver_program = t.get_pserver_program(current_endpoint) - - -.. py:method:: get_pserver_programs(endpoint) - - -该方法可以得到Pserver侧用于分布式训练的 ``main_program`` 和 ``startup_program`` 。该函数返回的 ``main_program`` 与函数 ``get_pserver_program`` 的返回值一致。 - -参数: - - **endpoint** (str) – 当前Pserver终端 - -返回: (main_program, startup_program), “Program”类型的元组 - -返回类型: tuple - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 这是一个示例,请根据你的情况更改endpoint - pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - current_endpoint = "192.168.0.1:6174" - trainer_id = 0 - trainers = 4 - t = fluid.DistributeTranspiler() - t.transpile( - trainer_id, pservers=pserver_endpoints, trainers=trainers) - pserver_program, pserver_startup_program = t.get_pserver_programs(current_endpoint) - - -.. 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 - -返回: Pserver侧的startup_program - -返回类型: Program - -**代码示例** - -.. code-block:: python - - pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - current_endpoint = "192.168.0.1:6174" - trainer_id = 0 - trainers = 4 - - t = fluid.DistributeTranspiler() - t.transpile(trainer_id, pservers=pserver_endpoints, trainers=trainers) - pserver_program = t.get_pserver_program(current_endpoint) - pserver_startup_program = t.get_startup_program(current_endpoint, - pserver_program) - - - diff --git a/doc/paddle/api/paddle/fluid/HashName_cn.rst b/doc/paddle/api/paddle/fluid/HashName_cn.rst deleted file mode 100644 index 9b4d019cbec11dba1a818c95afe81342e2e284b6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/HashName_cn.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _cn_api_fluid_transpiler_HashName: - -HashName -------------------------------- - - -.. py:class:: paddle.fluid.transpiler.HashName(pserver_endpoints) - -:api_attr: 声明式编程模式(静态图) - - - -该方法使用 python ``Hash()`` 函数将变量散列到多个parameter server节点。 - -参数: - - **pserver_endpoints** (list) - endpoint (ip:port)的 list - -返回:实例化后的HashName的对象 - -返回类型:HashName - -**代码示例** - -.. code-block:: python - - import paddle.fluid.transpiler.HashName as HashName - - pserver_endpoints = [“127.0.0.1:6007”, “127.0.0.1:6008”] - vars = [“var1”,”var2”,”var3”,”var4”,”var5”] - rr = HashName(pserver_endpoints) - rr.dispatch(vars) - - -.. py:method:: reset() - -该方法将重置HashName内置的计数, 计数将重置为0。 - -返回:无。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid.transpiler.HashName as HashName - - pserver_endpoints = [“127.0.0.1:6007”, “127.0.0.1:6008”] - vars = [“var1”,”var2”,”var3”,”var4”,”var5”] - rr = HashName(pserver_endpoints) - rr.reset() - diff --git a/doc/paddle/api/paddle/fluid/LoDTensorArray_cn.rst b/doc/paddle/api/paddle/fluid/LoDTensorArray_cn.rst deleted file mode 100644 index 4fa9be57d50dbec6f1137f7cf04fdc83f349af79..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/LoDTensorArray_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_LoDTensorArray: - -LoDTensorArray -------------------------------- - -.. py:class:: paddle.fluid.LoDTensorArray - - - - -LoDTensorArray是由LoDTensor组成的数组,支持"[]"运算符、len()函数和for迭代等。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - arr = fluid.LoDTensorArray() - - - -.. py:method:: append(self: paddle.fluid.core_avx.LoDTensorArray, tensor: paddle.fluid.core.LoDTensor) → None - -该接口将LoDTensor追加到LoDTensorArray后。 - -参数: - - **tensor** (LoDTensor) - 追加的LoDTensor。 - -返回:无。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - arr = fluid.LoDTensorArray() - t = fluid.LoDTensor() - t.set(np.ndarray([5, 30]), fluid.CPUPlace()) - arr.append(t) - - - - - diff --git a/doc/paddle/api/paddle/fluid/LoDTensor_cn.rst b/doc/paddle/api/paddle/fluid/LoDTensor_cn.rst deleted file mode 100644 index 2eaf09eecf00e779296f282482324e4b2a8385cc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/LoDTensor_cn.rst +++ /dev/null @@ -1,267 +0,0 @@ -.. _cn_api_fluid_LoDTensor: - -LoDTensor -------------------------------- - -.. py:class:: paddle.fluid.LoDTensor - - - - - -LoDTensor是一个具有LoD(Level of Details)信息的张量(Tensor),可用于表示变长序列,详见 :ref:`cn_user_guide_lod_tensor` 。 - -LoDTensor可以通过 ``np.array(lod_tensor)`` 方法转换为numpy.ndarray。 - -如果您不需要了解LoDTensor的细节,可以跳过以下的注解。 - -下面以两个例子说明如何用LoDTensor表示变长序列。 - -示例1: - -假设x为一个表示变长序列的LoDTensor,它包含2个逻辑子序列,第一个序列长度是2(样本数量为2),第二个序列长度是3,总序列长度为5。 -第一个序列的数据为[1, 2], [3, 4],第二个序列的数据为[5, 6], [7, 8], [9, 10],每个样本数据的维度均是2,该LoDTensor最终的shape为[5, 2],其中5为总序列长度,2为每个样本数据的维度。 - -在逻辑上,我们可以用两种方式表示该变长序列,一种是递归序列长度的形式,即x.recursive_sequence_length = [[2, 3]];另一种是偏移量的形式,即x.lod = [[0, 2, 2+3]]。 -这两种表示方式是等价的,您可以通过LoDTensor的相应接口来设置和获取recursive_sequence_length或LoD。 - -在实现上,为了获得更快的序列访问速度,Paddle采用了偏移量的形式来存储不同的序列长度。因此,对recursive_sequence_length的操作最终将转换为对LoD的操作。 - -:: - - x.data = [[1, 2], [3, 4], - [5, 6], [7, 8], [9, 10]] - - x.shape = [5, 2] - - x.recursive_sequence_length = [[2, 3]] - - x.lod = [[0, 2, 5]] - -示例2: - -LoD可以有多个level(例如,一个段落可以有多个句子,一个句子可以有多个单词)。假设y为LoDTensor ,lod_level为2。从level=0来看有2个逻辑序列,序列长度分别为2和1,表示第一个逻辑序列包含2个子序列,第二个逻辑序列包含1个子序列。从level=1来看,第一个逻辑序列包含的2个子序列长度分别为2和2,第二个逻辑序列包含的1个子序列长度为3。 - -因此,该LoDTensor以递归序列长度形式表示为 y.recursive_sequence_length = [[2, 1], [2, 2, 3]];相应地,以偏移量形式表示为 y.lod = [[0, 2, 3], [0, 2, 4, 7]]。 - -:: - - y.data = [[1, 2], [3, 4], - [5, 6], [7, 8], - [9, 10], [11, 12], [13, 14]] - - y.shape = [2+2+3, 2] - - y.recursive_sequence_length = [[2, 1], [2, 2, 3]] - - y.lod = [[0, 2, 3], [0, 2, 4, 7]] - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - t = fluid.LoDTensor() - - -.. py:method:: has_valid_recursive_sequence_lengths(self: paddle.fluid.core_avx.LoDTensor) → bool - -该接口检查LoDTensor的LoD的正确性。 - -返回: 是否带有正确的LoD。 - -返回类型: bool。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.LoDTensor() - t.set(np.ndarray([5, 30]), fluid.CPUPlace()) - t.set_recursive_sequence_lengths([[2, 3]]) - print(t.has_valid_recursive_sequence_lengths()) # True - -.. py:method:: lod(self: paddle.fluid.core_avx.LoDTensor) → List[List[int]] - -该接口返回LoDTensor的LoD。 - -返回:LoDTensor的LoD。 - -返回类型:List [List [int]]。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.LoDTensor() - t.set(np.ndarray([5, 30]), fluid.CPUPlace()) - t.set_lod([[0, 2, 5]]) - print(t.lod()) # [[0, 2, 5]] - -.. py:method:: recursive_sequence_lengths(self: paddle.fluid.core_avx.LoDTensor) → List[List[int]] - -该接口返回与LoDTensor的LoD对应的递归序列长度。 - -返回:LoDTensor的LoD对应的递归序列长度。 - -返回类型:List [List [int]]。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.LoDTensor() - t.set(np.ndarray([5, 30]), fluid.CPUPlace()) - t.set_recursive_sequence_lengths([[2, 3]]) - print(t.recursive_sequence_lengths()) # [[2, 3]] - - -.. py:method:: set(*args, **kwargs) - -该接口根据输入的numpy array和设备place,设置LoDTensor的数据。 - -重载函数: - -1. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[float32], place: paddle::platform::CPUPlace) -> None - -2. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[int32], place: paddle::platform::CPUPlace) -> None - -3. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[float64], place: paddle::platform::CPUPlace) -> None - -4. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[int64], place: paddle::platform::CPUPlace) -> None - -5. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[bool], place: paddle::platform::CPUPlace) -> None - -6. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[uint16], place: paddle::platform::CPUPlace) -> None - -7. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[uint8], place: paddle::platform::CPUPlace) -> None - -8. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[int8], place: paddle::platform::CPUPlace) -> None - -9. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[float32], place: paddle::platform::CUDAPlace) -> None - -10. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[int32], place: paddle::platform::CUDAPlace) -> None - -11. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[float64], place: paddle::platform::CUDAPlace) -> None - -12. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[int64], place: paddle::platform::CUDAPlace) -> None - -13. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[bool], place: paddle::platform::CUDAPlace) -> None - -14. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[uint16], place: paddle::platform::CUDAPlace) -> None - -15. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[uint8], place: paddle::platform::CUDAPlace) -> None - -16. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[int8], place: paddle::platform::CUDAPlace) -> None - -17. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[float32], place: paddle::platform::CUDAPinnedPlace) -> None - -18. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[int32], place: paddle::platform::CUDAPinnedPlace) -> None - -19. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[float64], place: paddle::platform::CUDAPinnedPlace) -> None - -20. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[int64], place: paddle::platform::CUDAPinnedPlace) -> None - -21. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[bool], place: paddle::platform::CUDAPinnedPlace) -> None - -22. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[uint16], place: paddle::platform::CUDAPinnedPlace) -> None - -23. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[uint8], place: paddle::platform::CUDAPinnedPlace) -> None - -24. set(self: paddle.fluid.core_avx.Tensor, array: numpy.ndarray[int8], place: paddle::platform::CUDAPinnedPlace) -> None - -参数: - - **array** (numpy.ndarray) - 要设置的numpy array,支持的数据类型为bool, float32, float64, int8, int32, int64, uint8, uint16。 - - **place** (CPUPlace|CUDAPlace|CUDAPinnedPlace) - 要设置的LoDTensor所在的设备。 - -返回:无。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.LoDTensor() - t.set(np.ndarray([5, 30]), fluid.CPUPlace()) - - -.. py:method:: set_lod(self: paddle.fluid.core_avx.LoDTensor, lod: List[List[int]]) → None - -该接口设置LoDTensor的LoD。 - -参数: - - **lod** (List [List [int]]) - 要设置的LoD。 - -返回:无。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.LoDTensor() - t.set(np.ndarray([5, 30]), fluid.CPUPlace()) - t.set_lod([[0, 2, 5]]) - print(t.lod()) # [[0, 2, 5]] - - - -.. py:method:: set_recursive_sequence_lengths(self: paddle.fluid.core_avx.LoDTensor, recursive_sequence_lengths: List[List[int]]) → None - -该接口根据递归序列长度 ``recursive_sequence_lengths`` 设置LoDTensor的LoD。 - -例如,如果 ``recursive_sequence_lengths = [[2, 3]]``,意味着有两个长度分别为2和3的序列,相应的LoD是[[0, 2, 2 + 3]],即[[0, 2, 5]]。 - -参数: - - **recursive_sequence_lengths** (List [List [int]]) - 递归序列长度。 - -返回:无。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.LoDTensor() - t.set(np.ndarray([5, 30]), fluid.CPUPlace()) - t.set_recursive_sequence_lengths([[2, 3]]) - print(t.recursive_sequence_length()) # [[2, 3]] - print(t.lod()) # [[0, 2, 5]] - -.. py:method:: shape(self: paddle.fluid.core_avx.Tensor) → List[int] - -该接口返回LoDTensor的shape。 - -返回:LoDTensor的shape。 - -返回类型:List[int] 。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.LoDTensor() - t.set(np.ndarray([5, 30]), fluid.CPUPlace()) - print(t.shape()) # [5, 30] - - - diff --git a/doc/paddle/api/paddle/fluid/ParamAttr_cn.rst b/doc/paddle/api/paddle/fluid/ParamAttr_cn.rst deleted file mode 100644 index 641ed94ab2d0b52e9ef2de4cdd783f61e5df672f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/ParamAttr_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_ParamAttr: - - -ParamAttr -------------------------------- - - -.. py:class:: paddle.fluid.ParamAttr(name=None, initializer=None, learning_rate=1.0, regularizer=None, trainable=True, do_model_average=False) - - - - -.. note:: - 该类中的 ``gradient_clip`` 属性在2.0版本会废弃,推荐在初始化 ``optimizer`` 时设置梯度裁剪。共有三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 - :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - -创建一个参数属性对象,用户可设置参数的名称、初始化方式、学习率、正则化规则、是否需要训练、梯度裁剪方式、是否做模型平均等属性。 - -参数: - - **name** (str,可选) - 参数的名称。默认值为None,表示框架自动创建参数的名称。 - - **initializer** (Initializer,可选) - 参数的初始化方式。默认值为None,表示权重参数采用Xavier初始化方式,偏置参数采用全0初始化方式。 - - **learning_rate** (float) - 参数的学习率。实际参数的学习率等于全局学习率乘以参数的学习率,再乘以learning rate schedule的系数。 - - **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,表示不做模型平均。 - -返回: 表示参数属性的对象。 - -返回类型: ParamAttr - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - w_param_attrs = fluid.ParamAttr(name="fc_weight", - learning_rate=0.5, - regularizer=fluid.regularizer.L2Decay(1.0), - trainable=True) - print(w_param_attrs.name) # "fc_weight" - x = fluid.layers.data(name='X', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=10, param_attr=w_param_attrs) - - diff --git a/doc/paddle/api/paddle/fluid/Tensor_cn.rst b/doc/paddle/api/paddle/fluid/Tensor_cn.rst deleted file mode 100644 index 0cae5aac94cd27f7e3432a19b295f2b03ef606b8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/Tensor_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_Tensor: - -Tensor -------------------------------- - -.. py:function:: paddle.fluid.Tensor - - - - -Tensor用于表示多维张量,可以通过 ``np.array(tensor)`` 方法转换为numpy.ndarray。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - t = fluid.Tensor() - -.. py:method:: set(array, place, zero_copy=False) - -该接口根据输入的numpy array和设备place,设置Tensor的数据。 - -参数: - - **array** (numpy.ndarray) - 要设置的numpy array,支持的数据类型为bool, float32, float64, int8, int32, int64, uint8, uint16。 - - **place** (CPUPlace|CUDAPlace|CUDAPinnedPlace) - 要设置的Tensor所在的设备。 - - **zero_copy** (bool,可选) - 是否与输入的numpy数组共享内存。此参数仅适用于CPUPlace。默认值为False。 - -返回:无。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.Tensor() - t.set(np.ndarray([5, 30]), fluid.CPUPlace()) - -.. py:method:: shape(self: paddle.fluid.core_avx.Tensor) → List[int] - -该接口返回Tensor的shape。 - -返回:Tensor的shape。 - -返回类型:List[int] 。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.Tensor() - t.set(np.ndarray([5, 30]), fluid.CPUPlace()) - print(t.shape()) # [5, 30] \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/Variable_cn.rst b/doc/paddle/api/paddle/fluid/Variable_cn.rst deleted file mode 100644 index 4abe3040d20cc7dc223e7d0b1f3610e6fd87ea89..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/Variable_cn.rst +++ /dev/null @@ -1,416 +0,0 @@ -.. _cn_api_fluid_Variable: - -Variable -------------------------------- - -.. py:class:: paddle.fluid.Variable - - - - -**注意:** - **1. 请不要直接调用** `Variable` **的构造函数,因为这会造成严重的错误发生!** - - **2. 在静态图形模式下:请使用** `Block.create_var` **创建一个静态的** `Variable` **,该静态的** `Variable` **在使用** :ref:`cn_api_fluid_executor` **执行前是没有实际数据的。** - - **3. 在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下:请使用** :ref:`cn_api_fluid_dygraph_to_variable` 创建一个拥有实际数据的 :ref:`api_guide_Variable` - -在Fluid中,OP的每个输入和输出都是 :ref:`api_guide_Variable` 。多数情况下, :ref:`api_guide_Variable` 用于保存不同种类的数据或训练标签。 - -:ref:`api_guide_Variable` 总是属于某一个 :ref:`api_guide_Block` 。所有 :ref:`api_guide_Variable` 都有其自己的 ``name`` ,不同 :ref:`api_guide_Block` 中的两个 :ref:`api_guide_Variable` 可以具有相同的名称。如果使用的 **不是** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ 模式,那么同一个 :ref:`api_guide_Block` 中的两个或更多 :ref:`api_guide_Variable` 拥有相同 ``name`` 将意味着他们会共享相同的内容。通常我们使用这种方式来实现 **参数共享** - -:ref:`api_guide_Variable` 有很多种。它们每种都有自己的属性和用法。请参考 `framework.proto `_ 以获得详细信息。 :ref:`api_guide_Variable` 的大多数成员变量可以设置为 ``None``。它的意思是它不可用或稍后指定。 - -如果您希望创建一个 :ref:`api_guide_Variable` 那么可以参考如下示例: - -**示例代码:** - -在静态图形模式下: - .. code-block:: python - - import paddle.fluid as fluid - cur_program = fluid.Program() - cur_block = cur_program.current_block() - new_variable = cur_block.create_var(name="X", - shape=[-1, 23, 48], - dtype='float32') -在 `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ 模式下: - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - with fluid.dygraph.guard(): - new_variable = fluid.dygraph.to_variable(np.arange(10)) - - -.. py:method:: detach() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - **2.** ``detach`` **后的** :ref:`api_guide_Variable` **将会成为临时变量** - -产生一个新的,和当前计算图分离的,但是拥有当前 :ref:`api_guide_Variable` 其内容的临时变量 - -返回:一个新的,和当前计算图分离的,但是拥有当前 :ref:`api_guide_Variable` 其内容的临时 :ref:`api_guide_Variable` - -返回类型:(:ref:`api_guide_Variable` | 和输入的 ``Dtype`` 一致) - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - from paddle.fluid.dygraph import Linear - import numpy as np - - data = np.random.uniform(-1, 1, [30, 10, 32]).astype('float32') - with fluid.dygraph.guard(): - linear = Linear(32, 64) - data = to_variable(data) - x = linear(data) - y = x.detach() - -.. py:method:: numpy() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -返回一个 ``ndarray`` 来表示当前 :ref:`api_guide_Variable` 的值 - -返回:``numpy`` 的数组,表示当前 :ref:`api_guide_Variable` 的实际值 - -返回类型:ndarray,``dtype`` 和输入的 ``dtype`` 一致 - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - from paddle.fluid.dygraph import Linear - import numpy as np - - data = np.random.uniform(-1, 1, [30, 10, 32]).astype('float32') - with fluid.dygraph.guard(): - linear = Linear(32, 64) - data = to_variable(data) - x = linear(data) - print(x.numpy()) - -.. py:method:: set_value() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -为此 :ref:`api_guide_Variable` 设置一个新的值。 - -**参数:** - - - **value**: ( :ref:`api_guide_Variable` 或 ``ndarray`` ) 要赋值给此 :ref:`api_guide_Variable` 的新的值。 - -返回:无 - -抛出异常: ``ValueError`` - 当要赋于的新值的 ``shape`` 和此 :ref:`api_guide_Variable` 原有的 ``shape`` 不同时,抛出 ``ValueError`` 。 - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - from paddle.fluid.dygraph import Linear - import numpy as np - - data = np.ones([3, 1024], dtype='float32') - with fluid.dygraph.guard(): - linear = fluid.dygraph.Linear(1024, 4) - t = to_variable(data) - linear(t) # 使用默认参数值调用前向 - custom_weight = np.random.randn(1024, 4).astype("float32") - linear.weight.set_value(custom_weight) # 将参数修改为自定义的值 - out = linear(t) # 使用新的参数值调用前向 - -.. py:method:: backward() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - **2. 由于如果该** :ref:`api_guide_Variable` **以上没有任何地方需要梯度,那么仅仅设置该** :ref:`api_guide_Variable` **的梯度为** ``1`` **是没有意义的。因此,这种情况下,为了节省一些计算,我们不去产生该** :ref:`api_guide_Variable` **的梯度** - -从该节点开始执行反向 - -**参数:** - - - **backward_strategy**: ( :ref:`cn_api_fluid_dygraph_BackwardStrategy` ) 使用何种 :ref:`cn_api_fluid_dygraph_BackwardStrategy` 聚合反向的梯度 - -返回:无 - - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - x = np.ones([2, 2], np.float32) - with fluid.dygraph.guard(): - inputs2 = [] - for _ in range(10): - tmp = fluid.dygraph.base.to_variable(x) - # 如果这里我们不为输入tmp设置stop_gradient=False,那么后面loss2也将因为这个链路都不需要梯度 - # 而不产生梯度 - tmp.stop_gradient=False - inputs2.append(tmp) - ret2 = fluid.layers.sums(inputs2) - loss2 = fluid.layers.reduce_sum(ret2) - backward_strategy = fluid.dygraph.BackwardStrategy() - backward_strategy.sort_sum_gradient = True - loss2.backward(backward_strategy) - -.. py:method:: gradient() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - **2. 由于如果该** :ref:`api_guide_Variable` **以上没有任何地方需要梯度,那么仅仅设置该** :ref:`api_guide_Variable` **的梯度为** ``1`` **是没有意义的。因此,这种情况下,为了节省一些计算,我们不去产生该** :ref:`api_guide_Variable` **的梯度** - -获取该 :ref:`api_guide_Variable` 的梯度值 - -返回:如果 :ref:`api_guide_Variable` 的类型是LoDTensor(参见 :ref:`cn_user_guide_lod_tensor` ),返回该 :ref:`api_guide_Variable` 类型为 ``ndarray`` 的梯度值;如果 :ref:`api_guide_Variable` 的类型是SelectedRows,返回该 :ref:`api_guide_Variable` 类型为 ``ndarray`` 的梯度值和类型为 ``ndarray`` 的词id组成的tuple。 - -返回类型:``ndarray`` 或者 ``tuple of ndarray`` , 返回类型 ``tuple of ndarray`` 仅在 :ref:`cn_api_fluid_dygraph_Embedding` 层稀疏更新时产生。 - - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: 返回ndarray - x = np.ones([2, 2], np.float32) - with fluid.dygraph.guard(): - inputs2 = [] - for _ in range(10): - tmp = fluid.dygraph.base.to_variable(x) - tmp.stop_gradient=False - inputs2.append(tmp) - ret2 = fluid.layers.sums(inputs2) - loss2 = fluid.layers.reduce_sum(ret2) - backward_strategy = fluid.dygraph.BackwardStrategy() - backward_strategy.sort_sum_gradient = True - loss2.backward(backward_strategy) - print(loss2.gradient()) - - # example2: 返回tuple of ndarray - with fluid.dygraph.guard(): - embedding = fluid.dygraph.Embedding( - size=[20, 32], - param_attr='emb.w', - is_sparse=True) - x_data = np.arange(12).reshape(4, 3).astype('int64') - x_data = x_data.reshape((-1, 3, 1)) - x = fluid.dygraph.base.to_variable(x_data) - out = embedding(x) - out.backward() - print(embedding.weight.gradient()) - -.. py:method:: clear_gradient() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - **2. 只有当该** :ref:`api_guide_Variable` **有梯度时才可调用,通常我们都会为参数调用这个方法,因为临时变量的梯度将会在其离开作用域时被** ``python`` **自动清除** - -设置该 :ref:`api_guide_Variable` 的梯度为零 - -返回:无 - - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - x = np.ones([2, 2], np.float32) - with fluid.dygraph.guard(): - inputs2 = [] - for _ in range(10): - tmp = fluid.dygraph.base.to_variable(x) - tmp.stop_gradient=False - inputs2.append(tmp) - ret2 = fluid.layers.sums(inputs2) - loss2 = fluid.layers.reduce_sum(ret2) - backward_strategy = fluid.dygraph.BackwardStrategy() - backward_strategy.sort_sum_gradient = True - loss2.backward(backward_strategy) - print(loss2.gradient()) - loss2.clear_gradient() - print("After clear {}".format(loss2.gradient())) - - -.. py:method:: to_string() - -**注意:** - - **1. 该API只在非** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取该 :ref:`api_guide_Variable` 的静态描述字符串 - -**参数:(仅在非** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效)** - - **throw_on_error** (bool) - 是否在没有设置必需字段时抛出异常。 - - **with_details** (bool) - 值为true时,打印更多关于 :ref:`api_guide_Variable` 的信息,如 ``error_clip`` , ``stop_gradient`` 等 - - -返回:用于静态描述该 :ref:`api_guide_Variable` 的字符串 - - -返回: 将Program转换为字符串 - -返回类型: str - -抛出异常: ``ValueError`` - 当 ``throw_on_error == true`` ,当没有设置任何必需的字段时,抛出 ``ValueError`` 。 - - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - - cur_program = fluid.Program() - cur_block = cur_program.current_block() - new_variable = cur_block.create_var(name="X", - shape=[-1, 23, 48], - dtype='float32') - print(new_variable.to_string(True)) - print("\n=============with detail===============\n") - print(new_variable.to_string(True, True)) - - -.. py:method:: astype(self, dtype) - -将该 :ref:`api_guide_Variable` 中的数据转换成目标 ``Dtype`` - -**参数:** - - **self** ( :ref:`api_guide_Variable` ) - 当前 :ref:`api_guide_Variable` , 用户不需要传入。 - - **dtype** (int | float | float64) - 希望转换成的 ``Dtype`` - - -返回:一个全新的转换了 ``Dtype`` 的 :ref:`api_guide_Variable` - -返回类型: :ref:`api_guide_Variable` - - -**示例代码** - -在静态图模式下: - .. code-block:: python - - import paddle.fluid as fluid - - startup_prog = fluid.Program() - main_prog = fluid.Program() - with fluid.program_guard(startup_prog, main_prog): - original_variable = fluid.data(name = "new_variable", shape=[2,2], dtype='float32') - new_variable = original_variable.astype('int64') - print("new var's dtype is: {}".format(new_variable.dtype)) - - -在 `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ 模式下: - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - x = np.ones([2, 2], np.float32) - with fluid.dygraph.guard(): - original_variable = fluid.dygraph.to_variable(x) - print("original var's dtype is: {}, numpy dtype is {}".format(original_variable.dtype, original_variable.numpy().dtype)) - new_variable = original_variable.astype('int64') - print("new var's dtype is: {}, numpy dtype is {}".format(new_variable.dtype, new_variable.numpy().dtype)) - - - -属性 -:::::::::::: - -.. py:attribute:: stop_gradient - -**注意:该属性在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下除参数以外默认值为** ``True`` **,而参数的该属性默认值为** ``False`` **。在静态图下所有的** :ref:`api_guide_Variable` **该属性默认值都为** ``False`` - -是否从此 :ref:`api_guide_Variable` 开始,之前的相关部分都停止梯度计算 - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - value0 = np.arange(26).reshape(2, 13).astype("float32") - value1 = np.arange(6).reshape(2, 3).astype("float32") - value2 = np.arange(10).reshape(2, 5).astype("float32") - linear = fluid.Linear(13, 5, dtype="float32") - linear2 = fluid.Linear(3, 3, dtype="float32") - a = fluid.dygraph.to_variable(value0) - b = fluid.dygraph.to_variable(value1) - c = fluid.dygraph.to_variable(value2) - out1 = linear(a) - out2 = linear2(b) - out1.stop_gradient = True - out = fluid.layers.concat(input=[out1, out2, c], axis=1) - out.backward() - # 可以发现这里linear的参数变成了 - assert (linear.weight.gradient() == 0).all() - assert (out1.gradient() == 0).all() - -.. py:attribute:: persistable - -**注意:该属性我们即将废弃,此介绍仅为了帮助用户理解概念, 1.6版本后用户可以不再关心该属性** - - **1. 该属性除参数以外默认值为** ``False`` **,而参数的该属性默认值为** ``True`` 。 - - **2. 该属性在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下一经初始化即不能修改,这是由于在动态执行时,** :ref:`api_guide_Variable` **的生命周期将由** ``Python`` **自行控制不再需要通过该属性来修改** - -此 :ref:`api_guide_Variable` 是否是长期存活的 :ref:`api_guide_Variable` - -.. py:attribute:: name - -**注意:在非** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下,那么同一个** :ref:`api_guide_Block` **中的两个或更多** :ref:`api_guide_Variable` **拥有相同** ``name`` **将意味着他们会共享相同的内容。通常我们使用这种方式来实现参数共享** - -此 :ref:`api_guide_Variable` 的名字(str) - - -.. py:attribute:: shape - -**注意:该属性是只读属性** - -此 :ref:`api_guide_Variable` 的维度 - -.. py:attribute:: dtype - -**注意:该属性是只读属性** - -此 :ref:`api_guide_Variable` 的实际数据类型 - -.. py:attribute:: lod_level - -**注意:** - - **1. 该属性是只读属性** - - **2.** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下,不支持该属性,该值为零** - -此 :ref:`api_guide_Variable` 的 ``LoD`` 信息,关于 ``LoD`` 可以参考 :ref:`api_fluid_LoDTensor` 相关内容 - -.. py:attribute:: type - -**注意:该属性是只读属性** - -此 :ref:`api_guide_Variable` 的内存模型,例如是::ref:`api_fluid_LoDTensor`, 或者SelectedRows diff --git a/doc/paddle/api/paddle/fluid/backward/append_backward_cn.rst b/doc/paddle/api/paddle/fluid/backward/append_backward_cn.rst deleted file mode 100644 index b3aa98f93e501d66687689c47c611677b4d7673e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/backward/append_backward_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_backward_append_backward: - -append_backward -------------------------------- - - -.. py:function:: paddle.fluid.backward.append_backward(loss, parameter_list=None, no_grad_set=None, callbacks=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口将向主程序(``main_program``)追加反向部分 。 - -完整的神经网络训练由前向和反向传播组成。但是当我们配置网络时,我们只需要指定其前向部分。 -该接口使用链式法则,能够根据前向部分自动生成反向部分。 - -在大多数情况下,用户无需手动调用此接口,它将由优化器(``Optimizer``)的 ``minimize`` 函数自动调用。 - -参数: - - **loss** ( :ref:`api_guide_Variable` ) - 网络的损失变量。 - - **parameter_list** (list [Variable|str],可选)- 指定优化器需要更新的参数或参数名称列表。如果为 ``None`` ,则将更新所有参数。默认值为 ``None``。 - - **no_grad_set** (set [Variable|str],可选)- 在 `block0` ( :ref:`api_guide_Block` ) 中要忽略梯度的 :ref:`api_guide_Variable` 的名字的集合。所有的 :ref:`api_guide_Block` 中带有 ``stop_gradient = True`` 的所有 :ref:`api_guide_Variable` 的名字都会被自动添加到此集合中。如果该参数不为 ``None``,则会将该参数集合的内容添加到默认的集合中。默认值为 ``None``。 - - **callbacks** (list [callable object],可选)- 回调函数列表。用于在反向传播构建中执行一些自定义作业。每次将新的梯度OP添加到程序中时,将调用其中的所有可调用对象。可调用对象必须有两个输入参数: :ref:`api_guide_Block` 和 ``context`` 。 :ref:`api_guide_Block` 是将被添加到新梯度算子的块。 ``context`` 是一个映射,其键是梯度 :ref:`api_guide_Variable` 名,值是对应的原始 :ref:`api_guide_Variable` 。除此之外, ``context`` 还有另一个特殊的键值对:键是字符串 ``__ current_op_desc__`` ,值是刚刚触发可调用对象的梯度OP的 ``op_desc`` 。默认值为 ``None``。 - -返回: 参数及其梯度 :ref:`api_guide_Variable` 的元组的列表。元组的第一个值为参数,第二个值为该参数的梯度 :ref:`api_guide_Variable` 。 - -返回类型: list[( :ref:`api_guide_Variable` , :ref:`api_guide_Variable` )] - -抛出: - - ``AssertionError`` - 如果 loss 不是 :ref:`api_guide_Variable` 的实例。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.data(name='x', shape=[None, 13], dtype='int64') - y = fluid.data(name='y', shape=[None, 1], dtype='float32') - x_emb = fluid.embedding(x, size=[100, 256]) - y_predict = fluid.layers.fc(input=x_emb, size=1, act=None, name='my_fc') - loss = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_loss = fluid.layers.mean(loss) - - # 获取main_program中所有weight参数, 不包括bias. - all_weights = [param for param in fluid.default_main_program().block(0).all_parameters() if 'w_' in param.name] - all_weights_name = [w.name for w in all_weights] - - # 若parameter_list为默认值(None), 则返回包含所有param_grad的list - p_g_list1 = fluid.backward.append_backward(loss=avg_loss) - # output: [(embedding_0.w_0, embedding_0.w_0@GRAD), (my_fc.w_0, my_fc.w_0@GRAD), (my_fc.b_0, my_fc.b_0@GRAD)] - - # 返回与传入parameter_list对应的param_grad的list, 传入的parameter_list可以是 param(Variable类型)的list - p_g_list2 = fluid.backward.append_backward(loss=avg_loss, parameter_list=all_weights) - # output: [(embedding_0.w_0, embedding_0.w_0@GRAD), (my_fc.w_0, my_fc.w_0@GRAD)] - - # 传入的parameter_list也可以是值为param.name(str类型)的list - p_g_list3 = fluid.backward.append_backward(loss=avg_loss, parameter_list=all_weights_name) - # output: [(embedding_0.w_0, embedding_0.w_0@GRAD), (my_fc.w_0, my_fc.w_0@GRAD)] - - # no_grad_set可以是set[Variables]类型,表示梯度将在这些Variables处截断 - p_g_list4 = fluid.backward.append_backward(loss=avg_loss, no_grad_set=set([x_emb])) - # output: [(my_fc.w_0, my_fc.w_0@GRAD), (my_fc.b_0, my_fc.b_0@GRAD)] - - # no_grad_set也可以是set[Variable.names]类型。当参数Variable是在layers内部创建,且不方便显式地指定时,可以使用set[Variable.names] - p_g_list5 = fluid.backward.append_backward(loss=avg_loss, no_grad_set=set(['my_fc.b_0'])) - # output: [(embedding_0.w_0, embedding_0.w_0@GRAD), (my_fc.w_0, my_fc.w_0@GRAD)] - - # 返回为[], 因为所有的param_grad均被传入的no_grad_set过滤掉了 - p_g_list6 = fluid.backward.append_backward(loss=avg_loss, parameter_list=all_weights, no_grad_set=set(all_weights)) - - - diff --git a/doc/paddle/api/paddle/fluid/backward_cn.rst b/doc/paddle/api/paddle/fluid/backward_cn.rst deleted file mode 100644 index ad63589c24c7c77126370797af81dc38deb541e5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/backward_cn.rst +++ /dev/null @@ -1,12 +0,0 @@ -======================= -fluid.backward -======================= - - - - -.. toctree:: - :maxdepth: 1 - - backward_cn/append_backward_cn.rst - backward_cn/gradients_cn.rst diff --git a/doc/paddle/api/paddle/fluid/clip/ErrorClipByValue_cn.rst b/doc/paddle/api/paddle/fluid/clip/ErrorClipByValue_cn.rst deleted file mode 100644 index c62a90742856f5bd867e7548d432d818105a488e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/clip/ErrorClipByValue_cn.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _cn_api_fluid_clip_ErrorClipByValue: - -ErrorClipByValue -------------------------------- - -.. py:class:: paddle.fluid.clip.ErrorClipByValue(max, min=None) - - - - -给定一个 Tensor ``t`` (该 Tensor 传入方式见代码示例),对 Tensor 中的元素超出给定最大 ``max`` 和最小界 ``min`` 内区间范围 [min, max] 的元素,重设为所超出界的界值。 - - -- 任何小于min(最小值)的值都被设置为 ``min`` - -- 任何大于max(最大值)的值都被设置为 ``max`` - - -参数: - - **max** (foat) - 要修剪的最大值。 - - **min** (float) - 要修剪的最小值。如果用户没有设置,将被框架默认设置为 ``-max`` 。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - BATCH_SIZE = 128 - CLIP_MAX = 2e-6 - CLIP_MIN = -1e-6 - prog = fluid.framework.Program() - - with fluid.program_guard(main_program=prog): - image = fluid.layers.data(name='x', shape=[784], dtype='float32') - hidden1 = fluid.layers.fc(input=image, size=128, act='relu') - hidden2 = fluid.layers.fc(input=hidden1, size=64, act='relu') - predict = fluid.layers.fc(input=hidden2, size=10, act='softmax') - label = fluid.layers.data(name='y', shape=[1], dtype='int64') - cost = fluid.layers.cross_entropy(input=predict, label=label) - avg_cost = fluid.layers.mean(cost) - prog_clip = prog.clone() - prog_clip.block(0).var(hidden1.name)._set_error_clip( - fluid.clip.ErrorClipByValue(max=CLIP_MAX, min=CLIP_MIN)) - - - - - diff --git a/doc/paddle/api/paddle/fluid/clip/set_gradient_clip_cn.rst b/doc/paddle/api/paddle/fluid/clip/set_gradient_clip_cn.rst deleted file mode 100644 index eae01c0c3f58774f874caf19785444c7dae3df64..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/clip/set_gradient_clip_cn.rst +++ /dev/null @@ -1,84 +0,0 @@ -.. _cn_api_fluid_clip_set_gradient_clip: - -set_gradient_clip -------------------------------- - - -.. py:function:: paddle.fluid.clip.set_gradient_clip(clip, param_list=None, program=None) - -:api_attr: 声明式编程模式(静态图) - - - -.. warning:: - 此API对位置使用的要求较高,其必须位于组建网络之后, ``minimize`` 之前,因此在未来版本中可能被删除,故不推荐使用。推荐在 ``optimizer`` 初始化时设置梯度裁剪。 - 有三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 如果在 ``optimizer`` 中设置过梯度裁剪,又使用了 ``set_gradient_clip`` ,``set_gradient_clip`` 将不会生效。 - -给指定参数做梯度裁剪。 - -参数: - - **clip** (GradientClipBase) - 梯度裁剪的策略,如 :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 等,用于描述具体的裁剪方法和属性。 - - **param_list** (list(Variable),可选) - 需要裁剪的参数列表,可以是参数或参数名称列表。默认值为None,表示裁剪 ``program`` 中的所有参数。 - - **program** (Program,可选) - 参数所在的Program。默认值为None,表示使用 :ref:`cn_api_fluid_default_main_program` 。 - -返回: 无。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - def network(): - image = fluid.layers.data(name='image', shape=[28], dtype='float32') - param_attr1 = fluid.ParamAttr("fc1_param") - fc1 = fluid.layers.fc(image, size=10, param_attr=param_attr1) - param_attr2 = fluid.ParamAttr("fc2_param") - fc2 = fluid.layers.fc(fc1, size=10, param_attr=param_attr2) - loss = fluid.layers.reduce_mean(fc2) - return loss - - - # network 1: clip all parameter gradient - with fluid.program_guard(fluid.Program(), fluid.Program()): - loss = network() - fluid.clip.set_gradient_clip( - fluid.clip.GradientClipByGlobalNorm(clip_norm=2.0)) - sgd = fluid.optimizer.SGD(learning_rate=1e-3) - sgd.minimize(loss) - - # network 2: clip parameter gradient by name - with fluid.program_guard(fluid.Program(), fluid.Program()): - loss = network() - fluid.clip.set_gradient_clip( - fluid.clip.GradientClipByValue(min=-1.0, max=1.0), - param_list=["fc1_param", "fc2_param"]) - sgd = fluid.optimizer.SGD(learning_rate=1e-3) - sgd.minimize(loss) - - # network 3: clip parameter gradient by var - with fluid.program_guard(fluid.Program(), fluid.Program()): - loss = network() - param_var1 = fluid.default_main_program().global_block().var("fc1_param") - param_var2 = fluid.default_main_program().global_block().var("fc2_param") - fluid.clip.set_gradient_clip( - fluid.clip.GradientClipByValue(min=-1.0, max=1.0), - param_list=[param_var1, param_var2]) - sgd = fluid.optimizer.SGD(learning_rate=1e-3) - sgd.minimize(loss) - - # network 4: use set_gradient_clip and minimize(grad_clip=clip) together - with fluid.program_guard(fluid.Program(), fluid.Program()): - loss = network() - param_var1 = fluid.default_main_program().global_block().var("fc1_param") - param_var2 = fluid.default_main_program().global_block().var("fc2_param") - clip1 = fluid.clip.GradientClipByValue(min=-1.0, max=1.0) - clip2 = fluid.clip.GradientClipByNorm(clip_norm=1.0) - # 设置梯度裁剪策略:clip1 - fluid.clip.set_gradient_clip(clip1) - - # 设置梯度裁剪策略:clip2 - sgd = fluid.optimizer.SGD(learning_rate=1e-3, grad_clip=clip2) - sgd.minimize(loss) - # 有设置冲突时,set_gradient_clip将不会生效,将以clip2的策略进行梯度裁剪 diff --git a/doc/paddle/api/paddle/fluid/clip_cn.rst b/doc/paddle/api/paddle/fluid/clip_cn.rst deleted file mode 100644 index 071fe323ffdf8de41a454669e3b23e2f7f976a4b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/clip_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_clip: - -clip -------------------------------- - -.. py:function:: paddle.fluid.layers.clip(x, min, max, name=None) - -:alias_main: paddle.nn.clip -:alias: paddle.nn.clip,paddle.nn.clip.clip -:old_api: paddle.fluid.layers.clip - - - -该OP对输入Tensor每个元素的数值进行裁剪,使得输出Tensor元素的数值被限制在区间[min, max]内。具体的计算公式为如下。 - -.. math:: - - Out = MIN(MAX(x,min),max) - - - -参数: - - **x** (Variable)- 多维Tensor,数据类型为float32 - - **min** (float)- 最小值,输入Tensor中小于该值的元素由min代替。 - - **max** (float)- 最大值,输入Tensor中大于该值的元素由max替换。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 对元素的数值进行裁剪之后的Tesnor,与输入x具有相同的shape和数据类型 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data( - name='data', shape=[1], dtype='float32') - reward = fluid.layers.clip(x=input, min=-1.0, max=1.0) - - diff --git a/doc/paddle/api/paddle/fluid/contrib/BeamSearchDecoder_cn.rst b/doc/paddle/api/paddle/fluid/contrib/BeamSearchDecoder_cn.rst deleted file mode 100644 index 67e7312aaef57ff031e410031aecc73bc50c265f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/contrib/BeamSearchDecoder_cn.rst +++ /dev/null @@ -1,178 +0,0 @@ -.. _cn_api_fluid_layers_BeamSearchDecoder: - -BeamSearchDecoder -------------------------------- - - - -.. py:class:: paddle.fluid.layers.BeamSearchDecoder(cell, start_token, end_token, beam_size, embedding_fn=None, output_fn=None) - -:api_attr: 声明式编程模式(静态图) - - - -带beam search解码策略的解码器。该接口包装一个cell来计算概率,然后执行一个beam search步骤计算得分,并为每个解码步骤选择候选输出。更多详细信息请参阅 `Beam search `_ - -**注意** 在使用beam search解码时,cell的输入和状态将被扩展到 :math:`beam\_size` ,得到 :math:`[batch\_size * beam\_size, ...]` 一样的形状,这个操作在BeamSearchDecoder中自动完成,因此,其他任何在 :code:`cell.call` 中使用的tensor,如果形状为 :math:`[batch\_size, ...]` ,都必须先手动使用 :code:`BeamSearchDecoder.tile_beam_merge_with_batch` 接口扩展。最常见的情况是带注意机制的编码器输出。 - -参数: - - **cell** (RNNCell) - RNNCell的实例或者具有相同接口定义的对象。 - - **start_token** (int) - 起始标记id。 - - **end_token** (int) - 结束标记id。 - - **beam_size** (int) - 在beam search中使用的beam宽度。 - - **embedding_fn** (可选) - 处理选中的候选id的接口。通常,它是一个将词id转换为词嵌入的嵌入层,函数的返回值作为 :code:`cell.call` 接口的 :code:`input` 参数。如果 :code:`embedding_fn` 未提供,则必须在 :code:`cell.call` 中实现词嵌入转换。默认值None。 - - **output_fn** (可选) - 处理cell输出的接口,在计算得分和选择候选标记id之前使用。默认值None。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.layers import GRUCell, BeamSearchDecoder - trg_embeder = lambda x: fluid.embedding( - x, size=[10000, 128], param_attr=fluid.ParamAttr(name="trg_embedding")) - output_layer = lambda x: layers.fc(x, - size=10000, - num_flatten_dims=len(x.shape) - 1, - param_attr=fluid.ParamAttr(name= - "output_w"), - bias_attr=False) - decoder_cell = GRUCell(hidden_size=128) - decoder = BeamSearchDecoder(decoder_cell, - start_token=0, - end_token=1, - beam_size=4, - embedding_fn=trg_embeder, - output_fn=output_layer) - - -.. py:method:: tile_beam_merge_with_batch(x, beam_size) - -扩展tensor的batch维度。此函数的输入是形状为 :math:`[batch\_size, s_0, s_1, ...]` 的tensor t,由minibatch中的样本 :math:`t[0], ..., t[batch\_size - 1]` 组成。将其扩展为形状是 :math:`[batch\_size * beam\_size, s_0, s_1, ...]` 的tensor,由 :math:`t[0], t[0], ..., t[1], t[1], ...` 组成, 每个minibatch中的样本重复 :math:`beam\_size` 次。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - - **beam_size** (int) - 在beam search中使用的beam宽度。 - -返回:形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _split_batch_beams(x) - -将形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor变换为形状为 :math:`[batch\_size, beam\_size, ...]` 的新tensor。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size * beam\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:形状为 :math:`[batch\_size, beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _merge_batch_beams(x) - -将形状为 :math:`[batch\_size, beam\_size, ...]` 的tensor变换为形状为 :math:`[batch\_size * beam\_size,...]` 的新tensor。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, beam_size,...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _expand_to_beam_size(x) - -此函数输入形状为 :math:`[batch\_size,s_0,s_1,...]` 的tensor t,由minibatch中的样本 :math:`t[0],...,t[batch\_size-1]` 组成。将其扩展为形状 :math:`[ batch\_size,beam\_size,s_0,s_1,...]` 的tensor,由 :math:`t[0],t[0],...,t[1],t[1],...` 组成,其中每个minibatch中的样本重复 :math:`beam\_size` 次。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:具有与 :code:`x` 相同的形状和数据类型的tensor,其中未完成的beam保持不变,而已完成的beam被替换成特殊的tensor(tensor中所有概率质量被分配给EOS标记)。 - -返回类型:Variable - -.. py:method:: _mask_probs(probs, finished) - -屏蔽对数概率。该函数使已完成的beam将所有概率质量分配给EOS标记,而未完成的beam保持不变。 - -参数: - - **probs** (Variable) - 形状为 :math:`[batch\_size,beam\_size,vocab\_size]` 的tensor,表示对数概率。其数据类型应为float32。 - - **finish** (Variable) - 形状为 :math:`[batch\_size,beam\_size]` 的tensor,表示所有beam的完成状态。其数据类型应为bool。 - -返回:具有与 :code:`x` 相同的形状和数据类型的tensor,其中未完成的beam保持不变,而已完成的beam被替换成特殊的tensor(tensor中所有概率质量被分配给EOS标记)。 - -返回类型:Variable - -.. py:method:: _gather(x, indices, batch_size) - -对tensor :code:`x` 根据索引 :code:`indices` 收集。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, beam\_size,...]` 的tensor。 - - **index** (Variable) - 一个形状为 :math:`[batch\_size, beam\_size]` 的int64 tensor,表示我们用来收集的索引。 - - **batch_size** (Variable) - 形状为 :math:`[1]` 的tensor。其数据类型应为int32或int64。 - -返回:具有与 :code:``x` 相同的形状和数据类型的tensor,表示收集后的tensor。 - -返回类型:Variable - -.. py:method:: initialize(initial_cell_states) - -初始化BeamSearchDecoder。 - -参数: - - **initial_cell_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。调用者提供的参数。 - -返回:一个元组 :code:`(initial_inputs, initial_states, finished)`。:code:`initial_inputs` 是一个tensor,当 :code:`embedding_fn` 为None时,由 :code:`start_token` 填充,形状为 :math:`[batch\_size,beam\_size,1]` ;否则使用 :code:`embedding_fn(t)` 返回的值。:code:`initial_states` 是tensor变量的嵌套结构(命名元组,字段包括 :code:`cell_states,log_probs,finished,lengths`),其中 :code:`log_probs,finished,lengths` 都含有一个tensor,形状为 :math:`[batch\_size, beam\_size]`,数据类型为float32,bool,int64。:code:`cell_states` 具有与输入参数 :code:`initial_cell_states` 相同结构的值,但形状扩展为 :math:`[batch\_size,beam\_size,...]`。 :code:`finished` 是一个布尔型tensor,由False填充,形状为 :math:`[batch\_size,beam\_size]`。 - -返回类型:tuple - -.. py:method:: _beam_search_step(time, logits, next_cell_states, beam_state) - -计算得分并选择候选id。 - -参数: - - **time** (Variable) - 调用者提供的形状为[1]的tensor,表示当前解码的时间步长。其数据类型为int64。 - - **logits** (Variable) - 形状为 :math:`[batch\_size,beam\_size,vocab\_size]` 的tensor,表示当前时间步的logits。其数据类型为float32。 - - **next_cell_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。它的结构,形状和数据类型与 :code:`initialize()` 的返回值 :code:`initial_states` 中的 :code:`cell_states` 相同。它代表该cell的下一个状态。 - - **beam_state** (Variable) - tensor变量的结构。在第一个解码步骤与 :code:`initialize()` 返回的 :code:`initial_states` 同,其他步骤与 :code:`initialize()` 返回的 :code:`beam_search_state` 相同。 - -返回:一个元组 :code:`(beam_search_output, beam_search_state)`。:code:`beam_search_output` 是tensor变量的命名元组,字段为 :code:`scores,predicted_ids parent_ids`。其中 :code:`scores,predicted_ids,parent_ids` 都含有一个tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为float32 ,int64,int64。:code:`beam_search_state` 具有与输入参数 :code:`beam_state` 相同的结构,形状和数据类型。 - -返回类型:tuple - -.. py:method:: step(time, inputs, states, **kwargs) - -执行beam search解码步骤,该步骤使用 :code:`cell` 来计算概率,然后执行beam search步骤以计算得分并选择候选标记ID。 - -参数: - - **time** (Variable) - 调用者提供的形状为[1]的int64tensor,表示当前解码的时间步长。 - - **inputs** (Variable) - tensor变量。在第一个解码时间步时与由 :code:`initialize()` 返回的 :code:`initial_inputs` 相同,其他时间步与由 :code:`step()` 返回的 :code:`next_inputs` 相同。 - - **States** (Variable) - tensor变量的结构。在第一个解码时间步时与 :code:`initialize()` 返回的 :code:`initial_states` 相同,其他时间步与由 :code:`step()` 返回的 :code:`beam_search_state` 相同。 - - **kwargs** - 附加的关键字参数,由调用者提供。 - -返回:一个元组 :code:`(beam_search_output,beam_search_state,next_inputs,finish)` 。:code:`beam_search_state` 和参数 :code:`states` 具有相同的结构,形状和数据类型。 :code:`next_inputs` 与输入参数 :code:`inputs` 具有相同的结构,形状和数据类型。 :code:`beam_search_output` 是tensor变量的命名元组(字段包括 :code:`scores,predicted_ids,parent_ids` ),其中 :code:`scores,predicted_ids,parent_ids` 都含有一个tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为float32 ,int64,int64。:code:`finished` 是一个bool类型的tensor,形状为 :math:`[batch\_size,beam\_size]`。 - -返回类型:tuple - -.. py:method:: finalize(outputs, final_states, sequence_lengths) - -使用 :code:`gather_tree` 沿beam search树回溯并构建完整的预测序列。 - -参数: - - **outputs** (Variable) - tensor变量组成的结构(命名元组),该结构和数据类型与 :code:`output_dtype` 相同。tensor将所有时间步的输出堆叠,因此具有形状 :math:`[time\_step,batch\_size,...]`。 - - **final_states** (Variable) - tensor变量组成的结构(命名元组)。它是 :code:`decoder.step` 在最后一个解码步骤返回的 :code:`next_states`,因此具有与任何时间步的 :code:`state` 相同的结构、形状和数据类型。 - - **sequence_lengths** (Variable) - tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为int64。它包含解码期间确定的每个beam的序列长度。 - -返回:一个元组 :code:`(predicted_ids, final_states)`。:code:`predicted_ids` 是一个tensor,形状为 :math:`[time\_step,batch\_size,beam\_size]`,数据类型为int64。:code:`final_states` 与输入参数 :code:`final_states` 相同。 - -返回类型:tuple - -.. py:method:: output_dtype() - -用于beam search输出的数据类型的嵌套结构。它是一个命名元组,字段包括 :code:`scores, predicted_ids, parent_ids`。 - -参数:无。 - -返回:用于beam search输出的数据类型的命名元组。 - diff --git a/doc/paddle/api/paddle/fluid/contrib/decoder/BeamSearchDecoder_cn.rst b/doc/paddle/api/paddle/fluid/contrib/decoder/BeamSearchDecoder_cn.rst deleted file mode 100644 index 67e7312aaef57ff031e410031aecc73bc50c265f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/contrib/decoder/BeamSearchDecoder_cn.rst +++ /dev/null @@ -1,178 +0,0 @@ -.. _cn_api_fluid_layers_BeamSearchDecoder: - -BeamSearchDecoder -------------------------------- - - - -.. py:class:: paddle.fluid.layers.BeamSearchDecoder(cell, start_token, end_token, beam_size, embedding_fn=None, output_fn=None) - -:api_attr: 声明式编程模式(静态图) - - - -带beam search解码策略的解码器。该接口包装一个cell来计算概率,然后执行一个beam search步骤计算得分,并为每个解码步骤选择候选输出。更多详细信息请参阅 `Beam search `_ - -**注意** 在使用beam search解码时,cell的输入和状态将被扩展到 :math:`beam\_size` ,得到 :math:`[batch\_size * beam\_size, ...]` 一样的形状,这个操作在BeamSearchDecoder中自动完成,因此,其他任何在 :code:`cell.call` 中使用的tensor,如果形状为 :math:`[batch\_size, ...]` ,都必须先手动使用 :code:`BeamSearchDecoder.tile_beam_merge_with_batch` 接口扩展。最常见的情况是带注意机制的编码器输出。 - -参数: - - **cell** (RNNCell) - RNNCell的实例或者具有相同接口定义的对象。 - - **start_token** (int) - 起始标记id。 - - **end_token** (int) - 结束标记id。 - - **beam_size** (int) - 在beam search中使用的beam宽度。 - - **embedding_fn** (可选) - 处理选中的候选id的接口。通常,它是一个将词id转换为词嵌入的嵌入层,函数的返回值作为 :code:`cell.call` 接口的 :code:`input` 参数。如果 :code:`embedding_fn` 未提供,则必须在 :code:`cell.call` 中实现词嵌入转换。默认值None。 - - **output_fn** (可选) - 处理cell输出的接口,在计算得分和选择候选标记id之前使用。默认值None。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.layers import GRUCell, BeamSearchDecoder - trg_embeder = lambda x: fluid.embedding( - x, size=[10000, 128], param_attr=fluid.ParamAttr(name="trg_embedding")) - output_layer = lambda x: layers.fc(x, - size=10000, - num_flatten_dims=len(x.shape) - 1, - param_attr=fluid.ParamAttr(name= - "output_w"), - bias_attr=False) - decoder_cell = GRUCell(hidden_size=128) - decoder = BeamSearchDecoder(decoder_cell, - start_token=0, - end_token=1, - beam_size=4, - embedding_fn=trg_embeder, - output_fn=output_layer) - - -.. py:method:: tile_beam_merge_with_batch(x, beam_size) - -扩展tensor的batch维度。此函数的输入是形状为 :math:`[batch\_size, s_0, s_1, ...]` 的tensor t,由minibatch中的样本 :math:`t[0], ..., t[batch\_size - 1]` 组成。将其扩展为形状是 :math:`[batch\_size * beam\_size, s_0, s_1, ...]` 的tensor,由 :math:`t[0], t[0], ..., t[1], t[1], ...` 组成, 每个minibatch中的样本重复 :math:`beam\_size` 次。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - - **beam_size** (int) - 在beam search中使用的beam宽度。 - -返回:形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _split_batch_beams(x) - -将形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor变换为形状为 :math:`[batch\_size, beam\_size, ...]` 的新tensor。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size * beam\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:形状为 :math:`[batch\_size, beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _merge_batch_beams(x) - -将形状为 :math:`[batch\_size, beam\_size, ...]` 的tensor变换为形状为 :math:`[batch\_size * beam\_size,...]` 的新tensor。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, beam_size,...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _expand_to_beam_size(x) - -此函数输入形状为 :math:`[batch\_size,s_0,s_1,...]` 的tensor t,由minibatch中的样本 :math:`t[0],...,t[batch\_size-1]` 组成。将其扩展为形状 :math:`[ batch\_size,beam\_size,s_0,s_1,...]` 的tensor,由 :math:`t[0],t[0],...,t[1],t[1],...` 组成,其中每个minibatch中的样本重复 :math:`beam\_size` 次。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:具有与 :code:`x` 相同的形状和数据类型的tensor,其中未完成的beam保持不变,而已完成的beam被替换成特殊的tensor(tensor中所有概率质量被分配给EOS标记)。 - -返回类型:Variable - -.. py:method:: _mask_probs(probs, finished) - -屏蔽对数概率。该函数使已完成的beam将所有概率质量分配给EOS标记,而未完成的beam保持不变。 - -参数: - - **probs** (Variable) - 形状为 :math:`[batch\_size,beam\_size,vocab\_size]` 的tensor,表示对数概率。其数据类型应为float32。 - - **finish** (Variable) - 形状为 :math:`[batch\_size,beam\_size]` 的tensor,表示所有beam的完成状态。其数据类型应为bool。 - -返回:具有与 :code:`x` 相同的形状和数据类型的tensor,其中未完成的beam保持不变,而已完成的beam被替换成特殊的tensor(tensor中所有概率质量被分配给EOS标记)。 - -返回类型:Variable - -.. py:method:: _gather(x, indices, batch_size) - -对tensor :code:`x` 根据索引 :code:`indices` 收集。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, beam\_size,...]` 的tensor。 - - **index** (Variable) - 一个形状为 :math:`[batch\_size, beam\_size]` 的int64 tensor,表示我们用来收集的索引。 - - **batch_size** (Variable) - 形状为 :math:`[1]` 的tensor。其数据类型应为int32或int64。 - -返回:具有与 :code:``x` 相同的形状和数据类型的tensor,表示收集后的tensor。 - -返回类型:Variable - -.. py:method:: initialize(initial_cell_states) - -初始化BeamSearchDecoder。 - -参数: - - **initial_cell_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。调用者提供的参数。 - -返回:一个元组 :code:`(initial_inputs, initial_states, finished)`。:code:`initial_inputs` 是一个tensor,当 :code:`embedding_fn` 为None时,由 :code:`start_token` 填充,形状为 :math:`[batch\_size,beam\_size,1]` ;否则使用 :code:`embedding_fn(t)` 返回的值。:code:`initial_states` 是tensor变量的嵌套结构(命名元组,字段包括 :code:`cell_states,log_probs,finished,lengths`),其中 :code:`log_probs,finished,lengths` 都含有一个tensor,形状为 :math:`[batch\_size, beam\_size]`,数据类型为float32,bool,int64。:code:`cell_states` 具有与输入参数 :code:`initial_cell_states` 相同结构的值,但形状扩展为 :math:`[batch\_size,beam\_size,...]`。 :code:`finished` 是一个布尔型tensor,由False填充,形状为 :math:`[batch\_size,beam\_size]`。 - -返回类型:tuple - -.. py:method:: _beam_search_step(time, logits, next_cell_states, beam_state) - -计算得分并选择候选id。 - -参数: - - **time** (Variable) - 调用者提供的形状为[1]的tensor,表示当前解码的时间步长。其数据类型为int64。 - - **logits** (Variable) - 形状为 :math:`[batch\_size,beam\_size,vocab\_size]` 的tensor,表示当前时间步的logits。其数据类型为float32。 - - **next_cell_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。它的结构,形状和数据类型与 :code:`initialize()` 的返回值 :code:`initial_states` 中的 :code:`cell_states` 相同。它代表该cell的下一个状态。 - - **beam_state** (Variable) - tensor变量的结构。在第一个解码步骤与 :code:`initialize()` 返回的 :code:`initial_states` 同,其他步骤与 :code:`initialize()` 返回的 :code:`beam_search_state` 相同。 - -返回:一个元组 :code:`(beam_search_output, beam_search_state)`。:code:`beam_search_output` 是tensor变量的命名元组,字段为 :code:`scores,predicted_ids parent_ids`。其中 :code:`scores,predicted_ids,parent_ids` 都含有一个tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为float32 ,int64,int64。:code:`beam_search_state` 具有与输入参数 :code:`beam_state` 相同的结构,形状和数据类型。 - -返回类型:tuple - -.. py:method:: step(time, inputs, states, **kwargs) - -执行beam search解码步骤,该步骤使用 :code:`cell` 来计算概率,然后执行beam search步骤以计算得分并选择候选标记ID。 - -参数: - - **time** (Variable) - 调用者提供的形状为[1]的int64tensor,表示当前解码的时间步长。 - - **inputs** (Variable) - tensor变量。在第一个解码时间步时与由 :code:`initialize()` 返回的 :code:`initial_inputs` 相同,其他时间步与由 :code:`step()` 返回的 :code:`next_inputs` 相同。 - - **States** (Variable) - tensor变量的结构。在第一个解码时间步时与 :code:`initialize()` 返回的 :code:`initial_states` 相同,其他时间步与由 :code:`step()` 返回的 :code:`beam_search_state` 相同。 - - **kwargs** - 附加的关键字参数,由调用者提供。 - -返回:一个元组 :code:`(beam_search_output,beam_search_state,next_inputs,finish)` 。:code:`beam_search_state` 和参数 :code:`states` 具有相同的结构,形状和数据类型。 :code:`next_inputs` 与输入参数 :code:`inputs` 具有相同的结构,形状和数据类型。 :code:`beam_search_output` 是tensor变量的命名元组(字段包括 :code:`scores,predicted_ids,parent_ids` ),其中 :code:`scores,predicted_ids,parent_ids` 都含有一个tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为float32 ,int64,int64。:code:`finished` 是一个bool类型的tensor,形状为 :math:`[batch\_size,beam\_size]`。 - -返回类型:tuple - -.. py:method:: finalize(outputs, final_states, sequence_lengths) - -使用 :code:`gather_tree` 沿beam search树回溯并构建完整的预测序列。 - -参数: - - **outputs** (Variable) - tensor变量组成的结构(命名元组),该结构和数据类型与 :code:`output_dtype` 相同。tensor将所有时间步的输出堆叠,因此具有形状 :math:`[time\_step,batch\_size,...]`。 - - **final_states** (Variable) - tensor变量组成的结构(命名元组)。它是 :code:`decoder.step` 在最后一个解码步骤返回的 :code:`next_states`,因此具有与任何时间步的 :code:`state` 相同的结构、形状和数据类型。 - - **sequence_lengths** (Variable) - tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为int64。它包含解码期间确定的每个beam的序列长度。 - -返回:一个元组 :code:`(predicted_ids, final_states)`。:code:`predicted_ids` 是一个tensor,形状为 :math:`[time\_step,batch\_size,beam\_size]`,数据类型为int64。:code:`final_states` 与输入参数 :code:`final_states` 相同。 - -返回类型:tuple - -.. py:method:: output_dtype() - -用于beam search输出的数据类型的嵌套结构。它是一个命名元组,字段包括 :code:`scores, predicted_ids, parent_ids`。 - -参数:无。 - -返回:用于beam search输出的数据类型的命名元组。 - diff --git a/doc/paddle/api/paddle/fluid/contrib/decoder/beam_search_decoder/BeamSearchDecoder_cn.rst b/doc/paddle/api/paddle/fluid/contrib/decoder/beam_search_decoder/BeamSearchDecoder_cn.rst deleted file mode 100644 index 67e7312aaef57ff031e410031aecc73bc50c265f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/contrib/decoder/beam_search_decoder/BeamSearchDecoder_cn.rst +++ /dev/null @@ -1,178 +0,0 @@ -.. _cn_api_fluid_layers_BeamSearchDecoder: - -BeamSearchDecoder -------------------------------- - - - -.. py:class:: paddle.fluid.layers.BeamSearchDecoder(cell, start_token, end_token, beam_size, embedding_fn=None, output_fn=None) - -:api_attr: 声明式编程模式(静态图) - - - -带beam search解码策略的解码器。该接口包装一个cell来计算概率,然后执行一个beam search步骤计算得分,并为每个解码步骤选择候选输出。更多详细信息请参阅 `Beam search `_ - -**注意** 在使用beam search解码时,cell的输入和状态将被扩展到 :math:`beam\_size` ,得到 :math:`[batch\_size * beam\_size, ...]` 一样的形状,这个操作在BeamSearchDecoder中自动完成,因此,其他任何在 :code:`cell.call` 中使用的tensor,如果形状为 :math:`[batch\_size, ...]` ,都必须先手动使用 :code:`BeamSearchDecoder.tile_beam_merge_with_batch` 接口扩展。最常见的情况是带注意机制的编码器输出。 - -参数: - - **cell** (RNNCell) - RNNCell的实例或者具有相同接口定义的对象。 - - **start_token** (int) - 起始标记id。 - - **end_token** (int) - 结束标记id。 - - **beam_size** (int) - 在beam search中使用的beam宽度。 - - **embedding_fn** (可选) - 处理选中的候选id的接口。通常,它是一个将词id转换为词嵌入的嵌入层,函数的返回值作为 :code:`cell.call` 接口的 :code:`input` 参数。如果 :code:`embedding_fn` 未提供,则必须在 :code:`cell.call` 中实现词嵌入转换。默认值None。 - - **output_fn** (可选) - 处理cell输出的接口,在计算得分和选择候选标记id之前使用。默认值None。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.layers import GRUCell, BeamSearchDecoder - trg_embeder = lambda x: fluid.embedding( - x, size=[10000, 128], param_attr=fluid.ParamAttr(name="trg_embedding")) - output_layer = lambda x: layers.fc(x, - size=10000, - num_flatten_dims=len(x.shape) - 1, - param_attr=fluid.ParamAttr(name= - "output_w"), - bias_attr=False) - decoder_cell = GRUCell(hidden_size=128) - decoder = BeamSearchDecoder(decoder_cell, - start_token=0, - end_token=1, - beam_size=4, - embedding_fn=trg_embeder, - output_fn=output_layer) - - -.. py:method:: tile_beam_merge_with_batch(x, beam_size) - -扩展tensor的batch维度。此函数的输入是形状为 :math:`[batch\_size, s_0, s_1, ...]` 的tensor t,由minibatch中的样本 :math:`t[0], ..., t[batch\_size - 1]` 组成。将其扩展为形状是 :math:`[batch\_size * beam\_size, s_0, s_1, ...]` 的tensor,由 :math:`t[0], t[0], ..., t[1], t[1], ...` 组成, 每个minibatch中的样本重复 :math:`beam\_size` 次。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - - **beam_size** (int) - 在beam search中使用的beam宽度。 - -返回:形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _split_batch_beams(x) - -将形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor变换为形状为 :math:`[batch\_size, beam\_size, ...]` 的新tensor。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size * beam\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:形状为 :math:`[batch\_size, beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _merge_batch_beams(x) - -将形状为 :math:`[batch\_size, beam\_size, ...]` 的tensor变换为形状为 :math:`[batch\_size * beam\_size,...]` 的新tensor。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, beam_size,...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _expand_to_beam_size(x) - -此函数输入形状为 :math:`[batch\_size,s_0,s_1,...]` 的tensor t,由minibatch中的样本 :math:`t[0],...,t[batch\_size-1]` 组成。将其扩展为形状 :math:`[ batch\_size,beam\_size,s_0,s_1,...]` 的tensor,由 :math:`t[0],t[0],...,t[1],t[1],...` 组成,其中每个minibatch中的样本重复 :math:`beam\_size` 次。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:具有与 :code:`x` 相同的形状和数据类型的tensor,其中未完成的beam保持不变,而已完成的beam被替换成特殊的tensor(tensor中所有概率质量被分配给EOS标记)。 - -返回类型:Variable - -.. py:method:: _mask_probs(probs, finished) - -屏蔽对数概率。该函数使已完成的beam将所有概率质量分配给EOS标记,而未完成的beam保持不变。 - -参数: - - **probs** (Variable) - 形状为 :math:`[batch\_size,beam\_size,vocab\_size]` 的tensor,表示对数概率。其数据类型应为float32。 - - **finish** (Variable) - 形状为 :math:`[batch\_size,beam\_size]` 的tensor,表示所有beam的完成状态。其数据类型应为bool。 - -返回:具有与 :code:`x` 相同的形状和数据类型的tensor,其中未完成的beam保持不变,而已完成的beam被替换成特殊的tensor(tensor中所有概率质量被分配给EOS标记)。 - -返回类型:Variable - -.. py:method:: _gather(x, indices, batch_size) - -对tensor :code:`x` 根据索引 :code:`indices` 收集。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, beam\_size,...]` 的tensor。 - - **index** (Variable) - 一个形状为 :math:`[batch\_size, beam\_size]` 的int64 tensor,表示我们用来收集的索引。 - - **batch_size** (Variable) - 形状为 :math:`[1]` 的tensor。其数据类型应为int32或int64。 - -返回:具有与 :code:``x` 相同的形状和数据类型的tensor,表示收集后的tensor。 - -返回类型:Variable - -.. py:method:: initialize(initial_cell_states) - -初始化BeamSearchDecoder。 - -参数: - - **initial_cell_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。调用者提供的参数。 - -返回:一个元组 :code:`(initial_inputs, initial_states, finished)`。:code:`initial_inputs` 是一个tensor,当 :code:`embedding_fn` 为None时,由 :code:`start_token` 填充,形状为 :math:`[batch\_size,beam\_size,1]` ;否则使用 :code:`embedding_fn(t)` 返回的值。:code:`initial_states` 是tensor变量的嵌套结构(命名元组,字段包括 :code:`cell_states,log_probs,finished,lengths`),其中 :code:`log_probs,finished,lengths` 都含有一个tensor,形状为 :math:`[batch\_size, beam\_size]`,数据类型为float32,bool,int64。:code:`cell_states` 具有与输入参数 :code:`initial_cell_states` 相同结构的值,但形状扩展为 :math:`[batch\_size,beam\_size,...]`。 :code:`finished` 是一个布尔型tensor,由False填充,形状为 :math:`[batch\_size,beam\_size]`。 - -返回类型:tuple - -.. py:method:: _beam_search_step(time, logits, next_cell_states, beam_state) - -计算得分并选择候选id。 - -参数: - - **time** (Variable) - 调用者提供的形状为[1]的tensor,表示当前解码的时间步长。其数据类型为int64。 - - **logits** (Variable) - 形状为 :math:`[batch\_size,beam\_size,vocab\_size]` 的tensor,表示当前时间步的logits。其数据类型为float32。 - - **next_cell_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。它的结构,形状和数据类型与 :code:`initialize()` 的返回值 :code:`initial_states` 中的 :code:`cell_states` 相同。它代表该cell的下一个状态。 - - **beam_state** (Variable) - tensor变量的结构。在第一个解码步骤与 :code:`initialize()` 返回的 :code:`initial_states` 同,其他步骤与 :code:`initialize()` 返回的 :code:`beam_search_state` 相同。 - -返回:一个元组 :code:`(beam_search_output, beam_search_state)`。:code:`beam_search_output` 是tensor变量的命名元组,字段为 :code:`scores,predicted_ids parent_ids`。其中 :code:`scores,predicted_ids,parent_ids` 都含有一个tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为float32 ,int64,int64。:code:`beam_search_state` 具有与输入参数 :code:`beam_state` 相同的结构,形状和数据类型。 - -返回类型:tuple - -.. py:method:: step(time, inputs, states, **kwargs) - -执行beam search解码步骤,该步骤使用 :code:`cell` 来计算概率,然后执行beam search步骤以计算得分并选择候选标记ID。 - -参数: - - **time** (Variable) - 调用者提供的形状为[1]的int64tensor,表示当前解码的时间步长。 - - **inputs** (Variable) - tensor变量。在第一个解码时间步时与由 :code:`initialize()` 返回的 :code:`initial_inputs` 相同,其他时间步与由 :code:`step()` 返回的 :code:`next_inputs` 相同。 - - **States** (Variable) - tensor变量的结构。在第一个解码时间步时与 :code:`initialize()` 返回的 :code:`initial_states` 相同,其他时间步与由 :code:`step()` 返回的 :code:`beam_search_state` 相同。 - - **kwargs** - 附加的关键字参数,由调用者提供。 - -返回:一个元组 :code:`(beam_search_output,beam_search_state,next_inputs,finish)` 。:code:`beam_search_state` 和参数 :code:`states` 具有相同的结构,形状和数据类型。 :code:`next_inputs` 与输入参数 :code:`inputs` 具有相同的结构,形状和数据类型。 :code:`beam_search_output` 是tensor变量的命名元组(字段包括 :code:`scores,predicted_ids,parent_ids` ),其中 :code:`scores,predicted_ids,parent_ids` 都含有一个tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为float32 ,int64,int64。:code:`finished` 是一个bool类型的tensor,形状为 :math:`[batch\_size,beam\_size]`。 - -返回类型:tuple - -.. py:method:: finalize(outputs, final_states, sequence_lengths) - -使用 :code:`gather_tree` 沿beam search树回溯并构建完整的预测序列。 - -参数: - - **outputs** (Variable) - tensor变量组成的结构(命名元组),该结构和数据类型与 :code:`output_dtype` 相同。tensor将所有时间步的输出堆叠,因此具有形状 :math:`[time\_step,batch\_size,...]`。 - - **final_states** (Variable) - tensor变量组成的结构(命名元组)。它是 :code:`decoder.step` 在最后一个解码步骤返回的 :code:`next_states`,因此具有与任何时间步的 :code:`state` 相同的结构、形状和数据类型。 - - **sequence_lengths** (Variable) - tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为int64。它包含解码期间确定的每个beam的序列长度。 - -返回:一个元组 :code:`(predicted_ids, final_states)`。:code:`predicted_ids` 是一个tensor,形状为 :math:`[time\_step,batch\_size,beam\_size]`,数据类型为int64。:code:`final_states` 与输入参数 :code:`final_states` 相同。 - -返回类型:tuple - -.. py:method:: output_dtype() - -用于beam search输出的数据类型的嵌套结构。它是一个命名元组,字段包括 :code:`scores, predicted_ids, parent_ids`。 - -参数:无。 - -返回:用于beam search输出的数据类型的命名元组。 - diff --git a/doc/paddle/api/paddle/fluid/cpu_places_cn.rst b/doc/paddle/api/paddle/fluid/cpu_places_cn.rst deleted file mode 100644 index 124973fc786ad84108f2478809a735e6ce45a081..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/cpu_places_cn.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. _cn_api_fluid_cpu_places: - -cpu_places -------------------------------- - -.. py:function:: paddle.fluid.cpu_places(device_count=None) - - - - -该接口创建 ``device_count`` 个 ``fluid.CPUPlace`` 对象,并返回所创建的对象列表。 - -如果 ``device_count`` 为 ``None``,则设备数目将由环境变量 ``CPU_NUM`` 确定。如果未设置 ``CPU_NUM`` 环境变量,则设备数目会默认设为1,也就是说, ``CPU_NUM=1``。 -``CPU_NUM`` 表示在当前任务中使用的设备数目。如果 ``CPU_NUM`` 与物理核心数相同,可以加速程序的运行。 - -参数: - - **device_count** (int,可选) - 设备数目。默认值为 ``None``。 - -返回: ``CPUPlace`` 的列表。 - -返回类型:list[fluid.CPUPlace] - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - cpu_places = fluid.cpu_places() - diff --git a/doc/paddle/api/paddle/fluid/create_lod_tensor_cn.rst b/doc/paddle/api/paddle/fluid/create_lod_tensor_cn.rst deleted file mode 100644 index 386b0632f1a0256e8cad62c2143a05c7684ded1d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/create_lod_tensor_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_create_lod_tensor: - - -create_lod_tensor -------------------------------- - -.. py:function:: paddle.fluid.create_lod_tensor(data, recursive_seq_lens, place) - - - - -从一个numpy数组、list或LoDTensor创建一个新的LoDTensor。 - -具体实现方法如下: - -1. 检查基于序列长度的LoD(length-based LoD),即参数中的 :code:`recursive_seq_lens` 是否正确。 - -2. 将 :code:`recursive_seq_lens` 转换为基于偏移量的LoD(offset-based LoD)。 - -3. 根据place参数,把所提供的 :code:`data` (numpy数组、list或LoDTensor)的数据复制到CPU或GPU上。 - -4. 将基于偏移量的LoD设置到输出的LoDTensor中。 - -假设我们想创建一个LoDTensor表示词的序列,其中每个词用一个整数id表示。若待创建的LoDTensor表示2个句子,其中一个句子包含2个单词,另一个句子包含3个单词。 - -那么, :code:`data` 为一个维度为(5, 1)的numpy整数数组; :code:`recursive_seq_lens` 为[[2, 3]],表示每个句子含的单词个数。在该接口内部,基于序列长度的 -:code:`recursive_seq_lens` [[2, 3]]会转换为为基于偏移量的LoD [[0, 2, 5]]。 - -请查阅 :ref:`cn_user_guide_lod_tensor` 了解更多关于LoD的介绍。 - -参数: - - **data** (numpy.ndarray|list|LoDTensor) - 表示LoDTensor数据的numpy数组、list或LoDTensor。 - - **recursive_seq_lens** (list[list[int]]) - 基于序列长度的LoD信息。 - - **place** (CPUPlace|CUDAPlace) - 表示返回的LoDTensor存储在CPU或GPU place中。 - -返回: 包含数据信息和序列长度信息的LoDTensor。 - -返回类型: LoDTensor - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.create_lod_tensor(np.ndarray([5, 30]), [[2, 3]], fluid.CPUPlace()) - - diff --git a/doc/paddle/api/paddle/fluid/create_random_int_lodtensor_cn.rst b/doc/paddle/api/paddle/fluid/create_random_int_lodtensor_cn.rst deleted file mode 100644 index afe15fe1d4c92d7422d497cecc29ed10c2f4b14f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/create_random_int_lodtensor_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_create_random_int_lodtensor: - - -create_random_int_lodtensor -------------------------------- - - -.. py:function:: paddle.fluid.create_random_int_lodtensor(recursive_seq_lens, base_shape, place, low, high) - -:api_attr: 声明式编程模式(静态图) - - - -创建一个包含随机整数的LoDTensor。 - -具体实现方法如下: - -1. 基于序列长度 :code:`recursive_seq_lens` 和 :code:`base_shape` 产生返回值的维度。返回值的第一维等于序列总长度,其余维度为 :code:`base_shape` 。 - -2. 创建一个包含随机整数的numpy数组,并作为 :code:`data` 参数传入 :ref:`cn_api_fluid_create_lod_tensor` 接口中创建LoDTensor返回。 - -假设我们想创建一个LoDTensor表示序列信息,共包含2个序列,维度分别为[2, 30]和[3, 30],那么序列长度 :code:`recursive_seq_lens` 传入[[2, 3]],:code:`base_shape` 传入[30](即除了序列长度以外的维度)。 -最后返回的LoDTensor的维度为[5, 30],其中第一维5为序列总长度,其余维度为 :code:`base_shape` 。 - -参数: - - **recursive_seq_lens** (list[list[int]]) - 基于序列长度的LoD信息。 - - **base_shape** (list[int]) - 除第一维以外输出结果的维度信息。 - - **place** (CPUPlace|CUDAPlace) - 表示返回的LoDTensor存储在CPU或GPU place中。 - - **low** (int) - 随机整数的下限值。 - - **high** (int) - 随机整数的上限值,必须大于或等于low。 - -返回: 包含随机整数数据信息和序列长度信息的LoDTensor,数值范围在[low, high]之间。 - -返回类型: LoDTensor - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - t = fluid.create_random_int_lodtensor(recursive_seq_lens=[[2, 3]],base_shape=[30], place=fluid.CPUPlace(), low=0, high=10) - print(t.shape()) # [5, 30] - diff --git a/doc/paddle/api/paddle/fluid/cuda_pinned_places_cn.rst b/doc/paddle/api/paddle/fluid/cuda_pinned_places_cn.rst deleted file mode 100644 index 9c3955b528ce692e7c0d1ba3f6da0431080a7272..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/cuda_pinned_places_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_cuda_pinned_places: - -cuda_pinned_places -------------------------------- - - -.. py:function:: paddle.fluid.cuda_pinned_places(device_count=None) - - - - - - -该接口创建 ``device_count`` 个 ``fluid.CUDAPinnedPlace`` ( fluid. :ref:`cn_api_fluid_CUDAPinnedPlace` ) 对象,并返回所创建的对象列表。 - -如果 ``device_count`` 为 ``None``,实际设备数目将由当前任务中使用的GPU设备数决定。用户可通过以下2种方式设置任务可用的GPU设备: - -- 设置环境变量 ``FLAGS_selected_gpus`` ,例如 ``export FLAGS_selected_gpus='0,1'``。 -- 设置环境变量 ``CUDA_VISIBLE_DEVICES`` ,例如 ``export CUDA_VISIBLE_DEVICES='0,1'``。 - -关于如何设置任务中使用的GPU设备,具体请查看 fluid. :ref:`cn_api_fluid_cuda_places` 。 - -参数: - - **device_count** (int,可选) - 设备数目。默认值为 ``None``。 - -返回: ``fluid.CUDAPinnedPlace`` 对象列表。 - -返回类型:list[fluid.CUDAPinnedPlace] - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 1)不设置任何环境变量,默认使用所有的GPU,8卡的机器则将创建8个CUDAPinnedPlace - # 2)export FLAGS_selected_gpus='0,1',则创建2个CUDAPinnedPlace - cuda_pinned_places = fluid.cuda_pinned_places() - # 3)创建1个CUDAPinnedPlace - cuda_pinned_places = fluid.cuda_pinned_places(1) diff --git a/doc/paddle/api/paddle/fluid/cuda_places_cn.rst b/doc/paddle/api/paddle/fluid/cuda_places_cn.rst deleted file mode 100644 index b0294e9cb5b2df17d525a053c68005d0355bbe2e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/cuda_places_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_cuda_places: - -cuda_places -------------------------------- - -.. py:function:: paddle.fluid.cuda_places(device_ids=None) - - - - -.. note:: - 多卡任务请先使用 FLAGS_selected_gpus 环境变量设置可见的GPU设备,下个版本将会修正 CUDA_VISIBLE_DEVICES 环境变量无效的问题。 - -该接口根据 ``device_ids`` 创建一个或多个 ``fluid.CUDAPlace`` 对象,并返回所创建的对象列表。 - -如果 ``device_ids`` 为 ``None``,则首先检查 ``FLAGS_selected_gpus`` 标志。 -例如: ``FLAGS_selected_gpus=0,1,2`` ,则返回的列表将为 ``[fluid.CUDAPlace(0), fluid.CUDAPlace(1), fluid.CUDAPlace(2)]``。 -如果未设置标志 ``FLAGS_selected_gpus`` ,则根据 ``CUDA_VISIBLE_DEVICES`` 环境变量,返回所有可见的 GPU places。 - -如果 ``device_ids`` 不是 ``None``,它应该是使用的GPU设备ID的列表或元组。 -例如: ``device_id=[0,1,2]`` ,返回的列表将是 ``[fluid.CUDAPlace(0), fluid.CUDAPlace(1), fluid.CUDAPlace(2)]``。 - -参数: - - **device_ids** (list(int)|tuple(int),可选) - GPU的设备ID列表或元组。默认值为 ``None``。 - -返回: 创建的 ``fluid.CUDAPlace`` 列表。 - -返回类型:list[fluid.CUDAPlace] - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - cuda_places = fluid.cuda_places() - diff --git a/doc/paddle/api/paddle/fluid/data_feed_desc/DataFeedDesc_cn.rst b/doc/paddle/api/paddle/fluid/data_feed_desc/DataFeedDesc_cn.rst deleted file mode 100644 index 29cf9b2a43c30fe7c6dd47af702eef29f9a863ec..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/data_feed_desc/DataFeedDesc_cn.rst +++ /dev/null @@ -1,207 +0,0 @@ -.. _cn_api_fluid_DataFeedDesc: - -DataFeedDesc -------------------------------- - - -.. py:class:: paddle.fluid.DataFeedDesc(proto_file) - -:api_attr: 声明式编程模式(静态图) - - - -描述训练数据的格式。输入是一个文件路径名,其内容是protobuf message。 - -可以参考 :code:`paddle/fluid/framework/data_feed.proto` 查看我们如何定义message - -一段典型的message可能是这样的: - -.. code-block:: python - - import paddle.fluid as fluid - f = open("data.proto", "w") - print >> f, 'name: "MultiSlotDataFeed"' - print >> f, 'batch_size: 2' - print >> f, 'multi_slot_desc {' - print >> f, ' slots {' - print >> f, ' name: "words"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, ' slots {' - print >> f, ' name: "label"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, '}' - f.close() - data_feed = fluid.DataFeedDesc('data.proto') - -用户需要了解DataFeedDesc中每个字段的含义,以便自定义字段的值。例如: - -.. code-block:: python - - import paddle.fluid as fluid - data_feed = fluid.DataFeedDesc('data.proto') - data_feed.set_batch_size(128) - data_feed.set_dense_slots('words') # 名为'words'的slot将被设置为密集的 - data_feed.set_use_slots('words') # 名为'words'的slot将被用于训练 - - # 最后,可以打印变量详细信息便于排查错误 - print(data_feed.desc()) - - -参数: - - **proto_file** (string) : 包含数据描述的protobuf message的磁盘文件 - - -.. py:method:: set_batch_size(batch_size) - -该接口用于设置DataFeedDesc中的 :code:`batch_size` 。可以在训练期间调用修改 :code:`batch_size` 。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - f = open("data.proto", "w") - print >> f, 'name: "MultiSlotDataFeed"' - print >> f, 'batch_size: 2' - print >> f, 'multi_slot_desc {' - print >> f, ' slots {' - print >> f, ' name: "words"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, ' slots {' - print >> f, ' name: "label"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, '}' - f.close() - data_feed = fluid.DataFeedDesc('data.proto') - data_feed.set_batch_size(128) - -参数: - - **batch_size** (int) - 新的批尺寸。 - -返回:无 - -.. py:method:: set_dense_slots(dense_slots_name) - -将 :code:`dense_slots_name` 指定的slots设置为密集的slot。**注意:默认情况下,所有slots都是稀疏的。** - -密集slot的特征将被输入一个Tensor,而稀疏slot的特征将被输入一个LoDTensor。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - f = open("data.proto", "w") - print >> f, 'name: "MultiSlotDataFeed"' - print >> f, 'batch_size: 2' - print >> f, 'multi_slot_desc {' - print >> f, ' slots {' - print >> f, ' name: "words"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, ' slots {' - print >> f, ' name: "label"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, '}' - f.close() - data_feed = fluid.DataFeedDesc('data.proto') - data_feed.set_dense_slots(['words']) - -参数: - - **dense_slots_name** (list(str)) - slot名称的列表,这些slot将被设置为密集的。 - -返回:无 - -.. py:method:: set_use_slots(use_slots_name) - - -设置一个特定的slot是否用于训练。一个数据集包含了很多特征,通过这个函数可以选择哪些特征将用于指定的模型。 - -参数: - - **use_slots_name** (list) : 将在训练中使用的slot名列表,类型为list,其中每个元素为一个字符串 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - f = open("data.proto", "w") - print >> f, 'name: "MultiSlotDataFeed"' - print >> f, 'batch_size: 2' - print >> f, 'multi_slot_desc {' - print >> f, ' slots {' - print >> f, ' name: "words"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, ' slots {' - print >> f, ' name: "label"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, '}' - f.close() - data_feed = fluid.DataFeedDesc('data.proto') - data_feed.set_use_slots(['words']) - -.. note:: - - 默认值是不使用所有slot - - -.. py:method:: desc() - -返回此DataFeedDesc的protobuf message - -返回:一个protobuf message字符串 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - f = open("data.proto", "w") - print >> f, 'name: "MultiSlotDataFeed"' - print >> f, 'batch_size: 2' - print >> f, 'multi_slot_desc {' - print >> f, ' slots {' - print >> f, ' name: "words"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, ' slots {' - print >> f, ' name: "label"' - print >> f, ' type: "uint64"' - print >> f, ' is_dense: false' - print >> f, ' is_used: true' - print >> f, ' }' - print >> f, '}' - f.close() - data_feed = fluid.DataFeedDesc('data.proto') - print(data_feed.desc()) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/data_feeder/DataFeeder_cn.rst b/doc/paddle/api/paddle/fluid/data_feeder/DataFeeder_cn.rst deleted file mode 100644 index 1151d922e5db990139ac616e2aca2d617c1931f5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/data_feeder/DataFeeder_cn.rst +++ /dev/null @@ -1,211 +0,0 @@ -.. _cn_api_fluid_DataFeeder: - -DataFeeder -------------------------------- - - -.. py:class:: paddle.fluid.DataFeeder(feed_list, place, program=None) - -:api_attr: 声明式编程模式(静态图) - - - - - -``DataFeeder`` 负责将reader(读取器)返回的数据转成一种特殊的数据结构,使它们可以输入到 ``Executor`` 和 ``ParallelExecutor`` 中。 -reader通常返回一个minibatch条目列表。在列表中每一条目都是一个样本(sample),它是由具有一至多个特征的列表或元组组成的。 - - -以下是简单用法: - -.. code-block:: python - - import paddle.fluid as fluid - 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 - - import paddle - import paddle.fluid as fluid - - place=fluid.CUDAPlace(0) - data = fluid.layers.data(name='data', shape=[3, 224, 224], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - - feeder = fluid.DataFeeder(place=place, feed_list=[data, label]) - reader = feeder.decorate_reader( - paddle.batch(paddle.dataset.flowers.train(), batch_size=16), multi_devices=False) - - - -参数: - - **feed_list** (list) – 向模型输入的变量表或者变量表名 - - **place** (Place) – place表明是向GPU还是CPU中输入数据。如果想向GPU中输入数据, 请使用 ``fluid.CUDAPlace(i)`` (i 代表 the GPU id);如果向CPU中输入数据, 请使用 ``fluid.CPUPlace()`` - - **program** (Program) – 需要向其中输入数据的Program。如果为None, 会默认使用 ``default_main_program()``。 缺省值为None - - -抛出异常: - - ``ValueError`` – 如果一些变量不在此 Program 中 - - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - place = fluid.CPUPlace() - - def reader(): - yield [np.random.random([4]).astype('float32'), np.random.random([3]).astype('float32')], - - main_program = fluid.Program() - startup_program = fluid.Program() - - with fluid.program_guard(main_program, startup_program): - data_1 = fluid.layers.data(name='data_1', shape=[1, 2, 2]) - data_2 = fluid.layers.data(name='data_2', shape=[1, 1, 3]) - out = fluid.layers.fc(input=[data_1, data_2], size=2) - # ... - - feeder = fluid.DataFeeder([data_1, data_2], place) - - exe = fluid.Executor(place) - exe.run(startup_program) - for data in reader(): - outs = exe.run(program=main_program, - feed=feeder.feed(data), - fetch_list=[out]) - - -.. py:method:: feed(iterable) - - -根据feed_list(数据输入表)和iterable(可遍历的数据)提供的信息,将输入数据转成一种特殊的数据结构,使它们可以输入到 ``Executor`` 和 ``ParallelExecutor`` 中。 - -参数: - - **iterable** (list|tuple) – 要输入的数据 - -返回: 转换结果 - -返回类型: dict - -**代码示例** - -.. code-block:: python - - import numpy.random as random - import paddle.fluid as fluid - - def reader(limit=5): - for i in range(limit): - yield random.random([784]).astype('float32'), random.random([1]).astype('int64'), random.random([256]).astype('float32') - - data_1 = fluid.layers.data(name='data_1', shape=[1, 28, 28]) - data_2 = fluid.layers.data(name='data_2', shape=[1], dtype='int64') - data_3 = fluid.layers.data(name='data_3', shape=[16, 16], dtype='float32') - feeder = fluid.DataFeeder(['data_1','data_2', 'data_3'], fluid.CPUPlace()) - - result = feeder.feed(reader()) - - -.. py:method:: feed_parallel(iterable, num_places=None) - - -该方法获取的多个minibatch,并把每个minibatch提前输入进各个设备中。 - -参数: - - **iterable** (list|tuple) – 要输入的数据 - - **num_places** (int) – 设备数目。默认为None。 - -返回: 转换结果 - -返回类型: dict - -.. note:: - 设备(CPU或GPU)的数目必须等于minibatch的数目 - -**代码示例** - -.. code-block:: python - - import numpy.random as random - import paddle.fluid as fluid - - def reader(limit=10): - for i in range(limit): - yield [random.random([784]).astype('float32'), random.random([1]).astype('float32')], - - x = fluid.layers.data(name='x', shape=[1, 28, 28]) - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - - fluid.layers.elementwise_add(x, y) - - feeder = fluid.DataFeeder(['x','y'], fluid.CPUPlace()) - place_num = 2 - places = [fluid.CPUPlace() for x in range(place_num)] - data = [] - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - program = fluid.CompiledProgram(fluid.default_main_program()).with_data_parallel(places=places) - for item in reader(): - data.append(item) - if place_num == len(data): - exe.run(program=program, feed=list(feeder.feed_parallel(data, place_num)), fetch_list=[]) - data = [] - -.. 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`` - -返回:转换结果 - -返回类型: dict - -抛出异常: ``ValueError`` – 如果 ``drop_last`` 值为False并且data batch与设备不匹配时,产生此异常 - -**代码示例** - -.. code-block:: python - - import numpy.random as random - import paddle - import paddle.fluid as fluid - - def reader(limit=5): - for i in range(limit): - yield (random.random([784]).astype('float32'), random.random([1]).astype('int64')), - - place=fluid.CPUPlace() - data = fluid.layers.data(name='data', shape=[1, 28, 28], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - - feeder = fluid.DataFeeder(place=place, feed_list=[data, label]) - reader = feeder.decorate_reader(reader, multi_devices=False) - - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in reader(): - exe.run(feed=data) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/dataloader/BatchSampler_cn.rst b/doc/paddle/api/paddle/fluid/dataloader/BatchSampler_cn.rst deleted file mode 100644 index d97e1af250b27c1b08959581b1a3981979a38d32..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dataloader/BatchSampler_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_io_cn_BatchSampler: - -BatchSampler -------------------------------- -:doc_source: paddle.fluid.dataloader.BatchSampler - - diff --git a/doc/paddle/api/paddle/fluid/dataloader/Dataset_cn.rst b/doc/paddle/api/paddle/fluid/dataloader/Dataset_cn.rst deleted file mode 100644 index 9cc4bf215405232188e577ad074d784ef2c06424..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dataloader/Dataset_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_io_cn_Dataset: - -Dataset -------------------------------- -:doc_source: paddle.fluid.dataloader.Dataset - - diff --git a/doc/paddle/api/paddle/fluid/dataloader/batch_sampler/BatchSampler_cn.rst b/doc/paddle/api/paddle/fluid/dataloader/batch_sampler/BatchSampler_cn.rst deleted file mode 100644 index d97e1af250b27c1b08959581b1a3981979a38d32..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dataloader/batch_sampler/BatchSampler_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_io_cn_BatchSampler: - -BatchSampler -------------------------------- -:doc_source: paddle.fluid.dataloader.BatchSampler - - diff --git a/doc/paddle/api/paddle/fluid/dataloader/dataset/Dataset_cn.rst b/doc/paddle/api/paddle/fluid/dataloader/dataset/Dataset_cn.rst deleted file mode 100644 index 9cc4bf215405232188e577ad074d784ef2c06424..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dataloader/dataset/Dataset_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_io_cn_Dataset: - -Dataset -------------------------------- -:doc_source: paddle.fluid.dataloader.Dataset - - diff --git a/doc/paddle/api/paddle/fluid/device_guard_cn.rst b/doc/paddle/api/paddle/fluid/device_guard_cn.rst deleted file mode 100755 index 7d369cc9740652a4d6d4c5a23ff723fdfa0dbdc4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/device_guard_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_device_guard: - -device_guard -------------------------------- - -**注意:该API仅支持【静态图】模式** - -.. py:function:: paddle.fluid.device_guard(device=None) - -一个用于指定OP运行设备的上下文管理器。 - -参数: - - **device** (str|None) – 指定上下文中使用的设备。它可以是'cpu'或者'gpu‘,当它被设置为'cpu'或者'gpu'时,创建在该上下文中的OP将被运行在CPUPlace或者CUDAPlace上。若设置为'gpu',同时程序运行在单卡模式下,设备的索引将与执行器的设备索引保持一致。默认值:None,在该上下文中的OP将被自动地分配设备。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - support_gpu = fluid.is_compiled_with_cuda() - place = fluid.CPUPlace() - if support_gpu: - place = fluid.CUDAPlace(0) - # if GPU is supported, the three OPs below will be automatically assigned to CUDAPlace(0) - data1 = fluid.layers.fill_constant(shape=[1, 3, 8, 8], value=0.5, dtype='float32') - data2 = fluid.layers.fill_constant(shape=[1, 3, 5, 5], value=0.5, dtype='float32') - shape = fluid.layers.shape(data2) - with fluid.device_guard("cpu"): - # Ops created here will be placed on CPUPlace - shape = fluid.layers.slice(shape, axes=[0], starts=[0], ends=[4]) - with fluid.device_guard('gpu'): - # if GPU is supported, OPs created here will be placed on CUDAPlace(0), otherwise on CPUPlace - out = fluid.layers.crop_tensor(data1, shape=shape) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - result = exe.run(fetch_list=[out]) diff --git a/doc/paddle/api/paddle/fluid/disable_dygraph_cn.rst b/doc/paddle/api/paddle/fluid/disable_dygraph_cn.rst deleted file mode 100644 index 59dc22b7b491cf59f13fe9586f6d98bbaa86f00b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/disable_dygraph_cn.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. _cn_api_fluid_disable_dygraph: - -disable_dygraph -------------------------------- - -.. py:function:: paddle.fluid.disable_dygraph() - -该接口关闭动态图模式。 - -返回:无 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - fluid.enable_dygraph() # Now we are in dygraph mode - print(fluid.in_dygraph_mode()) # True - fluid.disable_dygraph() - print(fluid.in_dygraph_mode()) # False - diff --git a/doc/paddle/api/paddle/fluid/disable_imperative_cn.rst b/doc/paddle/api/paddle/fluid/disable_imperative_cn.rst deleted file mode 100644 index 6437fbf3f7d35edd79ae4ac636ae07e9bbe4a269..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/disable_imperative_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_paddle_cn_disable_imperative: - -disable_imperative -------------------------------- -:doc_source: paddle.fluid.dygraph.base.disable_dygraph - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/Conv2DTranspose_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/Conv2DTranspose_cn.rst deleted file mode 100644 index b500bdbf6c7884f1bc263532eb0f3db379790fa8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/Conv2DTranspose_cn.rst +++ /dev/null @@ -1,89 +0,0 @@ -.. _cn_api_fluid_dygraph_Conv2DTranspose: - -Conv2DTranspose -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Conv2DTranspose(num_channels, num_filters, filter_size, output_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, dtype="float32") - - - - -该接口用于构建 ``Conv2DTranspose`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维卷积转置层(Convlution2D Transpose Layer),其根据输入(input)、滤波器参数(num_filters、filter_size)、步长(stride)、填充(padding)、膨胀系数(dilation)、组数(groups)来计算得到输出特征图。输入和输出是 ``NCHW`` 格式,N是批数据大小,C是特征图个数,H是特征图高度,W是特征图宽度。滤波器的维度是 [M, C, H, W] ,M是输入特征图个数,C是输出特征图个数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入特征图个数除以组数的结果。如果提供了偏移属性和激活函数类型,卷积的结果会和偏移相加,激活函数会作用在最终结果上。转置卷积的计算过程相当于卷积的反向计算,转置卷积又被称为反卷积(但其实并不是真正的反卷积)。详情请参考: `Conv2DTranspose `_ 。 - -输入 ``X`` 和输出 ``Out`` 的函数关系如下: - -.. math:: - Out=\sigma (W*X+b)\\ - -其中: - - :math:`X` :输入特征图, ``NCHW`` 格式的 ``Tensor`` - - :math:`W` :滤波器,维度为 [M, C, H, W] 的 ``Tensor`` - - :math:`*` :卷积操作 - - :math:`b` :偏移值,2-D ``Tensor`` ,维度为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值, ``Out`` 和 ``X`` 的维度可能不同 - -**输出维度计算示例** - -- 输入: - - 输入维度: :math:`(N,C_{in},H_{in},W_{in})` - - 滤波器维度: :math:`(C_{in},C_{out},H_{f},W_{f})` - -- 输出: - - 输出维度: :math:`(N,C_{out},H_{out},W_{out})` - -- 其中 - -.. math:: - - & H'_{out} = (H_{in}-1)*strides[0]-2*paddings[0]+dilations[0]*(H_f-1)+1 - - & W'_{out} = (W_{in}-1)*strides[1]-2*paddings[1]+dilations[1]*(W_f-1)+1 - - & H_{out}\in[H'_{out},H'_{out} + strides[0]) - - & W_{out}\in[W'_{out},W'_{out} + strides[1]) - -参数: - - **num_channels** (int) - 输入图像的通道数。 - - **num_filters** (int) - 滤波器的个数,和输出特征图个数相同。 - - **filter_size** (int|tuple) - 滤波器大小。如果 ``filter_size`` 是一个元组,则必须包含两个整型数,分别表示滤波器高度和宽度。否则,表示滤波器高度和宽度均为 ``filter_size`` 。 - - **output_size** (int|tuple, 可选) - 输出特征图的大小。如果 ``output_size`` 是一个元组,则必须包含两个整型数,分别表示特征图高度和宽度。如果 ``output_size`` 是整型,表示特征图高度和宽度均为 ``output_size`` 。如果 ``output_size`` 为None,则会根据 ``filter_size`` 、 ``padding`` 和 ``stride`` 来计算 ``output_size`` 。如果 ``output_size`` 和 ``filter_size`` 同时指定,那么它们应满足上面的公式。默认值:None。 - - **padding** (int|tuple, 可选) - 填充大小。如果 ``padding`` 为元组,则必须包含两个整型数,分别表示竖直和水平边界填充大小。否则,表示竖直和水平边界填充大小均为 ``padding`` 。默认值:0。 - - **stride** (int|tuple, 可选) - 步长大小。如果 ``stride`` 为元组,则必须包含两个整型数,分别表示垂直和水平滑动步长。否则,表示垂直和水平滑动步长均为 ``stride`` 。默认值:1。 - - **dilation** (int|tuple, 可选) - 膨胀系数大小。如果 ``dialation`` 为元组,则必须包含两个整型数,分别表示垂直和水平膨胀系数。否则,表示垂直和水平膨胀系数均为 ``dialation`` 。默认值:1。 - - **groups** (int, 可选) - 二维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的分组卷积:当group=2,滤波器的前一半仅和输入特征图的前一半连接。滤波器的后一半仅和输入特征图的后一半连接。默认值:1。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool, 可选) - 是否使用cudnn内核,只有已安装cudnn库时才有效。默认值:True。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值:None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - data = np.random.random((3, 32, 32, 5)).astype('float32') - conv2DTranspose = fluid.dygraph.nn.Conv2DTranspose( - num_channels=32, num_filters=2, filter_size=3) - ret = conv2DTranspose(fluid.dygraph.base.to_variable(data)) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - diff --git a/doc/paddle/api/paddle/fluid/dygraph/Conv2D_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/Conv2D_cn.rst deleted file mode 100644 index b374e34f3ccf40c97d8164fd4795cb19457d33ec..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/Conv2D_cn.rst +++ /dev/null @@ -1,120 +0,0 @@ -Conv2D -------------------------------- - -.. py:class:: paddle.nn.Conv2d(num_channels, num_filters, filter_size, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format="NCHW", dtype="float32") - -:alias_main: paddle.nn.Conv2D -:alias: paddle.nn.Conv2D,paddle.nn.layer.Conv2D,paddle.nn.layer.conv.Conv2D - - - -**二维卷积层** - -该OP是二维卷积层(convolution2D layer),根据输入、滤波器、步长(stride)、填充(padding)、膨胀比例(dilations)一组参数计算输出特征层大小。输入和输出是NCHW或NHWC格式,其中N是批尺寸,C是通道数,H是特征高度,W是特征宽度。滤波器是MCHW格式,M是输出图像通道数,C是输入图像通道数,H是滤波器高度,W是滤波器宽度。如果组数(groups)大于1,C等于输入图像通道数除以组数的结果。详情请参考UFLDL's : `卷积 `_ 。如果bias_attr不为False,卷积计算会添加偏置项。如果指定了激活函数类型,相应的激活函数会作用在最终结果上。 - -对每个输入X,有等式: - -.. math:: - - Out = \sigma \left ( W * X + b \right ) - -其中: - - :math:`X` :输入值,NCHW或NHWC格式的4-D Tensor - - :math:`W` :滤波器值,MCHW格式的4-D Tensor - - :math:`*` :卷积操作 - - :math:`b` :偏置值,2-D Tensor,形状为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值,NCHW或NHWC格式的4-D Tensor, 和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入形状::math:`(N,C_{in},H_{in},W_{in})` - - 滤波器形状: :math:`(C_{out},C_{in},H_{f},W_{f})` - -- 输出: - - 输出形状: :math:`(N,C_{out},H_{out},W_{out})` - -其中 - -.. math:: - - H_{out} &= \frac{\left ( H_{in} + padding\_height\_top + padding\_height\_bottom-\left ( dilation[0]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - W_{out} &= \frac{\left ( W_{in} + padding\_width\_left + padding\_width\_right -\left ( dilation[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - -如果 ``padding`` = "SAME": - -.. math:: - H_{out} = \frac{(H_{in} + stride[0] - 1)}{stride[0]} - -.. math:: - W_{out} = \frac{(W_{in} + stride[1] - 1)}{stride[1]} - -如果 ``padding`` = "VALID": - -.. math:: - H_{out} = \frac{\left ( H_{in} -\left ( dilation[0]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - W_{out} = \frac{\left ( W_{in} -\left ( dilation[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - -参数: - - **num_channels** (int) - 输入图像的通道数。 - - **num_filters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - - **filter_size** (int|list|tuple) - 滤波器大小。如果它是一个列表或元组,则必须包含两个整数值:(filter_size_height,filter_size_width)。若为一个整数,filter_size_height = filter_size_width = filter_size。 - - **padding** (int|list|tuple|str,可选) - 填充大小。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含4个二元组:当 ``data_format`` 为"NCHW"时为 [[0,0], [0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NHWC"时为[[0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含4个整数值:[padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含2个整数值:[padding_height, padding_width],此时padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_height = padding_width = padding。默认值:0。 - - **stride** (int|list|tuple,可选) - 步长大小。滤波器和输入进行卷积计算时滑动的步长。如果它是一个列表或元组,则必须包含两个整型数:(stride_height,stride_width)。若为一个整数,stride_height = stride_width = stride。默认值:1。 - - **dilation** (int|list|tuple,可选) - 膨胀比例大小。空洞卷积时会使用该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息。如果膨胀比例为列表或元组,则必须包含两个整型数:(dilation_height,dilation_width)。若为一个整数,dilation_height = dilation_width = dilation。默认值:1。 - - **groups** (int,可选) - 二维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=n,输入和滤波器分别根据通道数量平均分为n组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算,……,第n组滤波器和第n组输入进行卷积计算。默认值:1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool,可选)- 指定偏置参数属性的对象。若 ``bias_attr`` 为bool类型,只支持为False,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool,可选)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **act** (str,可选) - 激活函数类型, 如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` 。如果设为None,则未添加激活函数。默认值:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值:None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - **dtype** (str, 可选) – 权重的数据类型,可以为float32或float64。默认为float32。 - - -属性 -:::::::::::: -.. py:attribute:: weight -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias -本层的可学习偏置,类型为 ``Parameter`` - -返回: 无。 - -抛出异常: - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``input`` 的通道数未被明确定义。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有4个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果输入不是4-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - - ``ShapeError`` - 如果输出的通道数不能被 ``groups`` 整除。 - - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - from paddle import nn - x = np.random.uniform(-1, 1, (2, 4, 8, 8)).astype('float32') - place = fluid.CPUPlace() - with dg.guard(place): - x_var = dg.to_variable(x) - conv = nn.Conv2D(4, 6, (3, 3)) - y_var = conv(x_var) - y_np = y_var.numpy() - print(y_np.shape) - - # (2, 6, 6, 6) diff --git a/doc/paddle/api/paddle/fluid/dygraph/Conv3DTranspose_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/Conv3DTranspose_cn.rst deleted file mode 100644 index a3e4134d1e6a31dd8e206bcf5546d511a79e9d7a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/Conv3DTranspose_cn.rst +++ /dev/null @@ -1,118 +0,0 @@ -.. _cn_api_fluid_dygraph_Conv3DTranspose: - -Conv3DTranspose -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Conv3DTranspose(num_channels, num_filters, filter_size, output_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, dtype="float32") - - - - - -该接口用于构建 ``Conv3DTranspose`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。3D卷积转置层(Convlution3D transpose layer)根据输入(input)、滤波器(filter)和卷积核膨胀(dilations)、步长(stride)、填充来计算输出特征层大小或者通过output_size指定输出特征层大小。输入(Input)和输出(Output)为NCDHW格式。其中 ``N`` 为batch大小, ``C`` 为通道数(channel), ``D`` 为特征深度, ``H`` 为特征高度, ``W`` 为特征宽度。转置卷积的计算过程相当于卷积的反向计算。转置卷积又被称为反卷积(但其实并不是真正的反卷积)。欲了解卷积转置层细节,请参考下面的说明和 参考文献_ 。如果参数bias_attr不为False, 转置卷积计算会添加偏置项。如果act不为None,则转置卷积计算之后添加相应的激活函数。 - - -.. _参考文献: https://arxiv.org/abs/1603.07285 - -输入 :math:`X` 和输出 :math:`Out` 函数关系如下: - -.. math:: - \\Out=\sigma (W*X+b)\\ - -其中: - - :math:`X` : 输入图像,具有NCDHW格式的张量(Tensor) - - - :math:`W` : 滤波器,具有NCDHW格式的张量(Tensor) - - - :math:`*` : 卷积操作(注意:转置卷积本质上的计算还是卷积) - - - :math:`b` : 偏置(bias),维度为 :math:`[M,1]` 的2D Tensor - - - :math:`σ` : 激活函数 - - - :math:`Out` : 输出值, ``Out`` 和 ``X`` 的 shape可能不一样 - - -**样例** - -输入: - - 输入Tensor的维度::math:`[N,C_{in}, D_{in}, H_{in}, W_{in}]` - - 滤波器Tensor的维度::math:`[C_{in}, C_{out}, D_f, H_f, W_f]` - - - -输出: - - 输出Tensor的维度::math:`[N,C_{out}, D_{out}, H_{out}, W_{out}]` - - -其中: - -.. math:: - D'_{out}=(D_{in}-1)*strides[0]-2*paddings[0]+dilations[0]*(D_f-1)+1 \\ - H'_{out}=(H_{in}-1)*strides[1]-2*paddings[1]+dilations[1]*(H_f-1)+1 \\ - W'_{out}=(W_{in}-1)*strides[2]-2*paddings[2]+dilations[2]*(W_f-1)+1 \\ -.. math:: - D_{out}\in[D'_{out},D'_{out} + strides[0]) \\ - H_{out}\in[H'_{out},H'_{out} + strides[1]) \\ - W_{out}\in[W'_{out},W'_{out} + strides[2]) - - -**注意** : - 如果output_size为None,则 :math:`D_{out}` = :math:`D^\prime_{out}` , :math:`H_{out}` = :math:`H^\prime_{out}` , :math:`W_{out}` = :math:`W^\prime_{out}` ;否则,指定的output_size_depth(输出特征层的深度) :math:`D_{out}` 应当介于 :math:`D^\prime_{out}` 和 :math:`D^\prime_{out} + strides[0]` 之间(不包含 :math:`D^\prime_{out} + strides[0]` ),指定的output_size_height(输出特征层的高) :math:`H_{out}` 应当介于 :math:`H^\prime_{out}` 和 :math:`H^\prime_{out} + strides[1]` 之间(不包含 :math:`H^\prime_{out} + strides[1]` ), 并且指定的output_size_width(输出特征层的宽) :math:`W_{out}` 应当介于 :math:`W^\prime_{out}` 和 :math:`W^\prime_{out} + strides[2]` 之间(不包含 :math:`W^\prime_{out} + strides[2]` )。 - - 由于转置卷积可以当成是卷积的反向计算,而根据卷积的输入输出计算公式来说,不同大小的输入特征层可能对应着相同大小的输出特征层,所以对应到转置卷积来说,固定大小的输入特征层对应的输出特征层大小并不唯一。 - - 如果指定了output_size, 其可以自动计算滤波器的大小。 - - -参数: - - **num_channels** (int) - 输入图像的通道数。 - - **num_filters** (int) - 滤波器(卷积核)的个数,与输出的图片的通道数相同。 - - **filter_size** (int|tuple) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_depth,filter_size_height, filter_size_width)。否则,filter_size_depth = filter_size_height = filter_size_width = filter_size。如果filter_size=None,则必须指定output_size, 其会根据output_size、padding和stride计算出滤波器大小。 - - **output_size** (int|tuple,可选) - 输出图片的大小。如果 ``output_size`` 是一个元组(tuple),则该元形式为(image_H,image_W),这两个值必须为整型。如果未设置,则内部会使用filter_size、padding和stride来计算output_size。如果 ``output_size`` 和 ``filter_size`` 是同时指定的,那么它们应满足上面的公式。默认值为None。output_size和filter_size不能同时为None。 - - **padding** (int|tuple,可选) - 填充padding大小。padding参数在输入特征层每边添加 ``dilation * (kernel_size - 1) - padding`` 个0。如果padding是一个元组,它必须包含三个整数(padding_depth,padding_height,padding_width)。否则,padding_depth = padding_height = padding_width = padding。默认值为0。 - - **stride** (int|tuple,可选) - 步长stride大小。滤波器和输入进行卷积计算时滑动的步长。如果stride是一个元组,那么元组的形式为(stride_depth,stride_height,stride_width)。否则,stride_depth = stride_height = stride_width = stride。默认值为1。 - - **dilation** (int|tuple,可选) - 膨胀比例dilation大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 `_ 较好理解。如果膨胀比例dilation是一个元组,那么元组的形式为(dilation_depth,dilation_height, dilation_width)。否则,dilation_depth = dilation_height = dilation_width = dilation。默认值为1。 - - **groups** (int,可选) - 三维转置卷积层的组数。从Alex Krizhevsky的CNN Deep论文中的群卷积中受到启发,当group=2时,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认值为1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool,可选) - 是否使用cudnn内核,只有安装Paddle GPU版时才有效。默认值为True。 - - **act** (str,可选) - 激活函数类型,如果设置为None,则不使用激活函数。默认值为None。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - with fluid.dygraph.guard(): - data = numpy.random.random((5, 3, 12, 32, 32)).astype('float32') - - conv3dTranspose = fluid.dygraph.nn.Conv3DTranspose( - 'Conv3DTranspose', - num_filters=12, - filter_size=12, - use_cudnn=False) - ret = conv3dTranspose(fluid.dygraph.base.to_variable(data)) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/Conv3D_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/Conv3D_cn.rst deleted file mode 100644 index 9e0291edba17ab22bc5288e21b4e16ee5a0305f0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/Conv3D_cn.rst +++ /dev/null @@ -1,88 +0,0 @@ -.. _cn_api_fluid_dygraph_Conv3D: - -Conv3D -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Conv3D(num_channels, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, dtype="float32") - - - - - -该接口用于构建 ``Conv3D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。3D卷积层(convolution3D layer)根据输入、滤波器(filter)、步长(stride)、填充(padding)、膨胀(dilations)、组数参数计算得到输出。输入和输出是[N, C, D, H, W]的多维tensor,其中N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度。卷积三维(Convlution3D)和卷积二维(Convlution2D)相似,但多了一维深度(depth)。如果提供了bias属性和激活函数类型,bias会添加到卷积(convolution)的结果中相应的激活函数会作用在最终结果上。 - -对每个输入X,有等式: - -.. math:: - - - Out = \sigma \left ( W * X + b \right ) - -其中: - - :math:`X` :输入值,NCDHW格式的张量(Tensor) - - :math:`W` :滤波器值,MCDHW格式的张量(Tensor) - - :math:`*` : 卷积操作 - - :math:`b` :Bias值,二维张量(Tensor),维度为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值, ``Out`` 和 ``X`` 的维度可能不同 - -**示例** - -- 输入: - 输入Tensor的维度: :math:`[N, C_{in}, D_{in}, H_{in}, W_{in}]` - - 滤波器Tensor的维度: :math:`[C_{out}, C_{in}, D_f, H_f, W_f]` -- 输出: - 输出Tensor的维度: :math:`[N, C_{out}, D_{out}, H_{out}, W_{out}]` - -其中 - -.. math:: - - - D_{out}&= \frac{(D_{in} + 2 * paddings[0] - (dilations[0] * (D_f - 1) + 1))}{strides[0]} + 1 \\ - H_{out}&= \frac{(H_{in} + 2 * paddings[1] - (dilations[1] * (H_f - 1) + 1))}{strides[1]} + 1 \\ - W_{out}&= \frac{(W_{in} + 2 * paddings[2] - (dilations[2] * (W_f - 1) + 1))}{strides[2]} + 1 - -参数: - - **num_channels** (int) - 输入图像的通道数。 - - **num_fliters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - - **filter_size** (int|tuple) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_D, filter_size_H, filter_size_W)。如果filter_size是一个int型,则filter_size_depth = filter_size_height = filter_size_width = filter_size。 - - **stride** (int|tuple,可选) - 步长(stride)大小。滤波器和输入进行卷积计算时滑动的步长。如果步长(stride)为元组,则必须包含三个整型数, (stride_D, stride_H, stride_W)。否则,stride_D = stride_H = stride_W = stride。默认值为1。 - - **padding** (int|tuple,可选) - 填充(padding)大小。padding参数在输入特征层每边添加padding个0。如果填充(padding)为元组,则必须包含三个整型数,(padding_depth, padding_height, padding_width)。否则, padding_depth = padding_height = padding_width = padding。默认值为0。 - - **dilation** (int|tuple,可选) - 膨胀(dilation)大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 `_ 较好理解。如果膨胀(dialation)为元组,则必须包含两个整型数, (dilation_D, dilation_H, dilation_W)。否则,dilation_D = dilation_H = dilation_W = dilation。默认值为1。 - - **groups** (int,可选) - 三维卷积层(Conv3D Layer)的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=2,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认值为1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **use_cudnn** (bool,可选) - 是否用cudnn内核,只有安装Paddle GPU版时才有效。默认值为True。 - - **act** (str,可选) - 激活函数类型,如果设为None,则未添加激活函数。默认值为None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - with fluid.dygraph.guard(): - data = numpy.random.random((5, 3, 12, 32, 32)).astype('float32') - conv3d = fluid.dygraph.nn.Conv3D( - 'Conv3D', num_filters=2, filter_size=3, act="relu") - ret = conv3d(fluid.dygraph.base.to_variable(data)) - - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/DataParallel_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/DataParallel_cn.rst deleted file mode 100644 index 6fc3900aa741404a9efc384ea511ebd60db81576..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/DataParallel_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_imperative_cn_DataParallel: - -DataParallel -------------------------------- -:doc_source: paddle.fluid.dygraph.parallel.DataParallel - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/Dropout_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/Dropout_cn.rst deleted file mode 100644 index ce72d582a0abaad2c4db1f2634049388203f8b51..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/Dropout_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_fluid_dygraph_Dropout: - -Dropout -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Dropout(p=0.5, seed=None, dropout_implementation='downgrade_in_infer', is_test=False) - -丢弃或者保持输入的每个元素独立。Dropout是一种正则化手段,通过在训练过程中阻止神经元节点间的相关性来减少过拟合。根据给定的丢弃概率,dropout操作符按丢弃概率随机将一些神经元输出设置为0,其他的仍保持不变。 - -Dropout层可以删除,提高执行效率。 - -参数: - - **p** (float32,可选) - 输入单元的丢弃概率,即输入单元设置为0的概率。默认值:0.5 - - **seed** (int,可选) - 整型数据,用于创建随机种子。如果该参数设为None,则使用随机种子。注:如果给定一个整型种子,始终丢弃相同的输出单元。训练过程中勿用固定不变的种子。默认值:None。 - - **dropout_implementation** (str,可选) - 丢弃单元的方式,有两种'downgrade_in_infer'和'upscale_in_train'两种选择,默认:'downgrade_in_infer'。具体作用可以参考一下描述。 - - 1. downgrade_in_infer(default), 在预测时减小输出结果 - - - train: out = input * mask - - - inference: out = input * (1.0 - p) - - (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``p`` ) - - 2. upscale_in_train, 增加训练时的结果 - - - train: out = input * mask / ( 1.0 - p ) - - - inference: out = input - - (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``p`` ) - - - **is_test** (bool,可选) - 标记是否是测试阶段。此标志仅对静态图模式有效。对于动态图模式,请使用 ``eval()`` 接口。默认:False。 - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - - x = np.random.random(size=(3, 10, 3, 7)).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - m = fluid.dygraph.Dropout(p=0.5) - droped_train = m(x) - # 切换到 eval 模式 - m.eval() - droped_eval = m(x) - diff --git a/doc/paddle/api/paddle/fluid/dygraph/GRUCell_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/GRUCell_cn.rst deleted file mode 100644 index a714757be122b2c7dd2cd936f809725991807996..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/GRUCell_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_layers_GRUCell: - -GRUCell -------------------------------- - - -.. py:class:: paddle.fluid.layers.GRUCell(hidden_size, param_attr=None, bias_attr=None, gate_activation=None, activation=None, dtype="float32", name="GRUCell") - -:api_attr: 声明式编程模式(静态图) - - - -门控循环单元(Gated Recurrent Unit)。通过对 :code:`fluid.contrib.layers.rnn_impl.BasicGRUUnit` 包装,来让它可以应用于RNNCell。 - -公式如下: - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = u_t \odot h_{t-1} + (1-u_t) \odot \tilde{h_t} - -更多细节可以参考 `Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation `_ - -参数: - - **hidden_size** (int) - GRUCell中的隐藏层大小。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **gate_activation** (function,可选) - :math:`act_g` 的激活函数。 默认值为 :code:`fluid.layers.sigmoid`。 - - **activation** (function,可选) - :math:`act_c` 的激活函数。 默认值为 :code:`fluid.layers.tanh` - - **dtype** (string,可选) - 此cell中使用的数据类型。 默认为"float32"。 - - **name** (string,可选) - 用于标识参数和偏差的名称域。 - -返回:GRUCell类的实例对象。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid.layers as layers - cell = layers.GRUCell(hidden_size=256) - - -.. py:method:: call(inputs, states) - -执行GRU的计算。 - -参数: - - **input** (Variable) - 输入,形状为 :math:`[batch\_size,input\_size]` 的tensor,对应于公式中的 :math:`x_t` 。数据类型应为float32。 - - **states** (Variable) - 状态,形状为 :math:`[batch\_size,hidden\_size]` 的tensor。 对应于公式中的 :math:`h_{t-1}` 。数据类型应为float32。 - -返回:一个元组 :code:`(outputs, new_states)` ,其中 :code:`outputs` 和 :code:`new_states` 是同一个tensor,其形状为 :math:`[batch\_size,hidden\_size]`,数据类型和 :code:`state` 的数据类型相同,对应于公式中的 :math:`h_t`。 - -返回类型:tuple - -.. py:method:: state_shape() - -GRUCell的 :code:`state_shape` 是形状 :math:`[hidden\_size]` (batch大小为-1,自动插入到形状中),对应于 :math:`h_{t-1}` 的形状。 - -参数:无。 - -返回:GRUCell的 :code:`state_shape`。 - -返回类型:Variable - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/GRUUnit_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/GRUUnit_cn.rst deleted file mode 100644 index c2f986da1df15d700808d8f57596f15e0c7c6c6c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/GRUUnit_cn.rst +++ /dev/null @@ -1,82 +0,0 @@ -.. _cn_api_fluid_dygraph_GRUUnit: - -GRUUnit -------------------------------- - -.. py:class:: paddle.fluid.dygraph.GRUUnit(name_scope, size, param_attr=None, bias_attr=None, activation='tanh', gate_activation='sigmoid', origin_mode=False, dtype='float32') - - - - -该接口用于构建 ``GRU(Gated Recurrent Unit)`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其用于完成单个时间步内GRU的计算,支持以下两种计算方式: - -如果origin_mode为True,则使用的运算公式来自论文 -`Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation `_ 。 - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = u_t \odot h_{t-1} + (1-u_t) \odot \tilde{h_t} - - -如果origin_mode为False,则使用的运算公式来自论文 -`Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling `_ 。 - -公式如下: - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = (1-u_t) \odot h_{t-1} + u_t \odot \tilde{h_t} - - -其中, :math:`x_t` 为当前时间步的输入,:math:`h_{t-1}` 为前一时间步的隐状态 ``hidden``; :math:`u_t` 、 :math:`r_t` 、 :math:`\tilde{h_t}` 和 :math:`h_t` 分别代表了GRU单元中update gate(更新门)、reset gate(重置门)、candidate hidden(候选隐状态)和隐状态输出; :math:`\odot` 为逐个元素相乘; -:math:`W_{uh}, b_u` 、 :math:`W_{rh}, b_r` 和 :math:`W_{ch}, b_c` 分别代表更新门、重置门和候选隐状态在计算时使用的权重矩阵和偏置。在实现上,三个权重矩阵合并为一个维度为 :math:`[D, D \times 3]` 的Tensor存放。 - -参数: - - **size** (int) – 输入数据的维度大小。 - - **param_attr** (ParamAttr,可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - **注意** - - 权重参数维度为 :math:`[T, 3×D]` , :math:`D` 是隐藏状态的规模(hidden size), 其值与输入size相关,计算方式为size除以3取整 。 - - 权重参数矩阵所有元素由两部分组成, 一是update gate和reset gate的权重,维度为 :math:`[D, 2×D]` 的2D Tensor,数据类型可以为float32或float64;二是候选隐藏状态(candidate hidden state)的权重矩阵,维度为 :math:`[D, D]` 的2D Tensor,数据类型可以为float32或float64。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **activation** (str,可选) – 公式中 :math:`act_c` 激活函数的类型。可以为'identity'、'sigmoid'、'tanh'、'relu'四种激活函数设置值。默认值为'tanh'。 - - **gate_activation** (str,可选) – 公式中 :math:`act_g` 激活函数的类型。可以为'identity'、'sigmoid'、'tanh'、'relu'四种激活函数设置值。默认值为'sigmoid'。 - - **origin_mode** (bool) – 指明要使用的GRU计算方式,两种计算方式具体差异见公式描述。默认值为False。 - - **dtype** (str,可选) – 该层的数据类型,可以为'float32', 'float64'。默认值为'float32'。 - -返回: - None. - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.dygraph.base as base - import numpy - - lod = [[2, 4, 3]] - D = 5 - T = sum(lod[0]) - - input = numpy.random.rand(T, 3 * D).astype('float32') - hidden_input = numpy.random.rand(T, D).astype('float32') - with fluid.dygraph.guard(): - x = numpy.random.random((3, 32, 32)).astype('float32') - gru = fluid.dygraph.GRUUnit(size=D * 3) - dy_ret = gru( - base.to_variable(input), base.to_variable(hidden_input)) - - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` diff --git a/doc/paddle/api/paddle/fluid/dygraph/InstanceNorm_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/InstanceNorm_cn.rst deleted file mode 100644 index 334fa5109f3ba0f52b1039357e08032671cd1849..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/InstanceNorm_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_dygraph_InstanceNorm: - -InstanceNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.InstanceNorm(num_channels, epsilon=1e-05, param_attr=None, bias_attr=None, dtype='float32') - -该接口用于构建 ``InstanceNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。 - -可用作卷积和全连接操作的实例正则化函数,根据每个样本的每个通道的均值和方差信息进行正则化。该层需要的数据格式如下: - -NCHW[batch,in_channels,in_height,in_width] - -更多详情请参考 : `Instance Normalization: The Missing Ingredient for Fast Stylization `_ - -``input`` 是mini-batch的输入。 - -.. math:: - \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mean of each channel in each sample in a batch \\ - \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// variance of each channel in each sample a batch \\ - \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ - y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift - - -参数: - - **num_channels** (int)- 指明输入 ``Tensor`` 的通道数量。 - - **epsilon** (float,默认1e-05)- 为了当前输入做标准化时得到稳定的结果而加在的分母上的扰动值。默认值为1e-5。 - - **param_attr** (ParamAttr|None) - instance_norm 权重参数的属性,可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 如果设为None,则默认的参数初始化为1.0。如果在ParamAttr指定了属性时, instance_norm创建相应属性的param_attr(权重)参数。默认:None。 - - **bias_attr** (ParamAttr|None) - instance_norm 偏置参数的属性,可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。如果设为None,默认的参数初始化为0.0。如果在ParamAttr指定了参数的属性时, instance_norm创建相应属性的bias_attr(偏置)参数。默认:None。 - - **dtype** (string,默认float32)- 指明输入 ``Tensor`` 的数据类型,可以为float32或float64。默认:float32。 - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - import paddle - - # x's shape is [1, 3, 1, 2] - x = np.array([[[[1.0, 8.0]], [[10.0, 5.0]], [[4.0, 6.0]]]]).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - instanceNorm = paddle.nn.InstanceNorm(3) - ret = instanceNorm(x) - # ret's shape is [1, 3, 1, 2]; value is [-1 1 0.999999 -0.999999 -0.999995 0.999995] - print(ret) - diff --git a/doc/paddle/api/paddle/fluid/dygraph/LSTMCell_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/LSTMCell_cn.rst deleted file mode 100644 index 183dd4ff210000f8c9138d18d402d431d245dd86..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/LSTMCell_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_LSTMCell: - -LSTMCell -------------------------------- - - - -.. py:class:: paddle.fluid.layers.LSTMCell(hidden_size, param_attr=None, bias_attr=None, gate_activation=None, activation=None, forget_bias=1.0, dtype="float32", name="LSTMCell") - -:api_attr: 声明式编程模式(静态图) - - - -长短期记忆单元(Long-Short Term Memory)。通过对 :code:`fluid.contrib.layers.rnn_impl.BasicLSTMUnit` 包装,来让它可以应用于RNNCell。 - -公式如下: - -.. math:: - i_{t} &= act_g \left ( W_{x_{i}}x_{t}+W_{h_{i}}h_{t-1}+b_{i} \right ) \\ - f_{t} &= act_g \left ( W_{x_{f}}x_{t}+W_{h_{f}}h_{t-1}+b_{f}+forget\_bias \right ) \\ - c_{t} &= f_{t}c_{t-1}+i_{t}act_h\left ( W_{x_{c}}x_{t} +W_{h_{c}}h_{t-1}+b_{c}\right ) \\ - o_{t} &= act_g\left ( W_{x_{o}}x_{t}+W_{h_{o}}h_{t-1}+b_{o} \right ) \\ - h_{t} &= o_{t}act_h \left ( c_{t} \right ) - -更多细节可以参考 `RECURRENT NEURAL NETWORK REGULARIZATION `_ - -参数: - - **hidden_size** (int) - LSTMCell中的隐藏层大小。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **gate_activation** (function,可选) - :math:`act_g` 的激活函数。 默认值为 :code:`fluid.layers.sigmoid`。 - - **activation** (function,可选) - :math:`act_c` 的激活函数。 默认值为 :code:`fluid.layers.tanh`。 - - **forget_bias** (float,可选) - 计算遗忘们时使用的遗忘偏置。默认值为 1.0。 - - **dtype** (string,可选) - 此Cell中使用的数据类型。 默认值为 `float32`。 - - **name** (string,可选) - 用于标识参数和偏差的名称域。 - -返回:LSTMCell类的实例对象。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid.layers as layers - cell = layers.LSTMCell(hidden_size=256) - - -.. py:method:: call(inputs, states) - -执行GRU的计算。 - -参数: - - **input** (Variable) - 输入,形状为 :math:`[batch\_size,input\_size]` 的tensor,对应于公式中的 :math:`x_t`。数据类型应为float32。 - - **states** (Variable) - 状态,包含两个tensor的列表,每个tensor形状为 :math:`[batch\_size,hidden\_size]`。 对应于公式中的 :math:`h_{t-1}, c_{t-1}`。数据类型应为float32。 - -返回:一个元组 :code:`(outputs, new_states)`,其中 :code:`outputs` 是形状为 :math:`[batch\_size,hidden\_size]` 的tensor,对应于公式中的 :math:`h_{t}`;:code:`new_states` 是一个列表,包含形状为 :math:`[batch_size,hidden_size]` 的两个tensor变量,它们对应于公式中的 :math:`h_{t}, c_{t}`。这些tensor的数据类型都与 :code:`state` 的数据类型相同。 - -返回类型:tuple - -.. py:method:: state_shape() - -LSTMCell的 :code:`state_shape` 是一个具有两个形状的列表::math:`[[hidden\_size], [hidden\_size]]` (batch大小为-1,自动插入到形状中)。 这两个形状分别对应于公式中的 :math:`h_{t-1}` and :math:`c_{t-1}`。 - -参数:无。 - -返回:LSTMCell的 :code:`state_shape` - -返回类型:list diff --git a/doc/paddle/api/paddle/fluid/dygraph/LambdaDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/LambdaDecay_cn.rst deleted file mode 100644 index 1b59cfbaf888fe971e6d39a72579848108d57094..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/LambdaDecay_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_dygraph_LambdaDecay: - -LambdaDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.LambdaDecay(learning_rate, lr_lambda) - -:api_attr: 命令式编程模式(动态图) - - -该API提供 lambda函数 设置学习率的功能。 ``lr_lambda`` 为一个lambda函数,其通过 ``epoch`` 计算出一个因子,该因子会乘以初始学习率。 - -算法可以描述为: - -.. code-block:: text - - learning_rate = 0.5 # init learning_rate - lr_lambda = lambda epoch: 0.95 ** epoch - - learning_rate = 0.5 # epoch 0 - learning_rate = 0.475 # epoch 1 - learning_rate = 0.45125 # epoch 2 - -参数: - - **learning_rate** (float|int) - 初始化的学习率。可以是Python的float或int。 - - **lr_lambda** (function) - ``lr_lambda`` 为一个lambda函数,其通过 ``epoch`` 计算出一个因子,该因子会乘以初始学习率。 - -返回: 无 - -**代码示例**: - - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - with fluid.dygraph.guard(): - x = np.random.uniform(-1, 1, [10, 10]).astype("float32") - linear = fluid.dygraph.Linear(10, 10) - input = fluid.dygraph.to_variable(x) - scheduler = fluid.dygraph.LambdaDecay(0.5, lr_lambda=lambda x: 0.95**x) - adam = fluid.optimizer.Adam(learning_rate = scheduler, parameter_list = linear.parameters()) - for epoch in range(6): - for batch_id in range(5): - out = linear(input) - loss = fluid.layers.reduce_mean(out) - adam.minimize(loss) - scheduler.epoch() - print("epoch:%d, current lr is %f" .format(epoch, adam.current_step_lr())) - # epoch:0, current lr is 0.5 - # epoch:1, current lr is 0.475 - # epoch:2, current lr is 0.45125 - -.. py:method:: epoch(epoch=None) -通过当前的 epoch 调整学习率,调整后的学习率将会在下一次调用 ``optimizer.minimize`` 时生效。 - -参数: - - **epoch** (int|float,可选) - 类型:int或float。指定当前的epoch数。默认:无,此时将会自动累计epoch数。 - -返回: - 无 - -**代码示例**: - - 参照上述示例代码。 diff --git a/doc/paddle/api/paddle/fluid/dygraph/LayerList_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/LayerList_cn.rst deleted file mode 100644 index 0dc2468dff0ca366300ee50558cab2c56df68aad..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/LayerList_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_dygraph_LayerList: - -LayerList -------------------------------- - -.. py:class:: paddle.fluid.dygraph.LayerList(sublayers=None) - - - - -LayerList用于保存子层列表,它包含的子层将被正确地注册和添加。列表中的子层可以像常规python列表一样被索引。 - -参数: - - **sublayers** (iterable,可选) - 要保存的子层。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - class MyLayer(fluid.Layer): - def __init__(self): - super(MyLayer, self).__init__() - self.linears = fluid.dygraph.LayerList( - [fluid.dygraph.Linear(10, 10) for i in range(10)]) - def forward(self, x): - # LayerList可以像iterable一样迭代,也可以使用int索引 - for i, l in enumerate(self.linears): - x = self.linears[i // 2](x) + l(x) - return x - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/Layer_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/Layer_cn.rst deleted file mode 100644 index ffce7959f30a98d46783db09b3c4f8b0a657777b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/Layer_cn.rst +++ /dev/null @@ -1,440 +0,0 @@ -.. _cn_api_fluid_dygraph_Layer: - -Layer -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Layer(name_scope=None, dtype=core.VarDesc.VarType.FP32) - - - - -基于OOD实现的动态图Layer,包含该Layer的参数、前序运行的结构等信息。 - -参数: - - **name_scope** (str,可选) - 为Layer内部参数命名而采用的名称前缀。如果前缀为“mylayer”,在一个类名为MyLayer的Layer中,参数名为“mylayer_0.w_n”,其中w是参数的名称,n为自动生成的具有唯一性的后缀。如果为None,前缀名将为小写的类名。默认值为None。 - - **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为 ``core.VarDesc.VarType.FP32`` 。 - -返回:无 - -.. py:method:: train() - -将此层及其所有子层设置为训练模式。这只会影响某些模块,如Dropout和BatchNorm。 - -返回:无 - -.. py:method:: eval() - -将此层及其所有子层设置为预测模式。这只会影响某些模块,如Dropout和BatchNorm。 - -返回:无 - -.. py:method:: full_name() - -Layer的全名。组成方式为: ``name_scope`` + “/” + MyLayer.__class__.__name__ 。 - -返回:Layer的全名 - -返回类型:str - -.. py:method:: register_forward_pre_hook(hook) - -为Layer注册一个 ``forward pre-hook`` 函数,该 ``hook`` 函数将会在 ``forward`` 函数调用之前被调用。 - -``hook`` 函数具有以下形式:它的 ``input`` 是 ``Layer`` 的 ``input`` ,并且可以返回一个元组或者单个修改值;如果返回单个修改值,则将值包装到一个元组中。用户可以使用该函数来查看或修改 ``Layer`` ``forward`` 函数的输入。 - -hook(Layer, input) -> None or modified input - -参数: - - **hook** (function) - 被注册为 ``forward pre-hook`` 的函数 - -返回:一个 ``HookRemoveHelper`` 类对象,可通过调用 ``hook_remove_helper.remove()`` 来删除注册的hook函数。 - -返回类型: ``HookRemoveHelper`` 类对象 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # forward_pre_hook函数修改了layer的输入:input = input * 2 - def forward_pre_hook(layer, input): - # 改变输入值 - input_return = (input[0] * 2) - return input_return - - with fluid.dygraph.guard(): - linear = fluid.Linear(13, 5, dtype="float32") - - # 注册hook - forward_pre_hook_handle = linear.register_forward_pre_hook(forward_pre_hook) - - value0 = np.arange(26).reshape(2, 13).astype("float32") - in0 = fluid.dygraph.to_variable(value0) - out0 = linear(in0) - - # 移除hook - forward_pre_hook_handle.remove() - - value1 = value0 * 2 - in1 = fluid.dygraph.to_variable(value1) - out1 = linear(in1) - - # hook改变了layer的输入(input = input * 2),所以out0等于out1 - assert (out0.numpy() == out1.numpy()).any() - -.. py:method:: register_forward_post_hook(hook) - -为Layer注册一个 ``forward post-hook`` 函数,该 ``hook`` 函数将会在 ``forward`` 函数调用之后被调用。 - -``hook`` 函数具有以下形式,它的 ``input`` 和 ``output`` 是 ``Layer`` 的 ``input`` 和 ``output`` 。用户可以用该函数来查看和修改 ``Layer`` ``forward`` 函数的输出。 - -hook(Layer, input, output) -> None or modified output - -参数: - - **hook** (function) - 被注册为 ``forward post-hook`` 的函数 - -返回:一个 ``HookRemoveHelper`` 类对象,可通过调用 ``hook_remove_helper.remove()`` 来删除注册的hook函数。 - -返回类型: ``HookRemoveHelper`` 类对象 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # forward_post_hook函数改变了layer的输出:output = output * 2 - def forward_post_hook(layer, input, output): - # 改变输出值 - return output * 2 - - with fluid.dygraph.guard(): - linear = fluid.Linear(13, 5, dtype="float32") - - # 注册hook - forward_post_hook_handle = linear.register_forward_post_hook(forward_post_hook) - - value1 = np.arange(26).reshape(2, 13).astype("float32") - in1 = fluid.dygraph.to_variable(value1) - - out0 = linear(in1) - - # remove the hook - forward_post_hook_handle.remove() - - out1 = linear(in1) - - # hook改变了layer的输出(output = output * 2),所以out0等于out1 * 2 - assert (out0.numpy() == (out1.numpy()) * 2).any() - -.. py:method:: create_parameter(shape, attr=None, dtype="float32", is_bias=False, default_initializer=None) - -为Layer创建参数。 - -参数: - - **shape** (list) - 参数的形状。列表中的数据类型必须为int。 - - **attr** (ParamAttr,可选) - 指定权重参数属性的对象,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。默认值为None。 - - **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为“float32”。 - - **is_bias** (bool, 可选) - 是否是偏置参数。默认值:False。 - - **default_initializer** (Initializer, 可选) - 默认的参数初始化方法。如果设置为None,则设置非bias参数的初始化方式为 :ref:`cn_api_fluid_initializer_XavierInitializer` ,设置bias参数的初始化方式为 :ref:`cn_api_fluid_initializer_ConstantInitializer` 。默认值:None。 - -返回:创建的参数变量 - -返回类型: :ref:`cn_api_fluid_Variable` - -.. py:method:: create_variable(name=None, persistable=None, dtype=None, type=VarType.LOD_TENSOR) - -为Layer创建变量。 - -参数: - - **name** (str, 可选) - 变量名。默认值:None。 - - **persistable** (bool, 可选) - 是否为持久性变量,后续会被移出。默认值:None。 - - **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为 ``core.VarDesc.VarType.FP32`` 。 - - **type** (core.VarDesc.VarType, 可选) - 变量类型,该参数不需要用户设置。默认值:core.VarDesc.VarType.LOD_TENSOR。 - -返回:创建的 ``Tensor`` - -返回类型: :ref:`cn_api_fluid_Variable` - -.. py:method:: parameters(include_sublayers=True) - -返回一个由当前层及其子层的所有参数组成的列表。 - -参数: - - **include_sublayers** (bool, 可选) - 是否返回子层的参数。如果为True,返回的列表中包含子层的参数。默认值:True。 - -返回:一个由当前层及其子层的所有参数组成的列表,列表中的元素类型为Parameter(Variable)。 - -返回类型:list - -.. py:method:: sublayers(include_sublayers=True) - -返回一个由所有子层组成的列表。 - -参数: - - **include_sublayers** (bool, 可选) - 是否返回子层中各个子层。如果为True,则包括子层中的各个子层。默认值:True。 - -返回: 一个由所有子层组成的列表,列表中的元素类型为Layer。 - -返回类型:list - -.. py:method:: clear_gradients() - -清除该层所有参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - adam = fluid.optimizer.Adam(learning_rate=0.01, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - adam.minimize(out) - linear.clear_gradients() - - -.. py:method:: named_parameters(prefix='', include_sublayers=True) - -返回层中所有参数的迭代器,生成名称和参数的元组。 - -参数: - - **prefix** (str, 可选) - 在所有参数名称前加的前缀。默认值:''。 - - **include_sublayers** (bool, 可选) - 是否返回子层的参数。如果为True,返回的列表中包含子层的参数。默认值:True。 - -返回:产出名称和参数的元组的迭代器。 - -返回类型:iterator - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - fc1 = fluid.Linear(10, 3) - fc2 = fluid.Linear(3, 10, bias_attr=False) - model = fluid.dygraph.Sequential(fc1, fc2) - for name, param in model.named_parameters(): - print(name, param) - -.. py:method:: named_sublayers(prefix='', include_sublayers=True, include_self=False, layers_set=None) - -返回层中所有子层上的迭代器,生成名称和子层的元组。重复的子层只产生一次。 - -参数: - - **prefix** (str, 可选) - 在所有参数名称前加的前缀。默认值:''。 - - **include_sublayers** (bool, 可选) - 是否返回子层中各个子层。如果为True,则包括子层中的各个子层。默认值:True。 - - **include_self** (bool, 可选) - 是否包含该层自身。默认值:False。 - - **layers_set** (set, 可选): 记录重复子层的集合。默认值:None。 - -返回:产出名称和子层的元组的迭代器。 - -返回类型:iterator - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - fc1 = fluid.Linear(10, 3) - fc2 = fluid.Linear(3, 10, bias_attr=False) - model = fluid.dygraph.Sequential(fc1, fc2) - for prefix, layer in model.named_sublayers(): - print(prefix, layer) - -.. py:method:: register_buffer(name, variable, persistable=True) - -将一个Variable注册为buffer。 - -buffer是一个非参数类型的变量,不会被优化器更新,但在评估或预测阶段可能是必要的状态变量。比如 ``BatchNorm`` 中的均值和方差。 - -注册的buffer默认是可持久性的,会被保存到 ``state_dict`` 中。如果指定 ``persistable`` 参数为False,则会注册一个非持久性的buffer,即不会同步和保存到 ``state_dict`` 中。 - -参数: - - **name** (str) - 注册buffer的名字。可以通过此名字来访问已注册的buffer。 - - **variable** (Variable) - 将被注册为buffer的变量。 - - **persistable** (bool, 可选) - 注册的buffer是否需要可持久性地保存到 ``state_dict`` 中。 - -返回:None - -返回类型:None - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.Linear(10, 3) - value = np.array([0]).astype("float32") - buffer = fluid.dygraph.to_variable(value) - linear.register_buffer("buf_name", buffer, persistable=True) - - # get the buffer by attribute. - print(linear.buf_name) - -.. py:method:: buffers(include_sublayers=True) - -返回一个由当前层及其子层的所有buffers组成的列表。 - -参数: - - **include_sublayers** (bool, 可选) - 是否返回子层的buffers。如果为True,返回的列表中包含子层的buffers。默认值:True。 - -返回:一个由当前层及其子层的所有buffers组成的列表,列表中的元素类型为Variable。 - -返回类型:list - -.. py:method:: named_buffers(prefix='', include_sublayers=True) - -返回层中所有buffers的迭代器,生成名称和buffer的元组。 - -参数: - - **prefix** (str, 可选) - 在所有buffer名称前加的前缀。默认值:''。 - - **include_sublayers** (bool, 可选) - 是否返回子层的buffers。如果为True,返回的列表中包含子层的buffers。默认值:True。 - -返回:产出名称和buffer的元组的迭代器。 - -返回类型:iterator - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - fc1 = fluid.Linear(10, 3) - buffer1 = fluid.dygraph.to_variable(np.array([0]).astype("float32")) - # register a variable as buffer by specific `persistable` - fc1.register_buffer("buf_name_1", buffer1, persistable=True) - - fc2 = fluid.Linear(3, 10) - buffer2 = fluid.dygraph.to_variable(np.array([1]).astype("float32")) - # register a buffer by assigning an attribute with Variable. - # The `persistable` can only be False by this way. - fc2.buf_name_2 = buffer2 - - model = fluid.dygraph.Sequential(fc1, fc2) - - # get all named buffers - for name, buffer in model.named_buffers(): - print(name, buffer) - -.. py:method:: forward(*inputs, **kwargs) - -定义每次调用时执行的计算。应该被所有子类覆盖。 - -参数: - - **\*inputs** (tuple) - 解包后的tuple参数。 - - **\*\*kwargs** (dict) - 解包后的dict参数。 - -.. py:method:: add_sublayer(name, sublayer) - -添加子层实例。可以通过self.name访问该sublayer。 - -参数: - - **name** (str) - 子层名。 - - **sublayer** (Layer) - Layer实例。 - -返回:添加的子层 - -返回类型:Layer - -.. py:method:: add_parameter(name, parameter) - -添加参数实例。可以通过self.name访问该parameter。 - -参数: - - **name** (str) - 参数名。 - - **parameter** (Parameter) - Parameter实例。 - -返回:传入的参数实例 - -返回类型:Parameter( :ref:`cn_api_fluid_Variable` ) - -.. py:method:: state_dict(destination=None, include_sublayers=True) - -获取当前层及其子层的所有参数和可持久性buffers。并将所有参数和buffers存放在dict结构中。 - -参数: - - **destination** (dict, 可选) - 如果提供 ``destination`` ,则所有参数和可持久性buffers都将存放在 ``destination`` 中。 默认值:None。 - - **include_sublayers** (bool, 可选) - 如果设置为True,则包括子层的参数和buffers。默认值:True。 - -返回:包含所有参数和可持久行buffers的dict - -返回类型:dict - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - state_dict = emb.state_dict() - fluid.save_dygraph(state_dict, "paddle_dy") - -.. py:method:: set_dict(stat_dict, include_sublayers=True) - -根据传入的 ``stat_dict`` 设置参数和可持久性buffers。 所有参数和buffers将由 ``stat_dict`` 中的 ``Tensor`` 设置。 - -参数: - - **state_dict** (dict) - 包含所有参数和可持久性buffers的dict。 - - **include_sublayers** (bool, 可选) - 如果设置为True,则还包括子层的参数和buffers。 默认值:True。 - -返回:None - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - state_dict = emb.state_dict() - fluid.save_dygraph(state_dict, "paddle_dy") - para_state_dict, _ = fluid.load_dygraph("paddle_dy") - emb.set_dict(para_state_dict) - -.. py:method:: load_dict(stat_dict, include_sublayers=True) - -.. warning:: - 该函数将被弃用。请使用set_dict函数。 - -根据传入的 ``stat_dict`` 设置参数和可持久性buffers。 所有参数和buffers将由 ``stat_dict`` 中的 ``Tensor`` 设置。 - -参数: - - **state_dict** (dict) - 包含所有参数和可持久性buffers的dict。 - - **include_sublayers** (bool, 可选) - 如果设置为True,则还包括子层的参数和buffers。 默认值:True。 - -返回:None - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - state_dict = emb.state_dict() - fluid.save_dygraph(state_dict, "paddle_dy") - para_state_dict, _ = fluid.load_dygraph("paddle_dy") - emb.load_dict(para_state_dict) - diff --git a/doc/paddle/api/paddle/fluid/dygraph/MultiStepDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/MultiStepDecay_cn.rst deleted file mode 100644 index 896f90066ca8463f34bee8005b0f46bd4fd68a25..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/MultiStepDecay_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_dygraph_MultiStepDecay: - -MultiStepDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.MultiStepDecay(learning_rate, milestones, decay_rate=0.1) - -:api_attr: 命令式编程模式(动态图) - - -该接口提供 ``MultiStep`` 衰减学习率的功能。 - -算法可以描述为: - -.. code-block:: text - - learning_rate = 0.5 - milestones = [30, 50] - decay_rate = 0.1 - if epoch < 30: - learning_rate = 0.5 - elif epoch < 50: - learning_rate = 0.05 - else: - learning_rate = 0.005 - -参数: - - **learning_rate** (float|int) - 初始化的学习率。可以是Python的float或int。 - - **milestones** (tuple|list) - 列表或元组。必须是递增的。 - - **decay_rate** (float, optional) - 学习率的衰减率。 ``new_lr = origin_lr * decay_rate`` 。其值应该小于1.0。默认:0.1。 - -返回: 无 - -**代码示例**: - - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - with fluid.dygraph.guard(): - x = np.random.uniform(-1, 1, [10, 10]).astype("float32") - linear = fluid.dygraph.Linear(10, 10) - input = fluid.dygraph.to_variable(x) - scheduler = fluid.dygraph.MultiStepDecay(0.5, milestones=[3, 5]) - adam = fluid.optimizer.Adam(learning_rate = scheduler, parameter_list = linear.parameters()) - for epoch in range(6): - for batch_id in range(5): - out = linear(input) - loss = fluid.layers.reduce_mean(out) - adam.minimize(loss) - scheduler.epoch() - print("epoch:{}, current lr is {}" .format(epoch, adam.current_step_lr())) - # epoch:0, current lr is 0.5 - # epoch:1, current lr is 0.5 - # epoch:2, current lr is 0.5 - # epoch:3, current lr is 0.05 - # epoch:4, current lr is 0.05 - # epoch:5, current lr is 0.005 - -.. py:method:: epoch(epoch=None) -通过当前的 epoch 调整学习率,调整后的学习率将会在下一次调用 ``optimizer.minimize`` 时生效。 - -参数: - - **epoch** (int|float,可选) - 类型:int或float。指定当前的epoch数。默认:无,此时将会自动累计epoch数。 - -返回: - 无 - -**代码示例**: - - 参照上述示例代码。 diff --git a/doc/paddle/api/paddle/fluid/dygraph/NCE_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/NCE_cn.rst deleted file mode 100644 index 45302572ed5bfb377763073775d19cbed4310079..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/NCE_cn.rst +++ /dev/null @@ -1,82 +0,0 @@ -.. _cn_api_fluid_dygraph_NCE: - -NCE -------------------------------- - -.. py:class:: paddle.fluid.dygraph.NCE(num_total_classes, dim, param_attr=None, bias_attr=None, num_neg_samples=None, sampler='uniform', custom_dist=None, seed=0, is_sparse=False, dtype="float32") - - - - -该接口用于构建 ``NCE`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了 ``NCE`` 损失函数的功能,其默认使用均匀分布进行抽样,计算并返回噪音对比估计( noise-contrastive estimation training loss)。更多详情请参考:`Noise-contrastive estimation: A new estimation principle for unnormalized statistical models `_ - -参数: - - **num_total_classes** (int) - 所有样本中的类别的总数。 - - **dim** (int) - 输入的维度(一般为词嵌入的维度)。 - - **sample_weight** (Variable, 可选) - 维度为\[batch_size, 1\],存储每个样本的权重。每个样本的默认权重为1.0。默认值:None。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **num_neg_samples** (int, 可选) - 负样本的数量。默认值:10。 - - **sampler** (str, 可选) – 指明采样器的类型,用于从负类别中进行采样。可以是 ``uniform`` 、 ``log_uniform`` 或 ``custom_dist`` 。 默认值: ``uniform`` 。 - - **custom_dist** (float[], 可选) – float[] 类型的数据,并且它的长度为 ``num_total_classes`` 。如果采样器类别为 ``custom_dist`` ,则使用此参数。custom_dist\[i\]是第i个类别被取样的概率。默认值:None - - **seed** (int, 可选) – 采样器使用的随机种子。默认值:0。 - - **is_sparse** (bool, 可选) – 指明是否使用稀疏更新,如果为True, :math:`weight@GRAD` 和 :math:`bias@GRAD` 会变为 SelectedRows。默认值:False。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - -返回:无 - -**代码示例** - -.. code-block:: python - - - import numpy as np - import paddle.fluid as fluid - - window_size = 5 - dict_size = 20 - label_word = int(window_size // 2) + 1 - inp_word = np.array([[1], [2], [3], [4], [5]]).astype('int64') - nid_freq_arr = np.random.dirichlet(np.ones(20) * 1000).astype('float32') - - with fluid.dygraph.guard(): - words = [] - for i in range(window_size): - words.append(fluid.dygraph.base.to_variable(inp_word[i])) - - emb = fluid.Embedding( - size=[dict_size, 32], - param_attr='emb.w', - is_sparse=False) - - embs3 = [] - for i in range(window_size): - if i == label_word: - continue - - emb_rlt = emb(words[i]) - embs3.append(emb_rlt) - - embs3 = fluid.layers.concat(input=embs3, axis=1) - nce = fluid.NCE( - num_total_classes=dict_size, - dim=embs3.shape[1], - num_neg_samples=2, - sampler="custom_dist", - custom_dist=nid_freq_arr.tolist(), - seed=1, - param_attr='nce.w', - bias_attr='nce.b') - - wl = fluid.layers.unsqueeze(words[label_word], axes=[0]) - nce_loss3 = nce(embs3, wl) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` diff --git a/doc/paddle/api/paddle/fluid/dygraph/PRelu_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/PRelu_cn.rst deleted file mode 100644 index 8252bee477151d00696254cbe2ae4ea8dda01261..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/PRelu_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_dygraph_PRelu: - -PRelu -------------------------------- - -.. py:class:: paddle.fluid.dygraph.PRelu(mode, input_shape=None, param_attr=None, dtype="float32") - - - - -该接口用于构建 ``PRelu`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了 ``PRelu`` 激活函数的三种激活方式。 - -计算公式如下: - -.. math:: - y = max(0, x) + \alpha min(0, x) - - -参数: - - **mode** (str) - 权重共享模式。共提供三种激活方式: - - .. code-block:: text - - all:所有元素使用同一个alpha值 - channel:在同一个通道中的元素使用同一个alpha值 - element:每一个元素有一个独立的alpha值 - - - **channel** (int,可选) - 通道数。该参数在mode参数为"channel"时是必须的。默认为None。 - - **input_shape** (int 或 list 或 tuple,可选) - 输入的维度。该参数在mode参数为"element"时是必须的。默认为None。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - -返回:无 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - - inp_np = np.ones([5, 200, 100, 100]).astype('float32') - with fluid.dygraph.guard(): - inp_np = to_variable(inp_np) - prelu0 = fluid.PRelu( - mode='all', - param_attr=fluid.ParamAttr(initializer=fluid.initializer.Constant(1.0))) - dy_rlt0 = prelu0(inp_np) - prelu1 = fluid.PRelu( - mode='channel', - channel=200, - param_attr=fluid.ParamAttr(initializer=fluid.initializer.Constant(1.0))) - dy_rlt1 = prelu1(inp_np) - prelu2 = fluid.PRelu( - mode='element', - input_shape=inp_np.shape, - param_attr=fluid.ParamAttr(initializer=fluid.initializer.Constant(1.0))) - dy_rlt2 = prelu2(inp_np) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - diff --git a/doc/paddle/api/paddle/fluid/dygraph/ParameterList_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/ParameterList_cn.rst deleted file mode 100644 index 82ca04fef6bde4a149153642c29b0e449931da9e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/ParameterList_cn.rst +++ /dev/null @@ -1,62 +0,0 @@ -.. _cn_api_fluid_dygraph_ParameterList: - -ParameterList -------------------------------- - -.. py:class:: paddle.fluid.dygraph.ParameterList(parameters=None) - - - - -参数列表容器。此容器的行为类似于Python列表,但它包含的参数将被正确地注册和添加。 - -参数: - - **parameters** (iterable,可选) - 可迭代的Parameters。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - class MyLayer(fluid.Layer): - def __init__(self, num_stacked_param): - super(MyLayer, self).__init__() - # 使用可迭代的 Parameters 创建 ParameterList - self.params = fluid.dygraph.ParameterList( - [fluid.layers.create_parameter( - shape=[2, 2], dtype='float32')] * num_stacked_param) - def forward(self, x): - for i, p in enumerate(self.params): - tmp = self._helper.create_variable_for_type_inference('float32') - self._helper.append_op( - type="mul", - inputs={"X": x, - "Y": p}, - outputs={"Out": tmp}, - attrs={"x_num_col_dims": 1, - "y_num_col_dims": 1}) - x = tmp - return x - - data_np = np.random.uniform(-1, 1, [5, 2]).astype('float32') - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(data_np) - num_stacked_param = 4 - model = MyLayer(num_stacked_param) - print(len(model.params)) # 4 - res = model(x) - print(res.shape) # [5, 2] - replaced_param = fluid.layers.create_parameter(shape=[2, 3], dtype='float32') - model.params[num_stacked_param - 1] = replaced_param # 替换最后一个参数 - res = model(x) - print(res.shape) # [5, 3] - model.params.append(fluid.layers.create_parameter(shape=[3, 4], dtype='float32')) # 添加参数 - print(len(model.params)) # 5 - res = model(x) - print(res.shape) # [5, 4] - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/ReduceLROnPlateau_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/ReduceLROnPlateau_cn.rst deleted file mode 100644 index b0a0b75f7b31244421f02cab719a342461a9f7c1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/ReduceLROnPlateau_cn.rst +++ /dev/null @@ -1,89 +0,0 @@ -.. _cn_api_fluid_dygraph_ReduceLROnPlateau: - -ReduceLROnPlateau -------------------------------- - -**注意:该API仅支持【动态图】模式** - -.. py:class:: paddle.fluid.dygraph.ReduceLROnPlateau(learning_rate, mode='min', decay_rate=0.1, patience=10, verbose=False, threshold=1e-4, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-8, dtype='float32') - -该API为 ``loss`` 自适应的学习率衰减策略。默认情况下,当 ``loss`` 停止下降时,降低学习率(如果将 ``mode`` 设置为 `'max'` ,此时判断逻辑相反, ``loss`` 停止上升时降低学习率)。其思想是:一旦模型表现不再提升,将学习率降低2-10倍对模型的训练往往有益。 - -``loss`` 是传入到该类方法 ``step`` 中的参数,其必须是shape为[1]的1-D Tensor。 如果 ``loss`` 停止下降(``mode`` 为 `min` 时)超过 ``patience`` 个epoch,学习率将会减小为 -`learning_rate * decay_rate` 。 - -此外,每降低一次学习率后,将会进入一个时长为 ``cooldown`` 个epoch的冷静期,在冷静期内,将不会监控 ``loss`` 的变化情况,也不会衰减。 -在冷静期之后,会继续监控 ``loss`` 的上升或下降。 - -参数: - - **learning_rate** (Variable|float|int) - 初始学习率。其类型可以是Python的float类型,如果输入int类型则会被转为float类型。其也可以是shape为[1]的 - 1-D Tensor,且相应数据类型必须为 "float32" 或 "float64" 。 - - **mode** (str,可选) - `'min'` 和 `'max'` 之一。通常情况下,为 `'min'` ,此时当 ``loss`` 停止下降时学习率将减小。默认:`'min'` 。 - (注意:仅在特殊用法时,可以将其设置为 `'max'` ,此时判断逻辑相反, ``loss`` 停止上升学习率才减小) - - **decay_rate** (float,可选) - 学习率衰减的比例。`new_lr = origin_lr * decay_rate` ,它是值小于1.0的float型数字,默认: 0.1。 - - **patience** (int,可选) - 当 ``loss`` 连续 ``patience`` 个epoch没有下降(mode: 'min')或上升(mode: 'max')时,学习率才会减小。默认:10。 - - **verbose** (bool,可选) - 如果为 ``True`` , 会在每次更新optimizer中的learning_rate时,打印信息。默认:``False`` 。 - - **threshold** (float,可选) - ``threshold`` 和 ``threshold_mode`` 两个参数将会决定 ``loss`` 最小变化的阈值。小于该阈值的变化 - 将会被忽视。默认:1e-4。 - - **threshold_mode** (str,可选) - `'rel'` 和 `'abs'` 之一。在 `'rel'` 模式下, ``loss`` 最小变化的阈值是 `last_loss * threshold` , - 其中 ``last_loss`` 是 ``loss`` 在上个epoch的值。在 `'abs'` 模式下,``loss`` 最小变化的阈值是 `threshold` 。 默认:`'rel'`。 - - **cooldown** (int,可选) - 在学习速率每次减小之后,会进入时长为 ``cooldown`` 个epoch的冷静期。默认:0。 - - **min_lr** (float,可选) - 最小的学习率。减小后的学习率最低下界限。默认:0。 - - **eps** (float,可选) - 如果新旧学习率间的差异小于 ``eps`` ,则不会更新。默认值:1e-8。 - - **dtype** (str,可选) – 学习率值的数据类型,可以为"float32", "float64"。默认:"float32"。 - -返回: ``loss`` 自适应的学习率 - -返回类型:Variable - -**代码示例**: - - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - x = np.random.uniform(-1, 1, [10, 10]).astype("float32") - linear = fluid.dygraph.Linear(10, 10) - input = fluid.dygraph.to_variable(x) - - adam = fluid.optimizer.Adam( - learning_rate = fluid.dygraph.ReduceLROnPlateau( - learning_rate = 1.0, - decay_rate = 0.5, - patience = 5, - verbose = True, - cooldown = 3), - parameter_list = linear.parameters()) - - for epoch in range(10): - total_loss = 0 - for bath_id in range(5): - out = linear(input) - loss = fluid.layers.reduce_mean(out) - total_loss += loss - adam.minimize(loss) - - avg_loss = total_loss/5 - - # 根据传入total_loss,调整学习率 - reduce_lr.step(avg_loss) - lr = adam.current_step_lr() - print("current avg_loss is %s, current lr is %s" % (avg_loss.numpy()[0], lr)) - - - -.. py:method:: step(loss) -需要在每个epoch调用该方法,其根据传入的 ``loss`` 调整optimizer中的学习率,调整后的学习率将会在下一次调用 ``optimizer.minimize`` 时生效。 - -参数: - - **loss** (Variable) - 类型:Variable,shape为[1]的1-D Tensor。将被用来判断是否需要降低学习率。如果 ``loss`` 连续 ``patience`` 个epochs没有下降, - 将会降低学习率。 - -返回: - 无 - -**代码示例**: - - 参照其类中的说明。 diff --git a/doc/paddle/api/paddle/fluid/dygraph/Sequential_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/Sequential_cn.rst deleted file mode 100644 index b39b4a556aae0612cff2ea4d33a7fbc0af10107a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/Sequential_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_dygraph_Sequential: - -Sequential -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Sequential(*layers) - - - - -顺序容器。子Layer将按构造函数参数的顺序添加到此容器中。传递给构造函数的参数可以Layers或可迭代的name Layer元组。 - -参数: - - **layers** (tuple) - Layers或可迭代的name Layer对。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = np.random.uniform(-1, 1, [30, 10]).astype('float32') - with fluid.dygraph.guard(): - data = fluid.dygraph.to_variable(data) - # 使用 iterable Layers 创建 Sequential 容器 - model1 = fluid.dygraph.Sequential( - fluid.Linear(10, 1), fluid.Linear(1, 2) - ) - model1[0] # 访问第一个子层 - res1 = model1(data) # 顺序执行 - # 使用 iterable name Layer 对创建 Sequential 容器 - model2 = fluid.dygraph.Sequential( - ('l1', fluid.Linear(10, 2)), - ('l2', fluid.Linear(2, 3)) - ) - model2['l1'] # 访问 l1 子层 - model2.add_sublayer('l3', fluid.Linear(3, 3)) # 添加子层 - res2 = model2(data) # 顺序执行 - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/StepDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/StepDecay_cn.rst deleted file mode 100644 index 0016cf85752bff268a481a389f37f69e964414b6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/StepDecay_cn.rst +++ /dev/null @@ -1,73 +0,0 @@ -.. _cn_api_fluid_dygraph_StepDecay: - -StepDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.StepDecay(learning_rate, step_size, decay_rate=0.1) - -:api_attr: 命令式编程模式(动态图) - - -该接口提供 ``step_size`` 衰减学习率的功能,每经过 ``step_size`` 个 ``epoch`` 时会通过 ``decay_rate`` 衰减一次学习率。 - -算法可以描述为: - -.. code-block:: text - - learning_rate = 0.5 - step_size = 30 - decay_rate = 0.1 - learning_rate = 0.5 if epoch < 30 - learning_rate = 0.05 if 30 <= epoch < 60 - learning_rate = 0.005 if 60 <= epoch < 90 - ... - -参数: - - **learning_rate** (float|int) - 初始化的学习率。可以是Python的float或int。 - - **step_size** (int) - 学习率每衰减一次的间隔。 - - **decay_rate** (float, optional) - 学习率的衰减率。 ``new_lr = origin_lr * decay_rate`` 。其值应该小于1.0。默认:0.1。 - -返回: 无 - -**代码示例**: - - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - with fluid.dygraph.guard(): - x = np.random.uniform(-1, 1, [10, 10]).astype("float32") - linear = fluid.dygraph.Linear(10, 10) - input = fluid.dygraph.to_variable(x) - scheduler = fluid.dygraph.StepDecay(0.5, step_size=3) - adam = fluid.optimizer.Adam(learning_rate = scheduler, parameter_list = linear.parameters()) - for epoch in range(9): - for batch_id in range(5): - out = linear(input) - loss = fluid.layers.reduce_mean(out) - adam.minimize(loss) - scheduler.epoch() - print("epoch:{}, current lr is {}" .format(epoch, adam.current_step_lr())) - # epoch:0, current lr is 0.5 - # epoch:1, current lr is 0.5 - # epoch:2, current lr is 0.5 - # epoch:3, current lr is 0.05 - # epoch:4, current lr is 0.05 - # epoch:5, current lr is 0.05 - # epoch:6, current lr is 0.005 - # epoch:7, current lr is 0.005 - # epoch:8, current lr is 0.005 - -.. py:method:: epoch(epoch=None) -通过当前的 epoch 调整学习率,调整后的学习率将会在下一次调用 ``optimizer.minimize`` 时生效。 - -参数: - - **epoch** (int|float,可选) - 类型:int或float。指定当前的epoch数。默认:无,此时将会自动累计epoch数。 - -返回: - 无 - -**代码示例**: - - 参照上述示例代码。 diff --git a/doc/paddle/api/paddle/fluid/dygraph/TreeConv_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/TreeConv_cn.rst deleted file mode 100644 index 699a3f71ec5feb18f3da4d86f0c8df7566cb5c82..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/TreeConv_cn.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _cn_api_fluid_dygraph_TreeConv: - -TreeConv -------------------------------- - -.. py:class:: paddle.fluid.dygraph.TreeConv(feature_size, output_size, num_filters=1, max_depth=2, act='tanh', param_attr=None, bias_attr=None, name=None, dtype="float32") - - - - -该接口用于构建 ``TreeConv`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个基于树结构的卷积(Tree-Based Convolution)运算。基于树的卷积是基于树的卷积神经网络(TBCNN,Tree-Based Convolution Neural Network)的一部分,它用于对树结构进行分类,例如抽象语法树。 Tree-Based Convolution提出了一种称为连续二叉树的数据结构,它将多路(multiway)树视为二叉树。详情请参考: `基于树的卷积论文 `_ 。 - - -参数: - - **feature_size** (int) – nodes_vector的shape的最后一维的维度。 - - **output_size** (int) – 输出特征宽度。 - - **num_filters** (int, 可选) – 滤波器的数量,默认值为1。 - - **max_depth** (int, 可选) – 滤波器的最大深度,默认值为2。 - - **act** (str, 可选) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **param_attr** (ParamAttr, 可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **name** (str, 可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - with fluid.dygraph.guard(): - nodes_vector = numpy.random.random((1, 10, 5)).astype('float32') - edge_set = numpy.random.random((1, 9, 2)).astype('int32') - treeConv = fluid.dygraph.nn.TreeConv( - feature_size=5, output_size=6, num_filters=1, max_depth=2) - ret = treeConv(fluid.dygraph.base.to_variable(nodes_vector), fluid.dygraph.base.to_variable(edge_set)) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - diff --git a/doc/paddle/api/paddle/fluid/dygraph/backward_strategy/BackwardStrategy_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/backward_strategy/BackwardStrategy_cn.rst deleted file mode 100644 index e5bee2a137388d489c2a8de4e31ff6e4ace4b006..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/backward_strategy/BackwardStrategy_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_dygraph_BackwardStrategy: - -BackwardStrategy -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.BackwardStrategy - -:api_attr: 命令式编程模式(动态图) - - - -**注意:该API只在动态图下生效** - -BackwardStrategy是描述动态图反向执行的策略,主要功能是定义动态图反向执行时的不同策略 - -**属性:** - -.. py:attribute:: sort_sum_gradient - -是否按照前向执行的逆序加和多个梯度,例如当 x_var( :ref:`api_guide_Variable` )作为多个OP(这里以 :ref:`cn_api_fluid_layers_scale` 为例)的输入时,其产生的梯度是否按照前向书写时的 -逆序加和,默认为False - - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - x = np.ones([2, 2], np.float32) - with fluid.dygraph.guard(): - x_var = fluid.dygraph.to_variable(x) - sums_inputs = [] - # 这里x_var将作为多个输入scale的输入 - for _ in range(10): - sums_inputs.append(fluid.layers.scale(x_var)) - ret2 = fluid.layers.sums(sums_inputs) - loss2 = fluid.layers.reduce_sum(ret2) - backward_strategy = fluid.dygraph.BackwardStrategy() - backward_strategy.sort_sum_gradient = True - loss2.backward(backward_strategy) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/base/enabled_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/base/enabled_cn.rst deleted file mode 100644 index a127f528edd20149f51f9b0ba6954aa0a2bfe661..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/base/enabled_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_imperative_cn_enabled: - -enabled -------------------------------- -:doc_source: paddle.fluid.dygraph.base.enabled - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/base/guard_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/base/guard_cn.rst deleted file mode 100644 index 7c457eb15118baf6823be9e404fc2fa053b6a2f6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/base/guard_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_unique_name_guard: - -guard -------------------------------- - -.. py:function:: paddle.fluid.unique_name.guard(new_generator=None) - - - - -该接口用于更改命名空间,与with语句一起使用。使用后,在with语句的上下文中使用新的命名空间,调用generate接口时相同前缀的名称将从0开始重新编号。 - -参数: - - **new_generator** (str|bytes, 可选) - 新命名空间的名称。请注意,Python2中的str在Python3中被区分为str和bytes两种,因此这里有两种类型。 缺省值为None,若不为None,new_generator将作为前缀添加到generate接口产生的唯一名称中。 - -返回: 无。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - with fluid.unique_name.guard(): - name_1 = fluid.unique_name.generate('fc') - with fluid.unique_name.guard(): - name_2 = fluid.unique_name.generate('fc') - print(name_1, name_2) # fc_0, fc_0 - - with fluid.unique_name.guard('A'): - name_1 = fluid.unique_name.generate('fc') - with fluid.unique_name.guard('B'): - name_2 = fluid.unique_name.generate('fc') - print(name_1, name_2) # Afc_0, Bfc_0 - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/checkpoint/load_dygraph_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/checkpoint/load_dygraph_cn.rst deleted file mode 100644 index 39b18d7830eaafa66c6a99a770cf8e85b8fc32b5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/checkpoint/load_dygraph_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_fluid_dygraph_load_dygraph: - -load_dygraph -------------------------------- - - -.. py:function:: paddle.fluid.dygraph.load_dygraph(model_path) - -:api_attr: 命令式编程模式(动态图) - - - -该接口尝试从磁盘中加载参数或优化器的 ``dict`` 。 - -该接口会同时加载 ``model_path + ".pdparams"`` 和 ``model_path + ".pdopt"`` 中的内容。 - -参数: - - **model_path** (str) – 保存state_dict的文件前缀。该路径不应该包括后缀 ``.pdparams`` 或 ``.pdopt``。 - - -返回: 两个 ``dict`` ,即从文件中恢复的参数 ``dict`` 和优化器 ``dict`` - -- para_dict: 从文件中恢复的参数 ``dict`` -- opti_dict: 从文件中恢复的优化器 ``dict`` - -返回类型: tuple(dict, dict) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - state_dict = emb.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") - adam = fluid.optimizer.Adam( learning_rate = fluid.layers.noam_decay( 100, 10000) , - parameter_list = emb.parameters() ) - state_dict = adam.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") - - para_state_dict, opti_state_dict = fluid.load_dygraph( "paddle_dy") - - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/checkpoint/save_dygraph_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/checkpoint/save_dygraph_cn.rst deleted file mode 100644 index e830d9c8d071908716d1439efbed07cca13a456e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/checkpoint/save_dygraph_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_dygraph_save_dygraph: - -save_dygraph -------------------------------- - - -.. py:function:: paddle.fluid.dygraph.save_dygraph(state_dict, model_path) - -:api_attr: 命令式编程模式(动态图) - - - -该接口将传入的参数或优化器的 ``dict`` 保存到磁盘上。 - -``state_dict`` 是通过 :ref:`cn_api_fluid_dygraph_Layer` 的 ``state_dict()`` 方法得到的。 - -注: ``model_path`` 不可以是一个目录。 - -该接口会根据 ``state_dict`` 的内容,自动给 ``model_path`` 添加 ``.pdparams`` 或者 ``.pdopt`` 后缀, -生成 ``model_path + ".pdparams"`` 或者 ``model_path + ".pdopt"`` 文件。 - -参数: - - **state_dict** (dict of Parameters) – 要保存的模型参数的 ``dict`` 。 - - **model_path** (str) – 保存state_dict的文件前缀。格式为 ``目录名称/文件前缀``。如果文件前缀为空字符串,会引发异常。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - - state_dict = emb.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") # 会保存为 paddle_dy.pdparams - - adam = fluid.optimizer.Adam( learning_rate = fluid.layers.noam_decay( 100, 10000), - parameter_list = emb.parameters() ) - - state_dict = adam.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") # 会保存为 paddle_dy.pdopt \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/dygraph/declarative_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/declarative_cn.rst deleted file mode 100644 index 91a1c40516b91d21fa735f5b18b17fafd5d5dba6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/declarative_cn.rst +++ /dev/null @@ -1,28 +0,0 @@ -======================= -paddle.declarative -======================= - -.. toctree:: - :maxdepth: 1 - - declarative_cn/batch_norm_cn.rst - declarative_cn/bilinear_tensor_product_cn.rst - declarative_cn/conv2d_cn.rst - declarative_cn/conv2d_transpose_cn.rst - declarative_cn/conv3d_cn.rst - declarative_cn/conv3d_transpose_cn.rst - declarative_cn/create_parameter_cn.rst - declarative_cn/crf_decoding_cn.rst - declarative_cn/data_norm_cn.rst - declarative_cn/deformable_conv_cn.rst - declarative_cn/embedding_cn.rst - declarative_cn/fc_cn.rst - declarative_cn/group_norm_cn.rst - declarative_cn/hsigmoid_cn.rst - declarative_cn/instance_norm_cn.rst - declarative_cn/layer_norm_cn.rst - declarative_cn/multi_box_head_cn.rst - declarative_cn/nce_cn.rst - declarative_cn/prelu_cn.rst - declarative_cn/row_conv_cn.rst - declarative_cn/spectral_norm_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/disable_dygraph_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/disable_dygraph_cn.rst deleted file mode 100644 index 59dc22b7b491cf59f13fe9586f6d98bbaa86f00b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/disable_dygraph_cn.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. _cn_api_fluid_disable_dygraph: - -disable_dygraph -------------------------------- - -.. py:function:: paddle.fluid.disable_dygraph() - -该接口关闭动态图模式。 - -返回:无 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - fluid.enable_dygraph() # Now we are in dygraph mode - print(fluid.in_dygraph_mode()) # True - fluid.disable_dygraph() - print(fluid.in_dygraph_mode()) # False - diff --git a/doc/paddle/api/paddle/fluid/dygraph/dygraph_to_static/ProgramTranslator_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/dygraph_to_static/ProgramTranslator_cn.rst deleted file mode 100644 index 75cd816fbdeb794fbfb8efd8ff471c16d6812875..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/dygraph_to_static/ProgramTranslator_cn.rst +++ /dev/null @@ -1,263 +0,0 @@ -.. _cn_api_fluid_dygraph_ProgramTranslator - -ProgramTranslator -------------------------------- - -.. py:class:: paddle.fluid.dygraph.dygraph_to_static.ProgramTranslator() - -将动态图函数转为静态图函数的类。该类是个单例(singleton)。 - -参数: - 无。 - -返回:ProgramTranslator 单例对象。 - -返回类型:ProgramTranslator。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - # 以下两种调用方法得到同一个对象,因为ProgramTranslator是个单例 - fluid.dygraph.ProgramTranslator() - fluid.dygraph.ProgramTranslator.get_instance() - -.. py:method:: enable(enable_declarative) - -全局开启或关闭动态图转化为静态图。 - -参数: - - **enable_declarative** (bool) - 设置True或者False来打开或关闭declarative 。 - -返回:None。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - @fluid.dygraph.jit.declarative - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - prog_trans.enable(False) - - x = np.ones([1, 2]) - # The declarative is disabled so the func is run in dygraph - with fluid.dygraph.guard(): - print(func(x).numpy()) # [[2. 2.]] - -.. py:method:: get_output(dygraph_func, *args, **kwargs) - -返回动态图函数输出的VarBase,但是该动态图函数的数值计算过程会被转化为静态图模式运行。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - - **args, kwargs** - 动态图函数的输入。 - -返回:包含数值结果的VarBase或者VarBase的元组,是输入动态图函数的返回值。 - -返回类型:VarBase或者VarBase的元组。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - with fluid.dygraph.guard(): - x = np.ones([1, 2]) - x_v = prog_trans.get_output(func, x) - print(x_v.numpy()) # [[0. 0.]] - -.. py:method:: get_func(dygraph_func) - -返回一个可调用函数,该函数将输入动态图函数接口转化为静态图组网接口。组网接口不像动态图接口,其并不直接返回数据结果。用户需要自行处理对应的Program和Eexecutor。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - -返回:将动态图接口转为静态图组网接口的可调用函数。 - -返回类型:可调用函数。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - static_func = prog_trans.get_func(func) - print(callable(static_func)) # True - -.. py:method:: get_program(dygraph_func, *args, **kwargs) - -返回动态图函数转化后的静态图Program和输入输出Varaible。用户可以使用Executor来执行该Program。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - - **args, kwargs** - 动态图函数的输入。 - -返回:元组(main_program, startup_program, inputs, outputs) - main_program: 转化后的main program。 - startup_program: 转化后的startup program。 - inputs: 输入Variable的列表,这些Variable可以在执行去feed。 - outputs: 输出Variable的列表,这些Variable可以在运行时被fetch。 - -返回类型:类型为(Program, Program, list(Variable), list(Variable)) 的元组。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - x = np.ones([1, 2]) - main_prog, start_prog, inputs, outputs = prog_trans.get_program(func, x) - print([i.name for i in inputs]) - # ['feed_0'] 需要被feed的输入Variable名字,对应x - print([o.name for o in outputs]) - # ['_generated_var_4'] 需要被fetch的输出Variable名字,对应x_v - -.. py:method:: get_code(dygraph_func) - -返回动态图函数转化后的静态图代码字符串。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - -返回:转化后的静态图代码字符串。 - -返回类型:str。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - code = prog_trans.get_code(func) - print(type(code)) # - -.. py:method:: save_inference_model(dirname, feed=None, fetch=None) - -将现有模型保存为预测模型。保存过程会裁剪main program,只保存和预测输入输出有关的部分,构建成新的Program,并将此Program和相关参数保存到指定dirname路径下,被保存的模型可以被 :ref:`cn_api_fluid_io_load_inference_model` 或者C++预测接口使用。 - -参数: - - **dirname** (str) - 存储预测模型的目录。 - - **feed (list[int], 可选)** - 预测模型要保存的输入Variable的序号。如果为None,则动态图函数的所有输入变量将被保存。默认值为None。 - - **fetch (list[int], 可选)** - 预测模型要保存的输出Variable的序号。如果为None,则动态图函数的所有输出变量将被保存。默认值为None。 - -返回:None。 - -**示例代码** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - from paddle.fluid.dygraph import ProgramTranslator - - class SimpleNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(SimpleNet, self).__init__() - self._linear = Linear(in_size, out_size) - - @declarative - def forward(self, x): - y = self._linear(x) - z = self._linear(y) - loss = fluid.layers.mean(z) - return z, loss - - with fluid.dygraph.guard(fluid.CPUPlace()): - net = SimpleNet(8, 8) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - x = fluid.dygraph.to_variable(np.random.random((4, 8)).astype('float32')) - for i in range(10): - loss, out = net(x) - loss.backward() - adam.minimize(loss) - net.clear_gradients() - # 保存模型 - # 注意fetch=[0]意味着我们将序号为0的动态图return输出'z'作为预测输出 - prog_trans = ProgramTranslator() - prog_trans.save_inference_model("./dy2stat_infer_model", fetch=[0]) - - # 在这个例子中,预测模型会根据输出'z'进行裁剪。被裁剪后的Program 会被保 - # 存在"./dy2stat_infer_model" 文件夹,并且参数也会保存为同一个文件夹下 - # 不同文件。 - -.. py:method:: get_program_cache() - -返回ProgramCache单例。这个方法是PaddlePaddle开发者用来管理ProgramTranslator中的Program缓存,普通用户不需要使用这个方法。 - -返回:ProgramTranslator中的ProgramCache。 - -返回类型:ProgramCache。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - prog_trans = fluid.dygraph.ProgramTranslator() - prog_cache = prog_trans.get_program_cache() - diff --git a/doc/paddle/api/paddle/fluid/dygraph/dygraph_to_static/program_translator/ProgramTranslator_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/dygraph_to_static/program_translator/ProgramTranslator_cn.rst deleted file mode 100644 index 75cd816fbdeb794fbfb8efd8ff471c16d6812875..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/dygraph_to_static/program_translator/ProgramTranslator_cn.rst +++ /dev/null @@ -1,263 +0,0 @@ -.. _cn_api_fluid_dygraph_ProgramTranslator - -ProgramTranslator -------------------------------- - -.. py:class:: paddle.fluid.dygraph.dygraph_to_static.ProgramTranslator() - -将动态图函数转为静态图函数的类。该类是个单例(singleton)。 - -参数: - 无。 - -返回:ProgramTranslator 单例对象。 - -返回类型:ProgramTranslator。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - # 以下两种调用方法得到同一个对象,因为ProgramTranslator是个单例 - fluid.dygraph.ProgramTranslator() - fluid.dygraph.ProgramTranslator.get_instance() - -.. py:method:: enable(enable_declarative) - -全局开启或关闭动态图转化为静态图。 - -参数: - - **enable_declarative** (bool) - 设置True或者False来打开或关闭declarative 。 - -返回:None。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - @fluid.dygraph.jit.declarative - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - prog_trans.enable(False) - - x = np.ones([1, 2]) - # The declarative is disabled so the func is run in dygraph - with fluid.dygraph.guard(): - print(func(x).numpy()) # [[2. 2.]] - -.. py:method:: get_output(dygraph_func, *args, **kwargs) - -返回动态图函数输出的VarBase,但是该动态图函数的数值计算过程会被转化为静态图模式运行。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - - **args, kwargs** - 动态图函数的输入。 - -返回:包含数值结果的VarBase或者VarBase的元组,是输入动态图函数的返回值。 - -返回类型:VarBase或者VarBase的元组。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - with fluid.dygraph.guard(): - x = np.ones([1, 2]) - x_v = prog_trans.get_output(func, x) - print(x_v.numpy()) # [[0. 0.]] - -.. py:method:: get_func(dygraph_func) - -返回一个可调用函数,该函数将输入动态图函数接口转化为静态图组网接口。组网接口不像动态图接口,其并不直接返回数据结果。用户需要自行处理对应的Program和Eexecutor。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - -返回:将动态图接口转为静态图组网接口的可调用函数。 - -返回类型:可调用函数。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - static_func = prog_trans.get_func(func) - print(callable(static_func)) # True - -.. py:method:: get_program(dygraph_func, *args, **kwargs) - -返回动态图函数转化后的静态图Program和输入输出Varaible。用户可以使用Executor来执行该Program。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - - **args, kwargs** - 动态图函数的输入。 - -返回:元组(main_program, startup_program, inputs, outputs) - main_program: 转化后的main program。 - startup_program: 转化后的startup program。 - inputs: 输入Variable的列表,这些Variable可以在执行去feed。 - outputs: 输出Variable的列表,这些Variable可以在运行时被fetch。 - -返回类型:类型为(Program, Program, list(Variable), list(Variable)) 的元组。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - x = np.ones([1, 2]) - main_prog, start_prog, inputs, outputs = prog_trans.get_program(func, x) - print([i.name for i in inputs]) - # ['feed_0'] 需要被feed的输入Variable名字,对应x - print([o.name for o in outputs]) - # ['_generated_var_4'] 需要被fetch的输出Variable名字,对应x_v - -.. py:method:: get_code(dygraph_func) - -返回动态图函数转化后的静态图代码字符串。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - -返回:转化后的静态图代码字符串。 - -返回类型:str。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - code = prog_trans.get_code(func) - print(type(code)) # - -.. py:method:: save_inference_model(dirname, feed=None, fetch=None) - -将现有模型保存为预测模型。保存过程会裁剪main program,只保存和预测输入输出有关的部分,构建成新的Program,并将此Program和相关参数保存到指定dirname路径下,被保存的模型可以被 :ref:`cn_api_fluid_io_load_inference_model` 或者C++预测接口使用。 - -参数: - - **dirname** (str) - 存储预测模型的目录。 - - **feed (list[int], 可选)** - 预测模型要保存的输入Variable的序号。如果为None,则动态图函数的所有输入变量将被保存。默认值为None。 - - **fetch (list[int], 可选)** - 预测模型要保存的输出Variable的序号。如果为None,则动态图函数的所有输出变量将被保存。默认值为None。 - -返回:None。 - -**示例代码** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - from paddle.fluid.dygraph import ProgramTranslator - - class SimpleNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(SimpleNet, self).__init__() - self._linear = Linear(in_size, out_size) - - @declarative - def forward(self, x): - y = self._linear(x) - z = self._linear(y) - loss = fluid.layers.mean(z) - return z, loss - - with fluid.dygraph.guard(fluid.CPUPlace()): - net = SimpleNet(8, 8) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - x = fluid.dygraph.to_variable(np.random.random((4, 8)).astype('float32')) - for i in range(10): - loss, out = net(x) - loss.backward() - adam.minimize(loss) - net.clear_gradients() - # 保存模型 - # 注意fetch=[0]意味着我们将序号为0的动态图return输出'z'作为预测输出 - prog_trans = ProgramTranslator() - prog_trans.save_inference_model("./dy2stat_infer_model", fetch=[0]) - - # 在这个例子中,预测模型会根据输出'z'进行裁剪。被裁剪后的Program 会被保 - # 存在"./dy2stat_infer_model" 文件夹,并且参数也会保存为同一个文件夹下 - # 不同文件。 - -.. py:method:: get_program_cache() - -返回ProgramCache单例。这个方法是PaddlePaddle开发者用来管理ProgramTranslator中的Program缓存,普通用户不需要使用这个方法。 - -返回:ProgramTranslator中的ProgramCache。 - -返回类型:ProgramCache。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - prog_trans = fluid.dygraph.ProgramTranslator() - prog_cache = prog_trans.get_program_cache() - diff --git a/doc/paddle/api/paddle/fluid/dygraph/enable_dygraph_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/enable_dygraph_cn.rst deleted file mode 100644 index 0df485bd856a4c70f3638db7c2f6b7470c143fe1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/enable_dygraph_cn.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _cn_api_fluid_enable_dygraph: - -enable_dygraph -------------------------------- - -.. py:function:: paddle.fluid.enable_dygraph(place=None) - -该接口打开动态图模式。 - -参数: - - **place** (fluid.CPUPlace 或 fluid.CUDAPlace,可选) - 执行动态图的设备数目。若为None,则设备根据paddle的编译方式决定。默认值为 ``None``。 - -返回:无 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - fluid.enable_dygraph() # Now we are in dygraph mode - print(fluid.in_dygraph_mode()) # True - fluid.disable_dygraph() - print(fluid.in_dygraph_mode()) # False - diff --git a/doc/paddle/api/paddle/fluid/dygraph/enabled_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/enabled_cn.rst deleted file mode 100644 index a127f528edd20149f51f9b0ba6954aa0a2bfe661..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/enabled_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_imperative_cn_enabled: - -enabled -------------------------------- -:doc_source: paddle.fluid.dygraph.base.enabled - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/grad_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/grad_cn.rst deleted file mode 100644 index bc73f2e14a68bf2be3a68d43c24e39bdd0ad1337..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/grad_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_dygraph_grad: - -grad -------------------------------- - -**注意:该API仅支持【动态图】模式** - -.. py:method:: paddle.fluid.dygraph.grad(outputs, inputs, grad_outputs=None, retain_graph=None, create_graph=False, only_inputs=True, allow_unused=False, no_grad_vars=None, backward_strategy=None) - -对于每个 `inputs` ,计算所有 `outputs` 相对于其的梯度和。 - -参数: - - **outputs** (Variable|list(Variable)|tuple(Variable)) – 用于计算梯度的图的输出变量,或多个输出变量构成的list/tuple。 - - **inputs** (Variable|list(Variable)|tuple(Variable)) - 用于计算梯度的图的输入变量,或多个输入变量构成的list/tuple。该API的每个返回值对应每个 `inputs` 的梯度。 - - **grad_outputs** (Variable|list(Variable|None)|tuple(Variable|None), 可选) - `outputs` 变量梯度的初始值。若 `grad_outputs` 为None,则 `outputs` 梯度的初始值均为全1的Tensor。若 `grad_outputs` 不为None,它必须与 `outputs` 的长度相等,此时,若 `grad_outputs` 的第i个元素为None,则第i个 `outputs` 的梯度初始值为全1的Tensor;若 `grad_outputs` 的第i个元素为Variable,则第i个 `outputs` 的梯度初始值为 `grad_outputs` 的第i个元素。默认值为None。 - - **retain_graph** (bool, 可选) - 是否保留计算梯度的前向图。若值为True,则前向图会保留,用户可对同一张图求两次反向。若值为False,则前向图会释放。默认值为None,表示值与 `create_graph` 相等。 - - **create_graph** (bool, 可选) - 是否创建计算过程中的反向图。若值为True,则可支持计算高阶导数。若值为False,则计算过程中的反向图会释放。默认值为False。 - - **only_inputs** (bool, 可选) - 是否只计算 `inputs` 的梯度。若值为False,则图中所有叶节点变量的梯度均会计算,并进行累加。若值为True,则只会计算 `inputs` 的梯度。默认值为True。only_inputs=False功能正在开发中,目前尚不支持。 - - **allow_unused** (bool, 可选) - 决定当某些 `inputs` 变量不在计算图中时抛出错误还是返回None。若某些 `inputs` 变量不在计算图中(即它们的梯度为None),则当allowed_unused=False时会抛出错误,当allow_unused=True时会返回None作为这些变量的梯度。默认值为False。 - - **no_grad_vars** (Variable|list(Variable)|tuple(Variable)|set(Variable), 可选) - 指明不需要计算梯度的变量。默认值为None。 - - **backward_strategy** (BackwardStrategy, 可选) - 计算梯度的策略。详见 :ref:`cn_api_fluid_dygraph_BackwardStrategy` 。默认值为None。 - -返回: 变量构成的tuple,其长度等于 `inputs` 中的变量个数,且第i个返回的变量是所有 `outputs` 相对于第i个 `inputs` 的梯度之和。 - -返回类型: tuple - -**示例代码 1** - .. code-block:: python - - import paddle.fluid as fluid - - def test_dygraph_grad(create_graph): - with fluid.dygraph.guard(): - x = fluid.layers.ones(shape=[1], dtype='float32') - x.stop_gradient = False - y = x * x - - # Since y = x * x, dx = 2 * x - dx = fluid.dygraph.grad( - outputs=[y], - inputs=[x], - create_graph=create_graph, - retain_graph=True)[0] - - z = y + dx - - # If create_graph = False, the gradient of dx - # would not be backpropagated. Therefore, - # z = x * x + dx, and x.gradient() = 2 * x = 2.0 - - # If create_graph = True, the gradient of dx - # would be backpropagated. Therefore, - # z = x * x + dx = x * x + 2 * x, and - # x.gradient() = 2 * x + 2 = 4.0 - - z.backward() - return x.gradient() - - print(test_dygraph_grad(create_graph=False)) # [2.] - print(test_dygraph_grad(create_graph=True)) # [4.] - -**示例代码 2** - .. code-block:: python - - import paddle.fluid as fluid - - fluid.enable_dygraph() - - def test_dygraph_grad(grad_outputs=None): - x = fluid.layers.fill_constant(shape=[1], value=2.0, dtype='float32') - x.stop_gradient = False - - y1 = x * x - y2 = x * 3 - - # If grad_outputs=None, dy1 = [1], dy2 = [1]. - # If grad_outputs=[g1, g2], then: - # - dy1 = [1] if g1 is None else g1 - # - dy2 = [1] if g2 is None else g2 - - # Since y1 = x * x, dx = 2 * x * dy1. - # Since y2 = x * 3, dx = 3 * dy2. - # Therefore, the final result would be: - # dx = 2 * x * dy1 + 3 * dy2 = 4 * dy1 + 3 * dy2. - - dx = fluid.dygraph.grad( - outputs=[y1, y2], - inputs=[x], - grad_outputs=grad_outputs)[0] - - return dx.numpy() - - THREE = fluid.layers.fill_constant(shape=[1], value=3.0, dtype='float32') - FOUR = fluid.layers.fill_constant(shape=[1], value=4.0, dtype='float32') - - # dy1 = [1], dy2 = [1] - print(test_dygraph_grad(None)) # [7.] - - # dy1 = [1], dy2 = [4] - print(test_dygraph_grad([None, FOUR])) # [16.] - - # dy1 = [4], dy2 = [1] - print(test_dygraph_grad([FOUR, None])) # [19.] - - # dy1 = [3], dy2 = [4] - print(test_dygraph_grad([THREE, FOUR])) # [24.] \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/dygraph/guard_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/guard_cn.rst deleted file mode 100644 index 7c457eb15118baf6823be9e404fc2fa053b6a2f6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/guard_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_unique_name_guard: - -guard -------------------------------- - -.. py:function:: paddle.fluid.unique_name.guard(new_generator=None) - - - - -该接口用于更改命名空间,与with语句一起使用。使用后,在with语句的上下文中使用新的命名空间,调用generate接口时相同前缀的名称将从0开始重新编号。 - -参数: - - **new_generator** (str|bytes, 可选) - 新命名空间的名称。请注意,Python2中的str在Python3中被区分为str和bytes两种,因此这里有两种类型。 缺省值为None,若不为None,new_generator将作为前缀添加到generate接口产生的唯一名称中。 - -返回: 无。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - with fluid.unique_name.guard(): - name_1 = fluid.unique_name.generate('fc') - with fluid.unique_name.guard(): - name_2 = fluid.unique_name.generate('fc') - print(name_1, name_2) # fc_0, fc_0 - - with fluid.unique_name.guard('A'): - name_1 = fluid.unique_name.generate('fc') - with fluid.unique_name.guard('B'): - name_2 = fluid.unique_name.generate('fc') - print(name_1, name_2) # Afc_0, Bfc_0 - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/io/TranslatedLayer_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/io/TranslatedLayer_cn.rst deleted file mode 100644 index 0924a155a0ffb8861dd0f233cf0b0eff3dd8b169..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/io/TranslatedLayer_cn.rst +++ /dev/null @@ -1,84 +0,0 @@ -.. _cn_api_fluid_dygraph_TranslatedLayer: - -TranslatedLayer -------------------------------- - -.. py:class:: paddle.fluid.dygraph.TranslatedLayer(programs, persistable_vars) - -``TranslatedLayer`` 是一个命令式编程模式 :ref:`cn_api_fluid_dygraph_Layer` 的继承类, -通过 :ref:`cn_api_fluid_dygraph_jit_load` 载入构建。能够像一般 ``Layer`` 一样在train或者eval模式下使用。 - -.. note:: - ``TranslatedLayer`` 对象不能够通过构造函数创建,仅能够通过 :ref:`cn_api_fluid_dygraph_jit_load` 接口载入构建。 - -**示例代码:** - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - class LinearNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(LinearNet, self).__init__() - self._linear = Linear(in_size, out_size) - @declarative - def forward(self, x): - return self._linear(x) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 1. 训练存储模型. - # 创建网络 - net = LinearNet(784, 1) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # 训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - net.clear_gradients() - model_path = "linear.example.model" - fluid.dygraph.jit.save( - layer=net, - model_path=model_path, - input_spec=[img]) - # 2. 载入模型构建TranslatedLayer - translated_layer = fluid.dygraph.jit.load(model_path) - # 预测 - translated_layer.eval() - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = translated_layer(x) - # fine-tune训练 - translated_layer.train() - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=translated_layer.parameters()) - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = translated_layer(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - translated_layer.clear_gradients() diff --git a/doc/paddle/api/paddle/fluid/dygraph/jit/TracedLayer_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/jit/TracedLayer_cn.rst deleted file mode 100644 index 342cc84f4c1a0992e5b1628956c9a4534e368770..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/jit/TracedLayer_cn.rst +++ /dev/null @@ -1,147 +0,0 @@ -.. _cn_api_fluid_dygraph_TracedLayer: - -TracedLayer -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.TracedLayer(program, parameters, feed_names, fetch_names) - -:api_attr: 命令式编程模式(动态图) - - - -TracedLayer用于将前向动态图模型转换为静态图模型,主要用于将动态图保存后做在线C++预测。除此以外,用户也可使用转换后的静态图模型在Python端做预测,通常比原先的动态图性能更好。 - -TracedLayer使用 ``Executor`` 和 ``CompiledProgram`` 运行静态图模型。转换后的静态图模型与原动态图模型共享参数。 - -所有的TracedLayer对象均不应通过构造函数创建,而应通过调用静态方法 ``TracedLayer.trace(layer, inputs)`` 创建。 - -TracedLayer只能用于将data independent的动态图模型转换为静态图模型,即待转换的动态图模型不应随tensor数据或维度的变化而变化。 - -.. py:staticmethod:: trace(layer, inputs) - -创建TracedLayer对象的唯一接口,该接口会调用 ``layer(*inputs)`` 方法运行动态图模型并将其转换为静态图模型。 - -参数: - - **layer** (dygraph.Layer) - 待追踪的动态图layer对象。 - - **inputs** (list(Variable)) - 动态图layer对象的输入变量列表。 - -返回: 包含2个元素的tuple,其中第一个元素是 ``layer(*inputs)`` 的输出结果,第二个元素是转换后得到的TracedLayer对象。 - -返回类型: tuple - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear, to_variable, TracedLayer - import numpy as np - - class ExampleLayer(fluid.dygraph.Layer): - def __init__(self): - super(ExampleLayer, self).__init__() - self._fc = Linear(3, 10) - - def forward(self, input): - return self._fc(input) - - with fluid.dygraph.guard(): - layer = ExampleLayer() - in_np = np.random.random([2, 3]).astype('float32') - in_var = to_variable(in_np) - out_dygraph, static_layer = TracedLayer.trace(layer, inputs=[in_var]) - - # 内部使用Executor运行静态图模型 - out_static_graph = static_layer([in_var]) - print(len(out_static_graph)) # 1 - print(out_static_graph[0].shape) # (2, 10) - - # 将静态图模型保存为预测模型 - static_layer.save_inference_model(dirname='./saved_infer_model') - -.. py:method:: set_strategy(build_strategy=None, exec_strategy=None) - -设置构建和执行静态图模型的相关策略。 - -参数: - - **build_strategy** (BuildStrategy, 可选) - TracedLayer内部 ``CompiledProgram`` 的构建策略。 - - **exec_strategy** (ExecutionStrategy, 可选) - TracedLayer内部 ``CompiledProgram`` 的执行策略。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear, to_variable, TracedLayer - import numpy as np - - class ExampleLayer(fluid.dygraph.Layer): - def __init__(self): - super(ExampleLayer, self).__init__() - self._fc = Linear(3, 10) - - def forward(self, input): - return self._fc(input) - - with fluid.dygraph.guard(): - layer = ExampleLayer() - in_np = np.random.random([2, 3]).astype('float32') - in_var = to_variable(in_np) - - out_dygraph, static_layer = TracedLayer.trace(layer, inputs=[in_var]) - - build_strategy = fluid.BuildStrategy() - build_strategy.enable_inplace = True - - exec_strategy = fluid.ExecutionStrategy() - exec_strategy.num_threads = 2 - - static_layer.set_strategy(build_strategy=build_strategy, exec_strategy=exec_strategy) - out_static_graph = static_layer([in_var]) - -.. py:method:: save_inference_model(dirname, feed=None, fetch=None) - -将TracedLayer保存为用于预测部署的模型。保存的预测模型可被C++预测接口加载。 - -参数: - - **dirname** (str) - 预测模型的保存目录。 - - **feed** (list(int), 可选) - 预测模型输入变量的索引。若为None,则TracedLayer的所有输入变量均会作为预测模型的输入。默认值为None。 - - **fetch** (list(int), 可选) - 预测模型输出变量的索引。若为None,则TracedLayer的所有输出变量均会作为预测模型的输出。默认值为None。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear, to_variable, TracedLayer - import numpy as np - - class ExampleLayer(fluid.dygraph.Layer): - def __init__(self): - super(ExampleLayer, self).__init__() - self._fc = Linear(3, 10) - - def forward(self, input): - return self._fc(input) - - save_dirname = './saved_infer_model' - in_np = np.random.random([2, 3]).astype('float32') - - with fluid.dygraph.guard(): - layer = ExampleLayer() - in_var = to_variable(in_np) - out_dygraph, static_layer = TracedLayer.trace(layer, inputs=[in_var]) - static_layer.save_inference_model(save_dirname, feed=[0], fetch=[0]) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - program, feed_vars, fetch_vars = fluid.io.load_inference_model(save_dirname, - exe) - - fetch, = exe.run(program, feed={feed_vars[0]: in_np}, fetch_list=fetch_vars) - print(fetch.shape) # (2, 10) \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/dygraph/jit/declarative_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/jit/declarative_cn.rst deleted file mode 100644 index 91a1c40516b91d21fa735f5b18b17fafd5d5dba6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/jit/declarative_cn.rst +++ /dev/null @@ -1,28 +0,0 @@ -======================= -paddle.declarative -======================= - -.. toctree:: - :maxdepth: 1 - - declarative_cn/batch_norm_cn.rst - declarative_cn/bilinear_tensor_product_cn.rst - declarative_cn/conv2d_cn.rst - declarative_cn/conv2d_transpose_cn.rst - declarative_cn/conv3d_cn.rst - declarative_cn/conv3d_transpose_cn.rst - declarative_cn/create_parameter_cn.rst - declarative_cn/crf_decoding_cn.rst - declarative_cn/data_norm_cn.rst - declarative_cn/deformable_conv_cn.rst - declarative_cn/embedding_cn.rst - declarative_cn/fc_cn.rst - declarative_cn/group_norm_cn.rst - declarative_cn/hsigmoid_cn.rst - declarative_cn/instance_norm_cn.rst - declarative_cn/layer_norm_cn.rst - declarative_cn/multi_box_head_cn.rst - declarative_cn/nce_cn.rst - declarative_cn/prelu_cn.rst - declarative_cn/row_conv_cn.rst - declarative_cn/spectral_norm_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/CosineDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/CosineDecay_cn.rst deleted file mode 100644 index 92ffd6338eddd0034b8d2cb3f06ddb7d9c537018..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/CosineDecay_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_dygraph_CosineDecay: - -CosineDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.CosineDecay(learning_rate, step_each_epoch, epochs, begin=0, step=1, dtype='float32') - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供按余弦函数衰减学习率的功能。 - -余弦衰减的计算方式如下。 - -.. math:: - - decayed\_learning\_rate = learning\_rate * 0.5 * (math.cos(global\_step * \frac{math.pi}{step\_each\_epoch} ) + 1) - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **learning_rate** (Variable | float) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - - **step_each_epoch** (int) - 遍历一遍训练数据所需的步数。 - - **begin** (int,可选) - 起始步,即以上公式中global_step的初始化值。默认值为0。 - - **step** (int,可选) - 步大小,即以上公式中global_step的每次的增量值。默认值为1。 - - **dtype** (str,可选) - 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - base_lr = 0.1 - with fluid.dygraph.guard(): - gru = fluid.dygraph.GRUUnit(5 * 3) - optimizer = fluid.optimizer.SGD( - learning_rate=fluid.dygraph.CosineDecay( - base_lr, 10000, 120), parameter_list=gru.parameters()) - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/ExponentialDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/ExponentialDecay_cn.rst deleted file mode 100644 index 8a110ba82f47d912428e2e8b6bec45d30e62a739..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/ExponentialDecay_cn.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. _cn_api_fluid_dygraph_ExponentialDecay: - -ExponentialDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.ExponentialDecay(learning_rate, decay_steps, decay_rate, staircase=False, begin=0, step=1, dtype=’float32‘) - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供一种学习率按指数函数衰减的功能。 - -指数衰减的计算方式如下。 - -.. math:: - - decayed\_learning\_rate = learning\_rate * decay\_rate ^ y - - -当staircase为False时,y对应的计算公式为: - -.. math:: - - y = \frac{global\_step}{decay\_steps} - -当staircase为True时,y对应的计算公式为: - -.. math:: - - y = math.floor(\frac{global\_step}{decay\_steps}) - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **learning_rate** (Variable|float) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - - **decay_steps** (int) - 衰减步数。必须是正整数,该参数确定衰减周期。 - - **decay_rate** (float)- 衰减率。 - - **staircase** (bool) - 若为True,则以不连续的间隔衰减学习速率即阶梯型衰减。若为False,则以标准指数型衰减。默认值为False。 - - **begin** (int) - 起始步,即以上运算式子中global_step的初始化值。默认值为0。 - - **step** (int) - 步大小,即以上运算式子中global_step的每次的增量值,使得global_step随着训练的次数递增。默认值为1。 - - **dtype** (str) - 初始化学习率变量的数据类型,可以为"float32", "float64"。 默认值为"float32"。 - -返回: 无 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - with fluid.dygraph.guard(): - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.dygraph.ExponentialDecay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True)) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/InverseTimeDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/InverseTimeDecay_cn.rst deleted file mode 100644 index c693cc97791290950e90b6d5126edccb7d8ceed4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/InverseTimeDecay_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_dygraph_InverseTimeDecay: - -InverseTimeDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.InverseTimeDecay(learning_rate, decay_steps, decay_rate, staircase=False, begin=0, step=1, dtype='float32') - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供反时限学习率衰减的功能。 - -反时限学习率衰减计算方式如下。 - -当staircase为False时,计算公式为: - -.. math:: - - decayed\_learning\_rate = \frac{learning\_rate}{1 + decay\_rate * \frac{global\_step}{decay\_step}} - -当staircase为True时,计算公式为: - -.. math:: - - decayed\_learning\_rate = \frac{learning\_rate}{1 + decay\_rate * math.floor(\frac{global\_step}{decay\_step})} - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **learning_rate** (Variable|float) - 初始学习率值。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - - **decay_steps** (int) - 衰减步数,见以上衰减运算式子。 - - **decay_rate** (float)- 衰减率。见以上衰减运算。 - - **staircase** (bool,可选) - 指定是否按阶梯状衰减。若为True, 学习率变化曲线呈阶梯状。若为False,学习率变化值曲线为平滑的曲线。默认值为False。 - - **begin** (int,可选) - 起始步,即以上运算式子中global_step的初始化值。默认值为0。 - - **step** (int,可选) - 步大小,即以上运算式子中global_step的每次的增量值,使得global_step随着训练的次数递增。默认值为1。 - - **dtype** (str,可选) - 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - with fluid.dygraph.guard(): - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.dygraph.InverseTimeDecay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True)) - - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/LambdaDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/LambdaDecay_cn.rst deleted file mode 100644 index 1b59cfbaf888fe971e6d39a72579848108d57094..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/LambdaDecay_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_dygraph_LambdaDecay: - -LambdaDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.LambdaDecay(learning_rate, lr_lambda) - -:api_attr: 命令式编程模式(动态图) - - -该API提供 lambda函数 设置学习率的功能。 ``lr_lambda`` 为一个lambda函数,其通过 ``epoch`` 计算出一个因子,该因子会乘以初始学习率。 - -算法可以描述为: - -.. code-block:: text - - learning_rate = 0.5 # init learning_rate - lr_lambda = lambda epoch: 0.95 ** epoch - - learning_rate = 0.5 # epoch 0 - learning_rate = 0.475 # epoch 1 - learning_rate = 0.45125 # epoch 2 - -参数: - - **learning_rate** (float|int) - 初始化的学习率。可以是Python的float或int。 - - **lr_lambda** (function) - ``lr_lambda`` 为一个lambda函数,其通过 ``epoch`` 计算出一个因子,该因子会乘以初始学习率。 - -返回: 无 - -**代码示例**: - - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - with fluid.dygraph.guard(): - x = np.random.uniform(-1, 1, [10, 10]).astype("float32") - linear = fluid.dygraph.Linear(10, 10) - input = fluid.dygraph.to_variable(x) - scheduler = fluid.dygraph.LambdaDecay(0.5, lr_lambda=lambda x: 0.95**x) - adam = fluid.optimizer.Adam(learning_rate = scheduler, parameter_list = linear.parameters()) - for epoch in range(6): - for batch_id in range(5): - out = linear(input) - loss = fluid.layers.reduce_mean(out) - adam.minimize(loss) - scheduler.epoch() - print("epoch:%d, current lr is %f" .format(epoch, adam.current_step_lr())) - # epoch:0, current lr is 0.5 - # epoch:1, current lr is 0.475 - # epoch:2, current lr is 0.45125 - -.. py:method:: epoch(epoch=None) -通过当前的 epoch 调整学习率,调整后的学习率将会在下一次调用 ``optimizer.minimize`` 时生效。 - -参数: - - **epoch** (int|float,可选) - 类型:int或float。指定当前的epoch数。默认:无,此时将会自动累计epoch数。 - -返回: - 无 - -**代码示例**: - - 参照上述示例代码。 diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/MultiStepDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/MultiStepDecay_cn.rst deleted file mode 100644 index 896f90066ca8463f34bee8005b0f46bd4fd68a25..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/MultiStepDecay_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_dygraph_MultiStepDecay: - -MultiStepDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.MultiStepDecay(learning_rate, milestones, decay_rate=0.1) - -:api_attr: 命令式编程模式(动态图) - - -该接口提供 ``MultiStep`` 衰减学习率的功能。 - -算法可以描述为: - -.. code-block:: text - - learning_rate = 0.5 - milestones = [30, 50] - decay_rate = 0.1 - if epoch < 30: - learning_rate = 0.5 - elif epoch < 50: - learning_rate = 0.05 - else: - learning_rate = 0.005 - -参数: - - **learning_rate** (float|int) - 初始化的学习率。可以是Python的float或int。 - - **milestones** (tuple|list) - 列表或元组。必须是递增的。 - - **decay_rate** (float, optional) - 学习率的衰减率。 ``new_lr = origin_lr * decay_rate`` 。其值应该小于1.0。默认:0.1。 - -返回: 无 - -**代码示例**: - - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - with fluid.dygraph.guard(): - x = np.random.uniform(-1, 1, [10, 10]).astype("float32") - linear = fluid.dygraph.Linear(10, 10) - input = fluid.dygraph.to_variable(x) - scheduler = fluid.dygraph.MultiStepDecay(0.5, milestones=[3, 5]) - adam = fluid.optimizer.Adam(learning_rate = scheduler, parameter_list = linear.parameters()) - for epoch in range(6): - for batch_id in range(5): - out = linear(input) - loss = fluid.layers.reduce_mean(out) - adam.minimize(loss) - scheduler.epoch() - print("epoch:{}, current lr is {}" .format(epoch, adam.current_step_lr())) - # epoch:0, current lr is 0.5 - # epoch:1, current lr is 0.5 - # epoch:2, current lr is 0.5 - # epoch:3, current lr is 0.05 - # epoch:4, current lr is 0.05 - # epoch:5, current lr is 0.005 - -.. py:method:: epoch(epoch=None) -通过当前的 epoch 调整学习率,调整后的学习率将会在下一次调用 ``optimizer.minimize`` 时生效。 - -参数: - - **epoch** (int|float,可选) - 类型:int或float。指定当前的epoch数。默认:无,此时将会自动累计epoch数。 - -返回: - 无 - -**代码示例**: - - 参照上述示例代码。 diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/NaturalExpDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/NaturalExpDecay_cn.rst deleted file mode 100644 index 03a7e10a1cc4b66180ff118d8408ce21d9f5a30a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/NaturalExpDecay_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_dygraph_NaturalExpDecay: - -NaturalExpDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.NaturalExpDecay(learning_rate, decay_steps, decay_rate, staircase=False, begin=0, step=1, dtype='float32') - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供按自然指数衰减学习率的功能。 - -自然指数衰减的计算方式如下。 - -.. math:: - - decayed\_learning\_rate = learning\_rate * e^{y} - -当staircase为False时,y对应的计算公式为: - -.. math:: - - y = - decay\_rate * \frac{global\_step}{decay\_steps} - -当staircase为True时,y对应的计算公式为: - -.. math:: - - y = - decay\_rate * math.floor(\frac{global\_step}{decay\_steps}) - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **learning_rate** (Variable|float) - 初始学习率值。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - - **decay_steps** (int) – 指定衰减的步长。该参数确定衰减的周期。 - - **decay_rate** (float) – 指定衰减率。 - - **staircase** (bool,可选) - 若为True, 学习率变化曲线呈阶梯状,若为False,学习率变化值曲线为平滑的曲线。默认值为False。 - - **begin** (int,可选) – 起始步,即以上运算式子中global_step的初始化值。默认值为0。 - - **step** (int,可选) – 步大小,即以上运算式子中global_step的每次的增量值。默认值为1。 - - **dtype** (str,可选) – 学习率值的数据类型,可以为"float32", "float64"。默认值为"float32"。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.dygraph.NaturalExpDecay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True), - parameter_list=emb.parameters()) - - - - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/NoamDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/NoamDecay_cn.rst deleted file mode 100644 index 390e8b3e3f5a7ea1dac71fbd75468d26b042b4c6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/NoamDecay_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_dygraph_NoamDecay: - -NoamDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.NoamDecay(d_model, warmup_steps, begin=1, step=1, dtype='float32', learning_rate=1.0) - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供Noam衰减学习率的功能。 - -Noam衰减的计算方式如下。 - -.. math:: - - decayed\_learning\_rate = learning\_rate * d_{model}^{-0.5} * min(global\_steps^{-0.5}, global\_steps * warmup\_steps^{-1.5}) - -关于Noam衰减的更多细节请参考 `attention is all you need `_ - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **d$_{model}$** (Variable|int) - 模型的输入、输出向量特征维度,为超参数。如果设置为Variable类型值,则数据类型可以为int32或int64的标量Tensor,也可以设置为Python int。 - - **warmup_steps** (Variable|int) - 预热步数,为超参数。如果设置为Variable类型,则数据类型为int32或int64的标量Tensor,也可以设置为为Python int。 - - **begin** (int,可选) – 起始步。即以上运算式子中global_steps的初始值。默认值为0。 - - **step** (int,可选) – 步大小。即以上运算式子中global_steps的递增值。默认值为1。 - - **dtype** (str,可选) – 学习率值的数据类型,可以为"float32", "float64"。默认值为"float32"。 - - **learning_rate** (Variable|float|int,可选) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的int类型。默认值为1.0。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - warmup_steps = 100 - learning_rate = 0.01 - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - optimizer = fluid.optimizer.SGD( - learning_rate = fluid.dygraph.NoamDecay( - 1/(warmup_steps *(learning_rate ** 2)), - warmup_steps), - parameter_list = emb.parameters()) diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/PiecewiseDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/PiecewiseDecay_cn.rst deleted file mode 100644 index d483d5d34ed9a271f1b61f1ed97b8c09ab2626f2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/PiecewiseDecay_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_dygraph_PiecewiseDecay: - -PiecewiseDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.PiecewiseDecay(boundaries, values, begin, step=1, dtype='float32') - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供对初始学习率进行分段(piecewise)常数衰减的功能。 - -分段常数衰减的过程举例描述如下。 - -.. code-block:: text - - 例如,设定的boundaries列表为[10000, 20000],候选学习率常量列表values为[1.0, 0.5, 0.1],则: - 1、在当前训练步数global_step小于10000步,学习率值为1.0。 - 2、在当前训练步数global_step大于或等于10000步,并且小于20000步时,学习率值为0.5。 - 3、在当前训练步数global_step大于或等于20000步时,学习率值为0.1。 - -参数: - - **boundaries** (list) - 指定衰减的步数边界。列表的数据元素为Python int类型。 - - **values** (list) - 备选学习率列表。数据元素类型为Python float的列表。与边界值列表有对应的关系。 - - **begin** (int) – 起始步,即以上举例描述中global_step的初始化值。 - - **step** (int,可选) – 步大小,即以上举例描述中global_step每步的递增值。默认值为1。 - - **dtype** (str,可选) – 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - boundaries = [10000, 20000] - values = [1.0, 0.5, 0.1] - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding( [10, 10] ) - optimizer = fluid.optimizer.SGD( - learning_rate=fluid.dygraph.PiecewiseDecay(boundaries, values, 0), - parameter_list = emb.parameters() ) - - - - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/PolynomialDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/PolynomialDecay_cn.rst deleted file mode 100644 index df03f3f10ef90733cf7fc2027efc2028018da1b0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/PolynomialDecay_cn.rst +++ /dev/null @@ -1,62 +0,0 @@ -.. _cn_api_fluid_dygraph_PolynomialDecay: - -PolynomialDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.PolynomialDecay(learning_rate, decay_steps, end_learning_rate=0.0001, power=1.0, cycle=False, begin=0, step=1, dtype='float32') - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供学习率按多项式衰减的功能。通过多项式衰减函数,使得学习率值逐步从初始的 ``learning_rate``,衰减到 ``end_learning_rate`` 。 - -计算方式如下。 - -若cycle为True,则计算公式为: - -.. math:: - - decay\_steps &= decay\_steps * math.ceil(\frac{global\_step}{decay\_steps}) \\ - decayed\_learning\_rate &= (learning\_rate-end\_learning\_rate)*(1-\frac{global\_step}{decay\_steps})^{power}+end\_learning\_rate - -若cycle为False,则计算公式为: - -.. math:: - - global\_step &= min(global\_step, decay\_steps) \\ - decayed\_learning\_rate &= (learning\_rate-end\_learning\_rate)*(1-\frac{global\_step}{decay\_steps})^{power}+end\_learning\_rate - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **learning_rate** (Variable|float32) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - - **decay_steps** (int) - 衰减步数。必须是正整数,该参数确定衰减周期。 - - **end_learning_rate** (float,可选) - 最小的最终学习率。默认值为0.0001。 - - **power** (float,可选) - 多项式的幂。默认值为1.0。 - - **cycle** (bool,可选) - 学习率下降后是否重新上升。若为True,则学习率衰减到最低学习率值时,会出现上升。若为False,则学习率曲线则单调递减。默认值为False。 - - **begin** (int,可选) – 起始步,即以上运算式子中global_step的初始化值。默认值为0。 - - **step** (int,可选) – 步大小,即以上运算式子中global_step的递增值。默认值为1。 - - **dtype** (str,可选)– 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - -返回: 无 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - start_lr = 0.01 - total_step = 5000 - end_lr = 0 - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding( [10, 10]) - optimizer = fluid.optimizer.SGD( - learning_rate = fluid.dygraph.PolynomialDecay( - start_lr, total_step, end_lr, power=1.0), - parameter_list = emb.parameters()) diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/ReduceLROnPlateau_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/ReduceLROnPlateau_cn.rst deleted file mode 100644 index b0a0b75f7b31244421f02cab719a342461a9f7c1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/ReduceLROnPlateau_cn.rst +++ /dev/null @@ -1,89 +0,0 @@ -.. _cn_api_fluid_dygraph_ReduceLROnPlateau: - -ReduceLROnPlateau -------------------------------- - -**注意:该API仅支持【动态图】模式** - -.. py:class:: paddle.fluid.dygraph.ReduceLROnPlateau(learning_rate, mode='min', decay_rate=0.1, patience=10, verbose=False, threshold=1e-4, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-8, dtype='float32') - -该API为 ``loss`` 自适应的学习率衰减策略。默认情况下,当 ``loss`` 停止下降时,降低学习率(如果将 ``mode`` 设置为 `'max'` ,此时判断逻辑相反, ``loss`` 停止上升时降低学习率)。其思想是:一旦模型表现不再提升,将学习率降低2-10倍对模型的训练往往有益。 - -``loss`` 是传入到该类方法 ``step`` 中的参数,其必须是shape为[1]的1-D Tensor。 如果 ``loss`` 停止下降(``mode`` 为 `min` 时)超过 ``patience`` 个epoch,学习率将会减小为 -`learning_rate * decay_rate` 。 - -此外,每降低一次学习率后,将会进入一个时长为 ``cooldown`` 个epoch的冷静期,在冷静期内,将不会监控 ``loss`` 的变化情况,也不会衰减。 -在冷静期之后,会继续监控 ``loss`` 的上升或下降。 - -参数: - - **learning_rate** (Variable|float|int) - 初始学习率。其类型可以是Python的float类型,如果输入int类型则会被转为float类型。其也可以是shape为[1]的 - 1-D Tensor,且相应数据类型必须为 "float32" 或 "float64" 。 - - **mode** (str,可选) - `'min'` 和 `'max'` 之一。通常情况下,为 `'min'` ,此时当 ``loss`` 停止下降时学习率将减小。默认:`'min'` 。 - (注意:仅在特殊用法时,可以将其设置为 `'max'` ,此时判断逻辑相反, ``loss`` 停止上升学习率才减小) - - **decay_rate** (float,可选) - 学习率衰减的比例。`new_lr = origin_lr * decay_rate` ,它是值小于1.0的float型数字,默认: 0.1。 - - **patience** (int,可选) - 当 ``loss`` 连续 ``patience`` 个epoch没有下降(mode: 'min')或上升(mode: 'max')时,学习率才会减小。默认:10。 - - **verbose** (bool,可选) - 如果为 ``True`` , 会在每次更新optimizer中的learning_rate时,打印信息。默认:``False`` 。 - - **threshold** (float,可选) - ``threshold`` 和 ``threshold_mode`` 两个参数将会决定 ``loss`` 最小变化的阈值。小于该阈值的变化 - 将会被忽视。默认:1e-4。 - - **threshold_mode** (str,可选) - `'rel'` 和 `'abs'` 之一。在 `'rel'` 模式下, ``loss`` 最小变化的阈值是 `last_loss * threshold` , - 其中 ``last_loss`` 是 ``loss`` 在上个epoch的值。在 `'abs'` 模式下,``loss`` 最小变化的阈值是 `threshold` 。 默认:`'rel'`。 - - **cooldown** (int,可选) - 在学习速率每次减小之后,会进入时长为 ``cooldown`` 个epoch的冷静期。默认:0。 - - **min_lr** (float,可选) - 最小的学习率。减小后的学习率最低下界限。默认:0。 - - **eps** (float,可选) - 如果新旧学习率间的差异小于 ``eps`` ,则不会更新。默认值:1e-8。 - - **dtype** (str,可选) – 学习率值的数据类型,可以为"float32", "float64"。默认:"float32"。 - -返回: ``loss`` 自适应的学习率 - -返回类型:Variable - -**代码示例**: - - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - x = np.random.uniform(-1, 1, [10, 10]).astype("float32") - linear = fluid.dygraph.Linear(10, 10) - input = fluid.dygraph.to_variable(x) - - adam = fluid.optimizer.Adam( - learning_rate = fluid.dygraph.ReduceLROnPlateau( - learning_rate = 1.0, - decay_rate = 0.5, - patience = 5, - verbose = True, - cooldown = 3), - parameter_list = linear.parameters()) - - for epoch in range(10): - total_loss = 0 - for bath_id in range(5): - out = linear(input) - loss = fluid.layers.reduce_mean(out) - total_loss += loss - adam.minimize(loss) - - avg_loss = total_loss/5 - - # 根据传入total_loss,调整学习率 - reduce_lr.step(avg_loss) - lr = adam.current_step_lr() - print("current avg_loss is %s, current lr is %s" % (avg_loss.numpy()[0], lr)) - - - -.. py:method:: step(loss) -需要在每个epoch调用该方法,其根据传入的 ``loss`` 调整optimizer中的学习率,调整后的学习率将会在下一次调用 ``optimizer.minimize`` 时生效。 - -参数: - - **loss** (Variable) - 类型:Variable,shape为[1]的1-D Tensor。将被用来判断是否需要降低学习率。如果 ``loss`` 连续 ``patience`` 个epochs没有下降, - 将会降低学习率。 - -返回: - 无 - -**代码示例**: - - 参照其类中的说明。 diff --git a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/StepDecay_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/StepDecay_cn.rst deleted file mode 100644 index 0016cf85752bff268a481a389f37f69e964414b6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/learning_rate_scheduler/StepDecay_cn.rst +++ /dev/null @@ -1,73 +0,0 @@ -.. _cn_api_fluid_dygraph_StepDecay: - -StepDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.StepDecay(learning_rate, step_size, decay_rate=0.1) - -:api_attr: 命令式编程模式(动态图) - - -该接口提供 ``step_size`` 衰减学习率的功能,每经过 ``step_size`` 个 ``epoch`` 时会通过 ``decay_rate`` 衰减一次学习率。 - -算法可以描述为: - -.. code-block:: text - - learning_rate = 0.5 - step_size = 30 - decay_rate = 0.1 - learning_rate = 0.5 if epoch < 30 - learning_rate = 0.05 if 30 <= epoch < 60 - learning_rate = 0.005 if 60 <= epoch < 90 - ... - -参数: - - **learning_rate** (float|int) - 初始化的学习率。可以是Python的float或int。 - - **step_size** (int) - 学习率每衰减一次的间隔。 - - **decay_rate** (float, optional) - 学习率的衰减率。 ``new_lr = origin_lr * decay_rate`` 。其值应该小于1.0。默认:0.1。 - -返回: 无 - -**代码示例**: - - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - with fluid.dygraph.guard(): - x = np.random.uniform(-1, 1, [10, 10]).astype("float32") - linear = fluid.dygraph.Linear(10, 10) - input = fluid.dygraph.to_variable(x) - scheduler = fluid.dygraph.StepDecay(0.5, step_size=3) - adam = fluid.optimizer.Adam(learning_rate = scheduler, parameter_list = linear.parameters()) - for epoch in range(9): - for batch_id in range(5): - out = linear(input) - loss = fluid.layers.reduce_mean(out) - adam.minimize(loss) - scheduler.epoch() - print("epoch:{}, current lr is {}" .format(epoch, adam.current_step_lr())) - # epoch:0, current lr is 0.5 - # epoch:1, current lr is 0.5 - # epoch:2, current lr is 0.5 - # epoch:3, current lr is 0.05 - # epoch:4, current lr is 0.05 - # epoch:5, current lr is 0.05 - # epoch:6, current lr is 0.005 - # epoch:7, current lr is 0.005 - # epoch:8, current lr is 0.005 - -.. py:method:: epoch(epoch=None) -通过当前的 epoch 调整学习率,调整后的学习率将会在下一次调用 ``optimizer.minimize`` 时生效。 - -参数: - - **epoch** (int|float,可选) - 类型:int或float。指定当前的epoch数。默认:无,此时将会自动累计epoch数。 - -返回: - 无 - -**代码示例**: - - 参照上述示例代码。 diff --git a/doc/paddle/api/paddle/fluid/dygraph/load_dygraph_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/load_dygraph_cn.rst deleted file mode 100644 index 39b18d7830eaafa66c6a99a770cf8e85b8fc32b5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/load_dygraph_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_fluid_dygraph_load_dygraph: - -load_dygraph -------------------------------- - - -.. py:function:: paddle.fluid.dygraph.load_dygraph(model_path) - -:api_attr: 命令式编程模式(动态图) - - - -该接口尝试从磁盘中加载参数或优化器的 ``dict`` 。 - -该接口会同时加载 ``model_path + ".pdparams"`` 和 ``model_path + ".pdopt"`` 中的内容。 - -参数: - - **model_path** (str) – 保存state_dict的文件前缀。该路径不应该包括后缀 ``.pdparams`` 或 ``.pdopt``。 - - -返回: 两个 ``dict`` ,即从文件中恢复的参数 ``dict`` 和优化器 ``dict`` - -- para_dict: 从文件中恢复的参数 ``dict`` -- opti_dict: 从文件中恢复的优化器 ``dict`` - -返回类型: tuple(dict, dict) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - state_dict = emb.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") - adam = fluid.optimizer.Adam( learning_rate = fluid.layers.noam_decay( 100, 10000) , - parameter_list = emb.parameters() ) - state_dict = adam.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") - - para_state_dict, opti_state_dict = fluid.load_dygraph( "paddle_dy") - - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/BatchNorm_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/BatchNorm_cn.rst deleted file mode 100644 index bede52decd8cf46131fd2cdf6b0b91673fd34781..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/BatchNorm_cn.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. _cn_api_fluid_dygraph_BatchNorm: - -BatchNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.BatchNorm(num_channels, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, dtype='float32', data_layout='NCHW', in_place=False, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False, trainable_statistics=False) - -:alias_main: paddle.nn.BatchNorm -:alias: paddle.nn.BatchNorm,paddle.nn.layer.BatchNorm,paddle.nn.layer.norm.BatchNorm -:old_api: paddle.fluid.dygraph.BatchNorm - - - -该接口用于构建 ``BatchNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了批归一化层(Batch Normalization Layer)的功能,可用作卷积和全连接操作的批归一化函数,根据当前批次数据按通道计算的均值和方差进行归一化。更多详情请参考 : `Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift `_ - -当use_global_stats = False时,:math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是minibatch的统计数据。计算公式如下: - -.. math:: - \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mini-batch-mean \\ - \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// mini-batch-variance \\ - -- :math:`x` : 批输入数据 -- :math:`m` : 当前批次数据的大小 - -当use_global_stats = True时,:math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是全局(或运行)统计数据(moving_mean和moving_variance),通常来自预先训练好的模型。计算公式如下: - -.. math:: - - moving\_mean = moving\_mean * momentum + \mu_{\beta} * (1. - momentum) \quad &// global mean \\ - moving\_variance = moving\_variance * momentum + \sigma_{\beta}^{2} * (1. - momentum) \quad &// global variance \\ - -归一化函数公式如下: - -.. math:: - - \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ - y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift \\ - -- :math:`\epsilon` : 添加较小的值到方差中以防止除零 -- :math:`\gamma` : 可训练的比例参数 -- :math:`\beta` : 可训练的偏差参数 - -参数: - - **num_channels** (int) - 指明输入 ``Tensor`` 的通道数量。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **is_test** (bool, 可选) - 指示是否在测试阶段,非训练阶段使用训练过程中统计到的全局均值和全局方差。默认值:False。 - - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 - - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **dtype** (str, 可选) - 指明输入 ``Tensor`` 的数据类型,可以为float32或float64。默认值:float32。 - - **data_layout** (string, 可选) - 指定输入数据格式,数据格式可以为“NCHW”或者“NHWC”。默认值:“NCHW”。 - - **in_place** (bool, 可选) - 指示 ``batch_norm`` 的输出是否可以复用输入内存。默认值:False。 - - **moving_mean_name** (str, 可选) - ``moving_mean`` 的名称,存储全局均值。如果将其设置为None, ``batch_norm`` 将随机命名全局均值;否则, ``batch_norm`` 将命名全局均值为 ``moving_mean_name`` 。默认值:None。 - - **moving_variance_name** (string, 可选) - ``moving_var`` 的名称,存储全局方差。如果将其设置为None, ``batch_norm`` 将随机命名全局方差;否则, ``batch_norm`` 将命名全局方差为 ``moving_variance_name`` 。默认值:None。 - - **do_model_average_for_mean_and_var** (bool, 可选) - 指示是否为mean和variance做模型均值。默认值:False。 - - **use_global_stats** (bool, 可选) – 指示是否使用全局均值和方差。在预测或测试模式下,将 ``use_global_stats`` 设置为true或将 ``is_test`` 设置为true,这两种行为是等效的。在训练模式中,当设置 ``use_global_stats`` 为True时,在训练期间也将使用全局均值和方差。默认值:False。 - - **trainable_statistics** (bool, 可选) - eval模式下是否计算mean均值和var方差。eval模式下,trainable_statistics为True时,由该批数据计算均值和方差。默认值:False。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - - x = np.random.random(size=(3, 10, 3, 7)).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - batch_norm = fluid.BatchNorm(10) - hidden1 = batch_norm(x) - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/BilinearTensorProduct_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/BilinearTensorProduct_cn.rst deleted file mode 100644 index 59b18c17a32951135e431ef036a6d32771651399..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/BilinearTensorProduct_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_dygraph_BilinearTensorProduct: - -BilinearTensorProduct -------------------------------- - -.. py:class:: paddle.fluid.dygraph.BilinearTensorProduct(input1_dim, input2_dim, output_dim, name=None, act=None, param_attr=None, bias_attr=None, dtype="float32") - -:alias_main: paddle.nn.BilinearTensorProduct -:alias: paddle.nn.BilinearTensorProduct,paddle.nn.layer.BilinearTensorProduct,paddle.nn.layer.common.BilinearTensorProduct -:old_api: paddle.fluid.dygraph.BilinearTensorProduct - - - -该接口用于构建 ``BilinearTensorProduct`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。双线性乘积计算式子如下。 - -.. math:: - - out_{i} = x * W_{i} * {y^\mathrm{T}}, i=0,1,...,size-1 - -式中, - -- :math:`x` : 第一个输入,分别包含M个元素,维度为 :math:`[batch\_size, M]` -- :math:`y` :第二个输入,分别包含N个元素,维度为 :math:`[batch\_size, N]` -- :math:`W_i` :第i个学习到的权重,维度为 :math:`[M,N]` -- :math:`out_i` :输出的第i个元素 -- :math:`y^T` : :math:`y` 的转置 - - -参数: - - **input1_dim** (int) – 第一个输入的维度大小。 - - **input1_dim** (int) – 第二个输入的维度大小。 - - **output_dim** (int) – 输出的维度。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **act** (str,可选) – 对输出应用的激励函数。默认值为None。 - - **param_attr** (ParamAttr) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:维度为[batch_size, size]的2D Tensor,数据类型与输入数据类型相同。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - with fluid.dygraph.guard(): - layer1 = numpy.random.random((5, 5)).astype('float32') - layer2 = numpy.random.random((5, 4)).astype('float32') - bilinearTensorProduct = fluid.dygraph.nn.BilinearTensorProduct( - input1_dim=5, input2_dim=4, output_dim=1000) - ret = bilinearTensorProduct(fluid.dygraph.base.to_variable(layer1), - fluid.dygraph.base.to_variable(layer2)) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/Conv2DTranspose_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/Conv2DTranspose_cn.rst deleted file mode 100644 index b500bdbf6c7884f1bc263532eb0f3db379790fa8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/Conv2DTranspose_cn.rst +++ /dev/null @@ -1,89 +0,0 @@ -.. _cn_api_fluid_dygraph_Conv2DTranspose: - -Conv2DTranspose -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Conv2DTranspose(num_channels, num_filters, filter_size, output_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, dtype="float32") - - - - -该接口用于构建 ``Conv2DTranspose`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维卷积转置层(Convlution2D Transpose Layer),其根据输入(input)、滤波器参数(num_filters、filter_size)、步长(stride)、填充(padding)、膨胀系数(dilation)、组数(groups)来计算得到输出特征图。输入和输出是 ``NCHW`` 格式,N是批数据大小,C是特征图个数,H是特征图高度,W是特征图宽度。滤波器的维度是 [M, C, H, W] ,M是输入特征图个数,C是输出特征图个数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入特征图个数除以组数的结果。如果提供了偏移属性和激活函数类型,卷积的结果会和偏移相加,激活函数会作用在最终结果上。转置卷积的计算过程相当于卷积的反向计算,转置卷积又被称为反卷积(但其实并不是真正的反卷积)。详情请参考: `Conv2DTranspose `_ 。 - -输入 ``X`` 和输出 ``Out`` 的函数关系如下: - -.. math:: - Out=\sigma (W*X+b)\\ - -其中: - - :math:`X` :输入特征图, ``NCHW`` 格式的 ``Tensor`` - - :math:`W` :滤波器,维度为 [M, C, H, W] 的 ``Tensor`` - - :math:`*` :卷积操作 - - :math:`b` :偏移值,2-D ``Tensor`` ,维度为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值, ``Out`` 和 ``X`` 的维度可能不同 - -**输出维度计算示例** - -- 输入: - - 输入维度: :math:`(N,C_{in},H_{in},W_{in})` - - 滤波器维度: :math:`(C_{in},C_{out},H_{f},W_{f})` - -- 输出: - - 输出维度: :math:`(N,C_{out},H_{out},W_{out})` - -- 其中 - -.. math:: - - & H'_{out} = (H_{in}-1)*strides[0]-2*paddings[0]+dilations[0]*(H_f-1)+1 - - & W'_{out} = (W_{in}-1)*strides[1]-2*paddings[1]+dilations[1]*(W_f-1)+1 - - & H_{out}\in[H'_{out},H'_{out} + strides[0]) - - & W_{out}\in[W'_{out},W'_{out} + strides[1]) - -参数: - - **num_channels** (int) - 输入图像的通道数。 - - **num_filters** (int) - 滤波器的个数,和输出特征图个数相同。 - - **filter_size** (int|tuple) - 滤波器大小。如果 ``filter_size`` 是一个元组,则必须包含两个整型数,分别表示滤波器高度和宽度。否则,表示滤波器高度和宽度均为 ``filter_size`` 。 - - **output_size** (int|tuple, 可选) - 输出特征图的大小。如果 ``output_size`` 是一个元组,则必须包含两个整型数,分别表示特征图高度和宽度。如果 ``output_size`` 是整型,表示特征图高度和宽度均为 ``output_size`` 。如果 ``output_size`` 为None,则会根据 ``filter_size`` 、 ``padding`` 和 ``stride`` 来计算 ``output_size`` 。如果 ``output_size`` 和 ``filter_size`` 同时指定,那么它们应满足上面的公式。默认值:None。 - - **padding** (int|tuple, 可选) - 填充大小。如果 ``padding`` 为元组,则必须包含两个整型数,分别表示竖直和水平边界填充大小。否则,表示竖直和水平边界填充大小均为 ``padding`` 。默认值:0。 - - **stride** (int|tuple, 可选) - 步长大小。如果 ``stride`` 为元组,则必须包含两个整型数,分别表示垂直和水平滑动步长。否则,表示垂直和水平滑动步长均为 ``stride`` 。默认值:1。 - - **dilation** (int|tuple, 可选) - 膨胀系数大小。如果 ``dialation`` 为元组,则必须包含两个整型数,分别表示垂直和水平膨胀系数。否则,表示垂直和水平膨胀系数均为 ``dialation`` 。默认值:1。 - - **groups** (int, 可选) - 二维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的分组卷积:当group=2,滤波器的前一半仅和输入特征图的前一半连接。滤波器的后一半仅和输入特征图的后一半连接。默认值:1。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool, 可选) - 是否使用cudnn内核,只有已安装cudnn库时才有效。默认值:True。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值:None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - data = np.random.random((3, 32, 32, 5)).astype('float32') - conv2DTranspose = fluid.dygraph.nn.Conv2DTranspose( - num_channels=32, num_filters=2, filter_size=3) - ret = conv2DTranspose(fluid.dygraph.base.to_variable(data)) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/Conv2D_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/Conv2D_cn.rst deleted file mode 100644 index b374e34f3ccf40c97d8164fd4795cb19457d33ec..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/Conv2D_cn.rst +++ /dev/null @@ -1,120 +0,0 @@ -Conv2D -------------------------------- - -.. py:class:: paddle.nn.Conv2d(num_channels, num_filters, filter_size, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format="NCHW", dtype="float32") - -:alias_main: paddle.nn.Conv2D -:alias: paddle.nn.Conv2D,paddle.nn.layer.Conv2D,paddle.nn.layer.conv.Conv2D - - - -**二维卷积层** - -该OP是二维卷积层(convolution2D layer),根据输入、滤波器、步长(stride)、填充(padding)、膨胀比例(dilations)一组参数计算输出特征层大小。输入和输出是NCHW或NHWC格式,其中N是批尺寸,C是通道数,H是特征高度,W是特征宽度。滤波器是MCHW格式,M是输出图像通道数,C是输入图像通道数,H是滤波器高度,W是滤波器宽度。如果组数(groups)大于1,C等于输入图像通道数除以组数的结果。详情请参考UFLDL's : `卷积 `_ 。如果bias_attr不为False,卷积计算会添加偏置项。如果指定了激活函数类型,相应的激活函数会作用在最终结果上。 - -对每个输入X,有等式: - -.. math:: - - Out = \sigma \left ( W * X + b \right ) - -其中: - - :math:`X` :输入值,NCHW或NHWC格式的4-D Tensor - - :math:`W` :滤波器值,MCHW格式的4-D Tensor - - :math:`*` :卷积操作 - - :math:`b` :偏置值,2-D Tensor,形状为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值,NCHW或NHWC格式的4-D Tensor, 和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入形状::math:`(N,C_{in},H_{in},W_{in})` - - 滤波器形状: :math:`(C_{out},C_{in},H_{f},W_{f})` - -- 输出: - - 输出形状: :math:`(N,C_{out},H_{out},W_{out})` - -其中 - -.. math:: - - H_{out} &= \frac{\left ( H_{in} + padding\_height\_top + padding\_height\_bottom-\left ( dilation[0]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - W_{out} &= \frac{\left ( W_{in} + padding\_width\_left + padding\_width\_right -\left ( dilation[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - -如果 ``padding`` = "SAME": - -.. math:: - H_{out} = \frac{(H_{in} + stride[0] - 1)}{stride[0]} - -.. math:: - W_{out} = \frac{(W_{in} + stride[1] - 1)}{stride[1]} - -如果 ``padding`` = "VALID": - -.. math:: - H_{out} = \frac{\left ( H_{in} -\left ( dilation[0]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - W_{out} = \frac{\left ( W_{in} -\left ( dilation[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - -参数: - - **num_channels** (int) - 输入图像的通道数。 - - **num_filters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - - **filter_size** (int|list|tuple) - 滤波器大小。如果它是一个列表或元组,则必须包含两个整数值:(filter_size_height,filter_size_width)。若为一个整数,filter_size_height = filter_size_width = filter_size。 - - **padding** (int|list|tuple|str,可选) - 填充大小。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含4个二元组:当 ``data_format`` 为"NCHW"时为 [[0,0], [0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NHWC"时为[[0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含4个整数值:[padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含2个整数值:[padding_height, padding_width],此时padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_height = padding_width = padding。默认值:0。 - - **stride** (int|list|tuple,可选) - 步长大小。滤波器和输入进行卷积计算时滑动的步长。如果它是一个列表或元组,则必须包含两个整型数:(stride_height,stride_width)。若为一个整数,stride_height = stride_width = stride。默认值:1。 - - **dilation** (int|list|tuple,可选) - 膨胀比例大小。空洞卷积时会使用该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息。如果膨胀比例为列表或元组,则必须包含两个整型数:(dilation_height,dilation_width)。若为一个整数,dilation_height = dilation_width = dilation。默认值:1。 - - **groups** (int,可选) - 二维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=n,输入和滤波器分别根据通道数量平均分为n组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算,……,第n组滤波器和第n组输入进行卷积计算。默认值:1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool,可选)- 指定偏置参数属性的对象。若 ``bias_attr`` 为bool类型,只支持为False,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool,可选)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **act** (str,可选) - 激活函数类型, 如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` 。如果设为None,则未添加激活函数。默认值:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值:None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - **dtype** (str, 可选) – 权重的数据类型,可以为float32或float64。默认为float32。 - - -属性 -:::::::::::: -.. py:attribute:: weight -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias -本层的可学习偏置,类型为 ``Parameter`` - -返回: 无。 - -抛出异常: - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``input`` 的通道数未被明确定义。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有4个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果输入不是4-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - - ``ShapeError`` - 如果输出的通道数不能被 ``groups`` 整除。 - - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - from paddle import nn - x = np.random.uniform(-1, 1, (2, 4, 8, 8)).astype('float32') - place = fluid.CPUPlace() - with dg.guard(place): - x_var = dg.to_variable(x) - conv = nn.Conv2D(4, 6, (3, 3)) - y_var = conv(x_var) - y_np = y_var.numpy() - print(y_np.shape) - - # (2, 6, 6, 6) diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/Conv3DTranspose_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/Conv3DTranspose_cn.rst deleted file mode 100644 index a3e4134d1e6a31dd8e206bcf5546d511a79e9d7a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/Conv3DTranspose_cn.rst +++ /dev/null @@ -1,118 +0,0 @@ -.. _cn_api_fluid_dygraph_Conv3DTranspose: - -Conv3DTranspose -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Conv3DTranspose(num_channels, num_filters, filter_size, output_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, dtype="float32") - - - - - -该接口用于构建 ``Conv3DTranspose`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。3D卷积转置层(Convlution3D transpose layer)根据输入(input)、滤波器(filter)和卷积核膨胀(dilations)、步长(stride)、填充来计算输出特征层大小或者通过output_size指定输出特征层大小。输入(Input)和输出(Output)为NCDHW格式。其中 ``N`` 为batch大小, ``C`` 为通道数(channel), ``D`` 为特征深度, ``H`` 为特征高度, ``W`` 为特征宽度。转置卷积的计算过程相当于卷积的反向计算。转置卷积又被称为反卷积(但其实并不是真正的反卷积)。欲了解卷积转置层细节,请参考下面的说明和 参考文献_ 。如果参数bias_attr不为False, 转置卷积计算会添加偏置项。如果act不为None,则转置卷积计算之后添加相应的激活函数。 - - -.. _参考文献: https://arxiv.org/abs/1603.07285 - -输入 :math:`X` 和输出 :math:`Out` 函数关系如下: - -.. math:: - \\Out=\sigma (W*X+b)\\ - -其中: - - :math:`X` : 输入图像,具有NCDHW格式的张量(Tensor) - - - :math:`W` : 滤波器,具有NCDHW格式的张量(Tensor) - - - :math:`*` : 卷积操作(注意:转置卷积本质上的计算还是卷积) - - - :math:`b` : 偏置(bias),维度为 :math:`[M,1]` 的2D Tensor - - - :math:`σ` : 激活函数 - - - :math:`Out` : 输出值, ``Out`` 和 ``X`` 的 shape可能不一样 - - -**样例** - -输入: - - 输入Tensor的维度::math:`[N,C_{in}, D_{in}, H_{in}, W_{in}]` - - 滤波器Tensor的维度::math:`[C_{in}, C_{out}, D_f, H_f, W_f]` - - - -输出: - - 输出Tensor的维度::math:`[N,C_{out}, D_{out}, H_{out}, W_{out}]` - - -其中: - -.. math:: - D'_{out}=(D_{in}-1)*strides[0]-2*paddings[0]+dilations[0]*(D_f-1)+1 \\ - H'_{out}=(H_{in}-1)*strides[1]-2*paddings[1]+dilations[1]*(H_f-1)+1 \\ - W'_{out}=(W_{in}-1)*strides[2]-2*paddings[2]+dilations[2]*(W_f-1)+1 \\ -.. math:: - D_{out}\in[D'_{out},D'_{out} + strides[0]) \\ - H_{out}\in[H'_{out},H'_{out} + strides[1]) \\ - W_{out}\in[W'_{out},W'_{out} + strides[2]) - - -**注意** : - 如果output_size为None,则 :math:`D_{out}` = :math:`D^\prime_{out}` , :math:`H_{out}` = :math:`H^\prime_{out}` , :math:`W_{out}` = :math:`W^\prime_{out}` ;否则,指定的output_size_depth(输出特征层的深度) :math:`D_{out}` 应当介于 :math:`D^\prime_{out}` 和 :math:`D^\prime_{out} + strides[0]` 之间(不包含 :math:`D^\prime_{out} + strides[0]` ),指定的output_size_height(输出特征层的高) :math:`H_{out}` 应当介于 :math:`H^\prime_{out}` 和 :math:`H^\prime_{out} + strides[1]` 之间(不包含 :math:`H^\prime_{out} + strides[1]` ), 并且指定的output_size_width(输出特征层的宽) :math:`W_{out}` 应当介于 :math:`W^\prime_{out}` 和 :math:`W^\prime_{out} + strides[2]` 之间(不包含 :math:`W^\prime_{out} + strides[2]` )。 - - 由于转置卷积可以当成是卷积的反向计算,而根据卷积的输入输出计算公式来说,不同大小的输入特征层可能对应着相同大小的输出特征层,所以对应到转置卷积来说,固定大小的输入特征层对应的输出特征层大小并不唯一。 - - 如果指定了output_size, 其可以自动计算滤波器的大小。 - - -参数: - - **num_channels** (int) - 输入图像的通道数。 - - **num_filters** (int) - 滤波器(卷积核)的个数,与输出的图片的通道数相同。 - - **filter_size** (int|tuple) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_depth,filter_size_height, filter_size_width)。否则,filter_size_depth = filter_size_height = filter_size_width = filter_size。如果filter_size=None,则必须指定output_size, 其会根据output_size、padding和stride计算出滤波器大小。 - - **output_size** (int|tuple,可选) - 输出图片的大小。如果 ``output_size`` 是一个元组(tuple),则该元形式为(image_H,image_W),这两个值必须为整型。如果未设置,则内部会使用filter_size、padding和stride来计算output_size。如果 ``output_size`` 和 ``filter_size`` 是同时指定的,那么它们应满足上面的公式。默认值为None。output_size和filter_size不能同时为None。 - - **padding** (int|tuple,可选) - 填充padding大小。padding参数在输入特征层每边添加 ``dilation * (kernel_size - 1) - padding`` 个0。如果padding是一个元组,它必须包含三个整数(padding_depth,padding_height,padding_width)。否则,padding_depth = padding_height = padding_width = padding。默认值为0。 - - **stride** (int|tuple,可选) - 步长stride大小。滤波器和输入进行卷积计算时滑动的步长。如果stride是一个元组,那么元组的形式为(stride_depth,stride_height,stride_width)。否则,stride_depth = stride_height = stride_width = stride。默认值为1。 - - **dilation** (int|tuple,可选) - 膨胀比例dilation大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 `_ 较好理解。如果膨胀比例dilation是一个元组,那么元组的形式为(dilation_depth,dilation_height, dilation_width)。否则,dilation_depth = dilation_height = dilation_width = dilation。默认值为1。 - - **groups** (int,可选) - 三维转置卷积层的组数。从Alex Krizhevsky的CNN Deep论文中的群卷积中受到启发,当group=2时,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认值为1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool,可选) - 是否使用cudnn内核,只有安装Paddle GPU版时才有效。默认值为True。 - - **act** (str,可选) - 激活函数类型,如果设置为None,则不使用激活函数。默认值为None。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - with fluid.dygraph.guard(): - data = numpy.random.random((5, 3, 12, 32, 32)).astype('float32') - - conv3dTranspose = fluid.dygraph.nn.Conv3DTranspose( - 'Conv3DTranspose', - num_filters=12, - filter_size=12, - use_cudnn=False) - ret = conv3dTranspose(fluid.dygraph.base.to_variable(data)) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/Conv3D_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/Conv3D_cn.rst deleted file mode 100644 index 9e0291edba17ab22bc5288e21b4e16ee5a0305f0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/Conv3D_cn.rst +++ /dev/null @@ -1,88 +0,0 @@ -.. _cn_api_fluid_dygraph_Conv3D: - -Conv3D -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Conv3D(num_channels, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, dtype="float32") - - - - - -该接口用于构建 ``Conv3D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。3D卷积层(convolution3D layer)根据输入、滤波器(filter)、步长(stride)、填充(padding)、膨胀(dilations)、组数参数计算得到输出。输入和输出是[N, C, D, H, W]的多维tensor,其中N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度。卷积三维(Convlution3D)和卷积二维(Convlution2D)相似,但多了一维深度(depth)。如果提供了bias属性和激活函数类型,bias会添加到卷积(convolution)的结果中相应的激活函数会作用在最终结果上。 - -对每个输入X,有等式: - -.. math:: - - - Out = \sigma \left ( W * X + b \right ) - -其中: - - :math:`X` :输入值,NCDHW格式的张量(Tensor) - - :math:`W` :滤波器值,MCDHW格式的张量(Tensor) - - :math:`*` : 卷积操作 - - :math:`b` :Bias值,二维张量(Tensor),维度为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值, ``Out`` 和 ``X`` 的维度可能不同 - -**示例** - -- 输入: - 输入Tensor的维度: :math:`[N, C_{in}, D_{in}, H_{in}, W_{in}]` - - 滤波器Tensor的维度: :math:`[C_{out}, C_{in}, D_f, H_f, W_f]` -- 输出: - 输出Tensor的维度: :math:`[N, C_{out}, D_{out}, H_{out}, W_{out}]` - -其中 - -.. math:: - - - D_{out}&= \frac{(D_{in} + 2 * paddings[0] - (dilations[0] * (D_f - 1) + 1))}{strides[0]} + 1 \\ - H_{out}&= \frac{(H_{in} + 2 * paddings[1] - (dilations[1] * (H_f - 1) + 1))}{strides[1]} + 1 \\ - W_{out}&= \frac{(W_{in} + 2 * paddings[2] - (dilations[2] * (W_f - 1) + 1))}{strides[2]} + 1 - -参数: - - **num_channels** (int) - 输入图像的通道数。 - - **num_fliters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - - **filter_size** (int|tuple) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_D, filter_size_H, filter_size_W)。如果filter_size是一个int型,则filter_size_depth = filter_size_height = filter_size_width = filter_size。 - - **stride** (int|tuple,可选) - 步长(stride)大小。滤波器和输入进行卷积计算时滑动的步长。如果步长(stride)为元组,则必须包含三个整型数, (stride_D, stride_H, stride_W)。否则,stride_D = stride_H = stride_W = stride。默认值为1。 - - **padding** (int|tuple,可选) - 填充(padding)大小。padding参数在输入特征层每边添加padding个0。如果填充(padding)为元组,则必须包含三个整型数,(padding_depth, padding_height, padding_width)。否则, padding_depth = padding_height = padding_width = padding。默认值为0。 - - **dilation** (int|tuple,可选) - 膨胀(dilation)大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 `_ 较好理解。如果膨胀(dialation)为元组,则必须包含两个整型数, (dilation_D, dilation_H, dilation_W)。否则,dilation_D = dilation_H = dilation_W = dilation。默认值为1。 - - **groups** (int,可选) - 三维卷积层(Conv3D Layer)的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=2,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认值为1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **use_cudnn** (bool,可选) - 是否用cudnn内核,只有安装Paddle GPU版时才有效。默认值为True。 - - **act** (str,可选) - 激活函数类型,如果设为None,则未添加激活函数。默认值为None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - with fluid.dygraph.guard(): - data = numpy.random.random((5, 3, 12, 32, 32)).astype('float32') - conv3d = fluid.dygraph.nn.Conv3D( - 'Conv3D', num_filters=2, filter_size=3, act="relu") - ret = conv3d(fluid.dygraph.base.to_variable(data)) - - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/Dropout_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/Dropout_cn.rst deleted file mode 100644 index ce72d582a0abaad2c4db1f2634049388203f8b51..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/Dropout_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_fluid_dygraph_Dropout: - -Dropout -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Dropout(p=0.5, seed=None, dropout_implementation='downgrade_in_infer', is_test=False) - -丢弃或者保持输入的每个元素独立。Dropout是一种正则化手段,通过在训练过程中阻止神经元节点间的相关性来减少过拟合。根据给定的丢弃概率,dropout操作符按丢弃概率随机将一些神经元输出设置为0,其他的仍保持不变。 - -Dropout层可以删除,提高执行效率。 - -参数: - - **p** (float32,可选) - 输入单元的丢弃概率,即输入单元设置为0的概率。默认值:0.5 - - **seed** (int,可选) - 整型数据,用于创建随机种子。如果该参数设为None,则使用随机种子。注:如果给定一个整型种子,始终丢弃相同的输出单元。训练过程中勿用固定不变的种子。默认值:None。 - - **dropout_implementation** (str,可选) - 丢弃单元的方式,有两种'downgrade_in_infer'和'upscale_in_train'两种选择,默认:'downgrade_in_infer'。具体作用可以参考一下描述。 - - 1. downgrade_in_infer(default), 在预测时减小输出结果 - - - train: out = input * mask - - - inference: out = input * (1.0 - p) - - (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``p`` ) - - 2. upscale_in_train, 增加训练时的结果 - - - train: out = input * mask / ( 1.0 - p ) - - - inference: out = input - - (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``p`` ) - - - **is_test** (bool,可选) - 标记是否是测试阶段。此标志仅对静态图模式有效。对于动态图模式,请使用 ``eval()`` 接口。默认:False。 - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - - x = np.random.random(size=(3, 10, 3, 7)).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - m = fluid.dygraph.Dropout(p=0.5) - droped_train = m(x) - # 切换到 eval 模式 - m.eval() - droped_eval = m(x) - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/Embedding_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/Embedding_cn.rst deleted file mode 100644 index 985bf1c9eb834aa024ebab792a00b151328ef77a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/Embedding_cn.rst +++ /dev/null @@ -1,105 +0,0 @@ -.. _cn_api_fluid_dygraph_Embedding: - -Embedding -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Embedding(size, is_sparse=False, is_distributed=False, padding_idx=None, param_attr=None, dtype='float32') - -:alias_main: paddle.nn.Embedding -:alias: paddle.nn.Embedding,paddle.nn.layer.Embedding,paddle.nn.layer.common.Embedding -:old_api: paddle.fluid.dygraph.Embedding - - - -嵌入层(Embedding Layer) - -该接口用于构建 ``Embedding`` 的一个可调用对象,具体用法参照 ``代码示例`` 。其根据input中的id信息从embedding矩阵中查询对应embedding信息,并会根据输入的size (vocab_size, emb_size)和dtype自动构造一个二维embedding矩阵。 - -输出的Tensor的shape是在输入Tensor shape的最后一维后面添加了emb_size的维度。 - -注:input中的id必须满足 ``0 =< id < size[0]``,否则程序会抛异常退出。 - - -:: - - Case 1: - - input是Tensor, 且padding_idx = -1 - input.data = [[1, 3], [2, 4], [4, 127]] - input.shape = [3, 2] - 若size = [128, 16] - 输出为Tensor: - out.shape = [3, 2, 16] - out.data = [[[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654]], - - [[0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365]], - - [[0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]]] # padding data - 输入的padding_idx小于0,则自动转换为padding_idx = -1 + 128 = 127, 对于输入id为127的词,进行padding处理。 - - Case 2: - - input是lod level 为1的LoDTensor, 且padding_idx = 0 - input.lod = [[2, 3]] - input.data = [[1], [3], [2], [4], [0]] - input.shape = [5, 1] - 若size = [128, 16] - 输出为LoDTensor: - out.lod = [[2, 3]] - out.shape = [5, 1, 16] - out.data = [[[0.129435295, 0.244512452, ..., 0.436322452]], - [[0.345421456, 0.524563927, ..., 0.144534654]], - [[0.345249859, 0.124939536, ..., 0.194353745]], - [[0.945345345, 0.435394634, ..., 0.435345365]], - [[0.0, 0.0, ..., 0.0 ]]] # padding data - 输入的padding_idx = 0,则对于输入id为0的词,进行padding处理。 - -参数: - - **size** (tuple|list) - embedding矩阵的维度。必须包含两个元素,第一个元素为vocab_size(词表大小), 第二个为emb_size(embedding层维度)。 - - **is_sparse** (bool) - 是否使用稀疏的更新方式,这个参数只会影响反向的梯度更新的性能,sparse更新速度更快,推荐使用稀疏更新的方式。但某些optimizer不支持sparse更新,比如 :ref:`cn_api_fluid_optimizer_AdadeltaOptimizer` 、 :ref:`cn_api_fluid_optimizer_AdamaxOptimizer` 、 :ref:`cn_api_fluid_optimizer_DecayedAdagradOptimizer` 、 :ref:`cn_api_fluid_optimizer_FtrlOptimizer` 、 :ref:`cn_api_fluid_optimizer_LambOptimizer` 、:ref:`cn_api_fluid_optimizer_LarsMomentumOptimizer` ,此时is_sparse必须为False。默认为False。 - - **is_distributed** (bool) - 是否使用分布式的方式存储embedding矩阵,仅在多机分布式cpu训练中使用。默认为False。 - - **padding_idx** (int|long|None) - padding_idx需在区间[-vocab_size, vocab_size),否则不生效,padding_idx<0时,padding_idx会被改成vocab_size + padding_idx,input中等于padding_index的id对应的embedding信息会被设置为0,且这部分填充数据在训练时将不会被更新。如果为None,不作处理,默认为None。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。此外,可以通过 ``param_attr`` 参数加载用户自定义或预训练的词向量。只需将本地词向量转为numpy数据格式,且保证本地词向量的shape和embedding的 ``size`` 参数一致,然后使用 :ref:`cn_api_fluid_initializer_NumpyArrayInitializer` 进行初始化,即可实现加载自定义或预训练的词向量。详细使用方法见代码示例2。 - - **dtype** (str|core.VarDesc.VarType) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - -返回:input映射后得到的Embedding Tensor或LoDTensor,数据类型和dtype定义的类型一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.dygraph.base as base - import numpy as np - - # 示例 1 - inp_word = np.array([[2, 3, 5], [4, 2, 1]]).astype('int64') - inp_word.shape # [2, 3] - dict_size = 20 - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding( - size=[dict_size, 32], - param_attr='emb.w', - is_sparse=False) - static_rlt3 = emb(base.to_variable(inp_word)) - static_rlt3.shape # [2, 3, 32] - - # 示例 2: 加载用户自定义或预训练的词向量 - weight_data = np.random.random(size=(128, 100)) # numpy格式的词向量数据 - w_param_attrs = fluid.ParamAttr( - name="emb_weight", - learning_rate=0.5, - initializer=fluid.initializer.NumpyArrayInitializer(weight_data), - trainable=True) - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding( - size=[128, 100], - param_attr= w_param_attrs, - is_sparse=False) - static_rlt3 = emb(base.to_variable(inp_word)) - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/GRUUnit_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/GRUUnit_cn.rst deleted file mode 100644 index c2f986da1df15d700808d8f57596f15e0c7c6c6c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/GRUUnit_cn.rst +++ /dev/null @@ -1,82 +0,0 @@ -.. _cn_api_fluid_dygraph_GRUUnit: - -GRUUnit -------------------------------- - -.. py:class:: paddle.fluid.dygraph.GRUUnit(name_scope, size, param_attr=None, bias_attr=None, activation='tanh', gate_activation='sigmoid', origin_mode=False, dtype='float32') - - - - -该接口用于构建 ``GRU(Gated Recurrent Unit)`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其用于完成单个时间步内GRU的计算,支持以下两种计算方式: - -如果origin_mode为True,则使用的运算公式来自论文 -`Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation `_ 。 - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = u_t \odot h_{t-1} + (1-u_t) \odot \tilde{h_t} - - -如果origin_mode为False,则使用的运算公式来自论文 -`Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling `_ 。 - -公式如下: - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = (1-u_t) \odot h_{t-1} + u_t \odot \tilde{h_t} - - -其中, :math:`x_t` 为当前时间步的输入,:math:`h_{t-1}` 为前一时间步的隐状态 ``hidden``; :math:`u_t` 、 :math:`r_t` 、 :math:`\tilde{h_t}` 和 :math:`h_t` 分别代表了GRU单元中update gate(更新门)、reset gate(重置门)、candidate hidden(候选隐状态)和隐状态输出; :math:`\odot` 为逐个元素相乘; -:math:`W_{uh}, b_u` 、 :math:`W_{rh}, b_r` 和 :math:`W_{ch}, b_c` 分别代表更新门、重置门和候选隐状态在计算时使用的权重矩阵和偏置。在实现上,三个权重矩阵合并为一个维度为 :math:`[D, D \times 3]` 的Tensor存放。 - -参数: - - **size** (int) – 输入数据的维度大小。 - - **param_attr** (ParamAttr,可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - **注意** - - 权重参数维度为 :math:`[T, 3×D]` , :math:`D` 是隐藏状态的规模(hidden size), 其值与输入size相关,计算方式为size除以3取整 。 - - 权重参数矩阵所有元素由两部分组成, 一是update gate和reset gate的权重,维度为 :math:`[D, 2×D]` 的2D Tensor,数据类型可以为float32或float64;二是候选隐藏状态(candidate hidden state)的权重矩阵,维度为 :math:`[D, D]` 的2D Tensor,数据类型可以为float32或float64。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **activation** (str,可选) – 公式中 :math:`act_c` 激活函数的类型。可以为'identity'、'sigmoid'、'tanh'、'relu'四种激活函数设置值。默认值为'tanh'。 - - **gate_activation** (str,可选) – 公式中 :math:`act_g` 激活函数的类型。可以为'identity'、'sigmoid'、'tanh'、'relu'四种激活函数设置值。默认值为'sigmoid'。 - - **origin_mode** (bool) – 指明要使用的GRU计算方式,两种计算方式具体差异见公式描述。默认值为False。 - - **dtype** (str,可选) – 该层的数据类型,可以为'float32', 'float64'。默认值为'float32'。 - -返回: - None. - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.dygraph.base as base - import numpy - - lod = [[2, 4, 3]] - D = 5 - T = sum(lod[0]) - - input = numpy.random.rand(T, 3 * D).astype('float32') - hidden_input = numpy.random.rand(T, D).astype('float32') - with fluid.dygraph.guard(): - x = numpy.random.random((3, 32, 32)).astype('float32') - gru = fluid.dygraph.GRUUnit(size=D * 3) - dy_ret = gru( - base.to_variable(input), base.to_variable(hidden_input)) - - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/GroupNorm_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/GroupNorm_cn.rst deleted file mode 100644 index 5a619d25a616a3cc8922373c335fad404623ba6d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/GroupNorm_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_dygraph_GroupNorm: - -GroupNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.GroupNorm(channels, groups, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, data_layout='NCHW', dtype="float32") - -:alias_main: paddle.nn.GroupNorm -:alias: paddle.nn.GroupNorm,paddle.nn.layer.GroupNorm,paddle.nn.layer.norm.GroupNorm -:old_api: paddle.fluid.dygraph.GroupNorm - - - -**Group Normalization层** - -该接口用于构建 ``GroupNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了组归一化层的功能。更多详情请参考: `Group Normalization `_ 。 - -参数: - - **channels** (int) - 输入的通道数。 - - **groups** (int) - 从通道中分离出来的 ``group`` 的数目。 - - **epsilon** (float, 可选) - 为防止方差除零,增加一个很小的值。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **data_layout** (str, 可选) - 只支持“NCHW”(num_batches,channels,height,width)格式。默认值:“NCHW”。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:无 - -抛出异常: - - ValueError - 如果 ``data_layout`` 不是“NCHW”格式。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy s np - - with fluid.dygraph.guard(): - x = np.random.random((8, 32, 32)).astype('float32') - groupNorm = fluid.dygraph.nn.GroupNorm(channels=32, groups=4) - ret = groupNorm(fluid.dygraph.base.to_variable(x)) - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/InstanceNorm_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/InstanceNorm_cn.rst deleted file mode 100644 index 334fa5109f3ba0f52b1039357e08032671cd1849..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/InstanceNorm_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_dygraph_InstanceNorm: - -InstanceNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.InstanceNorm(num_channels, epsilon=1e-05, param_attr=None, bias_attr=None, dtype='float32') - -该接口用于构建 ``InstanceNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。 - -可用作卷积和全连接操作的实例正则化函数,根据每个样本的每个通道的均值和方差信息进行正则化。该层需要的数据格式如下: - -NCHW[batch,in_channels,in_height,in_width] - -更多详情请参考 : `Instance Normalization: The Missing Ingredient for Fast Stylization `_ - -``input`` 是mini-batch的输入。 - -.. math:: - \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mean of each channel in each sample in a batch \\ - \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// variance of each channel in each sample a batch \\ - \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ - y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift - - -参数: - - **num_channels** (int)- 指明输入 ``Tensor`` 的通道数量。 - - **epsilon** (float,默认1e-05)- 为了当前输入做标准化时得到稳定的结果而加在的分母上的扰动值。默认值为1e-5。 - - **param_attr** (ParamAttr|None) - instance_norm 权重参数的属性,可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 如果设为None,则默认的参数初始化为1.0。如果在ParamAttr指定了属性时, instance_norm创建相应属性的param_attr(权重)参数。默认:None。 - - **bias_attr** (ParamAttr|None) - instance_norm 偏置参数的属性,可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。如果设为None,默认的参数初始化为0.0。如果在ParamAttr指定了参数的属性时, instance_norm创建相应属性的bias_attr(偏置)参数。默认:None。 - - **dtype** (string,默认float32)- 指明输入 ``Tensor`` 的数据类型,可以为float32或float64。默认:float32。 - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - import paddle - - # x's shape is [1, 3, 1, 2] - x = np.array([[[[1.0, 8.0]], [[10.0, 5.0]], [[4.0, 6.0]]]]).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - instanceNorm = paddle.nn.InstanceNorm(3) - ret = instanceNorm(x) - # ret's shape is [1, 3, 1, 2]; value is [-1 1 0.999999 -0.999999 -0.999995 0.999995] - print(ret) - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/LayerNorm_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/LayerNorm_cn.rst deleted file mode 100644 index 2fd08fe7ab4ddf0fb1055a49bb96ac70bcb087d5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/LayerNorm_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_dygraph_LayerNorm: - -LayerNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.LayerNorm(normalized_shape, scale=True, shift=True, begin_norm_axis=1, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, dtype="float32") - -:alias_main: paddle.nn.LayerNorm -:alias: paddle.nn.LayerNorm,paddle.nn.layer.LayerNorm,paddle.nn.layer.norm.LayerNorm -:old_api: paddle.fluid.dygraph.LayerNorm - - - -该接口用于构建 ``LayerNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了层归一化层(Layer Normalization Layer)的功能,其可以应用于小批量输入数据。更多详情请参考:`Layer Normalization `_ - -计算公式如下 - -.. math:: - \\\mu=\frac{1}{H}\sum_{i=1}^{H}x_i\\ - - \\\sigma=\sqrt{\frac{1}{H}\sum_i^H{(x_i-\mu)^2} + \epsilon}\\ - - \\y=f(\frac{g}{\sigma}(x-\mu) + b)\\ - -- :math:`x` : 该层神经元的向量表示 -- :math:`H` : 层中隐藏神经元个数 -- :math:`\epsilon` : 添加较小的值到方差中以防止除零 -- :math:`g` : 可训练的比例参数 -- :math:`b` : 可训练的偏差参数 - - -参数: - - **normalized_shape** (int 或 list 或 tuple) – 需规范化的shape,期望的输入shape为 ``[*, normalized_shape[0], normalized_shape[1], ..., normalized_shape[-1]]``。如果是单个整数,则此模块将在最后一个维度上规范化(此时最后一维的维度需与该参数相同)。 - - **scale** (bool, 可选) - 指明是否在归一化后学习自适应增益 ``g`` 。默认值:True。 - - **shift** (bool, 可选) - 指明是否在归一化后学习自适应偏差 ``b`` 。默认值:True。 - - **epsilon** (float, 可选) - 指明在计算过程中是否添加较小的值到方差中以防止除零。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **dtype** (str,可选) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy - - x = numpy.random.random((3, 32, 32)).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - layerNorm = fluid.LayerNorm([32, 32]) - ret = layerNorm(x) - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/Linear_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/Linear_cn.rst deleted file mode 100644 index c741deb393c1eda09d4c8daa1521139c564e8ce9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/Linear_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_dygraph_Linear: - -Linear -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Linear(input_dim, output_dim, param_attr=None, bias_attr=None, act=None, dtype='float32') - -:alias_main: paddle.nn.Linear -:alias: paddle.nn.Linear,paddle.nn.layer.Linear,paddle.nn.layer.common.Linear -:old_api: paddle.fluid.dygraph.Linear - - - - -**线性变换层:** - -.. math:: - - \\Out = Act({XW + b})\\ - -其中,:math:`X` 为输入的 Tensor, :math:`W` 和 :math:`b` 分别为权重和偏置。 - -Linear 层只接受一个 Tensor 的输入。 -Linear 层将输入 Tensor 与权重矩阵 :math:`W` 相乘,然后生成形状为 :math:`[N,*,output_dim]` 的输出张量, -其中 :math:`N` 是批量大小,:math:`*` 表示任意数量的附加尺寸。 -如果 bias_attr 不是 None,则将创建一个 bias 变量并将其添加到输出中。 -最后,如果激活 act 不是 None,则相应激活函数也将应用于输出上。 - -参数: - - **input_dim** (int) – 线性变换层输入单元的数目。 - - **output_dim** (int) – 线性变换层输出单元的数目。 - - **param_attr** (ParamAttr, 可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) – 指定偏置参数属性的对象,若 `bias_attr` 为bool类型,如果设置为False,表示不会为该层添加偏置;如果设置为True,表示使用默认的偏置参数属性。默认值为None,表示使用默认的偏置参数属性。默认的偏置参数属性将偏置参数的初始值设为0。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **dtype** (str, 可选) – 权重的数据类型,可以为float32或float64。默认为float32。 - -返回:无 - -**代码示例** - -.. code-block:: python - - from paddle.fluid.dygraph.base import to_variable - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - import numpy as np - - data = np.random.uniform( -1, 1, [30, 10, 32] ).astype('float32') - with fluid.dygraph.guard(): - linear = Linear(32, 64) - data = to_variable(data) - res = linear(data) # [30, 10, 64] - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/NCE_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/NCE_cn.rst deleted file mode 100644 index 45302572ed5bfb377763073775d19cbed4310079..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/NCE_cn.rst +++ /dev/null @@ -1,82 +0,0 @@ -.. _cn_api_fluid_dygraph_NCE: - -NCE -------------------------------- - -.. py:class:: paddle.fluid.dygraph.NCE(num_total_classes, dim, param_attr=None, bias_attr=None, num_neg_samples=None, sampler='uniform', custom_dist=None, seed=0, is_sparse=False, dtype="float32") - - - - -该接口用于构建 ``NCE`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了 ``NCE`` 损失函数的功能,其默认使用均匀分布进行抽样,计算并返回噪音对比估计( noise-contrastive estimation training loss)。更多详情请参考:`Noise-contrastive estimation: A new estimation principle for unnormalized statistical models `_ - -参数: - - **num_total_classes** (int) - 所有样本中的类别的总数。 - - **dim** (int) - 输入的维度(一般为词嵌入的维度)。 - - **sample_weight** (Variable, 可选) - 维度为\[batch_size, 1\],存储每个样本的权重。每个样本的默认权重为1.0。默认值:None。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **num_neg_samples** (int, 可选) - 负样本的数量。默认值:10。 - - **sampler** (str, 可选) – 指明采样器的类型,用于从负类别中进行采样。可以是 ``uniform`` 、 ``log_uniform`` 或 ``custom_dist`` 。 默认值: ``uniform`` 。 - - **custom_dist** (float[], 可选) – float[] 类型的数据,并且它的长度为 ``num_total_classes`` 。如果采样器类别为 ``custom_dist`` ,则使用此参数。custom_dist\[i\]是第i个类别被取样的概率。默认值:None - - **seed** (int, 可选) – 采样器使用的随机种子。默认值:0。 - - **is_sparse** (bool, 可选) – 指明是否使用稀疏更新,如果为True, :math:`weight@GRAD` 和 :math:`bias@GRAD` 会变为 SelectedRows。默认值:False。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - -返回:无 - -**代码示例** - -.. code-block:: python - - - import numpy as np - import paddle.fluid as fluid - - window_size = 5 - dict_size = 20 - label_word = int(window_size // 2) + 1 - inp_word = np.array([[1], [2], [3], [4], [5]]).astype('int64') - nid_freq_arr = np.random.dirichlet(np.ones(20) * 1000).astype('float32') - - with fluid.dygraph.guard(): - words = [] - for i in range(window_size): - words.append(fluid.dygraph.base.to_variable(inp_word[i])) - - emb = fluid.Embedding( - size=[dict_size, 32], - param_attr='emb.w', - is_sparse=False) - - embs3 = [] - for i in range(window_size): - if i == label_word: - continue - - emb_rlt = emb(words[i]) - embs3.append(emb_rlt) - - embs3 = fluid.layers.concat(input=embs3, axis=1) - nce = fluid.NCE( - num_total_classes=dict_size, - dim=embs3.shape[1], - num_neg_samples=2, - sampler="custom_dist", - custom_dist=nid_freq_arr.tolist(), - seed=1, - param_attr='nce.w', - bias_attr='nce.b') - - wl = fluid.layers.unsqueeze(words[label_word], axes=[0]) - nce_loss3 = nce(embs3, wl) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/PRelu_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/PRelu_cn.rst deleted file mode 100644 index 8252bee477151d00696254cbe2ae4ea8dda01261..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/PRelu_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_dygraph_PRelu: - -PRelu -------------------------------- - -.. py:class:: paddle.fluid.dygraph.PRelu(mode, input_shape=None, param_attr=None, dtype="float32") - - - - -该接口用于构建 ``PRelu`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了 ``PRelu`` 激活函数的三种激活方式。 - -计算公式如下: - -.. math:: - y = max(0, x) + \alpha min(0, x) - - -参数: - - **mode** (str) - 权重共享模式。共提供三种激活方式: - - .. code-block:: text - - all:所有元素使用同一个alpha值 - channel:在同一个通道中的元素使用同一个alpha值 - element:每一个元素有一个独立的alpha值 - - - **channel** (int,可选) - 通道数。该参数在mode参数为"channel"时是必须的。默认为None。 - - **input_shape** (int 或 list 或 tuple,可选) - 输入的维度。该参数在mode参数为"element"时是必须的。默认为None。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - -返回:无 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - - inp_np = np.ones([5, 200, 100, 100]).astype('float32') - with fluid.dygraph.guard(): - inp_np = to_variable(inp_np) - prelu0 = fluid.PRelu( - mode='all', - param_attr=fluid.ParamAttr(initializer=fluid.initializer.Constant(1.0))) - dy_rlt0 = prelu0(inp_np) - prelu1 = fluid.PRelu( - mode='channel', - channel=200, - param_attr=fluid.ParamAttr(initializer=fluid.initializer.Constant(1.0))) - dy_rlt1 = prelu1(inp_np) - prelu2 = fluid.PRelu( - mode='element', - input_shape=inp_np.shape, - param_attr=fluid.ParamAttr(initializer=fluid.initializer.Constant(1.0))) - dy_rlt2 = prelu2(inp_np) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/Pool2D_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/Pool2D_cn.rst deleted file mode 100644 index e66ec6b3237edbe73446be147aef39efe3cb66a8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/Pool2D_cn.rst +++ /dev/null @@ -1,95 +0,0 @@ -.. _cn_api_fluid_dygraph_Pool2D: - -Pool2D -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Pool2D(pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, exclusive=True, data_format="NCHW") - -:alias_main: paddle.nn.Pool2D -:alias: paddle.nn.Pool2D,paddle.nn.layer.Pool2D,paddle.nn.layer.common.Pool2D -:old_api: paddle.fluid.dygraph.Pool2D - - - -该接口用于构建 ``Pool2D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维池化层,并使用上述输入参数的池化配置,为二维空间池化操作,根据 ``input`` , 池化类型 ``pool_type`` , 池化核大小 ``pool_size`` , 步长 ``pool_stride`` ,填充 ``pool_padding`` 这些参数得到输出。 - -输入X和输出Out默认是NCHW格式,N为批大小,C是通道数,H是特征高度,W是特征宽度。参数( ``ksize``, ``strides``, ``paddings`` )含有两个整型元素。分别表示高度和宽度上的参数。输入X的大小和输出Out的大小可能不一致。 - -例如: - -输入: - X shape::math:`\left ( N,C,H_{in},W_{in} \right )` - -输出: - Out shape::math:`\left ( N,C,H_{out},W_{out} \right )` - -如果 ``ceil_mode`` = false: - -.. math:: - H_{out} = \frac{(H_{in} - ksize[0] + 2 * paddings[0])}{strides[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - ksize[1] + 2 * paddings[1])}{strides[1]} + 1 - -如果 ``ceil_mode`` = true: - -.. math:: - H_{out} = \frac{(H_{in} - ksize[0] + 2 * paddings[0] + strides[0] - 1)}{strides[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - ksize[1] + 2 * paddings[1] + strides[1] - 1)}{strides[1]} + 1 - -如果 ``exclusive`` = false: - -.. math:: - hstart &= i * strides[0] - paddings[0] \\ - hend &= hstart + ksize[0] \\ - wstart &= j * strides[1] - paddings[1] \\ - wend &= wstart + ksize[1] \\ - Output(i ,j) &= \frac{sum(Input[hstart:hend, wstart:wend])}{ksize[0] * ksize[1]} - -如果 ``exclusive`` = true: - -.. math:: - hstart &= max(0, i * strides[0] - paddings[0])\\ - hend &= min(H, hstart + ksize[0]) \\ - wstart &= max(0, j * strides[1] - paddings[1]) \\ - wend & = min(W, wstart + ksize[1]) \\ - Output(i ,j) & = \frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)} - -参数: - - **pool_size** (int|list|tuple, 可选) - 池化核的大小。如果它是一个元组或列表,它必须包含两个整数值, (pool_size_Height, pool_size_Width)。若为一个整数,则它的平方值将作为池化核大小,比如若pool_size=2, 则池化核大小为2x2。默认值:-1。 - - **pool_type** (str, 可选) - 池化类型,可以是”max“对应max-pooling,“avg”对应average-pooling。默认为”max“。 - - **pool_stride** (int|list|tuple, 可选) - 池化层的步长。如果它是一个元组或列表,它将包含两个整数,(pool_stride_Height, pool_stride_Width)。若为一个整数,则表示H和W维度上stride均为该值。默认值为1。 - - **pool_padding** (int|list|tuple, 可选) - 填充大小。如果它是一个元组或列表,它必须包含两个整数值,(pool_padding_on_Height, pool_padding_on_Width)。若为一个整数,则表示H和W维度上padding均为该值。默认值为1。 - - **global_pooling** (bool, 可选)- 是否用全局池化。如果global_pooling = True, ``pool_size`` 和 ``pool_padding`` 将被忽略,默认False。 - - **use_cudnn** (bool, 可选)- 是否用cudnn核,只有已安装cudnn库时才有效。默认True。 - - **ceil_mode** (bool, 可选)- 是否用ceil函数计算输出高度和宽度。如果设为False,则使用floor函数。默认为False。 - - **exclusive** (bool, 可选) - 是否在平均池化模式忽略填充值。默认为True。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:无 - -抛出异常: - - ``ValueError`` - 如果 ``pool_type`` 既不是“max”也不是“avg”。 - - ``ValueError`` - 如果 ``global_pooling`` 为False并且 ``pool_size`` 为-1。 - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - - with fluid.dygraph.guard(): - data = np.random.random((3, 32, 32, 5)).astype('float32') - pool2d = fluid.dygraph.Pool2D(pool_size=2, - pool_type='max', - pool_stride=1, - global_pooling=False) - pool2d_res = pool2d(to_variable(data)) - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/SpectralNorm_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/SpectralNorm_cn.rst deleted file mode 100644 index d1677c60a870a6214860b5bb49418b35805d5bd9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/SpectralNorm_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_dygraph_SpectralNorm: - -SpectralNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.SpectralNorm(weight_shape, dim=0, power_iters=1, eps=1e-12, name=None, dtype="float32") - -:alias_main: paddle.nn.SpectralNorm -:alias: paddle.nn.SpectralNorm,paddle.nn.layer.SpectralNorm,paddle.nn.layer.norm.SpectralNorm -:old_api: paddle.fluid.dygraph.SpectralNorm - - - -该接口用于构建 ``SpectralNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了谱归一化层的功能,用于计算fc、conv1d、conv2d、conv3d层的权重参数的谱正则值,输入权重参数应分别为2-D, 3-D, 4-D, 5-D张量,输出张量与输入张量维度相同。谱特征值计算方式如下: - -步骤1:生成形状为[H]的向量U,以及形状为[W]的向量V,其中H是输入权重张量的第 ``dim`` 个维度,W是剩余维度的乘积。 - -步骤2: ``power_iters`` 应该是一个正整数,用U和V迭代计算 ``power_iters`` 轮,迭代步骤如下。 - -.. math:: - - \mathbf{v} &:= \frac{\mathbf{W}^{T} \mathbf{u}}{\|\mathbf{W}^{T} \mathbf{u}\|_2}\\ - \mathbf{u} &:= \frac{\mathbf{W}^{T} \mathbf{v}}{\|\mathbf{W}^{T} \mathbf{v}\|_2} - -步骤3:计算 :math:`\sigma(\mathbf{W})` 并特征值值归一化。 - -.. math:: - \sigma(\mathbf{W}) &= \mathbf{u}^{T} \mathbf{W} \mathbf{v}\\ - \mathbf{W} &= \frac{\mathbf{W}}{\sigma(\mathbf{W})} - -可参考: `Spectral Normalization `_ - -参数: - - **weight_shape** (list 或 tuple) - 权重参数的shape。 - - **dim** (int, 可选) - 将输入(weight)重塑为矩阵之前应排列到第一个的维度索引,如果input(weight)是fc层的权重,则应设置为0;如果input(weight)是conv层的权重,则应设置为1。默认值:0。 - - **power_iters** (int, 可选) - 将用于计算的 ``SpectralNorm`` 功率迭代次数,默认值:1。 - - **eps** (float, 可选) - ``eps`` 用于保证计算规范中的数值稳定性,分母会加上 ``eps`` 防止除零。默认值:1e-12。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - weight = np.random.random((2, 8, 32, 32)).astype('float32') - spectralNorm = fluid.dygraph.nn.SpectralNorm(weight.shape, dim=1, power_iters=2) - ret = spectralNorm(fluid.dygraph.base.to_variable(weight)) - diff --git a/doc/paddle/api/paddle/fluid/dygraph/nn/TreeConv_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/nn/TreeConv_cn.rst deleted file mode 100644 index 699a3f71ec5feb18f3da4d86f0c8df7566cb5c82..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/nn/TreeConv_cn.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _cn_api_fluid_dygraph_TreeConv: - -TreeConv -------------------------------- - -.. py:class:: paddle.fluid.dygraph.TreeConv(feature_size, output_size, num_filters=1, max_depth=2, act='tanh', param_attr=None, bias_attr=None, name=None, dtype="float32") - - - - -该接口用于构建 ``TreeConv`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个基于树结构的卷积(Tree-Based Convolution)运算。基于树的卷积是基于树的卷积神经网络(TBCNN,Tree-Based Convolution Neural Network)的一部分,它用于对树结构进行分类,例如抽象语法树。 Tree-Based Convolution提出了一种称为连续二叉树的数据结构,它将多路(multiway)树视为二叉树。详情请参考: `基于树的卷积论文 `_ 。 - - -参数: - - **feature_size** (int) – nodes_vector的shape的最后一维的维度。 - - **output_size** (int) – 输出特征宽度。 - - **num_filters** (int, 可选) – 滤波器的数量,默认值为1。 - - **max_depth** (int, 可选) – 滤波器的最大深度,默认值为2。 - - **act** (str, 可选) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **param_attr** (ParamAttr, 可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **name** (str, 可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - with fluid.dygraph.guard(): - nodes_vector = numpy.random.random((1, 10, 5)).astype('float32') - edge_set = numpy.random.random((1, 9, 2)).astype('int32') - treeConv = fluid.dygraph.nn.TreeConv( - feature_size=5, output_size=6, num_filters=1, max_depth=2) - ret = treeConv(fluid.dygraph.base.to_variable(nodes_vector), fluid.dygraph.base.to_variable(edge_set)) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - diff --git a/doc/paddle/api/paddle/fluid/dygraph/no_grad_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/no_grad_cn.rst deleted file mode 100644 index e93287287b29e61256e51249792d57390033d040..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/no_grad_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_dygraph_no_grad: - -no_grad -------------------------------- - - -.. py:method:: paddle.fluid.dygraph.no_grad(func=None) - -:api_attr: 命令式编程模式(动态图) - - - -创建一个上下文来禁用动态图梯度计算。在此模式下,每次计算的结果都将具有stop_gradient=True。 - -也可以用作一个装饰器(确保不要用括号来初始化)。 - -**代码示例** - -.. code-block:: python - - - import numpy as np - import paddle.fluid as fluid - - # 用作生成器 - data = np.array([[2, 3], [4, 5]]).astype('float32') - with fluid.dygraph.guard(): - l0 = fluid.Linear(2, 2) # l0.weight.gradient() is None - l1 = fluid.Linear(2, 2) - with fluid.dygraph.no_grad(): - # l1.weight.stop_gradient is False - tmp = l1.weight * 2 # tmp.stop_gradient is True - x = fluid.dygraph.to_variable(data) - y = l0(x) + tmp - o = l1(y) - o.backward() - print(tmp.gradient() is None) # True - print(l0.weight.gradient() is None) # False - - # 用作装饰器 - @fluid.dygraph.no_grad - def test_layer(): - with fluid.dygraph.guard(): - inp = np.ones([3, 1024], dtype='float32') - t = fluid.dygraph.base.to_variable(inp) - linear1 = fluid.Linear(1024, 4, bias_attr=False) - linear2 = fluid.Linear(4, 4) - ret = linear1(t) - dy_ret = linear2(ret) - - test_layer() diff --git a/doc/paddle/api/paddle/fluid/dygraph/parallel/DataParallel_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/parallel/DataParallel_cn.rst deleted file mode 100644 index 6fc3900aa741404a9efc384ea511ebd60db81576..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/parallel/DataParallel_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_imperative_cn_DataParallel: - -DataParallel -------------------------------- -:doc_source: paddle.fluid.dygraph.parallel.DataParallel - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/parallel/ParallelEnv_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/parallel/ParallelEnv_cn.rst deleted file mode 100644 index 846001c6e98239282f6a971d82a174d3e32068c5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/parallel/ParallelEnv_cn.rst +++ /dev/null @@ -1,145 +0,0 @@ -.. _cn_api_fluid_dygraph_ParallelEnv: - -ParallelEnv -------------------------------- - -.. py:class:: paddle.fluid.dygraph.ParallelEnv() - -**注意:** - **这个类的曾用名为 Env, 这个旧的名字会被废弃,请使用新的类名 ParallelEnv。** - -这个类用于获取动态图模型并行执行所需的环境变量值。 - -动态图并行模式现在需要使用 `paddle.distributed.launch` 模块启动,所需的环境变量默认由 `paddle.distributed.launch` 模块自动配置。 - -ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配置动态图并行执行。 - -**示例代码:** - .. code-block:: python - - # 这个示例需要由paddle.distributed.launch启动, 用法为: - # python -m paddle.distributed.launch --selected_gpus=0,1 example.py - # 脚本example.py中的代码是下面这个示例. - - import numpy as np - import paddle.fluid as fluid - import paddle.fluid.dygraph as dygraph - from paddle.fluid.optimizer import AdamOptimizer - from paddle.fluid.dygraph.nn import Linear - from paddle.fluid.dygraph.base import to_variable - - place = fluid.CUDAPlace(fluid.dygraph.ParallelEnv().dev_id) - with fluid.dygraph.guard(place=place): - - # 准备数据并行的环境 - strategy=dygraph.prepare_context() - - linear = Linear(1, 10, act="softmax") - adam = fluid.optimizer.AdamOptimizer() - - # 配置模型为并行模型 - linear = dygraph.DataParallel(linear, strategy) - - x_data = np.random.random(size=[10, 1]).astype(np.float32) - data = to_variable(x_data) - - hidden = linear(data) - avg_loss = fluid.layers.mean(hidden) - - # 根据参与训练GPU卡的数量对loss值进行缩放 - avg_loss = linear.scale_loss(avg_loss) - - avg_loss.backward() - - # 收集各个GPU卡上的梯度值 - linear.apply_collective_grads() - - adam.minimize(avg_loss) - linear.clear_gradients() - -属性 -:::::::::::: - -.. py:attribute:: nranks - -参与训练进程的数量,一般也是训练所使用GPU卡的数量。 - -此属性的值等于环境变量 `PADDLE_TRAINERS_NUM` 的值。默认值为1。 - -**示例代码** - .. code-block:: python - - # 在Linux环境,提前执行此命令: export PADDLE_TRAINERS_NUM=4 - import paddle.fluid as fluid - - env = fluid.dygraph.ParallelEnv() - print("The nranks is %d" % env.nranks) - # The nranks is 4 - - -.. py:attribute:: local_rank - -当前训练进程的编号。 - -此属性的值等于环境变量 `PADDLE_TRAINER_ID` 的值。默认值是0。 - -**示例代码** - .. code-block:: python - - # 在Linux环境,提前执行此命令: export PADDLE_TRAINER_ID=0 - import paddle.fluid as fluid - - env = fluid.dygraph.ParallelEnv() - print("The local rank is %d" % env.local_rank) - # The local rank is 0 - - -.. py:attribute:: dev_id - -当前用于并行训练的GPU的编号。 - -此属性的值等于环境变量 `FLAGS_selected_gpus` 的值。默认值是0。 - -**示例代码** - .. code-block:: python - - # 在Linux环境,提前执行此命令: export FLAGS_selected_gpus=1 - import paddle.fluid as fluid - - env = fluid.dygraph.ParallelEnv() - print("The device id are %d" % env.dev_id) - # The device id are 1 - - -.. py:attribute:: current_endpoint - -当前训练进程的终端节点IP与相应端口,形式为(机器节点IP:端口号)。例如:127.0.0.1:6170。 - -此属性的值等于环境变量 `PADDLE_CURRENT_ENDPOINT` 的值。默认值为空字符串""。 - -**示例代码** - .. code-block:: python - - # 在Linux环境,提前执行此命令: export PADDLE_CURRENT_ENDPOINT=127.0.0.1:6170 - import paddle.fluid as fluid - - env = fluid.dygraph.ParallelEnv() - print("The current endpoint are %s" % env.current_endpoint) - # The current endpoint are 127.0.0.1:6170 - - -.. py:attribute:: trainer_endpoints - -当前任务所有参与训练进程的终端节点IP与相应端口,用于在NCCL2初始化的时候建立通信,广播NCCL ID。 - -此属性的值等于环境变量 `PADDLE_TRAINER_ENDPOINTS` 的值。默认值为空字符串""。 - -**示例代码** - .. code-block:: python - - # 在Linux环境,提前执行此命令: export PADDLE_TRAINER_ENDPOINTS=127.0.0.1:6170,127.0.0.1:6171 - import paddle.fluid as fluid - - env = fluid.dygraph.ParallelEnv() - print("The trainer endpoints are %s" % env.trainer_endpoints) - # The trainer endpoints are ['127.0.0.1:6170', '127.0.0.1:6171'] \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/dygraph/prepare_context_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/prepare_context_cn.rst deleted file mode 100644 index cd18f8d75081a1fbb868e6b92dd890465bbccb29..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/prepare_context_cn.rst +++ /dev/null @@ -1,37 +0,0 @@ -.. _api_fluid_dygraph_prepare_context: - -prepare_context ---------------- - -.. py:class:: paddle.fluid.dygraph.prepare_context(strategy=None) - -:api_attr: 命令式编程模式(动态图) - - - -该API是进行多进程多卡训练的环境配置接口,接受一个ParallelStrategy结构体变量作为输入。当strategy属性中的nums_trainer小于2时,API会直接返回,当nums_trainer大于1且为CUDAPlace时,由于目前动态图模式仅支持GPU多卡训练,仅能配置NCCL多卡训练的环境,所以此时会对NCCL环境进行配置,具体内容包括:生成NCCL ID,并广播至参与训练的各进程,用于支持的处理器同步操作,创建并配置NCCL通信器等。 - -参数: - - **strategy** (ParallelStrategy, 可选) – 该参数是配置储存多进程多卡训练配置信息的结构体变量,其具体成员包括:trainer节点的个数,当前trainer节点的ID,所有trainer节点的endpoint,当前节点的endpoint。当输入为None时,会调用PallelStrategy构造函数初始化strategy,此时,strategy的属性值为PallelStrategy结构体的默认值,接着strategy的属性会被环境变量中的对应值覆盖。默认值为None。 - -返回:一个属性配置后的ParallelStrategy结构体变量。 - -返回类型:实例(ParallelStrategy) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid.dygraph as dygraph - import paddle.fluid as fluid - with fluid.dygraph.guard(): - strategy=dygraph.parallel.prepare_context() - emb = fluid.dygraph.Embedding([10, 10]) - emb = dygraph.parallel.DataParallel(emb, strategy) - - state_dict = emb.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") - - para_state_dict, _ = fluid.load_dygraph( "paddle_dy") - - emb.set_dict( para_state_dict ) diff --git a/doc/paddle/api/paddle/fluid/dygraph/rnn/GRUCell_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/rnn/GRUCell_cn.rst deleted file mode 100644 index a714757be122b2c7dd2cd936f809725991807996..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/rnn/GRUCell_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_layers_GRUCell: - -GRUCell -------------------------------- - - -.. py:class:: paddle.fluid.layers.GRUCell(hidden_size, param_attr=None, bias_attr=None, gate_activation=None, activation=None, dtype="float32", name="GRUCell") - -:api_attr: 声明式编程模式(静态图) - - - -门控循环单元(Gated Recurrent Unit)。通过对 :code:`fluid.contrib.layers.rnn_impl.BasicGRUUnit` 包装,来让它可以应用于RNNCell。 - -公式如下: - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = u_t \odot h_{t-1} + (1-u_t) \odot \tilde{h_t} - -更多细节可以参考 `Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation `_ - -参数: - - **hidden_size** (int) - GRUCell中的隐藏层大小。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **gate_activation** (function,可选) - :math:`act_g` 的激活函数。 默认值为 :code:`fluid.layers.sigmoid`。 - - **activation** (function,可选) - :math:`act_c` 的激活函数。 默认值为 :code:`fluid.layers.tanh` - - **dtype** (string,可选) - 此cell中使用的数据类型。 默认为"float32"。 - - **name** (string,可选) - 用于标识参数和偏差的名称域。 - -返回:GRUCell类的实例对象。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid.layers as layers - cell = layers.GRUCell(hidden_size=256) - - -.. py:method:: call(inputs, states) - -执行GRU的计算。 - -参数: - - **input** (Variable) - 输入,形状为 :math:`[batch\_size,input\_size]` 的tensor,对应于公式中的 :math:`x_t` 。数据类型应为float32。 - - **states** (Variable) - 状态,形状为 :math:`[batch\_size,hidden\_size]` 的tensor。 对应于公式中的 :math:`h_{t-1}` 。数据类型应为float32。 - -返回:一个元组 :code:`(outputs, new_states)` ,其中 :code:`outputs` 和 :code:`new_states` 是同一个tensor,其形状为 :math:`[batch\_size,hidden\_size]`,数据类型和 :code:`state` 的数据类型相同,对应于公式中的 :math:`h_t`。 - -返回类型:tuple - -.. py:method:: state_shape() - -GRUCell的 :code:`state_shape` 是形状 :math:`[hidden\_size]` (batch大小为-1,自动插入到形状中),对应于 :math:`h_{t-1}` 的形状。 - -参数:无。 - -返回:GRUCell的 :code:`state_shape`。 - -返回类型:Variable - - diff --git a/doc/paddle/api/paddle/fluid/dygraph/rnn/LSTMCell_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/rnn/LSTMCell_cn.rst deleted file mode 100644 index 183dd4ff210000f8c9138d18d402d431d245dd86..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/rnn/LSTMCell_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_LSTMCell: - -LSTMCell -------------------------------- - - - -.. py:class:: paddle.fluid.layers.LSTMCell(hidden_size, param_attr=None, bias_attr=None, gate_activation=None, activation=None, forget_bias=1.0, dtype="float32", name="LSTMCell") - -:api_attr: 声明式编程模式(静态图) - - - -长短期记忆单元(Long-Short Term Memory)。通过对 :code:`fluid.contrib.layers.rnn_impl.BasicLSTMUnit` 包装,来让它可以应用于RNNCell。 - -公式如下: - -.. math:: - i_{t} &= act_g \left ( W_{x_{i}}x_{t}+W_{h_{i}}h_{t-1}+b_{i} \right ) \\ - f_{t} &= act_g \left ( W_{x_{f}}x_{t}+W_{h_{f}}h_{t-1}+b_{f}+forget\_bias \right ) \\ - c_{t} &= f_{t}c_{t-1}+i_{t}act_h\left ( W_{x_{c}}x_{t} +W_{h_{c}}h_{t-1}+b_{c}\right ) \\ - o_{t} &= act_g\left ( W_{x_{o}}x_{t}+W_{h_{o}}h_{t-1}+b_{o} \right ) \\ - h_{t} &= o_{t}act_h \left ( c_{t} \right ) - -更多细节可以参考 `RECURRENT NEURAL NETWORK REGULARIZATION `_ - -参数: - - **hidden_size** (int) - LSTMCell中的隐藏层大小。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **gate_activation** (function,可选) - :math:`act_g` 的激活函数。 默认值为 :code:`fluid.layers.sigmoid`。 - - **activation** (function,可选) - :math:`act_c` 的激活函数。 默认值为 :code:`fluid.layers.tanh`。 - - **forget_bias** (float,可选) - 计算遗忘们时使用的遗忘偏置。默认值为 1.0。 - - **dtype** (string,可选) - 此Cell中使用的数据类型。 默认值为 `float32`。 - - **name** (string,可选) - 用于标识参数和偏差的名称域。 - -返回:LSTMCell类的实例对象。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid.layers as layers - cell = layers.LSTMCell(hidden_size=256) - - -.. py:method:: call(inputs, states) - -执行GRU的计算。 - -参数: - - **input** (Variable) - 输入,形状为 :math:`[batch\_size,input\_size]` 的tensor,对应于公式中的 :math:`x_t`。数据类型应为float32。 - - **states** (Variable) - 状态,包含两个tensor的列表,每个tensor形状为 :math:`[batch\_size,hidden\_size]`。 对应于公式中的 :math:`h_{t-1}, c_{t-1}`。数据类型应为float32。 - -返回:一个元组 :code:`(outputs, new_states)`,其中 :code:`outputs` 是形状为 :math:`[batch\_size,hidden\_size]` 的tensor,对应于公式中的 :math:`h_{t}`;:code:`new_states` 是一个列表,包含形状为 :math:`[batch_size,hidden_size]` 的两个tensor变量,它们对应于公式中的 :math:`h_{t}, c_{t}`。这些tensor的数据类型都与 :code:`state` 的数据类型相同。 - -返回类型:tuple - -.. py:method:: state_shape() - -LSTMCell的 :code:`state_shape` 是一个具有两个形状的列表::math:`[[hidden\_size], [hidden\_size]]` (batch大小为-1,自动插入到形状中)。 这两个形状分别对应于公式中的 :math:`h_{t-1}` and :math:`c_{t-1}`。 - -参数:无。 - -返回:LSTMCell的 :code:`state_shape` - -返回类型:list diff --git a/doc/paddle/api/paddle/fluid/dygraph/save_dygraph_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/save_dygraph_cn.rst deleted file mode 100644 index e830d9c8d071908716d1439efbed07cca13a456e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/save_dygraph_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_dygraph_save_dygraph: - -save_dygraph -------------------------------- - - -.. py:function:: paddle.fluid.dygraph.save_dygraph(state_dict, model_path) - -:api_attr: 命令式编程模式(动态图) - - - -该接口将传入的参数或优化器的 ``dict`` 保存到磁盘上。 - -``state_dict`` 是通过 :ref:`cn_api_fluid_dygraph_Layer` 的 ``state_dict()`` 方法得到的。 - -注: ``model_path`` 不可以是一个目录。 - -该接口会根据 ``state_dict`` 的内容,自动给 ``model_path`` 添加 ``.pdparams`` 或者 ``.pdopt`` 后缀, -生成 ``model_path + ".pdparams"`` 或者 ``model_path + ".pdopt"`` 文件。 - -参数: - - **state_dict** (dict of Parameters) – 要保存的模型参数的 ``dict`` 。 - - **model_path** (str) – 保存state_dict的文件前缀。格式为 ``目录名称/文件前缀``。如果文件前缀为空字符串,会引发异常。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - - state_dict = emb.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") # 会保存为 paddle_dy.pdparams - - adam = fluid.optimizer.Adam( learning_rate = fluid.layers.noam_decay( 100, 10000), - parameter_list = emb.parameters() ) - - state_dict = adam.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") # 会保存为 paddle_dy.pdopt \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/dygraph/to_variable_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/to_variable_cn.rst deleted file mode 100644 index b562d2cafb0b5f90458ed194677ddee783118e1b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph/to_variable_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_dygraph_to_variable: - -to_variable -------------------------------- - - -.. py:function:: paddle.fluid.dygraph.to_variable(value, name=None, zero_copy=None) - - -:api_attr: 命令式编程模式(动态图) - - - -该函数实现从tuple、list、numpy\.ndarray、Variable、ComplexVariable 对象创建一个 ``Variable`` 类型的对象。 - - -参数: - - **value** (tuple|list|ndarray|Variable|Tensor|ComplexVariable) – 初始化的数据。可以是tuple、list、numpy\.ndarray、Variable、ComplexVariable。 - 维度可以为多维,数据类型为numpy\.{float16, float32, float64, int16, int32, int64, uint8, uint16}中的一种。 - - **name** (str, 可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **zero_copy** (bool, 可选) – 是否与输入的numpy数组共享内存。此参数仅适用于CPUPlace,当它为None时将设置为True。默认值为None。 - - **dtype** (str, 可选) - 返回的 ``Variable`` 所需的数据类型。可以是 'bool','float16','float32','float64','int8','int16','int32','int64','uint8'。默认值: None。 - - -返回:如果 ``value`` 是tuple/list/numpy\.ndarray对象,返回对应numpy\.ndarray对象创建的 ``Tensor`` ;如果 ``value`` 是Variable对象,直接返回 ``value`` 。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - with fluid.dygraph.guard(fluid.CPUPlace()): - - x = np.ones([2, 2], np.float32) - y = fluid.dygraph.to_variable(x, zero_copy=False) - x[0][0] = -1 - y[0][0].numpy() # array([1.], dtype=float32) - - y = fluid.dygraph.to_variable(x) - x[0][0] = 0 - y[0][0].numpy() # array([0.], dtype=float32) - - c = np.array([2+1j, 2]) - z = fluid.dygraph.to_variable(c) - z.numpy() # array([2.+1.j, 2.+0.j]) - z.dtype # 'complex128' - - y = fluid.dygraph.to_variable([[0.1, 1.2], [2.2, 3.1], [4.9, 5.2]]) - y.shape # [3L, 2L] - y = fluid.dygraph.to_variable(((0.1, 1.2), (2.2, 3.1), (4.9, 5.2)), dtype='int32') - y.shape # [3L, 2L] - y.dtype # core.VarDesc.VarType.INT32 - diff --git a/doc/paddle/api/paddle/fluid/dygraph_cn.rst b/doc/paddle/api/paddle/fluid/dygraph_cn.rst deleted file mode 100644 index 7cf2de04add71995bdb359d5427f2e65f5190946..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/dygraph_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -======================= -fluid.dygraph -======================= - - - - -.. toctree:: - :maxdepth: 1 - - dygraph_cn/BackwardStrategy_cn.rst - dygraph_cn/BatchNorm_cn.rst - dygraph_cn/BilinearTensorProduct_cn.rst - dygraph_cn/Conv2D_cn.rst - dygraph_cn/Conv2DTranspose_cn.rst - dygraph_cn/Conv3D_cn.rst - dygraph_cn/Conv3DTranspose_cn.rst - dygraph_cn/CosineAnnealingDecay_cn.rst - dygraph_cn/CosineDecay_cn.rst - dygraph_cn/declarative_cn.rst - dygraph_cn/Dropout_cn.rst - dygraph_cn/Embedding_cn.rst - dygraph_cn/ExponentialDecay_cn.rst - dygraph_cn/FC_cn.rst - dygraph_cn/grad_cn.rst - dygraph_cn/GroupNorm_cn.rst - dygraph_cn/GRUUnit_cn.rst - dygraph_cn/guard_cn.rst - dygraph_cn/InstanceNorm_cn.rst - dygraph_cn/InverseTimeDecay_cn.rst - dygraph_cn/jit_cn.rst - dygraph_cn/LambdaDecay_cn.rst - dygraph_cn/Layer_cn.rst - dygraph_cn/LayerList_cn.rst - dygraph_cn/LayerNorm_cn.rst - dygraph_cn/Linear_cn.rst - dygraph_cn/load_dygraph_cn.rst - dygraph_cn/MultiStepDecay_cn.rst - dygraph_cn/NaturalExpDecay_cn.rst - dygraph_cn/NCE_cn.rst - dygraph_cn/NoamDecay_cn.rst - dygraph_cn/ParallelEnv_cn.rst - dygraph_cn/ParameterList_cn.rst - dygraph_cn/no_grad_cn.rst - dygraph_cn/PiecewiseDecay_cn.rst - dygraph_cn/PolynomialDecay_cn.rst - dygraph_cn/Pool2D_cn.rst - dygraph_cn/PRelu_cn.rst - dygraph_cn/prepare_context_cn.rst - dygraph_cn/ProgramTranslator_cn.rst - dygraph_cn/ReduceLROnPlateau_cn.rst - dygraph_cn/save_dygraph_cn.rst - dygraph_cn/Sequential_cn.rst - dygraph_cn/SpectralNorm_cn.rst - dygraph_cn/StepDecay_cn.rst - dygraph_cn/to_variable_cn.rst - dygraph_cn/TracedLayer_cn.rst - dygraph_cn/Tracer_cn.rst - dygraph_cn/TranslatedLayer_cn.rst - dygraph_cn/TreeConv_cn.rst diff --git a/doc/paddle/api/paddle/fluid/embedding_cn.rst b/doc/paddle/api/paddle/fluid/embedding_cn.rst deleted file mode 100644 index b5ad3607114832a799d763d7d68b05a60d65a55d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/embedding_cn.rst +++ /dev/null @@ -1,103 +0,0 @@ -.. _cn_api_fluid_layers_embedding: - -embedding -------------------------------- - - -.. py:function:: paddle.fluid.layers.embedding(input, size, is_sparse=False, is_distributed=False, padding_idx=None, param_attr=None, dtype='float32') - -:api_attr: 声明式编程模式(静态图) - - - -嵌入层(Embedding Layer) - -**注意:此OP将在未来的版本中被移除!该OP要求输入Tensor shape的最后一维必须为1。推荐使用fluid.** :ref:`cn_api_fluid_embedding` 。 - -该OP根据input中的id信息从embedding矩阵中查询对应embedding信息,并会根据输入的size (vocab_size, emb_size)和dtype自动构造一个二维embedding矩阵。 - -要求input的最后一维必须等于1,输出的Tensor的shape是将输入Tensor shape的最后一维的1替换为emb_size。 - -注:input中的id必须满足 ``0 =< id < size[0]``,否则程序会抛异常退出。 - - -:: - - Case 1: - - input是Tensor, 且padding_idx = -1 - input.data = [[[1], [3]], [[2], [4]], [[4], [127]]] - input.shape = [3, 2, 1] - 若size = [128, 16] - 输出为Tensor: - out.shape = [3, 2, 16] - out.data = [[[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654]], - - [[0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365]], - - [[0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]]] # padding data - 输入的padding_idx小于0,则自动转换为padding_idx = -1 + 128 = 127, 对于输入id为127的词,进行padding处理。 - - Case 2: - - input是lod level 为1的LoDTensor, 且padding_idx = 0 - input.lod = [[2, 3]] - input.data = [[1], [3], [2], [4], [0]] - input.shape = [5, 1] - 若size = [128, 16] - 输出为LoDTensor: - out.lod = [[2, 3]] - out.shape = [5, 16] - out.data = [[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654], - [0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]] # padding data - 输入的padding_idx = 0,则对于输入id为0的词,进行padding处理。 - - -参数: - - **input** (Variable) - 存储id信息的Tensor或LoDTensor,数据类型必须为:int64,输入的shape最后一维须为1。input中的id必须满足 ``0 =< id < size[0]`` 。 - - **size** (tuple|list) - embedding矩阵的维度。必须包含两个元素,第一个元素为vocab_size(词表大小), 第二个为emb_size(embedding层维度)。 - - **is_sparse** (bool) - 是否使用稀疏的更新方式,这个参数只会影响反向的梯度更新的性能,sparse更新速度更快,推荐使用稀疏更新的方式。但某些optimizer不支持sparse更新,比如 :ref:`cn_api_fluid_optimizer_AdadeltaOptimizer` 、 :ref:`cn_api_fluid_optimizer_AdamaxOptimizer` 、 :ref:`cn_api_fluid_optimizer_DecayedAdagradOptimizer` 、 :ref:`cn_api_fluid_optimizer_FtrlOptimizer` 、 :ref:`cn_api_fluid_optimizer_LambOptimizer` 、:ref:`cn_api_fluid_optimizer_LarsMomentumOptimizer` ,此时is_sparse必须为False。默认为False。 - - **is_distributed** (bool) - 是否使用分布式的方式存储embedding矩阵,仅在多机分布式cpu训练中使用。默认为False。 - - **padding_idx** (int|long|None) - padding_idx需在区间[-vocab_size, vocab_size),否则不生效,padding_idx<0时,padding_idx会被改成vocab_size + padding_idx,input中等于padding_index的id对应的embedding信息会被设置为0,且这部分填充数据在训练时将不会被更新。如果为None,不作处理,默认为None。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。此外,可以通过 ``param_attr`` 参数加载用户自定义或预训练的词向量。只需将本地词向量转为numpy数据格式,且保证本地词向量的shape和embedding的 ``size`` 参数一致,然后使用 :ref:`cn_api_fluid_initializer_NumpyArrayInitializer` 进行初始化,即可实现加载自定义或预训练的词向量。详细使用方法见代码示例2。 - - **dtype** (str|core.VarDesc.VarType) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - -返回:input映射后得到的Embedding Tensor或LoDTensor,数据类型和dtype定义的类型一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name='sequence', shape=[1], dtype='int64', lod_level=1) - - # 示例 1 - emb_1 = fluid.layers.embedding(input=data, size=[128, 64]) - - # 示例 2: 加载用户自定义或预训练的词向量 - weight_data = np.random.random(size=(128, 100)) # numpy格式的词向量数据 - w_param_attrs = fluid.ParamAttr( - name="emb_weight", - learning_rate=0.5, - initializer=fluid.initializer.NumpyArrayInitializer(weight_data), - trainable=True) - emb_2 = fluid.layers.embedding(input=data, size=(128, 100), param_attr=w_param_attrs, dtype='float32') - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/enable_dygraph_cn.rst b/doc/paddle/api/paddle/fluid/enable_dygraph_cn.rst deleted file mode 100644 index 0df485bd856a4c70f3638db7c2f6b7470c143fe1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/enable_dygraph_cn.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _cn_api_fluid_enable_dygraph: - -enable_dygraph -------------------------------- - -.. py:function:: paddle.fluid.enable_dygraph(place=None) - -该接口打开动态图模式。 - -参数: - - **place** (fluid.CPUPlace 或 fluid.CUDAPlace,可选) - 执行动态图的设备数目。若为None,则设备根据paddle的编译方式决定。默认值为 ``None``。 - -返回:无 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - fluid.enable_dygraph() # Now we are in dygraph mode - print(fluid.in_dygraph_mode()) # True - fluid.disable_dygraph() - print(fluid.in_dygraph_mode()) # False - diff --git a/doc/paddle/api/paddle/fluid/enable_imperative_cn.rst b/doc/paddle/api/paddle/fluid/enable_imperative_cn.rst deleted file mode 100644 index a198179f2f14989312c246563e309254c0fb3f22..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/enable_imperative_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_paddle_cn_enable_imperative: - -enable_imperative -------------------------------- -:doc_source: paddle.fluid.dygraph.base.enable_dygraph - - diff --git a/doc/paddle/api/paddle/fluid/evaluator/ChunkEvaluator_cn.rst b/doc/paddle/api/paddle/fluid/evaluator/ChunkEvaluator_cn.rst deleted file mode 100644 index c289db61aed83e2e4a33f8603e70c280a63b2fb2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/evaluator/ChunkEvaluator_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_fluid_metrics_ChunkEvaluator: - -ChunkEvaluator -------------------------------- - -.. py:class:: paddle.fluid.metrics.ChunkEvaluator(name=None) - - - -该接口使用mini-batch的chunk_eval累计的counter numbers,来计算准确率、召回率和F1值。ChunkEvaluator有三个状态num_infer_chunks,num_label_chunks和num_correct_chunks,分别对应语块数目、标签中的语块数目、正确识别的语块数目。对于chunking的基础知识,请参考 https://www.aclweb.org/anthology/N01-1025 。ChunkEvalEvaluator计算块检测(chunk detection)的准确率,召回率和F1值,支持IOB, IOE, IOBES和IO标注方案。 - -参数: - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:初始化后的 ``ChunkEvaluator`` 对象 - -返回类型:ChunkEvaluator - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - # 初始化chunck-level的评价管理。 - metric = fluid.metrics.ChunkEvaluator() - - # 假设模型预测10个chuncks,其中8个为正确,且真值有9个chuncks。 - num_infer_chunks = 10 - num_label_chunks = 9 - num_correct_chunks = 8 - - metric.update(num_infer_chunks, num_label_chunks, num_correct_chunks) - numpy_precision, numpy_recall, numpy_f1 = metric.eval() - - print("precision: %.2f, recall: %.2f, f1: %.2f" % (numpy_precision, numpy_recall, numpy_f1)) - - # 下一个batch,完美地预测了3个正确的chuncks。 - num_infer_chunks = 3 - num_label_chunks = 3 - num_correct_chunks = 3 - - metric.update(num_infer_chunks, num_label_chunks, num_correct_chunks) - numpy_precision, numpy_recall, numpy_f1 = metric.eval() - - print("precision: %.2f, recall: %.2f, f1: %.2f" % (numpy_precision, numpy_recall, numpy_f1)) - -.. py:method:: update(num_infer_chunks, num_label_chunks, num_correct_chunks) - -该函数使用输入的(num_infer_chunks, num_label_chunks, num_correct_chunks)来累计更新ChunkEvaluator对象的对应状态,更新方式如下: - - .. math:: - \\ \begin{array}{l}{\text { self. num_infer_chunks }+=\text { num_infer_chunks }} \\ {\text { self. num_Label_chunks }+=\text { num_label_chunks }} \\ {\text { self. num_correct_chunks }+=\text { num_correct_chunks }}\end{array} \\ - -参数: - - **num_infer_chunks** (int|numpy.array) – 给定mini-batch的语块数目。 - - **num_label_chunks** (int|numpy.array) - 给定mini-batch的标签中的语块数目。 - - **num_correct_chunks** (int|numpy.array)— 给定mini-batch的正确识别的语块数目。 - -返回:无 - -.. py:method:: eval() - -该函数计算并返回准确率,召回率和F1值。 - -返回:准确率,召回率和F1值 - -返回类型:float - diff --git a/doc/paddle/api/paddle/fluid/evaluator/DetectionMAP_cn.rst b/doc/paddle/api/paddle/fluid/evaluator/DetectionMAP_cn.rst deleted file mode 100644 index 44d3700e5535c485a78361ba82c97c7c5b81ca87..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/evaluator/DetectionMAP_cn.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. _cn_api_fluid_metrics_DetectionMAP: - -DetectionMAP -------------------------------- - -.. py:class:: paddle.fluid.metrics.DetectionMAP(input, gt_label, gt_box, gt_difficult=None, class_num=None, background_label=0, overlap_threshold=0.5, evaluate_difficult=True, ap_version='integral') - - - - -该OP用于计算检测网络的平均精度(mAP)。 mAP是衡量object detectors精度的指标,比如 Faster R-CNN,SSD等。它不同于召回率,它是最大精度的平均值。 - -通常步骤如下: - -1. 根据检测器中的输入和label,计算True Positive(TP)真正例 和 False Positive(FP)假正例 -2. 计算map,支持 ``11 point`` 和 ``integral`` 模式 - -请从以下文章中获取更多信息: - - https://sanchom.wordpress.com/tag/average-precision/ - - https://arxiv.org/abs/1512.0232 - -参数: - - **input** (Variable) – detection的输出结果,一个 shape=[M, 6] 的 LoDtensor。布局为[label, confidence, xmin, ymin, xmax, ymax],label为类别标签,confidence为置信度,xmin,ymin为检测框左上点坐标,xmax,ymax为检测框右下点坐标,数据类型为float32或float64。 - - **gt_label** (Variable) – ground truth label 的索引,它是一个形状为[N, 1]的LoDtensor,数据类型为float32或float64。 - - **gt_box** (Variable) – ground truth bounds box (bbox),是一个具有形状的LoD张量[N, 4]。布局是[xmin, ymin, xmax, ymax],数据类型为float32或float64。 - - **gt_difficult** (Variable|None, 可选) – 指定这个ground truth是否是一个difficult bounding bbox,它可以是一个 shape=[N, 1]的LoDTensor,也可以不被指定。默认设置为None,表示所有的ground truth标签都不是difficult bbox,数据类型为float32或float64。 - - **class_num** (int) – 检测类别的数目。 - - **background_label** (int) – 背景标签的索引,背景标签将被忽略。如果设置为-1,则所有类别将被考虑,默认为0。 - - **overlap_threshold** (float) – 判断真假阳性的阈值,默认为0.5。 - - **evaluate_difficult** (bool) – 是否考虑 difficult ground truth 进行评价,默认为 True。当 gt_difficult 为 None 时,这个参数不起作用。 - - **ap_version** (str) – 平均精度的计算方法,必须是 "integral" 或 "11point"。详情请查看 https://sanchom.wordpress.com/tag/average-precision/。 其中,11point为:11-point 插值平均精度。积分: precision-recall曲线的自然积分。 - -返回:变量(Variable) 计算mAP的结果,其中数据类型为float32或float64。 - -返回类型:变量(Variable) - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - batch_size = -1 # 可以为任意大小 - image_boxs_num = 10 - bounding_bboxes_num = 21 - - pb = fluid.data(name='prior_box', shape=[image_boxs_num, 4], - dtype='float32') - - pbv = fluid.data(name='prior_box_var', shape=[image_boxs_num, 4], - dtype='float32') - - loc = fluid.data(name='target_box', shape=[batch_size, bounding_bboxes_num, 4], - dtype='float32') - - scores = fluid.data(name='scores', shape=[batch_size, bounding_bboxes_num, image_boxs_num], - dtype='float32') - - nmsed_outs = fluid.layers.detection_output(scores=scores, - loc=loc, prior_box=pb, prior_box_var=pbv) - - gt_box = fluid.data(name="gt_box", shape=[batch_size, 4], dtype="float32") - gt_label = fluid.data(name="gt_label", shape=[batch_size, 1], dtype="float32") - difficult = fluid.data(name="difficult", shape=[batch_size, 1], dtype="float32") - - exe = fluid.Executor(fluid.CUDAPlace(0)) - map_evaluator = fluid.metrics.DetectionMAP(nmsed_outs, gt_label, gt_box, difficult, class_num = 3) - cur_map, accum_map = map_evaluator.get_map_var() - - - -.. py:method:: get_map_var() - -返回:当前 mini-batch 的 mAP 变量和不同 mini-batch 的 mAP 累加和 - -.. py:method:: reset(executor, reset_program=None) - -在指定的 batch 结束或者用户指定的开始时重置度量状态。 - -参数: - - **executor** (Executor) – 执行reset_program的执行程序 - - **reset_program** (Program|None, 可选) – 单个program 的 reset 过程。如果设置为 None,将创建一个 program - - - diff --git a/doc/paddle/api/paddle/fluid/evaluator/EditDistance_cn.rst b/doc/paddle/api/paddle/fluid/evaluator/EditDistance_cn.rst deleted file mode 100644 index 9ffd2a0165d7e718d1cf08d15be5e90f64cf916b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/evaluator/EditDistance_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_metrics_EditDistance: - -EditDistance -------------------------------- - -.. py:class:: paddle.fluid.metrics.EditDistance(name) - - - - -用于管理字符串的编辑距离。编辑距离是通过计算将一个字符串转换为另一个字符串所需的最小编辑操作数(添加、删除或替换)来量化两个字符串(例如单词)彼此不相似的程度一种方法。 参考 https://en.wikipedia.org/wiki/Edit_distance。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # 假设batch_size为128 - batch_size = 128 - - # 初始化编辑距离管理器 - distance_evaluator = fluid.metrics.EditDistance("EditDistance") - # 生成128个序列对间的编辑距离,此处的最大距离是10 - edit_distances_batch0 = np.random.randint(low = 0, high = 10, size = (batch_size, 1)) - seq_num_batch0 = batch_size - - distance_evaluator.update(edit_distances_batch0, seq_num_batch0) - avg_distance, wrong_instance_ratio = distance_evaluator.eval() - print("the average edit distance for batch0 is %.2f and the wrong instance ratio is %.2f " % (avg_distance, wrong_instance_ratio)) - edit_distances_batch1 = np.random.randint(low = 0, high = 10, size = (batch_size, 1)) - seq_num_batch1 = batch_size - - distance_evaluator.update(edit_distances_batch1, seq_num_batch1) - avg_distance, wrong_instance_ratio = distance_evaluator.eval() - print("the average edit distance for batch0 and batch1 is %.2f and the wrong instance ratio is %.2f " % (avg_distance, wrong_instance_ratio)) - - -.. py:method:: reset() - -清空存储结果。 - -参数:无 - -返回:无 - - -.. py:method:: update(distances, seq_num) - -更新存储结果 - -参数: - - **distances** – 一个形状为(batch_size, 1)的numpy.array,每个元素代表两个序列间的距离。 - - **seq_num** – 一个整型/浮点型值,代表序列对的数量。 - -返回:无 - -.. py:method:: eval() - -返回两个浮点数: -avg_distance:使用更新函数更新的所有序列对的平均距离。 -avg_instance_error:编辑距离不为零的序列对的比例。 - - - - - diff --git a/doc/paddle/api/paddle/fluid/framework/Variable_cn.rst b/doc/paddle/api/paddle/fluid/framework/Variable_cn.rst deleted file mode 100644 index 4abe3040d20cc7dc223e7d0b1f3610e6fd87ea89..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/framework/Variable_cn.rst +++ /dev/null @@ -1,416 +0,0 @@ -.. _cn_api_fluid_Variable: - -Variable -------------------------------- - -.. py:class:: paddle.fluid.Variable - - - - -**注意:** - **1. 请不要直接调用** `Variable` **的构造函数,因为这会造成严重的错误发生!** - - **2. 在静态图形模式下:请使用** `Block.create_var` **创建一个静态的** `Variable` **,该静态的** `Variable` **在使用** :ref:`cn_api_fluid_executor` **执行前是没有实际数据的。** - - **3. 在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下:请使用** :ref:`cn_api_fluid_dygraph_to_variable` 创建一个拥有实际数据的 :ref:`api_guide_Variable` - -在Fluid中,OP的每个输入和输出都是 :ref:`api_guide_Variable` 。多数情况下, :ref:`api_guide_Variable` 用于保存不同种类的数据或训练标签。 - -:ref:`api_guide_Variable` 总是属于某一个 :ref:`api_guide_Block` 。所有 :ref:`api_guide_Variable` 都有其自己的 ``name`` ,不同 :ref:`api_guide_Block` 中的两个 :ref:`api_guide_Variable` 可以具有相同的名称。如果使用的 **不是** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ 模式,那么同一个 :ref:`api_guide_Block` 中的两个或更多 :ref:`api_guide_Variable` 拥有相同 ``name`` 将意味着他们会共享相同的内容。通常我们使用这种方式来实现 **参数共享** - -:ref:`api_guide_Variable` 有很多种。它们每种都有自己的属性和用法。请参考 `framework.proto `_ 以获得详细信息。 :ref:`api_guide_Variable` 的大多数成员变量可以设置为 ``None``。它的意思是它不可用或稍后指定。 - -如果您希望创建一个 :ref:`api_guide_Variable` 那么可以参考如下示例: - -**示例代码:** - -在静态图形模式下: - .. code-block:: python - - import paddle.fluid as fluid - cur_program = fluid.Program() - cur_block = cur_program.current_block() - new_variable = cur_block.create_var(name="X", - shape=[-1, 23, 48], - dtype='float32') -在 `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ 模式下: - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - with fluid.dygraph.guard(): - new_variable = fluid.dygraph.to_variable(np.arange(10)) - - -.. py:method:: detach() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - **2.** ``detach`` **后的** :ref:`api_guide_Variable` **将会成为临时变量** - -产生一个新的,和当前计算图分离的,但是拥有当前 :ref:`api_guide_Variable` 其内容的临时变量 - -返回:一个新的,和当前计算图分离的,但是拥有当前 :ref:`api_guide_Variable` 其内容的临时 :ref:`api_guide_Variable` - -返回类型:(:ref:`api_guide_Variable` | 和输入的 ``Dtype`` 一致) - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - from paddle.fluid.dygraph import Linear - import numpy as np - - data = np.random.uniform(-1, 1, [30, 10, 32]).astype('float32') - with fluid.dygraph.guard(): - linear = Linear(32, 64) - data = to_variable(data) - x = linear(data) - y = x.detach() - -.. py:method:: numpy() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -返回一个 ``ndarray`` 来表示当前 :ref:`api_guide_Variable` 的值 - -返回:``numpy`` 的数组,表示当前 :ref:`api_guide_Variable` 的实际值 - -返回类型:ndarray,``dtype`` 和输入的 ``dtype`` 一致 - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - from paddle.fluid.dygraph import Linear - import numpy as np - - data = np.random.uniform(-1, 1, [30, 10, 32]).astype('float32') - with fluid.dygraph.guard(): - linear = Linear(32, 64) - data = to_variable(data) - x = linear(data) - print(x.numpy()) - -.. py:method:: set_value() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -为此 :ref:`api_guide_Variable` 设置一个新的值。 - -**参数:** - - - **value**: ( :ref:`api_guide_Variable` 或 ``ndarray`` ) 要赋值给此 :ref:`api_guide_Variable` 的新的值。 - -返回:无 - -抛出异常: ``ValueError`` - 当要赋于的新值的 ``shape`` 和此 :ref:`api_guide_Variable` 原有的 ``shape`` 不同时,抛出 ``ValueError`` 。 - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - from paddle.fluid.dygraph import Linear - import numpy as np - - data = np.ones([3, 1024], dtype='float32') - with fluid.dygraph.guard(): - linear = fluid.dygraph.Linear(1024, 4) - t = to_variable(data) - linear(t) # 使用默认参数值调用前向 - custom_weight = np.random.randn(1024, 4).astype("float32") - linear.weight.set_value(custom_weight) # 将参数修改为自定义的值 - out = linear(t) # 使用新的参数值调用前向 - -.. py:method:: backward() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - **2. 由于如果该** :ref:`api_guide_Variable` **以上没有任何地方需要梯度,那么仅仅设置该** :ref:`api_guide_Variable` **的梯度为** ``1`` **是没有意义的。因此,这种情况下,为了节省一些计算,我们不去产生该** :ref:`api_guide_Variable` **的梯度** - -从该节点开始执行反向 - -**参数:** - - - **backward_strategy**: ( :ref:`cn_api_fluid_dygraph_BackwardStrategy` ) 使用何种 :ref:`cn_api_fluid_dygraph_BackwardStrategy` 聚合反向的梯度 - -返回:无 - - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - x = np.ones([2, 2], np.float32) - with fluid.dygraph.guard(): - inputs2 = [] - for _ in range(10): - tmp = fluid.dygraph.base.to_variable(x) - # 如果这里我们不为输入tmp设置stop_gradient=False,那么后面loss2也将因为这个链路都不需要梯度 - # 而不产生梯度 - tmp.stop_gradient=False - inputs2.append(tmp) - ret2 = fluid.layers.sums(inputs2) - loss2 = fluid.layers.reduce_sum(ret2) - backward_strategy = fluid.dygraph.BackwardStrategy() - backward_strategy.sort_sum_gradient = True - loss2.backward(backward_strategy) - -.. py:method:: gradient() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - **2. 由于如果该** :ref:`api_guide_Variable` **以上没有任何地方需要梯度,那么仅仅设置该** :ref:`api_guide_Variable` **的梯度为** ``1`` **是没有意义的。因此,这种情况下,为了节省一些计算,我们不去产生该** :ref:`api_guide_Variable` **的梯度** - -获取该 :ref:`api_guide_Variable` 的梯度值 - -返回:如果 :ref:`api_guide_Variable` 的类型是LoDTensor(参见 :ref:`cn_user_guide_lod_tensor` ),返回该 :ref:`api_guide_Variable` 类型为 ``ndarray`` 的梯度值;如果 :ref:`api_guide_Variable` 的类型是SelectedRows,返回该 :ref:`api_guide_Variable` 类型为 ``ndarray`` 的梯度值和类型为 ``ndarray`` 的词id组成的tuple。 - -返回类型:``ndarray`` 或者 ``tuple of ndarray`` , 返回类型 ``tuple of ndarray`` 仅在 :ref:`cn_api_fluid_dygraph_Embedding` 层稀疏更新时产生。 - - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: 返回ndarray - x = np.ones([2, 2], np.float32) - with fluid.dygraph.guard(): - inputs2 = [] - for _ in range(10): - tmp = fluid.dygraph.base.to_variable(x) - tmp.stop_gradient=False - inputs2.append(tmp) - ret2 = fluid.layers.sums(inputs2) - loss2 = fluid.layers.reduce_sum(ret2) - backward_strategy = fluid.dygraph.BackwardStrategy() - backward_strategy.sort_sum_gradient = True - loss2.backward(backward_strategy) - print(loss2.gradient()) - - # example2: 返回tuple of ndarray - with fluid.dygraph.guard(): - embedding = fluid.dygraph.Embedding( - size=[20, 32], - param_attr='emb.w', - is_sparse=True) - x_data = np.arange(12).reshape(4, 3).astype('int64') - x_data = x_data.reshape((-1, 3, 1)) - x = fluid.dygraph.base.to_variable(x_data) - out = embedding(x) - out.backward() - print(embedding.weight.gradient()) - -.. py:method:: clear_gradient() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - **2. 只有当该** :ref:`api_guide_Variable` **有梯度时才可调用,通常我们都会为参数调用这个方法,因为临时变量的梯度将会在其离开作用域时被** ``python`` **自动清除** - -设置该 :ref:`api_guide_Variable` 的梯度为零 - -返回:无 - - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - x = np.ones([2, 2], np.float32) - with fluid.dygraph.guard(): - inputs2 = [] - for _ in range(10): - tmp = fluid.dygraph.base.to_variable(x) - tmp.stop_gradient=False - inputs2.append(tmp) - ret2 = fluid.layers.sums(inputs2) - loss2 = fluid.layers.reduce_sum(ret2) - backward_strategy = fluid.dygraph.BackwardStrategy() - backward_strategy.sort_sum_gradient = True - loss2.backward(backward_strategy) - print(loss2.gradient()) - loss2.clear_gradient() - print("After clear {}".format(loss2.gradient())) - - -.. py:method:: to_string() - -**注意:** - - **1. 该API只在非** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取该 :ref:`api_guide_Variable` 的静态描述字符串 - -**参数:(仅在非** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效)** - - **throw_on_error** (bool) - 是否在没有设置必需字段时抛出异常。 - - **with_details** (bool) - 值为true时,打印更多关于 :ref:`api_guide_Variable` 的信息,如 ``error_clip`` , ``stop_gradient`` 等 - - -返回:用于静态描述该 :ref:`api_guide_Variable` 的字符串 - - -返回: 将Program转换为字符串 - -返回类型: str - -抛出异常: ``ValueError`` - 当 ``throw_on_error == true`` ,当没有设置任何必需的字段时,抛出 ``ValueError`` 。 - - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - - cur_program = fluid.Program() - cur_block = cur_program.current_block() - new_variable = cur_block.create_var(name="X", - shape=[-1, 23, 48], - dtype='float32') - print(new_variable.to_string(True)) - print("\n=============with detail===============\n") - print(new_variable.to_string(True, True)) - - -.. py:method:: astype(self, dtype) - -将该 :ref:`api_guide_Variable` 中的数据转换成目标 ``Dtype`` - -**参数:** - - **self** ( :ref:`api_guide_Variable` ) - 当前 :ref:`api_guide_Variable` , 用户不需要传入。 - - **dtype** (int | float | float64) - 希望转换成的 ``Dtype`` - - -返回:一个全新的转换了 ``Dtype`` 的 :ref:`api_guide_Variable` - -返回类型: :ref:`api_guide_Variable` - - -**示例代码** - -在静态图模式下: - .. code-block:: python - - import paddle.fluid as fluid - - startup_prog = fluid.Program() - main_prog = fluid.Program() - with fluid.program_guard(startup_prog, main_prog): - original_variable = fluid.data(name = "new_variable", shape=[2,2], dtype='float32') - new_variable = original_variable.astype('int64') - print("new var's dtype is: {}".format(new_variable.dtype)) - - -在 `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ 模式下: - .. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - x = np.ones([2, 2], np.float32) - with fluid.dygraph.guard(): - original_variable = fluid.dygraph.to_variable(x) - print("original var's dtype is: {}, numpy dtype is {}".format(original_variable.dtype, original_variable.numpy().dtype)) - new_variable = original_variable.astype('int64') - print("new var's dtype is: {}, numpy dtype is {}".format(new_variable.dtype, new_variable.numpy().dtype)) - - - -属性 -:::::::::::: - -.. py:attribute:: stop_gradient - -**注意:该属性在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下除参数以外默认值为** ``True`` **,而参数的该属性默认值为** ``False`` **。在静态图下所有的** :ref:`api_guide_Variable` **该属性默认值都为** ``False`` - -是否从此 :ref:`api_guide_Variable` 开始,之前的相关部分都停止梯度计算 - -**示例代码** - .. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - value0 = np.arange(26).reshape(2, 13).astype("float32") - value1 = np.arange(6).reshape(2, 3).astype("float32") - value2 = np.arange(10).reshape(2, 5).astype("float32") - linear = fluid.Linear(13, 5, dtype="float32") - linear2 = fluid.Linear(3, 3, dtype="float32") - a = fluid.dygraph.to_variable(value0) - b = fluid.dygraph.to_variable(value1) - c = fluid.dygraph.to_variable(value2) - out1 = linear(a) - out2 = linear2(b) - out1.stop_gradient = True - out = fluid.layers.concat(input=[out1, out2, c], axis=1) - out.backward() - # 可以发现这里linear的参数变成了 - assert (linear.weight.gradient() == 0).all() - assert (out1.gradient() == 0).all() - -.. py:attribute:: persistable - -**注意:该属性我们即将废弃,此介绍仅为了帮助用户理解概念, 1.6版本后用户可以不再关心该属性** - - **1. 该属性除参数以外默认值为** ``False`` **,而参数的该属性默认值为** ``True`` 。 - - **2. 该属性在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下一经初始化即不能修改,这是由于在动态执行时,** :ref:`api_guide_Variable` **的生命周期将由** ``Python`` **自行控制不再需要通过该属性来修改** - -此 :ref:`api_guide_Variable` 是否是长期存活的 :ref:`api_guide_Variable` - -.. py:attribute:: name - -**注意:在非** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下,那么同一个** :ref:`api_guide_Block` **中的两个或更多** :ref:`api_guide_Variable` **拥有相同** ``name`` **将意味着他们会共享相同的内容。通常我们使用这种方式来实现参数共享** - -此 :ref:`api_guide_Variable` 的名字(str) - - -.. py:attribute:: shape - -**注意:该属性是只读属性** - -此 :ref:`api_guide_Variable` 的维度 - -.. py:attribute:: dtype - -**注意:该属性是只读属性** - -此 :ref:`api_guide_Variable` 的实际数据类型 - -.. py:attribute:: lod_level - -**注意:** - - **1. 该属性是只读属性** - - **2.** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下,不支持该属性,该值为零** - -此 :ref:`api_guide_Variable` 的 ``LoD`` 信息,关于 ``LoD`` 可以参考 :ref:`api_fluid_LoDTensor` 相关内容 - -.. py:attribute:: type - -**注意:该属性是只读属性** - -此 :ref:`api_guide_Variable` 的内存模型,例如是::ref:`api_fluid_LoDTensor`, 或者SelectedRows diff --git a/doc/paddle/api/paddle/fluid/framework/cpu_places_cn.rst b/doc/paddle/api/paddle/fluid/framework/cpu_places_cn.rst deleted file mode 100644 index 124973fc786ad84108f2478809a735e6ce45a081..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/framework/cpu_places_cn.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. _cn_api_fluid_cpu_places: - -cpu_places -------------------------------- - -.. py:function:: paddle.fluid.cpu_places(device_count=None) - - - - -该接口创建 ``device_count`` 个 ``fluid.CPUPlace`` 对象,并返回所创建的对象列表。 - -如果 ``device_count`` 为 ``None``,则设备数目将由环境变量 ``CPU_NUM`` 确定。如果未设置 ``CPU_NUM`` 环境变量,则设备数目会默认设为1,也就是说, ``CPU_NUM=1``。 -``CPU_NUM`` 表示在当前任务中使用的设备数目。如果 ``CPU_NUM`` 与物理核心数相同,可以加速程序的运行。 - -参数: - - **device_count** (int,可选) - 设备数目。默认值为 ``None``。 - -返回: ``CPUPlace`` 的列表。 - -返回类型:list[fluid.CPUPlace] - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - cpu_places = fluid.cpu_places() - diff --git a/doc/paddle/api/paddle/fluid/framework/cuda_pinned_places_cn.rst b/doc/paddle/api/paddle/fluid/framework/cuda_pinned_places_cn.rst deleted file mode 100644 index 9c3955b528ce692e7c0d1ba3f6da0431080a7272..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/framework/cuda_pinned_places_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_cuda_pinned_places: - -cuda_pinned_places -------------------------------- - - -.. py:function:: paddle.fluid.cuda_pinned_places(device_count=None) - - - - - - -该接口创建 ``device_count`` 个 ``fluid.CUDAPinnedPlace`` ( fluid. :ref:`cn_api_fluid_CUDAPinnedPlace` ) 对象,并返回所创建的对象列表。 - -如果 ``device_count`` 为 ``None``,实际设备数目将由当前任务中使用的GPU设备数决定。用户可通过以下2种方式设置任务可用的GPU设备: - -- 设置环境变量 ``FLAGS_selected_gpus`` ,例如 ``export FLAGS_selected_gpus='0,1'``。 -- 设置环境变量 ``CUDA_VISIBLE_DEVICES`` ,例如 ``export CUDA_VISIBLE_DEVICES='0,1'``。 - -关于如何设置任务中使用的GPU设备,具体请查看 fluid. :ref:`cn_api_fluid_cuda_places` 。 - -参数: - - **device_count** (int,可选) - 设备数目。默认值为 ``None``。 - -返回: ``fluid.CUDAPinnedPlace`` 对象列表。 - -返回类型:list[fluid.CUDAPinnedPlace] - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 1)不设置任何环境变量,默认使用所有的GPU,8卡的机器则将创建8个CUDAPinnedPlace - # 2)export FLAGS_selected_gpus='0,1',则创建2个CUDAPinnedPlace - cuda_pinned_places = fluid.cuda_pinned_places() - # 3)创建1个CUDAPinnedPlace - cuda_pinned_places = fluid.cuda_pinned_places(1) diff --git a/doc/paddle/api/paddle/fluid/framework/cuda_places_cn.rst b/doc/paddle/api/paddle/fluid/framework/cuda_places_cn.rst deleted file mode 100644 index b0294e9cb5b2df17d525a053c68005d0355bbe2e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/framework/cuda_places_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_cuda_places: - -cuda_places -------------------------------- - -.. py:function:: paddle.fluid.cuda_places(device_ids=None) - - - - -.. note:: - 多卡任务请先使用 FLAGS_selected_gpus 环境变量设置可见的GPU设备,下个版本将会修正 CUDA_VISIBLE_DEVICES 环境变量无效的问题。 - -该接口根据 ``device_ids`` 创建一个或多个 ``fluid.CUDAPlace`` 对象,并返回所创建的对象列表。 - -如果 ``device_ids`` 为 ``None``,则首先检查 ``FLAGS_selected_gpus`` 标志。 -例如: ``FLAGS_selected_gpus=0,1,2`` ,则返回的列表将为 ``[fluid.CUDAPlace(0), fluid.CUDAPlace(1), fluid.CUDAPlace(2)]``。 -如果未设置标志 ``FLAGS_selected_gpus`` ,则根据 ``CUDA_VISIBLE_DEVICES`` 环境变量,返回所有可见的 GPU places。 - -如果 ``device_ids`` 不是 ``None``,它应该是使用的GPU设备ID的列表或元组。 -例如: ``device_id=[0,1,2]`` ,返回的列表将是 ``[fluid.CUDAPlace(0), fluid.CUDAPlace(1), fluid.CUDAPlace(2)]``。 - -参数: - - **device_ids** (list(int)|tuple(int),可选) - GPU的设备ID列表或元组。默认值为 ``None``。 - -返回: 创建的 ``fluid.CUDAPlace`` 列表。 - -返回类型:list[fluid.CUDAPlace] - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - cuda_places = fluid.cuda_places() - diff --git a/doc/paddle/api/paddle/fluid/framework/device_guard_cn.rst b/doc/paddle/api/paddle/fluid/framework/device_guard_cn.rst deleted file mode 100755 index 7d369cc9740652a4d6d4c5a23ff723fdfa0dbdc4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/framework/device_guard_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_device_guard: - -device_guard -------------------------------- - -**注意:该API仅支持【静态图】模式** - -.. py:function:: paddle.fluid.device_guard(device=None) - -一个用于指定OP运行设备的上下文管理器。 - -参数: - - **device** (str|None) – 指定上下文中使用的设备。它可以是'cpu'或者'gpu‘,当它被设置为'cpu'或者'gpu'时,创建在该上下文中的OP将被运行在CPUPlace或者CUDAPlace上。若设置为'gpu',同时程序运行在单卡模式下,设备的索引将与执行器的设备索引保持一致。默认值:None,在该上下文中的OP将被自动地分配设备。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - support_gpu = fluid.is_compiled_with_cuda() - place = fluid.CPUPlace() - if support_gpu: - place = fluid.CUDAPlace(0) - # if GPU is supported, the three OPs below will be automatically assigned to CUDAPlace(0) - data1 = fluid.layers.fill_constant(shape=[1, 3, 8, 8], value=0.5, dtype='float32') - data2 = fluid.layers.fill_constant(shape=[1, 3, 5, 5], value=0.5, dtype='float32') - shape = fluid.layers.shape(data2) - with fluid.device_guard("cpu"): - # Ops created here will be placed on CPUPlace - shape = fluid.layers.slice(shape, axes=[0], starts=[0], ends=[4]) - with fluid.device_guard('gpu'): - # if GPU is supported, OPs created here will be placed on CUDAPlace(0), otherwise on CPUPlace - out = fluid.layers.crop_tensor(data1, shape=shape) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - result = exe.run(fetch_list=[out]) diff --git a/doc/paddle/api/paddle/fluid/framework/get_flags_cn.rst b/doc/paddle/api/paddle/fluid/framework/get_flags_cn.rst deleted file mode 100644 index e0323cf1f3e52c6c927ad7944a7e26a0a051442f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/framework/get_flags_cn.rst +++ /dev/null @@ -1,21 +0,0 @@ -.. _cn_api_fluid_get_flags: - -get_flags -------------------------------- - -.. py:function:: paddle.fluid.get_flags(flags) -用于获取Paddle框架中环境变量FLAGS的当前值。 - -参数: - - **flags** (list|tuple|str) - 需要获取的环境变量FLAGS的名称。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - flags = ['FLAGS_eager_delete_tensor_gb', 'FLAGS_check_nan_inf'] - res = fluid.get_flags(flags) - print(res) - # {'FLAGS_eager_delete_tensor_gb': 0.0, 'FLAGS_check_nan_inf': False} diff --git a/doc/paddle/api/paddle/fluid/framework/is_compiled_with_cuda_cn.rst b/doc/paddle/api/paddle/fluid/framework/is_compiled_with_cuda_cn.rst deleted file mode 100644 index 5f2741e78783c432eb22fd82509e2f3ebf7c808e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/framework/is_compiled_with_cuda_cn.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. _cn_api_fluid_is_compiled_with_cuda: - -is_compiled_with_cuda -------------------------------- - -.. py:function:: paddle.fluid.is_compiled_with_cuda() - - - - -检查 ``whl`` 包是否可以被用来在GPU上运行模型 - -返回:支持gpu则为True,否则为False。 - -返回类型:out(boolean) - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - support_gpu = fluid.is_compiled_with_cuda() - - diff --git a/doc/paddle/api/paddle/fluid/framework/load_op_library_cn.rst b/doc/paddle/api/paddle/fluid/framework/load_op_library_cn.rst deleted file mode 100644 index 944b78dc4e9cc84a2cabc3951d3091969f3dc763..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/framework/load_op_library_cn.rst +++ /dev/null @@ -1,26 +0,0 @@ -.. _cn_api_fluid_load_op_library: - -load_op_library -------------------------------- - -.. py:class:: paddle.fluid.load_op_library - -:api_attr: 声明式编程模式(静态图) - - - -``load_op_library`` 用于自定义C++算子中,用来加载算子动态共享库。加载库后,注册好的算子及其Kernel实现将在PaddlePaddle主进程中可以被调用。 请注意,自定义算子的类型不能与框架中的现有算子类型相同。 - -参数: - - **lib_filename** (str) – 动态共享库的名字。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - #fluid.load_op_library('custom_op.so') - - - - diff --git a/doc/paddle/api/paddle/fluid/framework/require_version_cn.rst b/doc/paddle/api/paddle/fluid/framework/require_version_cn.rst deleted file mode 100644 index 19f14cb37fe9adc927141d647e61ddfa843bc3d2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/framework/require_version_cn.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _cn_api_fluid_require_version: - -require_version -------------------------------- - -.. py:function:: paddle.fluid.require_version(min_version, max_version=None) - - - -该接口用于检查已安装的飞桨版本是否介于[``min_version``, ``max_version``]之间(包含 ``min_version`` 和 ``max_version`` ),如果已安装的版本低于 ``min_version`` 或者高于 ``max_version`` ,将会抛出异常。该接口无返回值。 - -参数: - - **min_version** (str) - 指定所需要的最低版本(如‘1.4.0’) - - **max_version** (str, optional) – 指定可接受的最高版本(如‘1.7.0’),默认值None,表示任意大于等于 ``min_version`` 的版本都可以接受。 - -返回:无 - -抛出异常: - - - ``TypeError`` – ``min_version`` 的类型不是str。 - - ``TypeError`` – ``max_version`` 的类型不是str或type(None)。 - - ``ValueError`` – ``min_version`` 的值不是正常的版本号格式。 - - ``ValueError`` – ``max_version`` 的值不是正常的版本号格式或None。 - - ``Exception`` – 已安装的版本低于 ``min_version`` 或者高于 ``max_version`` 。 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - # 任何大于等于0.1.0的版本都可以接受 - fluid.require_version('0.1.0') - - # 只接受介于0.1.0和10.0.0之间的版本(包含0.1.0和10.0.0) - fluid.require_version(min_version='0.1.0', max_version='10.0.0') - diff --git a/doc/paddle/api/paddle/fluid/framework/set_flags_cn.rst b/doc/paddle/api/paddle/fluid/framework/set_flags_cn.rst deleted file mode 100644 index a4f6fe1cd02bd2a691059b6732a04e757ab0304e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/framework/set_flags_cn.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. _cn_api_fluid_set_flags: - -set_flags -------------------------------- - -.. py:function:: paddle.fluid.set_flags(flags) -用于设置Paddle框架中环境变量FLAGS的值。 - -参数: - - **flags** (dict) - 包含想要设置的环境变量FLAGS的名称和值的字典。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - fluid.set_flags({'FLAGS_eager_delete_tensor_gb': 1.0}) diff --git a/doc/paddle/api/paddle/fluid/get_flags_cn.rst b/doc/paddle/api/paddle/fluid/get_flags_cn.rst deleted file mode 100644 index e0323cf1f3e52c6c927ad7944a7e26a0a051442f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/get_flags_cn.rst +++ /dev/null @@ -1,21 +0,0 @@ -.. _cn_api_fluid_get_flags: - -get_flags -------------------------------- - -.. py:function:: paddle.fluid.get_flags(flags) -用于获取Paddle框架中环境变量FLAGS的当前值。 - -参数: - - **flags** (list|tuple|str) - 需要获取的环境变量FLAGS的名称。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - flags = ['FLAGS_eager_delete_tensor_gb', 'FLAGS_check_nan_inf'] - res = fluid.get_flags(flags) - print(res) - # {'FLAGS_eager_delete_tensor_gb': 0.0, 'FLAGS_check_nan_inf': False} diff --git a/doc/paddle/api/paddle/fluid/in_dygraph_mode_cn.rst b/doc/paddle/api/paddle/fluid/in_dygraph_mode_cn.rst deleted file mode 100644 index 06c960ce5c3debdc422d8098744b5e7ecaa73bb5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/in_dygraph_mode_cn.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. _cn_api_fluid_in_dygraph_mode: - -in_dygraph_mode -------------------------------- - -.. py:function:: paddle.fluid.in_dygraph_mode() - - - - -该接口检查程序是否在动态图模式中运行。 -可以通过 ``fluid.dygraph.guard`` 接口开启动态图模式。 - -返回:如果程序是在动态图模式下运行的,则返回 ``True``。 - -返回类型:bool - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - fluid.enable_dygraph() # 现在进入 dygragh 模式 - print(fluid.in_dygraph_mode()) # True - fluid.disable_dygraph() - print(fluid.in_dygraph_mode()) # False - - diff --git a/doc/paddle/api/paddle/fluid/initializer/BilinearInitializer_cn.rst b/doc/paddle/api/paddle/fluid/initializer/BilinearInitializer_cn.rst deleted file mode 100644 index 58f1dc08bb7a89a7fc4f43342adef144b50e0ba9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/initializer/BilinearInitializer_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_initializer_BilinearInitializer: - -BilinearInitializer -------------------------------- - -.. py:class:: paddle.fluid.initializer.BilinearInitializer()) - - - - -该接口为参数初始化函数,用于转置卷积函数中,对输入进行上采样。用户通过任意整型因子放大shape为(B,C,H,W)的特征图。 - -返回:对象 - -用法如下: - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import math - factor = 2 - C = 2 - H = W = 32 - w_attr = fluid.ParamAttr( - learning_rate=0., - regularizer=fluid.regularizer.L2Decay(0.), - initializer=fluid.initializer.BilinearInitializer()) - x = fluid.layers.data(name="data", shape=[4, H, W], - dtype="float32") - conv_up = fluid.layers.conv2d_transpose( - input=x, - num_filters=C, - output_size=None, - filter_size=2 * factor - factor % 2, - padding=int(math.ceil((factor - 1) / 2.)), - stride=factor, - groups=C, - param_attr=w_attr, - bias_attr=False) - -上述代码实现的是将输入x(shape=[-1, 4, H, W])经过转置卷积得到shape=[-1, C, H*factor, W*factor]的输出,num_filters = C和groups = C 表示这是按通道转置的卷积函数,输出通道为C,转置卷积的groups为C。滤波器shape为(C,1,K,K),K为filter_size。该初始化函数为滤波器的每个通道设置(K,K)插值核。输出特征图的最终输出shape为(B,C,factor*H,factor*W)。注意学习率和权重衰减设为0,以便在训练过程中双线性插值的系数值保持不变 - - - - diff --git a/doc/paddle/api/paddle/fluid/initializer/ConstantInitializer_cn.rst b/doc/paddle/api/paddle/fluid/initializer/ConstantInitializer_cn.rst deleted file mode 100644 index f5acebd8919da242f5eac12e8349a7d1c606edfa..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/initializer/ConstantInitializer_cn.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. _cn_api_fluid_initializer_ConstantInitializer: - -ConstantInitializer -------------------------------- - -.. py:class:: paddle.fluid.initializer.ConstantInitializer(value=0.0, force_cpu=False) - - - - -该接口为常量初始化函数,用于权重初始化,通过输入的value值初始化输入变量; - -参数: - - **value** (float16|float32) - 用于初始化输入变量的值; - - **force_cpu** (bool) - 用于表示初始化的位置,为True时,会强制在CPU上初始化(即使executor设置的是CUDA)。默认为False。 - -返回:参数初始化类的实例 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name="data", shape=[32, 32], dtype="float32") - fc = fluid.layers.fc(input=x, size=10, - param_attr=fluid.initializer.ConstantInitializer(value=2.0)) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/initializer/MSRAInitializer_cn.rst b/doc/paddle/api/paddle/fluid/initializer/MSRAInitializer_cn.rst deleted file mode 100644 index b002b655a7ff6df93e50ad48963eac6fe7de1dfe..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/initializer/MSRAInitializer_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_initializer_MSRAInitializer: - -MSRAInitializer -------------------------------- - -.. py:class:: paddle.fluid.initializer.MSRAInitializer(uniform=True, fan_in=None, seed=0) - - - - -该接口实现MSRA方式的权重初始化(a.k.a. Kaiming初始化) - -该接口为权重初始化函数,方法来自Kaiming He,Xiangyu Zhang,Shaoqing Ren 和 Jian Sun所写的论文: `Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification `_ 。这是一个鲁棒性特别强的初始化方法,并且适应了非线性激活函数(rectifier nonlinearities)。 -可以选择使用均匀分布或者正太分布初始化权重; -在均匀分布中,范围为[-x,x],其中: - -.. math:: - - x = \sqrt{\frac{6.0}{fan\_in}} - -在正态分布中,均值为0,标准差为: - -.. math:: - - \sqrt{\frac{2.0}{fan\_in}} - -参数: - - **uniform** (bool) - 为True表示使用均匀分布,为False表示使用正态分布 - - **fan_in** (float16|float32) - MSRAInitializer的fan_in。如果为None,fan_in沿伸自变量,多设置为None - - **seed** (int32) - 随机种子 - -返回:对象 - -.. note:: - - 在大多数情况下推荐设置fan_in为None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name="data", shape=[32, 32], dtype="float32") - fc = fluid.layers.fc(input=x, size=10, param_attr=fluid.initializer.MSRAInitializer(uniform=False)) - - - - - diff --git a/doc/paddle/api/paddle/fluid/initializer/NormalInitializer_cn.rst b/doc/paddle/api/paddle/fluid/initializer/NormalInitializer_cn.rst deleted file mode 100644 index 3574b444b4cbe3684c6f9210892655a1b18b8c3c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/initializer/NormalInitializer_cn.rst +++ /dev/null @@ -1,28 +0,0 @@ -.. _cn_api_fluid_initializer_NormalInitializer: - -NormalInitializer -------------------------------- - -.. py:class:: paddle.fluid.initializer.NormalInitializer(loc=0.0, scale=1.0, seed=0) - - - - -随机正态(高斯)分布初始化函数 - -参数: - - **loc** (float16|float32) - 正态分布的平均值 - - **scale** (float16|float32) - 正态分布的标准差 - - **seed** (int32) - 随机种子 - -返回:对象 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name="data", shape=[32, 32], dtype="float32") - fc = fluid.layers.fc(input=x, size=10, - param_attr=fluid.initializer.Normal(loc=0.0, scale=2.0)) - diff --git a/doc/paddle/api/paddle/fluid/initializer/NumpyArrayInitializer_cn.rst b/doc/paddle/api/paddle/fluid/initializer/NumpyArrayInitializer_cn.rst deleted file mode 100644 index 7c0365ccba17c21f28907047bb902e25fb0df43b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/initializer/NumpyArrayInitializer_cn.rst +++ /dev/null @@ -1,30 +0,0 @@ -.. _cn_api_fluid_initializer_NumpyArrayInitializer: - -NumpyArrayInitializer -------------------------------- - -.. py:class:: paddle.fluid.initializer.NumpyArrayInitializer(value) - - - - -该OP使用Numpy型数组来初始化参数变量。 - -参数: - - **value** (numpy) - 用于初始化变量的一个Numpy型数组。 - -返回:张量(Tensor) - -返回类型:变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - x1 = fluid.data(name="x1", shape=[2, 1], dtype='float32') - fc = fluid.layers.fc(input=x1, size=10, - param_attr=fluid.initializer.NumpyArrayInitializer(numpy.array([1,2]))) - - diff --git a/doc/paddle/api/paddle/fluid/initializer/TruncatedNormalInitializer_cn.rst b/doc/paddle/api/paddle/fluid/initializer/TruncatedNormalInitializer_cn.rst deleted file mode 100644 index 4378efd743426e1ea3453c2ad43d986aca2f50f1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/initializer/TruncatedNormalInitializer_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_initializer_TruncatedNormalInitializer: - -TruncatedNormalInitializer -------------------------------- - -.. py:class:: paddle.fluid.initializer.TruncatedNormalInitializer(loc=0.0, scale=1.0, seed=0) - - - - -Random Truncated Normal(高斯)分布初始化函数 - -参数: - - **loc** (float16|float32) - 正态分布的平均值 - - **scale** (float16|float32) - 正态分布的标准差 - - **seed** (int32) - 随机种子 - -返回:对象 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[1], dtype='float32') - fc = fluid.layers.fc(input=x, size=10, - param_attr=fluid.initializer.TruncatedNormal(loc=0.0, scale=2.0)) - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/initializer/UniformInitializer_cn.rst b/doc/paddle/api/paddle/fluid/initializer/UniformInitializer_cn.rst deleted file mode 100644 index 873451e6710b00a7cc7394634f4f7842bbca5ab6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/initializer/UniformInitializer_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_initializer_UniformInitializer: - -UniformInitializer -------------------------------- - -.. py:class:: paddle.fluid.initializer.UniformInitializer(low=-1.0, high=1.0, seed=0) - - - - -随机均匀分布初始化器 - -参数: - - **low** (float16|float32) - 下界 - - **high** (float16|float32) - 上界 - - **seed** (int32) - 随机种子 - -返回:对象 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[1], dtype='float32') - fc = fluid.layers.fc(input=x, size=10, - param_attr=fluid.initializer.Uniform(low=-0.5, high=0.5)) - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/initializer/XavierInitializer_cn.rst b/doc/paddle/api/paddle/fluid/initializer/XavierInitializer_cn.rst deleted file mode 100644 index b26098bf14107371c748445ad9493ba0f7331ffb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/initializer/XavierInitializer_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _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 `_ - -该初始化函数用于保持所有层的梯度尺度几乎一致。 - -在均匀分布的情况下,取值范围为[-x,x],其中: - -.. math:: - - x = \sqrt{\frac{6.0}{fan\_in+fan\_out}} - -正态分布的情况下,均值为0,标准差为: - -.. math:: - - x = \sqrt{\frac{2.0}{fan\_in+fan\_out}} - -参数: - - **uniform** (bool) - 是否用均匀分布,默认为True。如果为False,则使用正态分布。 - - **fan_in** (float) - 当前网络层的输入神经元个数。如果为None,则从变量中推断,默认为None。 - - **fan_out** (float) - 当前网络层的输出神经元个数。如果为None,则从变量中推断,默认为None。 - - **seed** (int) - 随机种子 - -.. note:: - - 在大多数情况下推荐将fan_in和fan_out设置为None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - queries = fluid.layers.data(name='x', shape=[1], dtype='float32') - fc = fluid.layers.fc( - input=queries, size=10, - param_attr=fluid.initializer.Xavier(uniform=False)) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/initializer/set_global_initializer_cn.rst b/doc/paddle/api/paddle/fluid/initializer/set_global_initializer_cn.rst deleted file mode 100644 index 023629cf753daf5ecfb29a1b1984fbd184604bc4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/initializer/set_global_initializer_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_set_global_initializer: - -set_global_initializer -------------------------------- - -.. py:function:: paddle.fluid.set_global_initializer(weight_init, bias_init=None) - -该API用于设置Paddle框架中全局的参数初始化方法。该API只对位于其后的代码生效。 - -模型参数为模型中的weight和bias统称,在fluid中对应fluid.Parameter类,继承自fluid.Variable,是一种可持久化的variable。 -该API的设置仅对模型参数生效,对通过 :ref:`cn_api_fluid_layers_create_global_var` 、 :ref:`cn_api_fluid_layers_create_tensor` 等API创建的变量不会生效。 - -如果创建网络层时还通过 ``param_attr`` 、 ``bias_attr`` 设置了初始化方式,这里的全局设置将不会生效,因为其优先级更低。 - -参数: - - **weight_init** (Initializer) - 设置框架的全局的weight参数初始化方法。 - - **bias_init** (Initializer,可选) - 设置框架的全局的bias参数初始化方法。默认:None。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - fluid.set_global_initializer(fluid.initializer.Uniform(), fluid.initializer.Constant()) - x = fluid.data(name="x", shape=[1, 3, 32, 32]) - - # conv1的weight参数是通过Uniform来初始化 - # conv1的bias参数是通过Constant来初始化 - conv1 = fluid.layers.conv2d(x, 5, 3) - - # 如果同时设置了param_attr/bias_attr, 全局初始化将不会生效 - # conv2的weight参数是通过Xavier来初始化 - # conv2的bias参数是通过Normal来初始化 - conv2 = fluid.layers.conv2d(conv1, 5, 3, - param_attr=fluid.initializer.Xavier(), - bias_attr=fluid.initializer.Normal()) - - # 取消全局参数初始化的设置 - fluid.set_global_initializer(None) \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/initializer_cn.rst b/doc/paddle/api/paddle/fluid/initializer_cn.rst deleted file mode 100644 index e29d90765a1e232a4aa83320f643f7dc1d71d3ac..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/initializer_cn.rst +++ /dev/null @@ -1,85 +0,0 @@ -======================= -paddle.nn.initializer -======================= - -.. toctree:: - :maxdepth: 1 - -initializer_cn/Bilinear_cn.rst -initializer_cn/Bilinear_cn.rst -initializer_cn/Bilinear_cn.rst -initializer_cn/Bilinear_cn.rst -initializer_cn/Bilinear_cn.rst -initializer_cn/Bilinear_cn.rst -initializer_cn/Bilinear_cn.rst -initializer_cn/Bilinear_cn.rst -initializer_cn/Bilinear_cn.rst -initializer_cn/Bilinear_cn.rst -initializer_cn/Bilinear_cn.rst - -initializer_cn/Constant_cn.rst -initializer_cn/Constant_cn.rst -initializer_cn/Constant_cn.rst -initializer_cn/Constant_cn.rst -initializer_cn/Constant_cn.rst -initializer_cn/Constant_cn.rst -initializer_cn/Constant_cn.rst -initializer_cn/Constant_cn.rst -initializer_cn/Constant_cn.rst -initializer_cn/Constant_cn.rst -initializer_cn/Constant_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/MSRA_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/Normal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/TruncatedNormal_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Uniform_cn.rst -initializer_cn/Xavier_cn.rst -initializer_cn/Xavier_cn.rst -initializer_cn/Xavier_cn.rst -initializer_cn/Xavier_cn.rst -initializer_cn/Xavier_cn.rst -initializer_cn/Xavier_cn.rst -initializer_cn/Xavier_cn.rst -initializer_cn/Xavier_cn.rst -initializer_cn/Xavier_cn.rst -initializer_cn/Xavier_cn.rst -initializer_cn/Xavier_cn.rst diff --git a/doc/paddle/api/paddle/fluid/input/embedding_cn.rst b/doc/paddle/api/paddle/fluid/input/embedding_cn.rst deleted file mode 100644 index b5ad3607114832a799d763d7d68b05a60d65a55d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/input/embedding_cn.rst +++ /dev/null @@ -1,103 +0,0 @@ -.. _cn_api_fluid_layers_embedding: - -embedding -------------------------------- - - -.. py:function:: paddle.fluid.layers.embedding(input, size, is_sparse=False, is_distributed=False, padding_idx=None, param_attr=None, dtype='float32') - -:api_attr: 声明式编程模式(静态图) - - - -嵌入层(Embedding Layer) - -**注意:此OP将在未来的版本中被移除!该OP要求输入Tensor shape的最后一维必须为1。推荐使用fluid.** :ref:`cn_api_fluid_embedding` 。 - -该OP根据input中的id信息从embedding矩阵中查询对应embedding信息,并会根据输入的size (vocab_size, emb_size)和dtype自动构造一个二维embedding矩阵。 - -要求input的最后一维必须等于1,输出的Tensor的shape是将输入Tensor shape的最后一维的1替换为emb_size。 - -注:input中的id必须满足 ``0 =< id < size[0]``,否则程序会抛异常退出。 - - -:: - - Case 1: - - input是Tensor, 且padding_idx = -1 - input.data = [[[1], [3]], [[2], [4]], [[4], [127]]] - input.shape = [3, 2, 1] - 若size = [128, 16] - 输出为Tensor: - out.shape = [3, 2, 16] - out.data = [[[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654]], - - [[0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365]], - - [[0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]]] # padding data - 输入的padding_idx小于0,则自动转换为padding_idx = -1 + 128 = 127, 对于输入id为127的词,进行padding处理。 - - Case 2: - - input是lod level 为1的LoDTensor, 且padding_idx = 0 - input.lod = [[2, 3]] - input.data = [[1], [3], [2], [4], [0]] - input.shape = [5, 1] - 若size = [128, 16] - 输出为LoDTensor: - out.lod = [[2, 3]] - out.shape = [5, 16] - out.data = [[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654], - [0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]] # padding data - 输入的padding_idx = 0,则对于输入id为0的词,进行padding处理。 - - -参数: - - **input** (Variable) - 存储id信息的Tensor或LoDTensor,数据类型必须为:int64,输入的shape最后一维须为1。input中的id必须满足 ``0 =< id < size[0]`` 。 - - **size** (tuple|list) - embedding矩阵的维度。必须包含两个元素,第一个元素为vocab_size(词表大小), 第二个为emb_size(embedding层维度)。 - - **is_sparse** (bool) - 是否使用稀疏的更新方式,这个参数只会影响反向的梯度更新的性能,sparse更新速度更快,推荐使用稀疏更新的方式。但某些optimizer不支持sparse更新,比如 :ref:`cn_api_fluid_optimizer_AdadeltaOptimizer` 、 :ref:`cn_api_fluid_optimizer_AdamaxOptimizer` 、 :ref:`cn_api_fluid_optimizer_DecayedAdagradOptimizer` 、 :ref:`cn_api_fluid_optimizer_FtrlOptimizer` 、 :ref:`cn_api_fluid_optimizer_LambOptimizer` 、:ref:`cn_api_fluid_optimizer_LarsMomentumOptimizer` ,此时is_sparse必须为False。默认为False。 - - **is_distributed** (bool) - 是否使用分布式的方式存储embedding矩阵,仅在多机分布式cpu训练中使用。默认为False。 - - **padding_idx** (int|long|None) - padding_idx需在区间[-vocab_size, vocab_size),否则不生效,padding_idx<0时,padding_idx会被改成vocab_size + padding_idx,input中等于padding_index的id对应的embedding信息会被设置为0,且这部分填充数据在训练时将不会被更新。如果为None,不作处理,默认为None。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。此外,可以通过 ``param_attr`` 参数加载用户自定义或预训练的词向量。只需将本地词向量转为numpy数据格式,且保证本地词向量的shape和embedding的 ``size`` 参数一致,然后使用 :ref:`cn_api_fluid_initializer_NumpyArrayInitializer` 进行初始化,即可实现加载自定义或预训练的词向量。详细使用方法见代码示例2。 - - **dtype** (str|core.VarDesc.VarType) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - -返回:input映射后得到的Embedding Tensor或LoDTensor,数据类型和dtype定义的类型一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name='sequence', shape=[1], dtype='int64', lod_level=1) - - # 示例 1 - emb_1 = fluid.layers.embedding(input=data, size=[128, 64]) - - # 示例 2: 加载用户自定义或预训练的词向量 - weight_data = np.random.random(size=(128, 100)) # numpy格式的词向量数据 - w_param_attrs = fluid.ParamAttr( - name="emb_weight", - learning_rate=0.5, - initializer=fluid.initializer.NumpyArrayInitializer(weight_data), - trainable=True) - emb_2 = fluid.layers.embedding(input=data, size=(128, 100), param_attr=w_param_attrs, dtype='float32') - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/input/one_hot_cn.rst b/doc/paddle/api/paddle/fluid/input/one_hot_cn.rst deleted file mode 100644 index 2aaaf117e6fc9dc5ab26032db91bef286f14e567..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/input/one_hot_cn.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. _cn_api_fluid_layers_one_hot: - -one_hot -------------------------------- - -.. py:function:: paddle.fluid.layers.one_hot(input, depth, allow_out_of_range=False) - - - - -**注意:此OP要求输入Tensor shape的最后一维必须为1。此OP将在未来的版本中被移除!推荐使用fluid.** :ref:`cn_api_fluid_one_hot` 。 - -该OP将输入(input)中的每个id转换为一个one-hot向量,其长度为 ``depth`` ,该id对应的向量维度上的值为1,其余维度的值为0。 - -输出的Tensor(或LoDTensor)的shape是将输入shape的最后一维替换为depth的维度。 - -- 示例1(allow_out_of_range=False): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [3], [0]] - depth = 4 - - 输出: - Out.shape = [4, 4] - Out.data = [[0., 1., 0., 0.], - [0., 1., 0., 0.], - [0., 0., 0., 1.], - [1., 0., 0., 0.]] - -- 示例2 (allow_out_of_range=True): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [5], [0]] - depth = 4 - allow_out_of_range=True - - 输出: - Out.shape = [4, 4] - Out.data = [[0., 1., 0., 0.], - [0., 1., 0., 0.], - [0., 0., 0., 0.], ## 这一维的值是5,超过了depth,因此填成0 - [1., 0., 0., 0.]] - -- 示例3 (allow_out_of_range=False): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [5], [0]] - depth = 4 - allow_out_of_range=False - - 输出:抛出 Illegal value 的异常 - X中第2维的值是5,超过了depth,而allow_out_of_range=False表示不允许超过,因此抛异常。 - - -参数: - - **input** (Variable) - 维度为 :math:`[N_1, ..., N_n, 1]` 的多维Tensor或LoDTensor,维度至少两维,且最后一维必须是1。数据类型为int32或int64。 - - **depth** (int) - 用于定义一个one-hot向量的长度。若输入为词id,则 ``depth`` 通常取值为词典大小。 - - **allow_out_of_range** (bool) - 指明input中所包含的id值是否可以大于depth值。当超过depth时,如果 `allow_out_of_range` 为False,则会抛出 `Illegal value` 的异常;如果设置为True,该id对应的向量为0向量。默认值为False。 - -返回:转换后的one_hot Tensor或LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - # 该代码对应上述第一个示例,其中输入label的shape是[4, 1],输出one_hot_label的shape是[4, 4] - label = fluid.layers.data(name="label", shape=[4, 1], append_batch_size=False, dtype="int64") - one_hot_label = fluid.layers.one_hot(input=label, depth=4) diff --git a/doc/paddle/api/paddle/fluid/io/ComposeNotAligned_cn.rst b/doc/paddle/api/paddle/fluid/io/ComposeNotAligned_cn.rst deleted file mode 100644 index 1f4a911c5cb8b7dbad64807f81a4114e411ebeab..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/ComposeNotAligned_cn.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. THIS FILE IS GENERATED BY `gen_doc.{py|sh}` - !DO NOT EDIT THIS FILE MANUALLY! - -.. _api_fluid_io_ComposeNotAligned: - -ComposeNotAligned ------------------ - -.. autoclass:: paddle.fluid.io.ComposeNotAligned - :members: - :inherited-members: - :noindex: - -表示一种错误状态,说明调用compose API时, reader的输出数据没有对齐。 diff --git a/doc/paddle/api/paddle/fluid/io/DataLoader_cn.rst b/doc/paddle/api/paddle/fluid/io/DataLoader_cn.rst deleted file mode 100644 index e8e1b68d3aadb0c9f5e3f958f4b096313e60c6e5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/DataLoader_cn.rst +++ /dev/null @@ -1,249 +0,0 @@ -.. _cn_api_fluid_io_DataLoader: - -DataLoader -------------------------------- - -.. py:class:: paddle.fluid.io.DataLoader - - - - - -.. py:method:: from_generator(feed_list=None, capacity=None, use_double_buffer=True, iterable=True, return_list=False, use_multiprocess=False, drop_last=True) - -.. note:: - 框架保证DataLoader的数据加载顺序与用户提供的数据源读取顺序一致。 - -创建一个DataLoader对象用于加载Python生成器产生的数据。数据会由Python线程预先读取,并异步送入一个队列中。 - -本方法创建的DataLoader对象提供了3个方法设置数据源,分别是 :code:`set_sample_generator` , :code:`set_sample_list_generator` 和 -:code:`set_batch_generator` 。请查阅下述示例代码了解它们的使用方法。 - -如果iterable = True,本方法创建的DataLoader对象时一个Python生成器,可以for-range的方法循环迭代。 - -如果iterable = False,本方法创建的DataLoader对象提供 :code:`start()` 和 :code:`reset()` 方法控制数据读取过程。此模式用于兼容 -``fluid.layers.py_reader`` 的使用方式。用户可使用iterable = False模式,方便地将 ``fluid.layers.py_reader`` 的代码迁移至 -``fluid.io.DataLoader`` 。 - -参数: - - **feed_list** (list(Variable)|tuple(Variable)) - feed变量列表,由 ``fluid.layers.data()`` 创建。 - - **capacity** (int) - DataLoader对象内部维护队列的容量大小。单位是batch数量。若reader读取速度较快,建议设置较大的capacity值。 - - **use_double_buffer** (bool) - 是否使用 ``double_buffer_reader`` 。若use_double_buffer=True,DataLoader会异步地预读取下一个batch的数据,可加速数据读取过程,但同时会占用少量的CPU/GPU存储,即一个batch输入数据的存储空间。 - - **iterable** (bool) - 所创建的DataLoader对象是否可迭代。 - - **return_list** (bool) - 每个设备上的数据是否以list形式返回。仅在iterable = True模式下有效。若return_list = False,每个设备上的返回数据均是str -> LoDTensor的映射表,其中映射表的key是每个输入变量的名称。若return_list = True,则每个设备上的返回数据均是list(LoDTensor)。推荐在静态图模式下使用return_list = False,在动态图模式下使用return_list = True。 - - **use_multiprocess** (bool) - 设置是否是用多进程加速动态图的数据载入过程。注意:该参数的设置仅在动态图模式下有效, 在静态图模式下,该参数设置与否均无任何影响。默认值为False。 - - **drop_last** (bool): 是否丢弃最后的不足CPU/GPU设备数的批次。默认值为True。在网络训练时,用户不能设置drop_last=False,此时所有CPU/GPU设备均应从DataLoader中读取到数据。在网络预测时,用户可以设置drop_last=False,此时最后不足CPU/GPU设备数的批次可以进行预测。 - -返回: 被创建的DataLoader对象 - -返回类型: loader (DataLoader) - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - BATCH_NUM = 10 - BATCH_SIZE = 16 - EPOCH_NUM = 4 - - CLASS_NUM = 10 - - ITERABLE = True # whether the created DataLoader object is iterable - USE_GPU = False # whether to use GPU - - DATA_FORMAT = 'batch_generator' # data format of data source user provides - - def simple_net(image, label): - fc_tmp = fluid.layers.fc(image, size=CLASS_NUM) - cross_entropy = fluid.layers.softmax_with_cross_entropy(image, label) - loss = fluid.layers.reduce_mean(cross_entropy) - sgd = fluid.optimizer.SGD(learning_rate=1e-3) - sgd.minimize(loss) - return loss - - def get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - - # If the data generator yields one sample each time, - # use DataLoader.set_sample_generator to set the data source. - def sample_generator_creator(): - def __reader__(): - for _ in range(BATCH_NUM * BATCH_SIZE): - image, label = get_random_images_and_labels([784], [1]) - yield image, label - - return __reader__ - - # If the data generator yield list of samples each time, - # use DataLoader.set_sample_list_generator to set the data source. - def sample_list_generator_creator(): - def __reader__(): - for _ in range(BATCH_NUM): - sample_list = [] - for _ in range(BATCH_SIZE): - image, label = get_random_images_and_labels([784], [1]) - sample_list.append([image, label]) - - yield sample_list - - return __reader__ - - # If the data generator yields a batch each time, - # use DataLoader.set_batch_generator to set the data source. - def batch_generator_creator(): - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = get_random_images_and_labels([BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - - return __reader__ - - # If DataLoader is iterable, use for loop to train the network - def train_iterable(exe, prog, loss, loader): - for _ in range(EPOCH_NUM): - for data in loader(): - exe.run(prog, feed=data, fetch_list=[loss]) - - # If DataLoader is not iterable, use start() and reset() method to control the process - def train_non_iterable(exe, prog, loss, loader): - for _ in range(EPOCH_NUM): - loader.start() # call DataLoader.start() before each epoch starts - try: - while True: - exe.run(prog, fetch_list=[loss]) - except fluid.core.EOFException: - loader.reset() # call DataLoader.reset() after catching EOFException - - def set_data_source(loader, places): - if DATA_FORMAT == 'sample_generator': - loader.set_sample_generator(sample_generator_creator(), batch_size=BATCH_SIZE, drop_last=True, places=places) - elif DATA_FORMAT == 'sample_list_generator': - loader.set_sample_list_generator(sample_list_generator_creator(), places=places) - elif DATA_FORMAT == 'batch_generator': - loader.set_batch_generator(batch_generator_creator(), places=places) - else: - raise ValueError('Unsupported data format') - - image = fluid.layers.data(name='image', shape=[784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - - # Define DataLoader - loader = fluid.io.DataLoader.from_generator(feed_list=[image, label], capacity=16, iterable=ITERABLE) - - # Define network - loss = simple_net(image, label) - - # Set data source of DataLoader - # - # If DataLoader is iterable, places must be given and the number of places must be the same with device number. - # - If you are using GPU, call `fluid.cuda_places()` to get all GPU places. - # - If you are using CPU, call `fluid.cpu_places()` to get all CPU places. - # - # If DataLoader is not iterable, places can be None. - places = fluid.cuda_places() if USE_GPU else fluid.cpu_places() - set_data_source(loader, places) - - exe = fluid.Executor(places[0]) - exe.run(fluid.default_startup_program()) - - prog = fluid.CompiledProgram(fluid.default_main_program()).with_data_parallel(loss_name=loss.name) - - if loader.iterable: - train_iterable(exe, prog, loss, loader) - else: - train_non_iterable(exe, prog, loss, loader) - - - ''' - Users can use return_list = True in dygraph mode. - ''' - with fluid.dygraph.guard(places[0]): - loader = fluid.io.DataLoader.from_generator(capacity=2, return_list=True) - set_data_source(loader, places[0]) - for image, label in loader(): - relu = fluid.layers.relu(image) - assert image.shape == [BATCH_SIZE, 784] - assert label.shape == [BATCH_SIZE, 1] - assert relu.shape == [BATCH_SIZE, 784] - - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - import os - - # We use 2 CPU cores to run inference network - os.environ['CPU_NUM'] = '2' - - # The data source has only 3 batches, which can not be - # divided evenly to each CPU core - def batch_generator(): - for i in range(3): - yield np.array([i+1]).astype('float32'), - - x = fluid.data(name='x', shape=[None], dtype='float32') - y = x * x - - def run_inference(drop_last): - loader = fluid.io.DataLoader.from_generator(feed_list=[x], - capacity=8, drop_last=drop_last) - loader.set_batch_generator(batch_generator, fluid.cpu_places()) - - exe = fluid.Executor(fluid.CPUPlace()) - prog = fluid.CompiledProgram(fluid.default_main_program()) - prog = prog.with_data_parallel() - - result = [] - for data in loader(): - each_ret, = exe.run(prog, feed=data, fetch_list=[y]) - result.extend(each_ret) - return result - - # Set drop_last to True, so that the last batch whose - # number is less than CPU core number would be discarded. - print(run_inference(drop_last=True)) # [1.0, 4.0] - - # Set drop_last to False, so that the last batch whose - # number is less than CPU core number can be tested. - print(run_inference(drop_last=False)) # [1.0, 4.0, 9.0] - - -.. py:method:: from_dataset(dataset, places, drop_last=True) - -创建一个DataLoader对象用于加载Dataset产生的数据。目前,Dataset仅支持Linux系统下使用。 - -参数: - - **dataset** (InMemoryDataset|QueueDataset) - Dataset对象。 - - **places** (list(CUDAPlace)|list(CPUPlace)) - DataLoader对象返回数据所在的place。 - - **drop_last** (bool) - 是否丢弃最后样本数量不足batch size的batch。若drop_last = True则丢弃,若drop_last = False则不丢弃。 - -返回: 被创建的DataLoader对象,可以for-range的方式循环迭代 - -返回类型: loader (DataLoader) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - image = fluid.layers.data(name='image', shape=[784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - - dataset = fluid.DatasetFactory().create_dataset("QueueDataset") - dataset.set_batch_size(32) - dataset.set_filelist(['a.txt', 'b.txt', 'c.txt']) - dataset.set_use_var([image, label]) - dataset.set_pipe_command('cat') - - loader = fluid.io.DataLoader.from_dataset(dataset, fluid.cpu_places()) - - diff --git a/doc/paddle/api/paddle/fluid/io/PyReader_cn.rst b/doc/paddle/api/paddle/fluid/io/PyReader_cn.rst deleted file mode 100644 index 10920cb264f87170a5394d4a4be70a74596c6c02..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/PyReader_cn.rst +++ /dev/null @@ -1,389 +0,0 @@ -.. _cn_api_fluid_io_PyReader: - -PyReader -------------------------------- - -.. py:class:: paddle.fluid.io.PyReader(feed_list=None, capacity=None, use_double_buffer=True, iterable=True, return_list=False) - - - - - -在python中为数据输入创建一个reader对象。将使用python线程预取数据,并将其异步插入队列。当调用Executor.run(…)时,将自动提取队列中的数据。 - -参数: - - **feed_list** (list(Variable)|tuple(Variable)) - feed变量列表,由 ``fluid.layers.data()`` 创建。 - - **capacity** (int) - PyReader对象内部维护队列的容量大小。单位是batch数量。若reader读取速度较快,建议设置较大的capacity值。 - - **use_double_buffer** (bool) - 是否使用 ``double_buffer_reader`` 。若use_double_buffer=True,PyReader会异步地预读取下一个batch的数据,可加速数据读取过程,但同时会占用少量的CPU/GPU存储,即一个batch输入数据的存储空间。 - - **iterable** (bool) - 所创建的DataLoader对象是否可迭代。 - - **return_list** (bool) - 每个设备上的数据是否以list形式返回。仅在iterable = True模式下有效。若return_list = False,每个设备上的返回数据均是str -> LoDTensor的映射表,其中映射表的key是每个输入变量的名称。若return_list = True,则每个设备上的返回数据均是list(LoDTensor)。推荐在静态图模式下使用return_list = False,在动态图模式下使用return_list = True。 - - -返回: 被创建的reader对象 - -返回类型: reader (Reader) - - -**代码示例** - -1.如果iterable=False,则创建的PyReader对象几乎与 ``fluid.layers.py_reader()`` 相同。算子将被插入program中。用户应该在每个epoch之前调用 ``start()`` ,并在epoch结束时捕获 ``Executor.run()`` 抛出的 ``fluid.core.EOFException`` 。一旦捕获到异常,用户应该调用 ``reset()`` 手动重置reader。 - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 5 - BATCH_SIZE = 3 - - def network(image, label): - # 用户定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - def reader_creator_random_image_and_label(height, width): - def reader(): - for i in range(ITER_NUM): - fake_image = np.random.uniform(low=0, - high=255, - size=[height, width]) - fake_label = np.ones([1]) - yield fake_image, fake_label - return reader - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - - reader = fluid.io.PyReader(feed_list=[image, label], - capacity=4, - iterable=False) - - user_defined_reader = reader_creator_random_image_and_label(784, 784) - reader.decorate_sample_list_generator( - paddle.batch(user_defined_reader, batch_size=BATCH_SIZE)) - - loss = network(image, label) - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - for i in range(EPOCH_NUM): - reader.start() - while True: - try: - executor.run(feed=None) - except fluid.core.EOFException: - reader.reset() - break - - -2.如果iterable=True,则创建的PyReader对象与程序分离。程序中不会插入任何算子。在本例中,创建的reader是一个python生成器,它是可迭代的。用户应将从PyReader对象生成的数据输入 ``Executor.run(feed=...)`` 。 - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 5 - BATCH_SIZE = 10 - - def network(image, label): - # 用户定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - def reader_creator_random_image(height, width): - def reader(): - for i in range(ITER_NUM): - fake_image = np.random.uniform(low=0, high=255, size=[height, width]), - fake_label = np.ones([1]) - yield fake_image, fake_label - return reader - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True, return_list=False) - - user_defined_reader = reader_creator_random_image(784, 784) - reader.decorate_sample_list_generator( - paddle.batch(user_defined_reader, batch_size=BATCH_SIZE), - fluid.core.CPUPlace()) - loss = network(image, label) - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - - for _ in range(EPOCH_NUM): - for data in reader(): - executor.run(feed=data, fetch_list=[loss]) - -3. return_list=True,返回值将用list表示而非dict,通常用于动态图模式中。 - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 5 - BATCH_SIZE = 10 - - def reader_creator_random_image(height, width): - def reader(): - for i in range(ITER_NUM): - yield np.random.uniform(low=0, high=255, size=[height, width]), \ - np.random.random_integers(low=0, high=9, size=[1]) - return reader - - place = fluid.CPUPlace() - with fluid.dygraph.guard(place): - py_reader = fluid.io.PyReader(capacity=2, return_list=True) - user_defined_reader = reader_creator_random_image(784, 784) - py_reader.decorate_sample_list_generator( - paddle.batch(user_defined_reader, batch_size=BATCH_SIZE), - place) - for image, label in py_reader(): - relu = fluid.layers.relu(image) - -.. py:method:: start() - -启动数据输入线程。只能在reader对象不可迭代时调用。 - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - BATCH_SIZE = 10 - - def generator(): - for i in range(5): - yield np.random.uniform(low=0, high=255, size=[784, 784]), - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - reader = fluid.io.PyReader(feed_list=[image], capacity=4, iterable=False) - reader.decorate_sample_list_generator( - paddle.batch(generator, batch_size=BATCH_SIZE)) - - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - for i in range(3): - reader.start() - while True: - try: - executor.run(feed=None) - except fluid.core.EOFException: - reader.reset() - break - -.. py:method:: reset() - -当 ``fluid.core.EOFException`` 抛出时重置reader对象。只能在reader对象不可迭代时调用。 - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - BATCH_SIZE = 10 - - def generator(): - for i in range(5): - yield np.random.uniform(low=0, high=255, size=[784, 784]), - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - reader = fluid.io.PyReader(feed_list=[image], capacity=4, iterable=False) - reader.decorate_sample_list_generator( - paddle.batch(generator, batch_size=BATCH_SIZE)) - - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - for i in range(3): - reader.start() - while True: - try: - executor.run(feed=None) - except fluid.core.EOFException: - reader.reset() - break - -.. py:method:: decorate_sample_generator(sample_generator, batch_size, drop_last=True, places=None) - -设置PyReader对象的数据源。 - -提供的 ``sample_generator`` 应该是一个python生成器,它生成的数据类型应为list(numpy.ndarray)。 - -当PyReader对象可迭代时,必须设置 ``places`` 。 - -如果所有的输入都没有LOD,这个方法比 ``decorate_sample_list_generator(paddle.batch(sample_generator, ...))`` 更快。 - -参数: - - **sample_generator** (generator) – Python生成器,yield 类型为list(numpy.ndarray) - - **batch_size** (int) – batch size,必须大于0 - - **drop_last** (bool) – 当样本数小于batch数量时,是否删除最后一个batch - - **places** (None|list(CUDAPlace)|list(CPUPlace)) – 位置列表。当PyReader可迭代时必须被提供 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 15 - BATCH_SIZE = 3 - - def network(image, label): - # 用户定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - def random_image_and_label_generator(height, width): - def generator(): - for i in range(ITER_NUM): - fake_image = np.random.uniform(low=0, - high=255, - size=[height, width]) - fake_label = np.array([1]) - yield fake_image, fake_label - return generator - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True) - - user_defined_generator = random_image_and_label_generator(784, 784) - reader.decorate_sample_generator(user_defined_generator, - batch_size=BATCH_SIZE, - places=[fluid.CPUPlace()]) - loss = network(image, label) - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - - for _ in range(EPOCH_NUM): - for data in reader(): - executor.run(feed=data, fetch_list=[loss]) - -.. py:method:: decorate_sample_list_generator(reader, places=None) - -设置PyReader对象的数据源。 - -提供的 ``reader`` 应该是一个python生成器,它生成列表(numpy.ndarray)类型的批处理数据。 - -当PyReader对象不可迭代时,必须设置 ``places`` 。 - -参数: - - **reader** (generator) – 返回列表(numpy.ndarray)类型的批处理数据的Python生成器 - - **places** (None|list(CUDAPlace)|list(CPUPlace)) – 位置列表。当PyReader可迭代时必须被提供 - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 15 - BATCH_SIZE = 3 - - def network(image, label): - # 用户定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - def random_image_and_label_generator(height, width): - def generator(): - for i in range(ITER_NUM): - fake_image = np.random.uniform(low=0, - high=255, - size=[height, width]) - fake_label = np.ones([1]) - yield fake_image, fake_label - return generator - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True) - - user_defined_generator = random_image_and_label_generator(784, 784) - reader.decorate_sample_list_generator( - paddle.batch(user_defined_generator, batch_size=BATCH_SIZE), - fluid.core.CPUPlace()) - loss = network(image, label) - executor = fluid.Executor(fluid.core.CPUPlace()) - executor.run(fluid.default_startup_program()) - - for _ in range(EPOCH_NUM): - for data in reader(): - executor.run(feed=data, fetch_list=[loss]) - -.. py:method:: decorate_batch_generator(reader, places=None) - -设置PyReader对象的数据源。 - -提供的 ``reader`` 应该是一个python生成器,它生成列表(numpy.ndarray)类型或LoDTensor类型的批处理数据。 - -当PyReader对象不可迭代时,必须设置 ``places`` 。 - -参数: - - **reader** (generator) – 返回LoDTensor类型的批处理数据的Python生成器 - - **places** (None|list(CUDAPlace)|list(CPUPlace)) – 位置列表。当PyReader可迭代时必须被提供 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 15 - BATCH_SIZE = 3 - - def network(image, label): - # 用户定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - def random_image_and_label_generator(height, width): - def generator(): - for i in range(ITER_NUM): - batch_image = np.random.uniform(low=0, - high=255, - size=[BATCH_SIZE, height, width]) - batch_label = np.ones([BATCH_SIZE, 1]) - batch_image = batch_image.astype('float32') - batch_label = batch_label.astype('int64') - yield batch_image, batch_label - return generator - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True) - - user_defined_generator = random_image_and_label_generator(784, 784) - reader.decorate_batch_generator(user_defined_generator, fluid.CPUPlace()) - - loss = network(image, label) - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - - for _ in range(EPOCH_NUM): - for data in reader(): - executor.run(feed=data, fetch_list=[loss]) - - -.. py:method:: next() - -获取下一个数据。用户不应直接调用此方法。此方法用于PaddlePaddle框架内部实现Python 2.x的迭代器协议。 diff --git a/doc/paddle/api/paddle/fluid/io/batch_cn.rst b/doc/paddle/api/paddle/fluid/io/batch_cn.rst deleted file mode 100644 index 3e3804abfb573be5a561fa7fb48603a15bf5f87c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/batch_cn.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _cn_api_fluid_io_batch: - -batch -------------------------------- - -.. py:function:: paddle.fluid.io.batch(reader, batch_size, drop_last=False) - - - - -该接口是一个reader的装饰器。返回的reader将输入reader的数据打包成指定的batch_size大小的批处理数据(batched data)。 - -参数: - - **reader** (generator)- 读取数据的数据reader。 - - **batch_size** (int)- 批尺寸。 - - **drop_last** (bool) - 若设置为True,则当最后一个batch不等于batch_size时,丢弃最后一个batch;若设置为False,则不会。默认值为False。 - -返回:batched reader - -返回类型:generator - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - def reader(): - for i in range(10): - yield i - batch_reader = fluid.io.batch(reader, batch_size=2) - - for data in batch_reader(): - print(data) - - # 输出为: - # [0, 1] - # [2, 3] - # [4, 5] - # [6, 7] - # [8, 9] - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/io/buffered_cn.rst b/doc/paddle/api/paddle/fluid/io/buffered_cn.rst deleted file mode 100644 index 027c6346f735874d8c9accc38024c09b5940c429..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/buffered_cn.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. _cn_api_fluid_io_buffered: - -buffered -------------------------------- - -.. py:function:: paddle.fluid.io.buffered(reader, size) - - - - -创建一个缓存数据读取器,它读取数据并且存储进缓存区,从缓存区读取数据将会加速,只要缓存不是空的。 - -参数: - - **reader** (callable) – 读取数据的reader - - **size** (int) – 最大buffer的大小 - -返回:缓存的reader(读取器) \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/io/cache_cn.rst b/doc/paddle/api/paddle/fluid/io/cache_cn.rst deleted file mode 100644 index e93e4c85d134c0feb2ff813a6127c89816baed76..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/cache_cn.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. _cn_api_fluid_io_cache: - -cache -------------------------------- - -.. py:function:: paddle.fluid.io.cache(reader) - - - - -缓存reader数据到内存中,小心此方法可能会花长时间来处理数据,并且会占用大量内存。 ``reader()`` 只能被调用一次。 - -参数: - - **reader** (callable) – 读取数据的reader,每次都会yields数据。 - -返回:每次都会从内存中yields数据的一个装饰reader。 - -返回类型:生成器 \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/io/chain_cn.rst b/doc/paddle/api/paddle/fluid/io/chain_cn.rst deleted file mode 100644 index 4a4872d268cc2dfbddad0a6d4720be54e5eb41c9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/chain_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_io_chain: - -chain -------------------------------- - -.. py:function:: paddle.fluid.io.chain(*readers) - - - - -该接口将多个数据读取器组成一个数据读取器,它依次返回多个数据读取器的输出数据,同时不改变输出数据原先的格式。 - -举例来说,如果有3个输入读取器且输出分别为[0,0,0]、[10,10,10]和[20,20,20],那么调用该接口产生的新数据读取器的输出为[0,0,0], [10,10,10], [20,20,20]。 - -参数: - - **readers(list)** – 输入的数据读取器。 - -返回: 新的数据读取器。 - -返回类型:callable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - def reader_creator_3(start): - def reader(): - for i in range(start, start + 3): - yield [i, i, i] - return reader - - c = fluid.io.chain(reader_creator_3(0), reader_creator_3(10), reader_creator_3(20)) - for e in c(): - print(e) - # 输出结果如下: - # [0, 0, 0] - # [1, 1, 1] - # [2, 2, 2] - # [10, 10, 10] - # [11, 11, 11] - # [12, 12, 12] - # [20, 20, 20] - # [21, 21, 21] - # [22, 22, 22] - diff --git a/doc/paddle/api/paddle/fluid/io/compose_cn.rst b/doc/paddle/api/paddle/fluid/io/compose_cn.rst deleted file mode 100644 index b4393bab5db375413712c27b60fb0699e4d85370..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/compose_cn.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _cn_api_fluid_io_compose: - -compose -------------------------------- - -.. py:function:: paddle.fluid.io.compose(*readers, **kwargs) - - - - -该接口将多个数据读取器组合为一个数据读取器,返回读取器的输出包含所有输入读取器的输出。 - -例如:如果输入为三个reader,三个reader的输出分别为:(1,2)、3、(4,5),则组合reader的输出为:(1,2,3,4,5)。 - -参数: - - **readers** - 将被组合的多个数据读取器(Reader),数据读取器的定义参见 :ref:`cn_api_paddle_data_reader_reader` 。 - - **check_alignment** (bool) - 可选,指明是否对输入reader进行对齐检查,默认值为True。如果为True,将检查输入reader是否正确对齐。如果为False,将不检查对齐并自动丢弃无法对齐的末尾数据。 - -返回:数据读取器(Reader)。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - def reader_creator_10(dur): - def reader(): - for i in range(10): - yield i - return reader - - reader = fluid.io.compose(reader_creator_10(0), reader_creator_10(0)) - -注意: 运行过程可能会抛出异常 ``ComposeNotAligned`` ,原因是输入的readers数据未对齐。 当check_alignment设置为False时,不会检查并触发该异常。 diff --git a/doc/paddle/api/paddle/fluid/io/firstn_cn.rst b/doc/paddle/api/paddle/fluid/io/firstn_cn.rst deleted file mode 100644 index ba9c1d427ab3ec1946dab0e78f1a2021a712fe94..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/firstn_cn.rst +++ /dev/null @@ -1,30 +0,0 @@ -.. _cn_api_fluid_io_firstn: - -firstn -------------------------------- - -.. py:function:: paddle.fluid.io.firstn(reader, n) - - - - -该接口创建一个数据读取器,它可以返回的最大样本数为n。 - -参数: - - **reader** (callable) – 输入的数据读取器。 - - **n** (int) – 可以返回的最大样本数。 - -返回: 新的的数据读取器。 - -返回类型: callable - -.. code-block:: python - - import paddle.fluid as fluid - def reader(): - for i in range(100): - yield i - firstn_reader = fluid.io.firstn(reader, 5) - for e in firstn_reader(): - print(e) - # 输出结果为:0 1 2 3 4 diff --git a/doc/paddle/api/paddle/fluid/io/get_program_parameter_cn.rst b/doc/paddle/api/paddle/fluid/io/get_program_parameter_cn.rst deleted file mode 100644 index 43490ac9dff81daad4195593af4a2b4c5e443004..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/get_program_parameter_cn.rst +++ /dev/null @@ -1,30 +0,0 @@ -.. _cn_api_fluid_io_get_program_parameter: - -get_program_parameter -------------------------------- - -.. py:function:: paddle.fluid.io.get_program_parameter(program) - -:api_attr: 声明式编程模式(静态图) - - - -该接口从Program中获取所有参数。 - -参数: - - **program** ( :ref:`cn_api_fluid_Program` ) – 从该Program中获取参数。 - -返回: 包含此Program中所有参数的list - -返回类型: list - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.data(name="img", shape=[64, 784]) - w = fluid.layers.create_parameter(shape=[784, 200], dtype='float32', name='fc_w') - b = fluid.layers.create_parameter(shape=[200], dtype='float32', name='fc_b') - list_para = fluid.io.get_program_parameter( fluid.default_main_program() ) - diff --git a/doc/paddle/api/paddle/fluid/io/get_program_persistable_vars_cn.rst b/doc/paddle/api/paddle/fluid/io/get_program_persistable_vars_cn.rst deleted file mode 100644 index b7eb886d371c97f09fa8b4e25ba731313f3f9108..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/get_program_persistable_vars_cn.rst +++ /dev/null @@ -1,30 +0,0 @@ -.. _cn_api_fluid_io_get_program_persistable_vars: - -get_program_persistable_vars -------------------------------- - -.. py:function:: paddle.fluid.io.get_program_persistable_vars(program) - -:api_attr: 声明式编程模式(静态图) - - - -该接口从Program中获取所有persistable的变量。 - -参数: - - **program** ( :ref:`cn_api_fluid_Program` ) – 从该Program中获取persistable的变量。 - -返回: 包含此Program中所有persistable的变量 - -返回类型: list - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.data(name="img", shape=[64, 784]) - w = fluid.layers.create_parameter(shape=[784, 200], dtype='float32', name='fc_w') - b = fluid.layers.create_parameter(shape=[200], dtype='float32', name='fc_b') - list_para = fluid.io.get_program_persistable_vars( fluid.default_main_program() ) - diff --git a/doc/paddle/api/paddle/fluid/io/load_inference_model_cn.rst b/doc/paddle/api/paddle/fluid/io/load_inference_model_cn.rst deleted file mode 100644 index e53d9661a7bac90805a6e880a2c3046b68caa503..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/load_inference_model_cn.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. _cn_api_fluid_io_load_inference_model: - -load_inference_model -------------------------------- - - -.. py:function:: paddle.fluid.io.load_inference_model(dirname, executor, model_filename=None, params_filename=None, pserver_endpoints=None) - -:api_attr: 声明式编程模式(静态图) - - - -从指定文件路径中加载预测模型(Inference Model),即调用该接口可获得模型结构(Inference Program)和模型参数。若只想加载预训练后的模型参数,请使用 :ref:`cn_api_fluid_io_load_params` 接口。更多细节请参考 :ref:`api_guide_model_save_reader` 。 - -参数: - - **dirname** (str) – 待加载模型的存储路径。 - - **executor** (Executor) – 运行 Inference Model 的 ``executor`` ,详见 :ref:`api_guide_executor` 。 - - **model_filename** (str,可选) – 存储Inference Program结构的文件名称。如果设置为None,则使用 ``__model__`` 作为默认的文件名。默认值为None。 - - **params_filename** (str,可选) – 存储所有模型参数的文件名称。当且仅当所有模型参数被保存在一个单独的二进制文件中,它才需要被指定。如果模型参数是存储在各自分离的文件中,设置它的值为None。默认值为None。 - - **pserver_endpoints** (list,可选) – 只有在分布式预测时才需要用到。当训练过程中使用分布式查找表(distributed lookup table)时, 预测时需要指定pserver_endpoints的值。它是 pserver endpoints 的列表,默认值为None。 - -返回:该接口返回一个包含三个元素的列表(program,feed_target_names, fetch_targets)。它们的含义描述如下: - - **program** (Program)– ``Program`` (详见 :ref:`api_guide_Program` )类的实例。此处它被用于预测,因此可被称为Inference Program。 - - **feed_target_names** (list)– 字符串列表,包含着Inference Program预测时所需提供数据的所有变量名称(即所有输入变量的名称)。 - - **fetch_targets** (list)– ``Variable`` (详见 :ref:`api_guide_Program` )类型列表,包含着模型的所有输出变量。通过这些输出变量即可得到模型的预测结果。 - -**返回类型:** 列表(list) - -抛出异常: - - ``ValueError`` – 如果接口参数 ``dirname`` 指向一个不存在的文件路径,则抛出异常。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # 构建模型 - main_prog = fluid.Program() - startup_prog = fluid.Program() - with fluid.program_guard(main_prog, startup_prog): - data = fluid.layers.data(name="img", shape=[64, 784], append_batch_size=False) - w = fluid.layers.create_parameter(shape=[784, 200], dtype='float32') - b = fluid.layers.create_parameter(shape=[200], dtype='float32') - hidden_w = fluid.layers.matmul(x=data, y=w) - hidden_b = fluid.layers.elementwise_add(hidden_w, b) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(startup_prog) - - # 保存预测模型 - path = "./infer_model" - fluid.io.save_inference_model(dirname=path, feeded_var_names=['img'],target_vars=[hidden_b], executor=exe, main_program=main_prog) - - # 示例一: 不需要指定分布式查找表的模型加载示例,即训练时未用到distributed lookup table。 - [inference_program, feed_target_names, fetch_targets] = (fluid.io.load_inference_model(dirname=path, executor=exe)) - tensor_img = np.array(np.random.random((1, 64, 784)), dtype=np.float32) - results = exe.run(inference_program, - feed={feed_target_names[0]: tensor_img}, - fetch_list=fetch_targets) - - # 示例二: 若训练时使用了distributed lookup table,则模型加载时需要通过endpoints参数指定pserver服务器结点列表。 - # pserver服务器结点列表主要用于分布式查找表进行ID查找时使用。下面的["127.0.0.1:2023","127.0.0.1:2024"]仅为一个样例。 - endpoints = ["127.0.0.1:2023","127.0.0.1:2024"] - [dist_inference_program, dist_feed_target_names, dist_fetch_targets] = ( - fluid.io.load_inference_model(dirname=path, - executor=exe, - pserver_endpoints=endpoints)) - - # 在上述示例中,inference program 被保存在“ ./infer_model/__model__”文件内, - # 参数保存在“./infer_mode ”单独的若干文件内。 - # 加载 inference program 后, executor可使用 fetch_targets 和 feed_target_names 执行Program,并得到预测结果。 - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/io/load_params_cn.rst b/doc/paddle/api/paddle/fluid/io/load_params_cn.rst deleted file mode 100644 index 53a5bccc6f2024abf67a06320249a6652266077d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/load_params_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_fluid_io_load_params: - -load_params -------------------------------- - - -.. py:function:: paddle.fluid.io.load_params(executor, dirname, main_program=None, filename=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口从指定的 ``main_program`` 中筛选出所有模型参数变量,并根据目录 ``dirname`` 或 ``filename`` 提供的参数文件对这些模型参数进行赋值。 - -使用 ``dirname`` 指定模型参数的存储路径。若模型参数变量以分离文件的形式存储在 ``dirname`` 指定的目录下,则设置 ``filename`` 值为None;若所有模型参数存储在一个单独的二进制文件中,则使用 ``filename`` 来指明这个二进制文件。 - -注意: - - 有些变量不是参数,如学习率、全局训练步数(global step)等,但它们之于训练却是必要的。因此,调用 :ref:`cn_api_fluid_io_save_params` 和 :ref:`cn_api_fluid_io_load_params` 来保存和加载参数对于断点训练是不够的,这种情况下可以使用 :ref:`cn_api_fluid_io_save_persistables` 和 :ref:`cn_api_fluid_io_load_persistables` 来保存和加载训练过程的检查点(checkpoint)。 - - 若希望同时加载预训练后的模型结构和模型参数以用于预测过程,则可使用 :ref:`cn_api_fluid_io_load_inference_model` 接口。更多细节请参考 :ref:`api_guide_model_save_reader` 。 - -参数: - - **executor** (Executor) – 加载模型参数的 ``executor`` (详见 :ref:`api_guide_executor` ) 。 - - **dirname** (str) – 模型参数的存储路径。 - - **main_program** (Program,可选) – 筛选模型参数变量所依据的 ``Program`` (详见 :ref:`api_guide_Program` )。若为None, 则使用全局默认的 ``default_main_program`` 。默认值为None。 - - **filename** (str,可选) – 若模型参数是以若干文件形式存储在 ``dirname`` 指定的目录下,则设置 ``filename`` 值为None。反之,需要通过 ``filename`` 来指明单一模型参数存储文件的名称。 默认值为None。 - -**返回:** 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - exe = fluid.Executor(fluid.CPUPlace()) - param_path = "./my_paddle_model" - prog = fluid.default_main_program() - fluid.io.load_params(executor=exe, dirname=param_path, - main_program=None) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/io/load_persistables_cn.rst b/doc/paddle/api/paddle/fluid/io/load_persistables_cn.rst deleted file mode 100644 index 24d3eac7270cee0b3b1e61be1c21ac671099e1b3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/load_persistables_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_io_load_persistables: - -load_persistables -------------------------------- - - -.. py:function:: paddle.fluid.io.load_persistables(executor, dirname, main_program=None, filename=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口从给定的 ``main_program`` 中取出所有 ``persistable==True`` 的变量(即持久性变量,详见 :ref:`api_guide_model_save_reader` ),并根据目录 ``dirname`` 或 ``filename`` 提供的参数文件对这些持久性变量进行赋值。 - -使用 ``dirname`` 指定持久性变量的存储路径。若持久性变量以分离文件的形式保存在 ``dirname`` 指定的目录下,则设置 ``filename`` 值为None;若所有持久性变量保存在一个单独的二进制文件中,则使用 ``filename`` 来指明这个二进制文件。 - -参数: - - **executor** (Executor) – 加载持久性变量的 ``executor`` (详见 :ref:`api_guide_executor` ) 。 - - **dirname** (str) – 持久性变量的存储路径。 - - **main_program** (Program,可选) – 筛选模型中持久性变量所依据的 ``Program`` (详见 :ref:`api_guide_Program` )。若为None, 则使用全局默认的 ``default_main_program`` 。默认值为None。 - - **filename** (str,可选) – 若模型中的持久性变量是以若干文件形式存储在 ``dirname`` 指定的目录下,则设置 ``filename`` 值为None。反之,需要通过 ``filename`` 来指明单一模型持久性变量存储文件的名称。 默认值为None。 - -**返回:** 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - exe = fluid.Executor(fluid.CPUPlace()) - param_path = "./my_paddle_model" - prog = fluid.default_main_program() - fluid.io.load_persistables(executor=exe, dirname=param_path, - main_program=None) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/io/load_program_state_cn.rst b/doc/paddle/api/paddle/fluid/io/load_program_state_cn.rst deleted file mode 100644 index 60b457b35043c25545522a808817f5f72899aa5b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/load_program_state_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_io_load_program_state: - -load_program_state -------------------------------- - -.. py:function:: paddle.fluid.io.load_program_state(model_path, var_list=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口从本地加载 ``Program`` 的参数和优化器的变量信息到内存中。 - -参数: - - **model_path** (str) - 存储 ``Program`` 的参数和优化器的变量信息的目录名称+文件前缀,格式为 ``目录名称/文件前缀`` 。 - - **var_list** (list, 可选) - 指定加载的变量列表,该参数只在加载旧接口[save_params,save_persistables,save_vars]保存的模型文件时使用。当加载的是多个小文件时,变量列表可以是所有加载文件中变量的子集;当加载的单个大文件时,变量列表必须和加载文件中的变量保持一致。 - -返回:存储参数和优化器信息的dict - -返回类型:dict - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.data( name="x", shape=[10, 10], dtype='float32') - y = fluid.layers.fc( x, 10) - z = fluid.layers.fc( y, 10) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run( fluid.default_startup_program() ) - prog = fluid.default_main_program() - - fluid.save( prog, "./temp") - program_state = fluid.load_program_state( "./temp") - diff --git a/doc/paddle/api/paddle/fluid/io/load_vars_cn.rst b/doc/paddle/api/paddle/fluid/io/load_vars_cn.rst deleted file mode 100644 index 4126ae5eccefb3c713d20607031dd1ab2642f6fa..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/load_vars_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_fluid_io_load_vars: - -load_vars -------------------------------- - -.. py:function:: paddle.fluid.io.load_vars(executor, dirname, main_program=None, vars=None, predicate=None, filename=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口从文件中加载 ``Program`` 的变量。 - -通过 ``vars`` 指定需要加载的变量,或者通过 ``predicate`` 筛选需要加载的变量, ``vars`` 和 ``predicate`` 不能同时为None。 - -参数: - - **executor** (Executor) – 运行的执行器,执行器的介绍请参考 :ref:`api_guide_model_save_reader` 。 - - **dirname** (str) – 加载变量所在的目录路径。 - - **main_program** (Program,可选) – 需要加载变量的 ``Program`` , ``Program`` 的介绍请参考 :ref:`api_guide_Program` 。如果 ``main_program`` 为None,则使用默认的主程序。默认值为None。 - - **vars** (list[Variable],可选) – 通过该列表指定需要加载的变量。默认值为None。 - - **predicate** (function,可选) – 通过该函数筛选 :math:`predicate(variable)== True` 的变量进行加载。如果通过 ``vars`` 指定了需要加载的变量,则该参数无效。默认值为None。 - - **filename** (str,可选) – 加载所有变量的文件。如果所有待加载变量是保存在一个文件中,则设置 ``filename`` 为该文件名;如果所有待加载变量是按照变量名称单独保存成文件,则设置 ``filename`` 为None。默认值为None。 - -返回: 无 - -抛出异常: - - ``TypeError`` - 如果main_program不是Program的实例,也不是None。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - main_prog = fluid.Program() - startup_prog = fluid.Program() - with fluid.program_guard(main_prog, startup_prog): - data = fluid.layers.data(name="img", shape=[64, 784], append_batch_size=False) - w = fluid.layers.create_parameter(shape=[784, 200], dtype='float32', name='fc_w') - b = fluid.layers.create_parameter(shape=[200], dtype='float32', name='fc_b') - hidden_w = fluid.layers.matmul(x=data, y=w) - hidden_b = fluid.layers.elementwise_add(hidden_w, b) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(startup_prog) - - # 示例一:用vars来指定加载变量。 - path = "./my_paddle_vars" - var_list = [w, b] - fluid.io.save_vars(executor=exe, dirname=path, vars=var_list, - filename="vars_file") - fluid.io.load_vars(executor=exe, dirname=path, vars=var_list, - filename="vars_file") - # 加载w和b。它们被保存在'var_file'的文件中,所在路径为 "./my_paddle_model" 。 - - # 示例二:通过predicate来筛选加载变量。 - def name_has_fc(var): - res = "fc" in var.name - return res - - param_path = "./my_paddle_model" - fluid.io.save_vars(executor=exe, dirname=param_path, main_program=main_prog, vars=None, predicate=name_has_fc) - fluid.io.load_vars(executor=exe, dirname=param_path, main_program=main_prog, vars=None, predicate=name_has_fc) - #加载 `main_program` 中变量名包含 ‘fc’ 的所有变量 - #此前所有变量应该保存在不同文件中 - - - - diff --git a/doc/paddle/api/paddle/fluid/io/map_readers_cn.rst b/doc/paddle/api/paddle/fluid/io/map_readers_cn.rst deleted file mode 100644 index cb50e62839cd523184fef37d4ff9dc625c52fc6b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/map_readers_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_fluid_io_map_readers: - -map_readers -------------------------------- - -.. py:function:: paddle.fluid.io.map_readers(func, *readers) - - - - -该接口将创建一个数据读取器(Reader),其中 `func` 函数的输出将直接作为新数据读取器的输出, `readers` 的输出将作为函数 `func` 的输入参数。 - -例如:如果输入的 `readers` 为两个输出分别为:2、3 的 `reader` ,输入的 `func` 为乘法函数 `mul(x, y)` ,则得到的新建 `reader` 的输出为:6。 - -参数: - - **func** - 读取数据并返回数据项的函数, `func` 的输出将直接作为新创建的数据读取器的输出。 - - - **readers** - 输入的一个或多个数据读取器(Reader),这些数据读取器的输出数据将作为函数 `func` 的输入参数。数据读取器的定义参见 :ref:`cn_api_paddle_data_reader_reader` 。 - -返回: 新创建的数据读取器(Reader) - -**代码示例**: - -.. code-block:: python - - - import paddle.fluid as fluid - d = {"h": 0, "i": 1} - def func(x): - return d[x] - - def reader(): - yield "h" - yield "i" - - map_reader_result = fluid.io.map_readers(func, reader) - - - - diff --git a/doc/paddle/api/paddle/fluid/io/multiprocess_reader_cn.rst b/doc/paddle/api/paddle/fluid/io/multiprocess_reader_cn.rst deleted file mode 100644 index ab600239eb702ffa2c503f88d5bd9d6ef6bda443..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/multiprocess_reader_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_io_multiprocess_reader: - -multiprocess_reader -------------------------------- - -.. py:function:: paddle.fluid.io.multiprocess_reader(readers, use_pipe=True, queue_size=1000) - - - - -使用python多进程从 ``readers`` 中读取数据,然后使用 ``multiprocessing.Pipe`` 或 ``multiprocessing.Queue`` 合并所有数据。 ``readers`` 列表中的每个reader会被创建一个独立的进程来调用,reader之间应该相互独立,互不影响,避免出现多进程读取的冲突问题. - -multiprocess.queue需要/dev/shm的rw访问权限,某些平台不支持。 - -参数: - - **readers** (list(generator)|tuple(generator)) - python生成器list, 用来读取数据 - - **use_pipe** (bool,可选) - use_pipe控制multiprocess_reader内部用 ``pipe`` 还是 ``queue`` 来实现进程间通信,默认为 ``True`` 使用 ``pipe`` 进行通信 - - **queue_size** (int,可选) - 如果使用queue来进行进程间通信 (``use_pipe=False``), 则该参数用来设定队列大小 - -返回:使用多进程封装readers之后的reader - -返回类型:python生成器 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.io import multiprocess_reader - import numpy as np - - - def fake_reader(start, end): - def __impl__(): - for i in range(start, end): - yield [np.array([1, 2, 3]) * i], - return __impl__ - - - with fluid.program_guard(fluid.Program(), fluid.Program()): - place = fluid.CPUPlace() - image = fluid.layers.data( - name='image', dtype='int64', shape=[3]) - fluid.layers.Print(image) - reader = fluid.io.PyReader( - feed_list=[image], capacity=2) - image_p_1 = image + 1 - decorated_reader = multiprocess_reader( - [fake_reader(1, 5), fake_reader(6, 10)], False) - - reader.decorate_sample_generator(decorated_reader, batch_size=2, places=[place]) - - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - for data in reader(): - exe.run(feed=data, fetch_list=[image_p_1]) - diff --git a/doc/paddle/api/paddle/fluid/io/save_inference_model_cn.rst b/doc/paddle/api/paddle/fluid/io/save_inference_model_cn.rst deleted file mode 100644 index e085e41395819349bbd3b4e87aed7f351a009cfe..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/save_inference_model_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_io_save_inference_model: - -save_inference_model -------------------------------- - - -.. py:function:: paddle.fluid.io.save_inference_model(dirname, feeded_var_names, target_vars, executor, main_program=None, model_filename=None, params_filename=None, export_for_deployment=True, program_only=False) - -:api_attr: 声明式编程模式(静态图) - - - -修剪指定的 ``main_program`` 以构建一个专门用于预测的 ``Inference Program`` ( ``Program`` 含义详见 :ref:`api_guide_Program` )。 所得到的 ``Inference Program`` 及其对应的所有相关参数均被保存到 ``dirname`` 指定的目录中。若只想保存训练后的模型参数,请使用 :ref:`cn_api_fluid_io_save_params` 接口。更多细节请参考 :ref:`api_guide_model_save_reader` 。 - -**注意:dirname用于指定保存预测模型结构和参数的目录。若需要将模型参数保存在指定目录的若干文件中,请设置params_filename的值为None; 若需要将所有模型参数保存在一个单独的二进制文件中,请使用params_filename来指定该二进制文件的名称。** - -参数: - - **dirname** (str) – 指定保存预测模型结构和参数的文件目录。 - - **feeded_var_names** (list[str]) – 字符串列表,包含着Inference Program预测时所需提供数据的所有变量名称(即所有输入变量的名称)。 - - **target_vars** (list[Variable]) – ``Variable`` (详见 :ref:`api_guide_Program` )类型列表,包含着模型的所有输出变量。通过这些输出变量即可得到模型的预测结果。 - - **executor** (Executor) – 用于保存预测模型的 ``executor`` ,详见 :ref:`api_guide_executor` 。 - - **main_program** (Program,可选) – 通过该参数指定的 ``main_program`` 可构建一个专门用于预测的 ``Inference Program`` 。 若为None, 则使用全局默认的 ``_main_program_`` 。默认值为None。 - - **model_filename** (str,可选) – 保存预测模型结构 ``Inference Program`` 的文件名称。若设置为None,则使用 ``__model__`` 作为默认的文件名。 - - **params_filename** (str,可选) – 保存预测模型所有相关参数的文件名称。若设置为None,则模型参数被保存在单独的文件中。 - - **export_for_deployment** (bool,可选) – 若为True,则 ``main_program`` 指定的Program将被修改为只支持直接预测部署的Program。否则,将存储更多的信息,方便优化和再训练。目前只支持设置为True,且默认值为True。 - - **program_only** (bool,可选) – 若为True,则只保存预测模型的网络结构,而不保存预测模型的网络参数。默认值为False。 - - -**返回:** 用于获取模型预测结果的所有输出变量的名称列表。 - -**返回类型:** 列表(list) - -抛出异常: - - ``ValueError`` – 若 ``feed_var_names`` 不是字符串列表,则抛出异常。 - - ``ValueError`` – 若 ``target_vars`` 不是 ``Variable`` 类型列表,则抛出异常。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - path = "./infer_model" - - # 用户定义网络,此处以softmax回归为例 - image = fluid.layers.data(name='img', shape=[1, 28, 28], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - feeder = fluid.DataFeeder(feed_list=[image, label], place=fluid.CPUPlace()) - predict = fluid.layers.fc(input=image, size=10, act='softmax') - - loss = fluid.layers.cross_entropy(input=predict, label=label) - avg_loss = fluid.layers.mean(loss) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # 数据输入及训练过程 - - # 保存预测模型。注意,用于预测的模型网络结构不需要保存标签和损失。 - fluid.io.save_inference_model(dirname=path, feeded_var_names=['img'], target_vars=[predict], executor=exe) - - # 在这个示例中,save_inference_mode接口将根据网络的输入结点(img)和输出结点(predict)修剪默认的主程序(_main_program_)。 - # 修剪得到的Inference Program将被保存在 “./infer_model/__model__”文件中, - # 模型参数将被保存在“./infer_model/”文件夹下以各自名称命名的单独文件中。 - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/io/save_params_cn.rst b/doc/paddle/api/paddle/fluid/io/save_params_cn.rst deleted file mode 100644 index 879c16ed0d192fbeaa9e803f07b245bd6d5ec076..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/save_params_cn.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. _cn_api_fluid_io_save_params: - -save_params -------------------------------- - - -.. py:function:: paddle.fluid.io.save_params(executor, dirname, main_program=None, filename=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP从 ``main_program`` 中取出所有参数,然后将它们保存到 ``dirname`` 目录下或名为 ``filename`` 的文件中。 - -``dirname`` 用于指定保存参数的目标路径。若想将参数保存到多个独立文件中,设置 ``filename=None`` ; 若想将所有参数保存在单个文件中,请设置 ``filename`` 来指定该文件的名称。 - -注意: - - 有些变量不是参数,如学习率,全局训练步数(global step)等,但它们对于训练却是必要的。因此,调用 :ref:`cn_api_fluid_io_save_params` 和 :ref:`cn_api_fluid_io_load_params` 来保存和加载参数对于断点训练是不够的,这种情况下可以使用 :ref:`cn_api_fluid_io_save_persistables` 和 :ref:`cn_api_fluid_io_load_persistables` 来保存和加载训练过程中的检查点(checkpoint)。 - - 如果您想要储存您的模型用于预测,请使用 :ref:`cn_api_fluid_io_save_inference_model` 。更多细节请参考 :ref:`api_guide_model_save_reader` - -参数: - - **executor** (Executor) – 用于保存参数的 ``executor`` ,详见 :ref:`api_guide_executor` 。 - - **dirname** (str) – 指定保存参数的文件目录。 - - **main_program** (Program,可选) – 需要保存参数的Program( ``Program`` 含义详见 :ref:`api_guide_Program` )。如果为None,则使用default_main_Program 。默认值为None。 - - **filename** (str,可选) – 保存参数的文件名称。若需要将参数保存到多个独立的文件中,请设置 ``filename=None`` 。默认值为None。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - params_path = "./my_paddle_model" - image = fluid.layers.data(name='img', shape=[1, 28, 28], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - feeder = fluid.DataFeeder(feed_list=[image, label], place=fluid.CPUPlace()) - predict = fluid.layers.fc(input=image, size=10, act='softmax') - - loss = fluid.layers.cross_entropy(input=predict, label=label) - avg_loss = fluid.layers.mean(loss) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - fluid.io.save_params(executor=exe, dirname=params_path) - # 网络中fc层的参数weight和bias将会分别存储在"./my_paddle_model"路径下。 - diff --git a/doc/paddle/api/paddle/fluid/io/save_persistables_cn.rst b/doc/paddle/api/paddle/fluid/io/save_persistables_cn.rst deleted file mode 100644 index 9de51518e0caabcaf2a42a258116039753e5bac2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/save_persistables_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_io_save_persistables: - -save_persistables -------------------------------- - - -.. py:function:: paddle.fluid.io.save_persistables(executor, dirname, main_program=None, filename=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP从给定 ``main_program`` 中取出所有持久性变量(详见 :ref:`api_guide_model_save_reader` ),然后将它们保存到目录 ``dirname`` 中或 ``filename`` 指定的文件中。 - -``dirname`` 用于指定保存持久性变量的目录。如果想将持久性变量保存到指定目录的若干文件中,请设置 ``filename=None`` ; 若想将所有持久性变量保存在同一个文件中,请设置 ``filename`` 来指定文件的名称。 - -参数: - - **executor** (Executor) – 用于保存持久性变量的 ``executor`` ,详见 :ref:`api_guide_executor` 。 - - **dirname** (str) – 用于储存持久性变量的文件目录。 - - **main_program** (Program,可选) – 需要保存持久性变量的Program( ``Program`` 含义详见 :ref:`api_guide_Program` )。如果为None,则使用default_main_Program 。默认值为None。 - - **filename** (str,可选) – 保存持久性变量的文件名称。若想分开保存变量,设置 ``filename=None`` 。 默认值为None。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - dir_path = "./my_paddle_model" - file_name = "persistables" - image = fluid.layers.data(name='img', shape=[1, 28, 28], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - feeder = fluid.DataFeeder(feed_list=[image, label], place=fluid.CPUPlace()) - predict = fluid.layers.fc(input=image, size=10, act='softmax') - - loss = fluid.layers.cross_entropy(input=predict, label=label) - avg_loss = fluid.layers.mean(loss) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - fluid.io.save_persistables(executor=exe, dirname=dir_path, filename=file_name) - # 网络中fc层中的持久性变量weight和bia将会保存在路径“./my_paddle_model”下名为"persistables"的文件中。 - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/io/save_vars_cn.rst b/doc/paddle/api/paddle/fluid/io/save_vars_cn.rst deleted file mode 100644 index 7530540754accd0f4658ba885721fab22493d738..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/save_vars_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_io_save_vars: - -save_vars -------------------------------- - - -.. py:function:: paddle.fluid.io.save_vars(executor, dirname, main_program=None, vars=None, predicate=None, filename=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口将 ``Program`` 的变量保存到文件中。 - -通过 ``vars`` 指定需要保存的变量,或者通过 ``predicate`` 筛选需要保存的变量, ``vars`` 和 ``predicate`` 不能同时为None。 - -参数: - - **executor** (Executor)- 运行的执行器,执行器的介绍请参考 :ref:`api_guide_model_save_reader` 。 - - **dirname** (str)- 保存变量的目录路径。 - - **main_program** (Program,可选)- 需要保存变量的 ``Program`` , ``Program`` 的介绍请参考 :ref:`api_guide_Program` 。如果 ``main_program`` 为None,则使用默认的主程序。默认值为None。 - - **vars** (list [Variable],可选)- 通过该列表指定需要保存的变量。默认值为None。 - - **predicate** (function,可选)- 通过该函数筛选 :math:`predicate(variable)== True` 的变量进行保存。如果通过 ``vars`` 指定了需要保存的变量,则该参数无效。默认值为None。 - - **filename** (str,可选)- 保存所有变量的文件。如果设置为None,所有变量会按照变量名称单独保存成文件;如果设置为非None,所有变量会保存成一个文件名为该设置值的文件。默认值为None。 - -返回:无 - -抛出异常: - - ``TypeError`` - 如果main_program不是Program的实例,也不是None。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - main_prog = fluid.Program() - startup_prog = fluid.Program() - with fluid.program_guard(main_prog, startup_prog): - data = fluid.layers.data(name="img", shape=[64, 784], append_batch_size=False) - w = fluid.layers.create_parameter(shape=[784, 200], dtype='float32', name='fc_w') - b = fluid.layers.create_parameter(shape=[200], dtype='float32', name='fc_b') - hidden_w = fluid.layers.matmul(x=data, y=w) - hidden_b = fluid.layers.elementwise_add(hidden_w, b) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(startup_prog) - - # 示例一:用vars来指定变量。 - var_list = [w, b] - path = "./my_paddle_vars" - fluid.io.save_vars(executor=exe, dirname=path, vars=var_list, - filename="vars_file") - # w, b 将被保存,使用同一文件名“var_file”,保存在路径“./my_paddle_vars”下。 - - # 示例二:通过predicate筛选变量。 - def name_has_fc(var): - res = "fc" in var.name - return res - - param_path = "./my_paddle_model" - fluid.io.save_vars(executor=exe, dirname=param_path, main_program=main_prog, vars=None, predicate = name_has_fc) - # 将main_program中名中包含“fc”的的所有变量保存。 - # 变量将分开保存。 - - - - - diff --git a/doc/paddle/api/paddle/fluid/io/set_program_state_cn.rst b/doc/paddle/api/paddle/fluid/io/set_program_state_cn.rst deleted file mode 100644 index 9af0478f0c88d1bc469c094725b13a33a7f28763..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/set_program_state_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_io_set_program_state: - -set_program_state -------------------------------- - -.. py:function:: paddle.fluid.io.set_program_state(program, state_dict) - -:api_attr: 声明式编程模式(静态图) - - - -利用 ``state_dict`` 设置 ``Program`` 的参数和优化器信息。 - -如果参数的 shape 或 dtype 不匹配,则会引发异常。 - -**注意:必须在运行 start_up_program 之后调用此函数。** - -参数: - - **program** (Program) - 需要被设置的 ``Program`` 。 - - **state_dict** (dict) - 存储参数和优化器信息的dict;dict中key的类型为变量的名称,value为np.ndarray类型的数据。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.data( name="x", shape=[10, 10], dtype='float32') - y = fluid.layers.fc( x, 10) - z = fluid.layers.fc( y, 10) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run( fluid.default_startup_program() ) - prog = fluid.default_main_program() - - fluid.save( prog, "./temp") - program_state = fluid.load_program_state( "./temp") - fluid.set_program_state( prog, program_state) - diff --git a/doc/paddle/api/paddle/fluid/io/xmap_readers_cn.rst b/doc/paddle/api/paddle/fluid/io/xmap_readers_cn.rst deleted file mode 100644 index 5f434ecb9525c4f8dd746319d2b4baace88c89ae..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io/xmap_readers_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_io_xmap_readers: - -xmap_readers -------------------------------- - -.. py:function:: paddle.fluid.io.xmap_readers(mapper, reader, process_num, buffer_size, order=False) - - - - -多线程下,使用自定义映射器 reader 返回样本到输出队列。 - -参数: - - **mapper** (callable): 映射 reader 数据的函数。 - - **reader** (callable): 产生数据的 reader。 - - **process_num** (int): 处理样本的线程数。 - - **buffer_size** (int): 数据缓冲队列大小。 - - **order** (bool): 是否保持原始 reader 数据顺序,默认为 False。 - -返回:一个用户定义的 reader `装饰器 `_ 。 - -返回类型:callable,可调用对象。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import time - - def reader_creator_10(dur): - def reader(): - for i in range(10): - time.sleep(dur) - yield i - return reader - - def mapper(x): - return (x + 1) - - orders = (True, False) - thread_num = (1, 2, 4, 8, 16) - buffer_size = (1, 2, 4, 8, 16) - for order in orders: - for t_num in thread_num: - for size in buffer_size: - user_reader = fluid.io.xmap_readers(mapper, - reader_creator_10(0), - t_num, size, order) - for n in range(3): - result = list() - for i in user_reader(): - result.append(i) - if not order: - result.sort() - for idx, e in enumerate(result): - assert e == mapper(idx) \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/io_cn.rst b/doc/paddle/api/paddle/fluid/io_cn.rst deleted file mode 100644 index 1bee21a710d0366a1f7db206c18e377fc64bfe26..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/io_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ - -======================= -paddle.io -======================= - - - - -.. toctree:: - :maxdepth: 1 - - io_cn/batch_cn.rst - io_cn/BatchSampler_cn.rst - io_cn/buffered_cn.rst - io_cn/cache_cn.rst - io_cn/chain_cn.rst - io_cn/compose_cn.rst - io_cn/ComposeNotAligned_cn.rst - io_cn/DataLoader_cn.rst - io_cn/DataLoader_cn.rst - io_cn/Dataset_cn.rst - io_cn/firstn_cn.rst - io_cn/get_program_parameter_cn.rst - io_cn/get_program_persistable_vars_cn.rst - io_cn/load_cn.rst - io_cn/load_inference_model_cn.rst - io_cn/load_params_cn.rst - io_cn/load_persistables_cn.rst - io_cn/load_program_state_cn.rst - io_cn/load_vars_cn.rst - io_cn/map_readers_cn.rst - io_cn/multiprocess_reader_cn.rst - io_cn/PyReader_cn.rst - io_cn/save_cn.rst - io_cn/save_inference_model_cn.rst - io_cn/save_params_cn.rst - io_cn/save_persistables_cn.rst - io_cn/save_vars_cn.rst - io_cn/set_program_state_cn.rst - io_cn/shuffle_cn.rst - io_cn/xmap_readers_cn.rst diff --git a/doc/paddle/api/paddle/fluid/is_compiled_with_cuda_cn.rst b/doc/paddle/api/paddle/fluid/is_compiled_with_cuda_cn.rst deleted file mode 100644 index 5f2741e78783c432eb22fd82509e2f3ebf7c808e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/is_compiled_with_cuda_cn.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. _cn_api_fluid_is_compiled_with_cuda: - -is_compiled_with_cuda -------------------------------- - -.. py:function:: paddle.fluid.is_compiled_with_cuda() - - - - -检查 ``whl`` 包是否可以被用来在GPU上运行模型 - -返回:支持gpu则为True,否则为False。 - -返回类型:out(boolean) - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - support_gpu = fluid.is_compiled_with_cuda() - - diff --git a/doc/paddle/api/paddle/fluid/layers/Categorical_cn.rst b/doc/paddle/api/paddle/fluid/layers/Categorical_cn.rst deleted file mode 100644 index 9265a666d8460b9b37679ae73f1e5a653e3576f3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/Categorical_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_Categorical: - -Categorical -------------------------------- - -.. py:class:: paddle.fluid.layers.Categorical(logits) - - - - -类别分布是一种离散概率分布,其随机变量可以取K个相互独立类别的其中一个。 - -概率质量函数(pmf)为: - -.. math:: - - pmf(k; p_i) =\prod_{i=1}^{k} p_i^{[x=i]} - -上面公式中: - - :math:`[x = i]` 表示:如果 :math:`x==i` ,则表达式取值为1,否则取值为0。 - - -参数: - - **logits** (list|numpy.ndarray|Variable) - 类别分布对应的logits。数据类型为float32。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle.fluid import layers - from paddle.fluid.layers import Categorical - - a_logits_npdata = np.array([-0.602,-0.602], dtype="float32") - a_logits_tensor = layers.create_tensor(dtype="float32") - layers.assign(a_logits_npdata, a_logits_tensor) - - b_logits_npdata = np.array([-0.102,-0.112], dtype="float32") - b_logits_tensor = layers.create_tensor(dtype="float32") - layers.assign(b_logits_npdata, b_logits_tensor) - - a = Categorical(a_logits_tensor) - b = Categorical(b_logits_tensor) - - a.entropy() - # [0.6931472] with shape: [1] - - b.entropy() - # [0.6931347] with shape: [1] - - a.kl_divergence(b) - # [1.2516975e-05] with shape: [1] - - -.. py:function:: kl_divergence(other) - -相对于另一个类别分布的KL散度 - -参数: - - **other** (Categorical) - 输入的另一个类别分布。数据类型为float32。 - -返回:相对于另一个类别分布的KL散度, 数据类型为float32 - -返回类型:Variable - -.. py:function:: entropy() - -信息熵 - -返回:类别分布的信息熵, 数据类型为float32 - -返回类型:Variable - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/Decoder_cn.rst b/doc/paddle/api/paddle/fluid/layers/Decoder_cn.rst deleted file mode 100644 index 9adb65614226bafe68094528d902e88ec17d1d83..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/Decoder_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_Decoder: - -Decoder -------------------------------- - - - -.. py:class:: paddle.fluid.layers.Decoder() - -:api_attr: 声明式编程模式(静态图) - - - - -Decoder是dynamic_decode中使用的任何decoder实例的基类。它提供了为每一个时间步生成输出的接口,可用于生成序列。 - -Decoder提供的主要抽象为: - -1. :code:`(initial_input, initial_state, finished) = initialize(inits)`, -为第一个解码步生成输入和状态,并给出指示batch中的每个序列是否结束的初始标识。 - -2. :code:`(output, next_state, next_input, finished) = step(time, input, state)`, -将输入和状态转换为输出和新的状态,为下一个解码步生成输入,并给出指示batch中的每个序列是否结束的标识。 - -3. :code:`(final_outputs, final_state) = finalize(outputs, final_state, sequence_lengths)`, -修改输出(所有时间步输出的堆叠)和最后的状态以做特殊用途。若无需修改堆叠得到的输出和来自最后一个时间步的状态,则无需实现。 - -与RNNCell相比,Decoder更为通用,因为返回的 :code:`next_input` 和 :code:`finished` 使它可以自行决定输入以及结束时机。 - - -.. py:method:: initialize(inits) - -在解码迭代之前调用一次。 - -参数: - - **inits** - 调用方提供的参数。 - -返回:一个元组 :code:`(initial_inputs, initial_states, finished)` 。:code:`initial_inputs` 和 :code:`initial_states` 都是单个tensor变量或tensor变量组成的嵌套结构, :code:`finished` 是具有bool数据类型的tensor。 - -返回类型:tuple - -.. py:method:: step(time, inputs, states) - -在解码的每个时间步中被调用的接口 - -参数: - - **outputs** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。 结构和数据类型与 :code:`output_dtype` 相同。 tensor堆叠所有时间步长的输出从而具有shape :math:`[time\_step,batch\_size,...]` ,由调用者完成。 - - **final_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。 它是 :code:`decoder.step` 在最后一个解码步返回的 :code:`next_states`, 因此具有与任何时间步长的状态相同的结构,形状和数据类型。 - -返回:一个元组 :code:`(final_outputs, final_states)` 。:code:`final_outputs` 和 :code:`final_states` 都是单个tensor变量或tensor变量组成的嵌套结构。 - -返回类型:tuple \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/layers/DynamicRNN_cn.rst b/doc/paddle/api/paddle/fluid/layers/DynamicRNN_cn.rst deleted file mode 100644 index e082d6bf6e58467803050e426a8fa1cc1fcc9193..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/DynamicRNN_cn.rst +++ /dev/null @@ -1,431 +0,0 @@ -.. _cn_api_fluid_layers_DynamicRNN: - -DynamicRNN -=================== - - -.. py:class:: paddle.fluid.layers.DynamicRNN(name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该类型的输入仅支持LoDTensor,如果您需要处理的输入数据是Tensor类型, -请使用StaticRNN( fluid.layers.** :ref:`cn_api_fluid_layers_StaticRNN` **)。** - -DynamicRNN可以处理一批序列数据,其中每个样本序列的长度可以不同,每个序列的长度信息记录在LoD里面。 -DynamicRNN会按照时间步 (time step) 将输入序列展开,用户可以在 :code:`block` 中定义每个时间步要进行的运算。 -由于每个输入样本的序列长度不相同,RNN执行的step数由最长的序列决定。 -DynamicRNN的实现采用非padding的方式,每个时间步都会对输入数据进行收缩处理,移除已经处理完的序列的信息。 -因此,随着时间步的增加,每个时间步处理的样本数(batch size)会逐渐减少。 - -.. warning:: - 目前不支持在DynamicRNN的 :code:`block` 中任何层上配置 :code:`is_sparse = True` 。 - -参数: - - **name** (str,可选) - 具体用法参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -成员函数列表: - - :ref:`cn_api_fluid_layers_DynamicRNN_step_input` ,设置输入变量 - - :ref:`cn_api_fluid_layers_DynamicRNN_static_input` ,设置静态输入变量 - - :ref:`cn_api_fluid_layers_DynamicRNN_block` ,定义每个时间步执行的运算 - - :ref:`cn_api_fluid_layers_DynamicRNN_memory` ,创建用于在时间步之间传递信息的变量 - - :ref:`cn_api_fluid_layers_DynamicRNN_update_memory` ,更新需要传递的时间步信息 - - :ref:`cn_api_fluid_layers_DynamicRNN_output` ,设置时间步的输出变量 - - :ref:`cn_api_fluid_layers_DynamicRNN_call` ,获取RNN的输出序列 - - -.. _cn_api_fluid_layers_DynamicRNN_step_input: - -成员函数 step_input ---------------------------------- - -.. py:method:: step_input(x, level=0) - -将序列x设置为DynamicRNN输入。输入序列中最长的序列长度,将决定了RNN运算的长度。 -必须至少为DynamicRNN设置一个输入,也可以设置多个输入。 -如果多个输入x的 :code:`x.lod_level` 都为1,则要求多个输入LoDTensor携带完全相同的LoD信息。 -当输入x的 :code:`x.lod_level >= 2` 时,输入序列将按指定level进行展开,每个时间步携带 :code:`x.lod_level - level - 1` 层LoD信息, -此时要求多个输入序列的LoD在指定level上的信息完全一样。 - -- 示例1 - -.. code-block:: text - - # 输入,其中Si代表维度为[1, N]的数据 - level = 0 - x.lod = [[2, 1, 3]] - x.shape = [6, N] - x.data = [[S0], - [S0], - [S1], - [S2], - [S2], - [S2]] - - # 输出 - # step 0,持有3个序列的time step数据 - out.lod = [[]] - out.shape = [3, N] - out.data = [[S2], - [S0], - [S1]] - - # step 1,持有2个序列的time step数据 - out.lod = [[]] - out.shape = [2, N] - out.data = [[S2], - [S0]] - - # step 2,持有1个序列的time step数据 - out.lod = [[]] - out.shape = [1, N] - out.data = [[S2]] - - -参数: - - **x** (Variable) - 输入序列LoDTensor,代表由长度不同的多个序列组成的minibatch,要求 :code:`x.lod_level >= 1`。输入x第一个维度的值等于minibatch内所有序列的长度之和。RNN有多个输入序列时,多个输入LoDTensor的第一个维度必须相同,其它维度可以不同。支持的数据类型有:bool,float16,float32,float64,int8,int16,int32,int64,uint8。 - - **level** (int,可选) - 用于拆分输入序列的LoD层级,取值范围是 :math:`[0, x.lod\_level)`,默认值是0。 - -返回: 输入序列每个时间步的数据。执行第 :code:`step_idx` 个时间步时,若输入 :code:`x` 中有 :code:`num_sequences` 个长度不小于 :code:`step_idx` 的序列,则这个时间步返回值中只包含了这 :code:`num_sequences` 个序列第 :code:`step_idx` 时间步的数据。数据类型和输入一致。如果 :code:`x.lod_level == 1` ,返回值的维度是 :math:`\{num\_sequences, x.shape[1], ...\}`。否则,返回值也是一个变长的LoDTensor。 - -返回类型:Variable - -抛出异常: - - :code:`ValueError` :当 :code:`step_input()` 接口在RNN :code:`block()` 接口外面被调用时。 - - :code:`TypeError`:当输入x类型不是Variable时。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - sentence = fluid.data(name='sentence', shape=[None, 1], dtype='int64', lod_level=1) - embedding = fluid.layers.embedding(input=sentence, size=[65536, 32], is_sparse=True) - - drnn = fluid.layers.DynamicRNN() - with drnn.block(): - # 将embedding标记为RNN的输入,每个时间步取句子中的一个字进行处理 - word = drnn.step_input(embedding) - # 将memory初始化为一个值为0的常量Tensor,shape=[batch_size, 200],其中batch_size由输入embedding决定 - memory = drnn.memory(shape=[200]) - hidden = fluid.layers.fc(input=[word, memory], size=200, act='relu') - # 用hidden更新memory - drnn.update_memory(ex_mem=memory, new_mem=hidden) - # 将hidden标记为RNN的输出 - drnn.output(hidden) - - # 获得RNN的计算结果 - rnn_output = drnn() - - -.. _cn_api_fluid_layers_DynamicRNN_static_input: - -成员函数 static_input ---------------------------------- - -.. py:method:: static_input(x) - -将变量设置为RNN的静态输入。 - -- 示例1,静态输入携带LoD信息 - -.. code-block:: text - - # RNN的输入见step_input中的示例 - # 静态输入,其中Si代表维度为[1, M]的数据 - x.lod = [[3, 1, 2]] - x.shape = [6, M] - x.data = [[S0], - [S0], - [S0], - [S1], - [S2], - [S2]] - - # step 0,持有3个序列对应的数据 - out.lod = [[2, 3, 1]] - out.shape = [6, M] - out.data = [[S2], - [S2], - [S0], - [S0], - [S0], - [S1]] - - # step 1,持有2个序列对应的数据 - out.lod = [[2, 3]] - out.shape = [5, M] - out.data = [[S2], - [S2], - [S0], - [S0], - [S0]] - - # step 2,持有1个序列对应的数据 - out.lod = [[2]] - out.shape = [2, M] - out.data = [[S2], - [S2]] - - -- 示例2,静态输入不携带LoD信息 - -.. code-block:: text - - # RNN的输入见step_input中的示例 - # 静态输入,其中Si代表维度为[1, M]的数据 - x.lod = [[]] - x.shape = [3, M] - x.data = [[S0], - [S1], - [S2]] - - # step 0,持有3个序列对应的数据 - out.lod = [[]] - out.shape = [3, M] - out.data = [[S2], - [S0], - [S1]] - - # step 1,持有2个序列对应的数据 - out.lod = [[]] - out.shape = [2, M] - out.data = [[S2], - [S0]] - - # step 2,持有1个序列对应的数据 - out.lod = [[]] - out.shape = [1, M] - out.data = [[S2]] - - -参数: - - **x** (Variable) - 静态输入序列LoDTensor,要求持有与输入LoDTensor(通过 :code:`step_input` 设置的输入)相同的序列个数。如果输入x的LoD信息为空,则会被当成由 :code:`x.shape[0]` 个长度为1序列组成。支持的数据类型有:bool,float16,float32,float64,int8,int16,int32,int64,uint8。 - -返回: 经过按照RNN输入LoD信息重排序、且收缩处理后的静态输入LoDTensor。执行第 :code:`step_idx` 个时间步时,如果输入序列中只有 :code:`num_sequences` 长度不小于 :code:`step_idx` 的序列,静态输入也会进行收缩处理,只返回对应的 :code:`num_sequences` 个序列对应的数据。数据类型和输入一致。如果 :code:`x.lod == None` ,返回值的维度是 :math:`\{num\_sequences, x.shape[1], ...\}` 。否则,返回值是一个变长的LoDTensor。 - -返回类型:Variable - -抛出异常: - - :code:`ValueError`:当 :code:`static_input()` 接口在RNN :code:`block()` 接口外面被调用时。 - - :code:`TypeError`:当输入x类型不是Variable类型时。 - - :code:`RuntimeError`:当 :code:`static_input()` 接口在 :code:`step_input()` 接口之前被调用时。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - sentence = fluid.data(name='sentence', shape=[None, 32], dtype='float32', lod_level=1) - encoder_proj = fluid.data(name='encoder_proj', shape=[None, 32], dtype='float32', lod_level=1) - decoder_boot = fluid.data(name='boot', shape=[None, 10], dtype='float32') - - drnn = fluid.layers.DynamicRNN() - with drnn.block(): - # 将sentence标记为RNN的输入,每个时间步取句子中的一个字进行处理 - current_word = drnn.step_input(sentence) - # 将encode_proj标记为RNN的静态输入 - encoder_word = drnn.static_input(encoder_proj) - # 使用boot_memory初始化memory,并且需要依据输入序列进行重排序 - memory = drnn.memory(init=decoder_boot, need_reorder=True) - fc_1 = fluid.layers.fc(input=encoder_word, size=30) - fc_2 = fluid.layers.fc(input=current_word, size=30) - decoder_inputs = fc_1 + fc_2 - hidden, _, _ = fluid.layers.gru_unit(input=decoder_inputs, hidden=memory, size=30) - # 用hidden更新memory - drnn.update_memory(ex_mem=memory, new_mem=hidden) - out = fluid.layers.fc(input=hidden, size=10, bias_attr=True, act='softmax') - # 将out标记为RNN的输出 - drnn.output(out) - - # 获得RNN的计算结果 - rnn_output = drnn() - - -.. _cn_api_fluid_layers_DynamicRNN_block: - -成员函数 block ---------------------------------- - -.. py:method:: block() - -定义每个时间步执行的操作。 :code:`block` 语句里面定义的算子序列,将会被执行 :code:`max_sequence_len` 次( :code:`max_sequence_len` 是输入序列中大的序列长度)。 - -抛出异常: - - :code:`ValueError`:当RNN :code:`block()` 接口被多次调用时。 - - -.. _cn_api_fluid_layers_DynamicRNN_memory: - -成员函数 memory ---------------------------------- - -.. py:method:: memory(init=None, shape=None, value=0.0, need_reorder=False, dtype='float32') - -为RNN创建一个memory变量,用于在时间步之间传递信息。 -它可以用一个已有的Tensor来初始化,也可以初始化为一个特定维度的常量Tensor。 - -参数: - - **init** (Variable,可选) – 设置memory初始值的LoDTensor。如果init不是None,将使用init来初始化memory,要求持有与输入LoDTensor(通过 :code:`step_input` 设置的输入)相同的序列个数。如果输入init的LoD信息为空,则会被当成由 :code:`init.shape[0]` 个长度为1序列组成。默认值是None。 - - **shape** (list|tuple,可选) – 当init是None时,用来设置memory的维度。注意:shape中不包含batch_size。若设置 :math:`shape=\{D_1, D_2, ...\}`,memory Tensor的实际维度为 :math:`\{batch\_size, D_1, D_2, ...\}`,其中batch_size由输入序列决定。默认值是None。 - - **value** (float,可选) – 当init是None时,用来设置memory的初始值。默认值是0.0。 - - **need_reorder** (bool,可选) – 当init不是None时,用来决定init是否需要重新排序。动态RNN在计算时,会按照输入LoDTensor中序列的长度对输入进行排序,因此当init中的信息与输入序列样本紧密关联时,需要设置 :code:`need_reorder=True`。默认值是False。 - - **dtype** (str|numpy.dtype,可选) – 当init是None是,初始化memory的数据类型。默认值是"float32"。可设置的字符串值有:"float32","float64","int32","int64"。 - -返回:经过收缩处理后的memory LoDTensor。执行第 :code:`step_idx` 个时间步时,如果输入序列中只有 :code:`num_sequences` 长度不小于 :code:`step_idx` 的序列,memory也会进行收缩处理,只返回对应的 :code:`num_sequences` 个序列对应的数据。 - -返回类型:Variable - -抛出异常: - - :code:`ValueError`:当 :code:`memory()` 接口在RNN :code:`block()` 接口外面被调用时。 - - :code:`TypeError`:当init被设置了,但是不是Variable类型时。 - - :code:`ValueError`:当 :code:`memory()` 接口在 :code:`step_input()` 接口之前被调用时。 - -**代码示例一** - -.. code-block:: python - - import paddle.fluid as fluid - - sentence = fluid.data(name='sentence', shape=[None, 32], dtype='float32', lod_level=1) - boot_memory = fluid.data(name='boot', shape=[None, 10], dtype='float32') - - drnn = fluid.layers.DynamicRNN() - with drnn.block(): - # 将sentence标记为RNN的输入,每个时间步取句子中的一个字进行处理 - word = drnn.step_input(sentence) - # 使用boot_memory初始化memory,并且需要依据输入序列进行重排序 - memory = drnn.memory(init=boot_memory, need_reorder=True) - hidden = fluid.layers.fc(input=[word, memory], size=10, act='tanh') - # 用hidden更新memory - drnn.update_memory(ex_mem=memory, new_mem=hidden) - # 将hidden标记为RNN的输出 - drnn.output(hidden) - - # 获得RNN的计算结果 - rnn_output = drnn() - - -**代码示例二** - -.. code-block:: python - - import paddle.fluid as fluid - - sentence = fluid.data(name='sentence', shape=[None, 32], dtype='float32', lod_level=1) - - drnn = fluid.layers.DynamicRNN() - with drnn.block(): - # 将sentence标记为RNN的输入,每个时间步取句子中的一个字进行处理 - word = drnn.step_input(sentence) - # 将memory初始化为一个值为0的常量Tensor,shape=[batch_size, 10],其中batch_size由输入sentence决定 - memory = drnn.memory(shape=[10], dtype='float32', value=0) - hidden = fluid.layers.fc(input=[word, memory], size=10, act='tanh') - # 用hidden更新memory - drnn.update_memory(ex_mem=memory, new_mem=hidden) - # 将hidden标记为RNN的输出 - drnn.output(hidden) - - # 获得RNN的计算结果 - rnn_output = drnn() - - -.. _cn_api_fluid_layers_DynamicRNN_update_memory: - -成员函数 update_memory ---------------------------------- - -.. py:method:: update_memory(ex_mem, new_mem) - -将需要在时间步之间传递的信息更新。 - -参数: - - **ex_mem** (Variable) - 上一个时间步的信息。 - - **new_mem** (Variable) - 新的时间步信息。:code:`new_mem` 的维度和数据类型必须与 :code:`ex_mem` 一致。 - -返回:无 - -抛出异常: - - :code:`ValueError`:当 :code:`update_memory()` 接口在RNN :code:`block()` 接口外面被调用时。 - - :code:`TypeError`:当 :code:`ex_mem` 或 :code:`new_mem` 不是Variable类型时。 - - :code:`ValueError`:当 :code:`ex_mem` 不是使用 :code:`memory()` 接口定义的memory时。 - - :code:`ValueError`:当 :code:`update_memory()` 接口在 :code:`step_input()` 接口之前被调用时。 - - -.. _cn_api_fluid_layers_DynamicRNN_output: - -成员函数 output ---------------------------------- - -.. py:method:: output(*outputs) - -设置outputs为RNN每个时间步的输出变量。 - -参数: - - **\*outputs** (Variable ...) - 输出Tensor,可同时将多个Variable标记为输出。 - -返回:无 - -抛出异常: - - :code:`ValueError`:当 :code:`output()` 接口在RNN :code:`block()` 接口外面被调用时。 - - -.. _cn_api_fluid_layers_DynamicRNN_call: - -成员函数 __call__ ---------------------------------- - -.. py:method:: __call__() - -获取RNN计算的输出序列。 - -若定义了 :code:`drnn = DynamicRNN()`,则可以调用 :code:`drnn()` 获得输出序列,该输出序列是通过将每一个时间步的output数据合并得到的一个LoDTensor。 -当RNN的输入x(通过 :code:`step_input()` 接口设置)的 :code:`x.lod_level` 为1时,该输出LoDTensor将会和输入x持有完全相同的LoD信息。 -通过 :code:`drnn()` 获取的RNN输出LoDTensor中包含了所有时间步的计算结果,可调用 :ref:`cn_api_fluid_layers_sequence_last_step` 获取最后一个时间步的计算结果。 - -参数: - 无 - -返回:RNN的输出序列。 - -返回类型:Variable或Variable list - -抛出异常: - - :code:`ValueError` :当 :code:`__call__()` 接口在RNN :code:`block()` 定义之前被调用时。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - sentence = fluid.data(name='sentence', shape=[None, 32], dtype='float32', lod_level=1) - encoder_proj = fluid.data(name='encoder_proj', shape=[None, 32], dtype='float32', lod_level=1) - decoder_boot = fluid.data(name='boot', shape=[None, 10], dtype='float32') - - drnn = fluid.layers.DynamicRNN() - with drnn.block(): - # 将sentence标记为RNN的输入,每个时间步取句子中的一个字进行处理 - current_word = drnn.step_input(sentence) - # 将encode_proj标记为RNN的静态输入 - encoder_word = drnn.static_input(encoder_proj) - # 使用boot_memory初始化memory,并且需要依据输入序列进行重排序 - memory = drnn.memory(init=decoder_boot, need_reorder=True) - fc_1 = fluid.layers.fc(input=encoder_word, size=30) - fc_2 = fluid.layers.fc(input=current_word, size=30) - decoder_inputs = fc_1 + fc_2 - hidden, _, _ = fluid.layers.gru_unit(input=decoder_inputs, hidden=memory, size=30) - # 用hidden更新memory - drnn.update_memory(ex_mem=memory, new_mem=hidden) - out = fluid.layers.fc(input=hidden, size=10, bias_attr=True, act='softmax') - # 将hidden和out标记为RNN的输出 - drnn.output(hidden, out) - - # 获得RNN的计算结果 - hidden, out = drnn() - # 提取RNN最后一个时间步的计算结果 - last = fluid.layers.sequence_last_step(out) diff --git a/doc/paddle/api/paddle/fluid/layers/GRUCell_cn.rst b/doc/paddle/api/paddle/fluid/layers/GRUCell_cn.rst deleted file mode 100644 index a714757be122b2c7dd2cd936f809725991807996..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/GRUCell_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_layers_GRUCell: - -GRUCell -------------------------------- - - -.. py:class:: paddle.fluid.layers.GRUCell(hidden_size, param_attr=None, bias_attr=None, gate_activation=None, activation=None, dtype="float32", name="GRUCell") - -:api_attr: 声明式编程模式(静态图) - - - -门控循环单元(Gated Recurrent Unit)。通过对 :code:`fluid.contrib.layers.rnn_impl.BasicGRUUnit` 包装,来让它可以应用于RNNCell。 - -公式如下: - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = u_t \odot h_{t-1} + (1-u_t) \odot \tilde{h_t} - -更多细节可以参考 `Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation `_ - -参数: - - **hidden_size** (int) - GRUCell中的隐藏层大小。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **gate_activation** (function,可选) - :math:`act_g` 的激活函数。 默认值为 :code:`fluid.layers.sigmoid`。 - - **activation** (function,可选) - :math:`act_c` 的激活函数。 默认值为 :code:`fluid.layers.tanh` - - **dtype** (string,可选) - 此cell中使用的数据类型。 默认为"float32"。 - - **name** (string,可选) - 用于标识参数和偏差的名称域。 - -返回:GRUCell类的实例对象。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid.layers as layers - cell = layers.GRUCell(hidden_size=256) - - -.. py:method:: call(inputs, states) - -执行GRU的计算。 - -参数: - - **input** (Variable) - 输入,形状为 :math:`[batch\_size,input\_size]` 的tensor,对应于公式中的 :math:`x_t` 。数据类型应为float32。 - - **states** (Variable) - 状态,形状为 :math:`[batch\_size,hidden\_size]` 的tensor。 对应于公式中的 :math:`h_{t-1}` 。数据类型应为float32。 - -返回:一个元组 :code:`(outputs, new_states)` ,其中 :code:`outputs` 和 :code:`new_states` 是同一个tensor,其形状为 :math:`[batch\_size,hidden\_size]`,数据类型和 :code:`state` 的数据类型相同,对应于公式中的 :math:`h_t`。 - -返回类型:tuple - -.. py:method:: state_shape() - -GRUCell的 :code:`state_shape` 是形状 :math:`[hidden\_size]` (batch大小为-1,自动插入到形状中),对应于 :math:`h_{t-1}` 的形状。 - -参数:无。 - -返回:GRUCell的 :code:`state_shape`。 - -返回类型:Variable - - diff --git a/doc/paddle/api/paddle/fluid/layers/IfElse_cn.rst b/doc/paddle/api/paddle/fluid/layers/IfElse_cn.rst deleted file mode 100644 index 2ba7ff3b9eef50d97ba80f5e323df16ce7d6e815..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/IfElse_cn.rst +++ /dev/null @@ -1,85 +0,0 @@ -.. _cn_api_fluid_layers_IfElse: - -IfElse -------------------------------- - - -.. py:class:: paddle.fluid.layers.IfElse(cond, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该类用于实现IfElse分支控制功能, IfElse包含两个Block,true_block,false_block,IfElse会将满足True或False条件的数据分别放入不同的block运行。 - -cond是一个shape为[N, 1]、数据类型为bool的2-D tensor,表示输入数据对应部分的执行条件。 - -.. note:: - 如果参数 ``cond`` 的形状为[1],强烈建议您使用新的OP :ref:`cn_api_fluid_layers_cond` 而不是 ``IfElse``。 - OP :ref:`cn_api_fluid_layers_cond` 的使用方式更简单,并且调用该OP所用的代码更少且功能与 ``IfElse`` 一样。 - -IfElse OP同其他的OP在使用上有一定的区别,可能会对一些用户造成一定的困惑,以下展示了一个 -简单的样例对该OP进行说明。 - -.. code-block:: python - - # 以下代码完成的功能:对x中大于0的数据减去10,对x中小于0的数据加上10,并将所有的数据求和 - import numpy as np - import paddle.fluid as fluid - - x = fluid.layers.data(name='x', shape=[4, 1], dtype='float32', append_batch_size=False) - y = fluid.layers.data(name='y', shape=[4, 1], dtype='float32', append_batch_size=False) - - x_d = np.array([[3], [1], [-2], [-3]]).astype(np.float32) - y_d = np.zeros((4, 1)).astype(np.float32) - - # 比较x, y对元素的大小,输出cond, cond是shape为[4, 1],数据类型为bool的2-D tensor。 - # 根据输入数据x_d, y_d,可以推断出cond中的数据为[[true], [true], [false], [false]] - cond = fluid.layers.greater_than(x, y) - # 同其他常见OP不同的是,该OP返回的ie是一个IfElse OP的对象 - ie = fluid.layers.IfElse(cond) - - with ie.true_block(): - # 在这个block中,根据cond条件,获取x中对应条件为true维度的数据,并减去10 - out_1 = ie.input(x) - out_1 = out_1 - 10 - ie.output(out_1) - with ie.false_block(): - # 在这个block中,根据cond条件,获取x中对应条件为false维度的数据,并加上10 - out_1 = ie.input(x) - out_1 = out_1 + 10 - ie.output(out_1) - - # 根据cond条件将两个block中处理后的数据进行合并,此处的output为输出,类型为List,List中的元素类型为Variable。 - output = ie() # [array([[-7.], [-9.], [ 8.], [ 7.]], dtype=float32)] - - # 将输出List中的第一个Variable获取出来,并计算所有元素和 - out = fluid.layers.reduce_sum(output[0]) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - res = exe.run(fluid.default_main_program(), feed={"x":x_d, "y":y_d}, fetch_list=[out]) - print(res) - # [array([-1.], dtype=float32)] - -参数: - - **cond** (Variable)- cond是一个shape为[N, 1]、数据类型为bool的2-D tensor,表示N个输入数据的对应的执行条件。数据类型为bool。 - - **Name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -**返回:** - -同其他常见OP不同的是,该OP调用返回一个IfElse OP对象(如例子中的 ie),通过调用对象内部函数 ``true_block()`` , ``false_block()`` , ``input()`` , ``output()`` 对输入数据进行分支处理, -通过调用内部的 ``__call__()`` 函数,将不同分支处理的数据进行整合,作为整体的输出,输出类型为列表,列表中每个元素的类型为Variable。 - -**内部函数:** - -- 通过调用对象中的 ``with ie.true_block()`` 函数构建block,将条件为true下的计算逻辑放入此block中。如果没有构建相应的block,则对应条件维度下的输入数据不做改变。 - -- 通过调用对象中的 ``with ie.false_block()`` 函数构建block,将条件为false下的计算逻辑放入此block中。如果没有构建相应的block,则对应条件维度下的输入数据不做改变。 - -- ``out = ie.input(x)`` 会将x中对应条件维度的数据获取出来放入到out中,支持block内部处理多个输入。 - -- ``ie.output(out)`` 会将结果写入对应条件的输出中。 - -- 对象内部有 ``__call__()`` 函数,即通过对 ``output = ie()`` 的调用,将条件分别为True,False的block内部所有的输出进行融合作为整体的输出,输出的类型为列表,列表中每个元素的类型为Variable。 diff --git a/doc/paddle/api/paddle/fluid/layers/LSTMCell_cn.rst b/doc/paddle/api/paddle/fluid/layers/LSTMCell_cn.rst deleted file mode 100644 index 183dd4ff210000f8c9138d18d402d431d245dd86..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/LSTMCell_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_LSTMCell: - -LSTMCell -------------------------------- - - - -.. py:class:: paddle.fluid.layers.LSTMCell(hidden_size, param_attr=None, bias_attr=None, gate_activation=None, activation=None, forget_bias=1.0, dtype="float32", name="LSTMCell") - -:api_attr: 声明式编程模式(静态图) - - - -长短期记忆单元(Long-Short Term Memory)。通过对 :code:`fluid.contrib.layers.rnn_impl.BasicLSTMUnit` 包装,来让它可以应用于RNNCell。 - -公式如下: - -.. math:: - i_{t} &= act_g \left ( W_{x_{i}}x_{t}+W_{h_{i}}h_{t-1}+b_{i} \right ) \\ - f_{t} &= act_g \left ( W_{x_{f}}x_{t}+W_{h_{f}}h_{t-1}+b_{f}+forget\_bias \right ) \\ - c_{t} &= f_{t}c_{t-1}+i_{t}act_h\left ( W_{x_{c}}x_{t} +W_{h_{c}}h_{t-1}+b_{c}\right ) \\ - o_{t} &= act_g\left ( W_{x_{o}}x_{t}+W_{h_{o}}h_{t-1}+b_{o} \right ) \\ - h_{t} &= o_{t}act_h \left ( c_{t} \right ) - -更多细节可以参考 `RECURRENT NEURAL NETWORK REGULARIZATION `_ - -参数: - - **hidden_size** (int) - LSTMCell中的隐藏层大小。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **gate_activation** (function,可选) - :math:`act_g` 的激活函数。 默认值为 :code:`fluid.layers.sigmoid`。 - - **activation** (function,可选) - :math:`act_c` 的激活函数。 默认值为 :code:`fluid.layers.tanh`。 - - **forget_bias** (float,可选) - 计算遗忘们时使用的遗忘偏置。默认值为 1.0。 - - **dtype** (string,可选) - 此Cell中使用的数据类型。 默认值为 `float32`。 - - **name** (string,可选) - 用于标识参数和偏差的名称域。 - -返回:LSTMCell类的实例对象。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid.layers as layers - cell = layers.LSTMCell(hidden_size=256) - - -.. py:method:: call(inputs, states) - -执行GRU的计算。 - -参数: - - **input** (Variable) - 输入,形状为 :math:`[batch\_size,input\_size]` 的tensor,对应于公式中的 :math:`x_t`。数据类型应为float32。 - - **states** (Variable) - 状态,包含两个tensor的列表,每个tensor形状为 :math:`[batch\_size,hidden\_size]`。 对应于公式中的 :math:`h_{t-1}, c_{t-1}`。数据类型应为float32。 - -返回:一个元组 :code:`(outputs, new_states)`,其中 :code:`outputs` 是形状为 :math:`[batch\_size,hidden\_size]` 的tensor,对应于公式中的 :math:`h_{t}`;:code:`new_states` 是一个列表,包含形状为 :math:`[batch_size,hidden_size]` 的两个tensor变量,它们对应于公式中的 :math:`h_{t}, c_{t}`。这些tensor的数据类型都与 :code:`state` 的数据类型相同。 - -返回类型:tuple - -.. py:method:: state_shape() - -LSTMCell的 :code:`state_shape` 是一个具有两个形状的列表::math:`[[hidden\_size], [hidden\_size]]` (batch大小为-1,自动插入到形状中)。 这两个形状分别对应于公式中的 :math:`h_{t-1}` and :math:`c_{t-1}`。 - -参数:无。 - -返回:LSTMCell的 :code:`state_shape` - -返回类型:list diff --git a/doc/paddle/api/paddle/fluid/layers/MultivariateNormalDiag_cn.rst b/doc/paddle/api/paddle/fluid/layers/MultivariateNormalDiag_cn.rst deleted file mode 100644 index 63e1d1bb2492d6f56c6ccbd7d7ada4505087ec25..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/MultivariateNormalDiag_cn.rst +++ /dev/null @@ -1,94 +0,0 @@ -.. _cn_api_fluid_layers_MultivariateNormalDiag: - -MultivariateNormalDiag -------------------------------- - -.. py:class:: paddle.fluid.layers.MultivariateNormalDiag(loc, scale) - - - - -多元高斯分布 - -概率密度函数(pdf)为: - -.. math:: - - pdf(x; loc, scale) = \frac{e^{-\frac{||y||^2}{2}}}{Z} - - y = inv(scale) @ (x - loc) - - Z = (2\pi )^{0.5k} |det(scale)| - -上面公式中: - - :math:`inv` 表示: 对矩阵求逆 - - :math:`@` 表示:矩阵相乘 - - :math:`det` 表示:求行列式的值 - - -参数: - - **loc** (list|numpy.ndarray|Variable) - 形状为 :math:`[k]` 的多元高斯分布的均值列表。数据类型为float32。 - - **scale** (list|numpy.ndarray|Variable) - 形状为 :math:`[k, k]` 的多元高斯分布的对角协方差矩阵,且除对角元素外,其他元素取值均为0。数据类型为float32。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle.fluid import layers - from paddle.fluid.layers import MultivariateNormalDiag - - a_loc_npdata = np.array([0.3,0.5],dtype="float32") - a_loc_tensor = layers.create_tensor(dtype="float32") - layers.assign(a_loc_npdata, a_loc_tensor) - - - a_scale_npdata = np.array([[0.4,0],[0,0.5]],dtype="float32") - a_scale_tensor = layers.create_tensor(dtype="float32") - layers.assign(a_scale_npdata, a_scale_tensor) - - b_loc_npdata = np.array([0.2,0.4],dtype="float32") - b_loc_tensor = layers.create_tensor(dtype="float32") - layers.assign(b_loc_npdata, b_loc_tensor) - - b_scale_npdata = np.array([[0.3,0],[0,0.4]],dtype="float32") - b_scale_tensor = layers.create_tensor(dtype="float32") - layers.assign(b_scale_npdata, b_scale_tensor) - - a = MultivariateNormalDiag(a_loc_tensor, a_scale_tensor) - b = MultivariateNormalDiag(b_loc_tensor, b_scale_tensor) - - a.entropy() - # [2.033158] with shape: [1] - b.entropy() - # [1.7777451] with shaoe: [1] - - a.kl_divergence(b) - # [0.06542051] with shape: [1] - - -.. py:function:: kl_divergence(other) - -计算相对于另一个多元高斯分布的KL散度 - -参数: - - **other** (MultivariateNormalDiag) - 输入的另一个多元高斯分布。数据类型为float32。 - -返回:相对于另一个多元高斯分布的KL散度,数据类型为float32 - -返回类型:Variable - -.. py:function:: entropy() - -信息熵 - -返回:多元高斯分布的信息熵,数据类型为float32 - -返回类型:Variable - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/Normal_cn.rst b/doc/paddle/api/paddle/fluid/layers/Normal_cn.rst deleted file mode 100644 index ce50e67bd12563ee7c24b6ab4141acf0ccf0c303..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/Normal_cn.rst +++ /dev/null @@ -1,115 +0,0 @@ -.. _cn_api_fluid_layers_Normal: - -Normal -------------------------------- - -.. py:class:: paddle.fluid.layers.Normal(loc, scale) - - - - -正态分布 - -数学公式: - -.. math:: - - pdf(x; \mu, \sigma) = \frac{1}{Z}e^{\frac {-0.5 (x - \mu)^2} {\sigma^2} } - - Z = (2 \pi \sigma^2)^{0.5} - -上面的数学公式中: - -:math:`loc = \mu` : 平均值。 -:math:`scale = \sigma` : 标准差。 -:math:`Z`: 正态分布常量。 - -参数: - - **loc** (float|list|numpy.ndarray|Variable) - 正态分布平均值。数据类型为float32。 - - **scale** (float|list|numpy.ndarray|Variable) - 正态分布标准差。数据类型为float32。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle.fluid import layers - from paddle.fluid.layers import Normal - - # 定义参数为float的正态分布。 - dist = Normal(loc=0., scale=3.) - # 定义一组有两个数的正态分布。 - # 第一组为均值1,标准差11,第二组为均值2,标准差22。 - dist = Normal(loc=[1., 2.], scale=[11., 22.]) - # 得到3个样本, 返回一个 3 x 2 张量。 - dist.sample([3]) - - # 通过广播的方式,定义一个两个参数的正态分布。 - # 均值都是1,标准差不同。 - dist = Normal(loc=1., scale=[11., 22.]) - - # 一个完整的例子 - value_npdata = np.array([0.8], dtype="float32") - value_tensor = layers.create_tensor(dtype="float32") - layers.assign(value_npdata, value_tensor) - - normal_a = Normal([0.], [1.]) - normal_b = Normal([0.5], [2.]) - - sample = normal_a.sample([2]) - # 一个由定义好的正太分布随机生成的张量,维度为: [2, 1] - entropy = normal_a.entropy() - # [1.4189385] with shape: [1] - lp = normal_a.log_prob(value_tensor) - # [-1.2389386] with shape: [1] - kl = normal_a.kl_divergence(normal_b) - # [0.34939718] with shape: [1] - - -.. py:function:: sample(shape, seed=0) - -生成指定维度的样本 - -参数: - - **shape** (list) - 1维列表,指定生成样本的维度。数据类型为int32。 - - **seed** (int) - 长整型数。 - -返回:预先设计好维度的张量, 数据类型为float32 - -返回类型:Variable - -.. py:function:: entropy() - -信息熵 - -返回:正态分布的信息熵, 数据类型为float32 - -返回类型:Variable - -.. py:function:: log_prob(value) - -对数概率密度函数 - -参数: - - **value** (Variable) - 输入张量。数据类型为float32或float64。 - -返回:对数概率, 数据类型与value相同 - -返回类型:Variable - -.. py:function:: kl_divergence(other) - -两个正态分布之间的KL散度。 - -参数: - - **other** (Normal) - Normal的实例。 - -返回:两个正态分布之间的KL散度, 数据类型为float32 - -返回类型:Variable - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/RNNCell_cn.rst b/doc/paddle/api/paddle/fluid/layers/RNNCell_cn.rst deleted file mode 100644 index edc8d0df0369029d9c9021621919b7a60b1b7523..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/RNNCell_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_RNNCell: - -RNNCell -------------------------------- - - - -.. py:class:: paddle.fluid.layers.RNNCell(name=None) - -:api_attr: 声明式编程模式(静态图) - - -RNNCell是抽象的基类,代表将输入和状态映射到输出和新状态的计算,主要用于RNN。 - -.. py:method:: call(inputs, states, **kwargs) - -每个cell都必须实现此接口,将(输入和状态)映射到(输出和新状态)。为了更灵活,输入和状态都可以是单个tensor变量或嵌套结构的tensor变量(列表 | 元组 | 命名元组 | 字典)。 - -参数: - - **inputs** - 输入,为单个tensor变量或tensor变量组成的嵌套结构。 - - **states** - 状态,单个tensor变量或tensor变量组成的嵌套结构。 - - **kwargs** - 附加的关键字参数,由调用者提供。 -         -返回:输出和新状态。输出和新状态都可以是嵌套的tensor变量。新状态必须具有与状态相同的结构。 - -返回类型:tuple - -.. py:method:: get_initial_states(batch_ref, shape=None, dtype=None, init_value=0) - -该接口根据提供的形状,数据类型和初始值来初始化状态。 - -参数: - - **batch_ref** - 单个tensor变量或tensor组成的嵌套结构。 tensor的第一维将用作初始化状态的batch大小。 - - **shape** - 单个形状或形状组成的嵌套结构,单个形状是整数的列表或元组。 如果形状的第一维不是batch大小,则自动插入-1作为batch大小。 如果该项为None,将使用属性 :code:`state_shape`。默认值为None。 - - **dtype** - 单个数据类型或由数据类型组成的嵌套结构。该结构必须与shape的结构相同,例外是当状态中的所有tensor都具有相同的数据类型,这时可以使用单个数据类型。 如果是None并且属性 :code:`cell.state_shape` 不可用,则float32将用作数据类型。 默认值为None。 - - **init_value** - 用于初始化状态的浮点值。 - -返回:和shape具有相同结构的tensor变量,代表初始状态。 - -返回类型:Variable - -.. py:method:: state_shape() - -该接口用于初始化cell的状态。 单个形状或由形状组成的嵌套结构,单个形状可以是整数的列表或元组(如果形状的第一维不是batch大小,则自动插入-1作为batch大小)。 当没有使用 :code:`get_initial_states` 初始化状态或 :code:`get_initial_states` 没有提供 :code:`shape` 参数的时候,不用实现该方法。 - - -.. py:method:: state_dtype() - -该接口用于初始化cell的状态。 单个数据类型或由数据类型组成的嵌套结构,该结构必须与 :code:`shape` 的结构相同,例外是当状态中的所有tensor都具有相同的数据类型,这时可以使用单个数据类型。 当没有使用 :code:`get_initial_states` 初始化状态或 :code:`get_initial_states` 没有提供 :code:`dtype` 参数的时候,不用实现该方法。 diff --git a/doc/paddle/api/paddle/fluid/layers/StaticRNN_cn.rst b/doc/paddle/api/paddle/fluid/layers/StaticRNN_cn.rst deleted file mode 100644 index ee524611b8f70b678c80d24a89728b9af20da90f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/StaticRNN_cn.rst +++ /dev/null @@ -1,273 +0,0 @@ -.. _cn_api_fluid_layers_StaticRNN: - -StaticRNN -------------------------------- - - -.. py:class:: paddle.fluid.layers.StaticRNN(name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP用来处理一批序列数据,其中每个样本序列的长度必须相等。StaticRNN将序列按照时间步长展开,用户需要定义每个时间步中的处理逻辑。 - -参数: - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 创建memory变量作为prev,batch size来自于word变量。 - prev = rnn.memory(shape=[-1, hidden_size], batch_ref = word) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - # 把每一步处理后的hidden标记为输出序列。 - rnn.step_output(hidden) - # 获取最终的输出结果 - result = rnn() - -.. py:method:: step() - -定义在每个时间步执行的操作。step用在with语句中,with语句中定义的OP会被执行sequence_len次(sequence_len是输入序列的长度)。 - - -.. py:method:: memory(init=None, shape=None, batch_ref=None, init_value=0.0, init_batch_dim_idx=0, ref_batch_dim_idx=1) - -为静态RNN创建一个内存变量。 -如果init不为None,则用init将初始化memory。 如果init为None,则必须设置shape和batch_ref,函数会使用shape和batch_ref创建新的Variable来初始化init。 - -参数: - - **init** (Variable,可选) - 用来初始化memory的Tensor。如果没有设置,则必须提供shape和batch_ref参数。默认值None。 - - **shape** (list|tuple) - 当init为None时用来设置memory的维度,注意不包括batch_size。默认值None。 - - **batch_ref** (Variable,可选) - 当init为None时,memory变量的batch size会设置为该batch_ref变量的ref_batch_dim_idx轴。默认值None。 - - **init_value** (float,可选) - 当init为None时用来设置memory的初始值,默认值0.0。 - - **init_batch_dim_idx** (int,可选) - init变量的batch_size轴,默认值0。 - - **ref_batch_dim_idx** (int,可选) - batch_ref变量的batch_size轴,默认值1。 - -返回:返回创建的memory变量。 - -返回类型;Variable - - -**代码示例一** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 创建memory变量作为prev,batch size来自于word变量。 - prev = rnn.memory(shape=[-1, hidden_size], batch_ref = word) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - -**代码示例二** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - boot_memory = fluid.layers.data(name='boot', shape=[hidden_size], dtype='float32', lod_level=1) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 用init初始化memory。 - prev = rnn.memory(init=boot_memory) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - -.. py:method:: step_input(x) - -标记StaticRNN的输入序列。 - -参数: - - **x** (Variable) – 输入序列,x的形状应为[seq_len, ...]。 - -返回:输入序列中当前时间步的数据。 - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 创建memory变量作为prev,batch size来自于word变量。 - prev = rnn.memory(shape=[-1, hidden_size], batch_ref = word) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - -.. py:method:: step_output(o) - -标记StaticRNN输出的序列。 - -参数: - -**o** (Variable) – 输出序列 - -返回:无 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 创建memory变量作为prev,batch size来自于word变量。 - prev = rnn.memory(shape=[-1, hidden_size], batch_ref = word) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - # 把每一步处理后的hidden标记为输出序列。 - rnn.step_output(hidden) - - result = rnn() - -.. py:method:: output(*outputs) - -标记StaticRNN输出变量。 - -参数: - -**outputs** – 输出Tensor,可同时将多个Variable标记为输出。 - -返回:无 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 创建memory变量作为prev,batch size来自于word变量。 - prev = rnn.memory(shape=[-1, hidden_size], batch_ref = word) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - # 把每一步的hidden和word标记为输出。 - rnn.output(hidden, word) - - result = rnn() - - -.. py:method:: update_memory(mem, var) - - -将memory从mem更新为var。 - -参数: - - **mem** (Variable) – memory接口定义的变量。 - - **var** (Variable) – RNN块中的变量,用来更新memory。var的维度和数据类型必须与mem一致。 - -返回:无 - -代码示例参考前述示例。 - diff --git a/doc/paddle/api/paddle/fluid/layers/Switch_cn.rst b/doc/paddle/api/paddle/fluid/layers/Switch_cn.rst deleted file mode 100644 index e4d132861ae84f5d6ba6befc42a7b6811aed4d40..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/Switch_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_layers_Switch: - -Switch -------------------------------- - - -.. py:class:: paddle.fluid.layers.Switch (name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该类用于实现Switch分支控制功能。Switch分支包含多个case分支和一个default分支,Switch控制流会依次检查各case分支条件是否满足,并仅执行第一个满足条件的case分支后面的语句。若不存在满足条件的case分支,则仅执行default分支后面的语句。 - -.. note:: - 如果参数 ``cond`` 的形状为[1],强烈建议您使用新的OP :ref:`cn_api_fluid_layers_case` 而不是 ``Switch``。 - OP :ref:`cn_api_fluid_layers_case` 的使用方式更简单,并且调用该OP所用的代码更少且功能与 ``Switch`` 一样。 - -成员函数: - - **case(cond)** - Switch的case分支,其参数cond为bool型的标量Variable。只有当前case分支的cond为True,且之前的case分支的cond均为False,该case分支后的语句才会执行,且不再执行之后的case后的语句。 - - **default()** - Switch的default分支。当所有case分支的cond均为False时,执行default分支后的语句。 - -注意:case和default函数只能用于Switch的scope内部,示例如下: - -.. code-block:: python - - with fluid.layers.Switch() as switch: - with switch.case(cond1): - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=1) - with switch.case(cond2): - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=2) - with switch.default(): - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=0) - -参数: - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - lr = fluid.layers.create_global_var( - shape=[1], - value=0.0, - dtype='float32', - persistable=True, - name="learning_rate") - zero_var = fluid.layers.fill_constant( - shape=[1], dtype='float32', value=0.0) - one_var = fluid.layers.fill_constant( - shape=[1], dtype='float32', value=1.0) - two_var = fluid.layers.fill_constant( - shape=[1], dtype='float32', value=2.0) - - # 将参数中的begin设为非0值,则进入Switch的default分支,输出数组中的数字将为2 - global_step = fluid.layers.autoincreased_step_counter(counter_name='@LR_DECAY_COUNTER@', begin=0, step=1) - - with fluid.layers.control_flow.Switch() as switch: - with switch.case(global_step == zero_var): - fluid.layers.assign(input=one_var, output=lr) - with switch.default(): - fluid.layers.assign(input=two_var, output=lr) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - res = exe.run(fluid.default_main_program(), feed={}, fetch_list=[lr]) - print(res) # [array([1.], dtype=float32)] - - diff --git a/doc/paddle/api/paddle/fluid/layers/Uniform_cn.rst b/doc/paddle/api/paddle/fluid/layers/Uniform_cn.rst deleted file mode 100644 index 59e1544b3751afacf4002cfa859a6827df1de187..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/Uniform_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_layers_Uniform: - -Uniform -------------------------------- - -.. py:class:: paddle.fluid.layers.Uniform(low, high) - - - - -均匀分布 - -概率密度函数(pdf)为: - -.. math:: - - pdf(x; a, b) = \frac{1}{Z}, a <=x < b - - Z = b - a - -上面的数学公式中: - -:math:`low = a` 。 -:math:`high = b` 。 -:math:`Z`: 正态分布常量。 - -参数low和high的维度必须能够支持广播。 - -参数: - - **low** (float|list|numpy.ndarray|Variable) - 均匀分布的下边界。数据类型为float32。 - - **high** (float|list|numpy.ndarray|Variable) - 均匀分布的上边界。数据类型为float32。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle.fluid import layers - from paddle.fluid.layers import Uniform - - # 定义参数为float的均匀分布 - u1 = Uniform(low=3.0, high=4.0) - # 定义参数为list的均匀分布 - u2 = Uniform(low=[1.0, 2.0], - high=[3.0, 4.0]) - # 通过广播的方式,定义一个均匀分布 - u3 = Uniform(low=[[1.0, 2.0], - [3.0, 4.0]], - high=[[1.5, 2.5], - [3.5, 4.5]]) - - # 通过广播的方式,定义一个均匀分布 - u4 = Uniform(low=3.0, high=[5.0, 6.0, 7.0]) - - # 一个完整的例子 - value_npdata = np.array([0.8], dtype="float32") - value_tensor = layers.create_tensor(dtype="float32") - layers.assign(value_npdata, value_tensor) - - uniform = Uniform([0.], [2.]) - - sample = uniform.sample([2]) - # 一个由定义好的均匀分布随机生成的张量,维度为: [2, 1] - entropy = uniform.entropy() - # [0.6931472] with shape: [1] - lp = uniform.log_prob(value_tensor) - # [-0.6931472] with shape: [1] - - -.. py:function:: sample(shape, seed=0) - -生成指定维度的样本 - -参数: - - **shape** (list) - 1维列表,指定生成样本的维度。数据类型为int32。 - - **seed** (int) - 长整型数。 - -返回:预先设计好维度的张量, 数据类型为float32 - -返回类型:Variable - -.. py:function:: entropy() - -信息熵 - -返回:均匀分布的信息熵, 数据类型为float32 - -返回类型:Variable - -.. py:function:: log_prob(value) - -对数概率密度函数 - -参数: - - **value** (Variable) - 输入张量。数据类型为float32或float64。 - -返回:对数概率, 数据类型与value相同 - -返回类型:Variable - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/While_cn.rst b/doc/paddle/api/paddle/fluid/layers/While_cn.rst deleted file mode 100644 index 0e851830bd2dfeca29306e43cae88acb9aa2b798..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/While_cn.rst +++ /dev/null @@ -1,89 +0,0 @@ -.. _cn_api_fluid_layers_While: - -While -------------------------------- - - -.. py:class:: paddle.fluid.layers.While (cond, is_test=False, name=None) - -:api_attr: 声明式编程模式(静态图) - - - - -该类用于实现while循环控制功能,只要循环条件cond为True,就循环执行while循环体中的语句,直到cond为False为止。 - -.. note:: - 如果参数 ``cond`` 的形状为[1],强烈建议您使用新的OP :ref:`cn_api_fluid_layers_while_loop` 而不是 ``While``。 - OP :ref:`cn_api_fluid_layers_while_loop` 的使用方式更简单,并且调用该OP所用的代码更少且功能与 ``While`` 一样。 - -**注意:** - 在 ``While`` 中创建的局部变量类似于C++中的while,无法被外部引用,因此无法通过 ``Executor`` 中的 ``fetch_list`` 来获取。 - 若想实现该功能,PaddlePaddle提供了 ``assign`` 接口将局部变量赋值到外部,请参考示例代码2 或参考 `issue#22724 `_ 。 - -参数: - - **cond** (Variable) – 用于判断循环继续进行的条件,为数据类型bool型的Tensor,其shape必须为[1]。 - - **is_test** (bool,可选) – 用于表明是否在测试阶段执行,默认值为False。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -**代码示例 1** - -.. code-block:: python - - # 该示例代码展示整数循环+1,循环10次,输出计数结果 - import paddle.fluid as fluid - import numpy as np - - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=0) # 循环计数器 - - loop_len = fluid.layers.fill_constant(shape=[1],dtype='int64', value=10) # 循环次数 - - cond = fluid.layers.less_than(x=i, y=loop_len) # 循环条件 - while_op = fluid.layers.While(cond=cond) - with while_op.block(): # 循环体 - i = fluid.layers.increment(x=i, value=1, in_place=True) - fluid.layers.less_than(x=i, y=loop_len, cond=cond) # 更新循环条件 - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - res = exe.run(fluid.default_main_program(), feed={}, fetch_list=[i]) - print(res) # [array([10])] - - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=0) - loop_len = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10) - one = fluid.layers.fill_constant(shape=[1], dtype='float32', value=1) - data = fluid.data(name='data', shape=[1], dtype='float32') - sums = fluid.layers.fill_constant(shape=[1], dtype='float32', value=0) # 在 While 外先定义要获取的变量,需和要获取的 While 内部的变量名称不同 - - cond = fluid.layers.less_than(x=i, y=loop_len) - while_op = fluid.layers.While(cond=cond) - with while_op.block(): - sums_tensor = fluid.layers.elementwise_add(x=data, y=data) - fluid.layers.assign(input=sums_tensor, output=sums) # 将 While 内定义的变量 sums_tenosr 通过 layers.assign 更新至 While 外的变量 sums 中 - i = fluid.layers.increment(x=i, value=1, in_place=True) - data = fluid.layers.elementwise_add(x=data, y=one) - fluid.layers.less_than(x=i, y=loop_len, cond=cond) - - feed_data = np.ones([1]).astype('float32') - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - res = exe.run(fluid.default_main_program(), feed={'data': feed_data}, fetch_list=sums) - print(res[0]) # [2.] # 因 While 内的 data 没有将值更新到 While 外,故循环过后此处 sums 的值为 [2.] - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/accuracy_cn.rst b/doc/paddle/api/paddle/fluid/layers/accuracy_cn.rst deleted file mode 100755 index 15c3d9efcb115065c8b41034ecc0d4703ffb1730..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/accuracy_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_accuracy: - -accuracy -------------------------------- - -.. py:function:: paddle.fluid.layers.accuracy(input, label, k=1, correct=None, total=None) - - - - -accuracy layer。 参考 https://en.wikipedia.org/wiki/Precision_and_recall - -使用输入和标签计算准确率。 如果正确的标签在topk个预测值里,则计算结果加1。注意:输出正确率的类型由input类型决定,input和lable的类型可以不一样。 - -参数: - - **input** (Tensor|LoDTensor)-数据类型为float32,float64。输入为网络的预测值。shape为 ``[sample_number, class_dim]`` 。 - - **label** (Tensor|LoDTensor)-数据类型为int64,int32。输入为数据集的标签。shape为 ``[sample_number, 1]`` 。 - - **k** (int64|int32) - 取每个类别中k个预测值用于计算。 - - **correct** (int64|int32)-正确预测值的个数。 - - **total** (int64|int32)-总共的预测值。 - -返回: 计算出来的正确率。 - -返回类型: Variable(Tensor),数据类型为float32的Tensor - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name="input", shape=[-1, 32, 32], dtype="float32") - label = fluid.layers.data(name="label", shape=[-1,1], dtype="int") - fc_out = fluid.layers.fc(input=data, size=10) - predict = fluid.layers.softmax(input=fc_out) - result = fluid.layers.accuracy(input=predict, label=label, k=5) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - exe.run(fluid.default_startup_program()) - x = np.random.rand(3, 32, 32).astype("float32") - y = np.array([[1],[0],[1]]) - output= exe.run(feed={"input": x,"label": y}, - fetch_list=[result[0]]) - print(output) - - """ - Output: - [array([0.6666667], dtype=float32)] - """ diff --git a/doc/paddle/api/paddle/fluid/layers/argmax_cn.rst b/doc/paddle/api/paddle/fluid/layers/argmax_cn.rst deleted file mode 100644 index 2b3a7857b80b29ecffbccb5f697267ef05afd81b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/argmax_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_tensor_argmax: - -argmax -------------------------------- - -.. py:function:: paddle.argmax(input, axis=None, dtype=None, out=None, keepdims=False, name=None) - -:alias_main: paddle.argmax -:alias: paddle.argmax,paddle.tensor.argmax,paddle.tensor.search.argmax -:update_api: paddle.fluid.layers.argmax - - - - -该OP沿 ``axis`` 计算输入 ``input`` 的最大元素的索引。 - -参数: - - **input** (Variable) - 输入的多维 ``Tensor`` ,支持的数据类型:float32、float64、int8、int16、int32、int64。 - - **axis** (int,可选) - 指定对输入Tensor进行运算的轴, ``axis`` 的有效范围是[-R, R),R是输入 ``input`` 的Rank, ``axis`` -R与绝对值相同的R等价。默认值为0。 - - **dtype** (np.dtype|core.VarDesc.VarType|str)- 输出Tensor的数据类型,可选值为int32,int64,默认值为None,将返回int64类型的结果。 - - **out** (Variable, 可选) – 指定存储运算结果的Tensor。如果设置为None或者不设置,将创建新的Tensor存储运算结果,默认值为None。 - - **keepdims** (bool,可选)- 是否保留进行max index操作的维度,默认值为False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: ``Tensor`` ,数据类型int64 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[[5,8,9,5], - [0,0,1,7], - [6,9,2,4]], - [[5,2,4,2], - [4,7,7,9], - [1,7,0,6]]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(in1) - out1 = paddle.argmax(input=x, axis=-1) - out2 = paddle.argmax(input=x, axis=0) - out3 = paddle.argmax(input=x, axis=1) - out4 = paddle.argmax(input=x, axis=2) - out5 = paddle.argmax(input=x, axis=2, keepdims=True) - print(out1.numpy()) - # [[2 3 1] - # [0 3 1]] - print(out2.numpy()) - # [[0 0 0 0] - # [1 1 1 1] - # [0 0 0 1]] - print(out3.numpy()) - # [[2 2 0 1] - # [0 1 1 1]] - print(out4.numpy()) - # [[2 3 1] - # [0 3 1]] - print(out5.numpy()) - #array([[[2], - # [3], - # [1]], - # [[0], - # [3], - # [1]]]) diff --git a/doc/paddle/api/paddle/fluid/layers/argsort_cn.rst b/doc/paddle/api/paddle/fluid/layers/argsort_cn.rst deleted file mode 100644 index a681b3beefadc7c601a42a23a958792b5bac9939..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/argsort_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_layers_argsort: - -argsort -------------------------------- - -.. py:function:: paddle.fluid.layers.argsort(input,axis=-1,descending=False,name=None) - -:alias_main: paddle.argsort -:alias: paddle.argsort,paddle.tensor.argsort,paddle.tensor.search.argsort -:old_api: paddle.fluid.layers.argsort - - - -对输入变量沿给定轴进行排序,输出排序好的数据和相应的索引,其维度和输入相同。**默认升序排列,如果需要降序排列设置** ``descending=True`` 。 - - -参数: - - **input** (Variable) - 输入的多维 ``Tensor`` ,支持的数据类型:float32、float64、int16、int32、int64、uint8。 - - **axis** (int,可选) - 指定对输入Tensor进行运算的轴, ``axis`` 的有效范围是[-R, R),R是输入 ``x`` 的Rank, ``axis`` 为负时与 ``axis`` +R 等价。默认值为0。 - - **descending** (bool,可选) - 指定算法排序的方向。如果设置为True,算法按照降序排序。如果设置为False或者不设置,按照升序排序。默认值为False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:一组已排序的输出(与 ``input`` 维度相同、数据类型相同)和索引(数据类型为int64)。 - -返回类型:tuple[Variable] - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[[5,8,9,5], - [0,0,1,7], - [6,9,2,4]], - [[5,2,4,2], - [4,7,7,9], - [1,7,0,6]]]).astype(np.float32) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(in1) - out1 = fluid.layers.argsort(input=x, axis=-1) # same as axis==2 - out2 = fluid.layers.argsort(input=x, axis=0) - out3 = fluid.layers.argsort(input=x, axis=1) - print(out1[0].numpy()) - # [[[5. 5. 8. 9.] - # [0. 0. 1. 7.] - # [2. 4. 6. 9.]] - # [[2. 2. 4. 5.] - # [4. 7. 7. 9.] - # [0. 1. 6. 7.]]] - print(out1[1].numpy()) - # [[[0 3 1 2] - # [0 1 2 3] - # [2 3 0 1]] - # [[1 3 2 0] - # [0 1 2 3] - # [2 0 3 1]]] - print(out2[0].numpy()) - # [[[5. 2. 4. 2.] - # [0. 0. 1. 7.] - # [1. 7. 0. 4.]] - # [[5. 8. 9. 5.] - # [4. 7. 7. 9.] - # [6. 9. 2. 6.]]] - print(out3[0].numpy()) - # [[[0. 0. 1. 4.] - # [5. 8. 2. 5.] - # [6. 9. 9. 7.]] - # [[1. 2. 0. 2.] - # [4. 7. 4. 6.] - # [5. 7. 7. 9.]]] diff --git a/doc/paddle/api/paddle/fluid/layers/array_length_cn.rst b/doc/paddle/api/paddle/fluid/layers/array_length_cn.rst deleted file mode 100644 index 27fcaf003b8dab728cded431ae24e525d9e4cb47..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/array_length_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_array_length: - -array_length -------------------------------- - -.. py:function:: paddle.fluid.layers.array_length(array) - - - - -该OP用于获取输入数组 :ref:`cn_api_fluid_LoDTensorArray` 的长度。可以与 :ref:`cn_api_fluid_layers_array_read` 、 :ref:`cn_api_fluid_layers_array_write` 、 :ref:`cn_api_fluid_layers_While` OP结合使用,实现LoDTensorArray的遍历与读写。 - -参数: - - **array** (LoDTensorArray) - 输入的数组LoDTensorArray - -返回:shape为[1]的1-D Tensor, 表示数组LoDTensorArray的长度,数据类型为int64 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - tmp = fluid.layers.zeros(shape=[10], dtype='int32') - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10) - #tmp是shape为[10]的Tensor,将tmp写入到数组arr下标为10的位置,arr的长度因此为11 - arr = fluid.layers.array_write(tmp, i=i) - #查看arr的长度 - arr_len = fluid.layers.array_length(arr) - - #可以通过executor打印出LoDTensorArray的长度 - input = fluid.layers.Print(arr_len, message="The length of LoDTensorArray:") - main_program = fluid.default_main_program() - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(main_program) - -**运行输出** - -.. code-block:: python - - 1569576542 The length of LoDTensorArray: The place is:CPUPlace - Tensor[array_length_0.tmp_0] - shape: [1,] - dtype: l - data: 11, - - #输出shape为[1]的Tensor,值为11,表示LoDTensorArray长度为11 - #dtype为对应C++数据类型,在不同环境下可能显示值不同,但本质一致 - #例如:如果Tensor中数据类型是int64,则对应的C++数据类型为int64_t,所以dtype值为typeid(int64_t).name(), - # 其在MacOS下为'x',linux下为'l',Windows下为'__int64',都表示64位整型变量 diff --git a/doc/paddle/api/paddle/fluid/layers/array_read_cn.rst b/doc/paddle/api/paddle/fluid/layers/array_read_cn.rst deleted file mode 100644 index 6e8cd4fb70ec2f31bbb93822883c0cfc491cb691..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/array_read_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_layers_array_read: - -array_read -------------------------------- - -.. py:function:: paddle.fluid.layers.array_read(array,i) - - - - -该OP用于读取输入数组 :ref:`cn_api_fluid_LoDTensorArray` 中指定位置的数据, ``array`` 为输入的数组, ``i`` 为指定的读取位置。常与 :ref:`cn_api_fluid_layers_array_write` OP配合使用进行LoDTensorArray的读写。 - -例1: -:: - 输入: - 包含4个Tensor的LoDTensorArray,前3个shape为[1],最后一个shape为[1,2]: - input = ([0.6], [0.1], [0.3], [0.4, 0.2]) - 并且: - i = [3] - - 输出: - output = [0.4, 0.2] - -参数: - - **array** (Variable) - 输入的数组LoDTensorArray - - **i** (Variable) - shape为[1]的1-D Tensor,表示从 ``array`` 中读取数据的位置,数据类型为int64 - - -返回:从 ``array`` 中指定位置读取的LoDTensor或Tensor - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - #先创建一个LoDTensorArray,再在指定位置写入Tensor,然后从该位置读取Tensor - import paddle.fluid as fluid - arr = fluid.layers.create_array(dtype='float32') - tmp = fluid.layers.fill_constant(shape=[3, 2], dtype='int64', value=5) - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10) - #tmp是shape为[3,2]的Tensor,将其写入空数组arr的下标10的位置,则arr的长度变为11 - arr = fluid.layers.array_write(tmp, i, array=arr) - #读取arr的下标10的位置的数据 - item = fluid.layers.array_read(arr, i) - - #可以通过executor打印出该数据 - input = fluid.layers.Print(item, message="The LoDTensor of the i-th position:") - main_program = fluid.default_main_program() - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(main_program) - -**输出结果** - -.. code-block:: python - - 1569588169 The LoDTensor of the i-th position: The place is:CPUPlace - Tensor[array_read_0.tmp_0] - shape: [3,2,] - dtype: l - data: 5,5,5,5,5,5, - - #输出了shape为[3,2]的Tensor - #dtype为对应C++数据类型,在不同环境下可能显示值不同,但本质一致 - #例如:如果Tensor中数据类型是int64,则对应的C++数据类型为int64_t,所以dtype值为typeid(int64_t).name(), - # 其在MacOS下为'x',linux下为'l',Windows下为'__int64',都表示64位整型变量 diff --git a/doc/paddle/api/paddle/fluid/layers/array_write_cn.rst b/doc/paddle/api/paddle/fluid/layers/array_write_cn.rst deleted file mode 100644 index 4f59d605093261366a4fea7d2e48dd9b4011158c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/array_write_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_array_write: - -array_write -------------------------------- - -.. py:function:: paddle.fluid.layers.array_write(x, i, array=None) - - - - -该OP将输入的变量 ``x`` 写入到数组 :ref:`cn_api_fluid_LoDTensorArray` ``array`` 的第i个位置,并返回修改后的LoDTensorArray,如果 ``array`` 为None,则创建一个新的LoDTensorArray。常与 :ref:`cn_api_fluid_layers_array_read` OP联合使用对LoDTensorArray进行读写。 - -参数: - - **x** (Variable) – 待写入的数据,多维Tensor或LoDTensor,数据类型支持float32,float64,int32,int64 - - **i** (Variable) – shape为[1]的1-D Tensor,表示写入到输出数组LoDTensorArray的位置,数据类型为int64 - - **array** (Variable,可选) – 指定写入 ``x`` 的数组LoDTensorArray。默认值为None, 此时将创建新的LoDTensorArray并作为结果返回 - -返回: 写入输入 ``x`` 之后的LoDTensorArray - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - tmp = fluid.layers.fill_constant(shape=[3, 2], dtype='int64', value=5) - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10) - #将tmp写入数组arr下标为10的位置,并返回arr - arr = fluid.layers.array_write(tmp, i=i) - - #此时arr是长度为11的LoDTensorArray,可以通过array_read来查看下标为10的LoDTensor,并将之打印出来 - item = fluid.layers.array_read(arr, i=i) - input = fluid.layers.Print(item, message="The content of i-th LoDTensor:") - main_program = fluid.default_main_program() - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(main_program) - -**输出结果** - -.. code-block:: python - - 1570533133 The content of i-th LoDTensor: The place is:CPUPlace - Tensor[array_read_0.tmp_0] - shape: [3,2,] - dtype: l - data: 5,5,5,5,5,5, - #返回了shape为[3,2]的Tensor,即为上面写入的tmp - #dtype为对应C++数据类型,在不同环境下可能显示值不同,但本质一致 - #例如:如果Tensor中数据类型是int64,则对应的C++数据类型为int64_t,所以dtype值为typeid(int64_t).name(), - # 其在MacOS下为'x',linux下为'l',Windows下为'__int64',都表示64位整型变量 diff --git a/doc/paddle/api/paddle/fluid/layers/auc_cn.rst b/doc/paddle/api/paddle/fluid/layers/auc_cn.rst deleted file mode 100755 index e915875f5d306abdf7ebf51cc65a2cbdf66ca5de..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/auc_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_fluid_layers_auc: - -auc -------------------------------- - -.. py:function:: paddle.fluid.layers.auc(input, label, curve='ROC', num_thresholds=200, topk=1, slide_steps=1) - - - - -**Area Under the Curve(AUC) Layer** - -该层根据前向输出和标签计算AUC,在二分类(binary classification)估计中广泛使用。 - -注:如果输入标注包含一种值,只有0或1两种情况,数据类型则强制转换成布尔值。相关定义可以在这里: https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve 找到 - -有两种可能的曲线: - -1. ROC:受试者工作特征曲线 - -2. PR:准确率召回率曲线 - -参数: - - **input** (Tensor|LoDTensor) - 数据类型为float32,float64。浮点二维变量,值的范围为[0,1]。每一行降序排列。该输入为网络预测值的输入。 - - **label** (Tensor|LoDTensor) - 数据类型为int32,int64。二维整型变量,为训练数据的标签。 - - **curve** (str) - 曲线类型,可以为 ``ROC`` 或 ``PR``,默认 ``ROC``。 - - **num_thresholds** (int) - 将roc曲线离散化时使用的临界值数。默认200。 - - **topk** (int) - 取topk的输出值用于计算。 - - **slide_steps** (int) - 当计算batch auc时,不仅用当前步也用于先前步。slide_steps=1,表示用当前步;slide_steps = 3表示用当前步和前两步;slide_steps = 0,则用所有步。 - -返回:代表当前AUC的一个元组。 -返回的元组为auc_out, batch_auc_out, [batch_stat_pos, batch_stat_neg, stat_pos, stat_neg]。 -auc_out为准确率的结果。 -batch_auc_out为batch准确率的结果。 -batch_stat_pos为batch计算时label=1的统计值 -batch_stat_neg为batch计算时label=0的统计值 -stat_pos计算时label=1的统计值 -stat_neg为计算时label=0的统计值 - -返回类型: Variable(Tensor),数据类型为float32或float64的Tensor。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name="input", shape=[-1, 32,32], dtype="float32") - label = fluid.layers.data(name="label", shape=[1], dtype="int") - fc_out = fluid.layers.fc(input=data, size=2) - predict = fluid.layers.softmax(input=fc_out) - result=fluid.layers.auc(input=predict, label=label) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - exe.run(fluid.default_startup_program()) - x = np.random.rand(3,32,32).astype("float32") - y = np.array([1,0,1]) - output= exe.run(feed={"input": x,"label": y}, - fetch_list=[result[0]]) - print(output) - """ - output: - [array([0.5])] - """ - - diff --git a/doc/paddle/api/paddle/fluid/layers/autoincreased_step_counter_cn.rst b/doc/paddle/api/paddle/fluid/layers/autoincreased_step_counter_cn.rst deleted file mode 100644 index 821b793f511e943ec53e253c1df108ac60286fea..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/autoincreased_step_counter_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_autoincreased_step_counter: - -autoincreased_step_counter -------------------------------- - - -.. py:function:: paddle.fluid.layers.autoincreased_step_counter(counter_name=None, begin=1, step=1) - -:api_attr: 声明式编程模式(静态图) - - - -创建一个自增变量,每个迭代累加一次,默认首次返回值为 1,默认累加步长为 1。 - -参数: - - **counter_name** (str, 可选) - 该计数器的名称,默认为 ``@STEP_COUNTER@`` 。 - - **begin** (int) - 该计数器返回的第一个值。 - - **step** (int) - 累加步长。 - -返回:累加结果,数据类型为 int64 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - global_step = fluid.layers.autoincreased_step_counter( - counter_name='@LR_DECAY_COUNTER@', begin=0, step=1) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/batch_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/batch_norm_cn.rst deleted file mode 100644 index 95fa58257d7180f8a16176aa7b754f0b20124507..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/batch_norm_cn.rst +++ /dev/null @@ -1,111 +0,0 @@ -.. _cn_api_fluid_layers_batch_norm: - -batch_norm -------------------------------- - - -.. py:function:: paddle.fluid.layers.batch_norm(input, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, data_layout='NCHW', in_place=False, name=None, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False) - -:api_attr: 声明式编程模式(静态图) - - - -批正则化层(Batch Normalization Layer) - -可用作卷积和全连接操作的批正则化函数,根据当前批次数据按通道计算的均值和方差进行正则化。该层需要的数据格式如下: - -1.NHWC[batch,in_height,in_width,in_channels] -2.NCHW[batch,in_channels,in_height,in_width] - -更多详情请参考 : `Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift `_ - -``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 - - moving\_mean = moving\_mean * momentum + mini\_batch\_mean * (1. - momentum) \\ - moving\_variance = moving\_variance * momentum + mini\_batch\_var * (1. - momentum) - -moving_mean和moving_var是训练过程中统计得到的全局均值和方差,在预测或者评估中使用。 -`is_test` 参数只能用于测试或者评估阶段,如果想在训练阶段使用预训练模型的全局均值和方差的话,可以设置 `use_global_stats=True`. - -当use_global_stats = True时, :math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 不是一个minibatch的统计数据。 它们是全局(或运行)统计数据(moving_mean和moving_variance),通常来自预先训练好的模型。训练和测试(或预测)具有相同的行为: - -.. math:: - - \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\ - \sigma_{\beta}^{2} + \epsilon}} \\ - y_i &\gets \gamma \hat{x_i} + \beta - - - -参数: - - **input** (Variable) - batch_norm算子的输入特征,是一个Variable类型,输入维度可以是 2, 3, 4, 5。数据类型:flaot16, float32, float64。 - - **act** (string)- 激活函数类型,可以是leaky_realu、relu、prelu等。默认:None。 - - **is_test** (bool) - 指示它是否在测试阶段,非训练阶段使用训练过程中统计到的全局均值和全局方差。默认:False。 - - **momentum** (float|Variable)- 此值用于计算 moving_mean 和 moving_var,是一个float类型或者一个shape为[1],数据类型为float32的Variable类型。更新公式为: :math:`moving\_mean = moving\_mean * momentum + new\_mean * (1. - momentum)` , :math:`moving\_var = moving\_var * momentum + new\_var * (1. - momentum)` , 默认:0.9。 - - **epsilon** (float)- 加在分母上为了数值稳定的值。默认:1e-5。 - - **param_attr** (ParamAttr|None) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。batch_norm算子默认的权重初始化是1.0。 - - **bias_attr** (ParamAttr|None)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。batch_norm算子默认的偏置初始化是0.0。 - - **data_layout** (string) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - **in_place** (bool)- batch_norm的输出复用输入的tensor,可以节省显存。默认:False。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **moving_mean_name** (string)- moving_mean的名称,存储全局均值。如果将其设置为None, ``batch_norm`` 将随机命名全局均值;否则, ``batch_norm`` 将命名全局均值为 ``moving_mean_name`` 。默认:None。 - - **moving_variance_name** (string)- moving_variance的名称,存储全局变量。如果将其设置为None, ``batch_norm`` 将随机命名全局方差;否则, ``batch_norm`` 将命名全局方差为 ``moving_variance_name`` 。默认:None。 - - **do_model_average_for_mean_and_var** (bool,默认False)- 是否为mean和variance做模型均值。 - - **use_global_stats** (bool) – 是否使用全局均值和方差。 在预测或测试模式下,将use_global_stats设置为true或将is_test设置为true,并且行为是等效的。 在训练模式中,当设置use_global_stats为True时,在训练期间也使用全局均值和方差。默认:False。 - -返回: 维度和输入相同的Tensor,在输入中运用批正则后的结果。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name='x', shape=[3, 7, 3, 7], dtype='float32', append_batch_size=False) - hidden1 = fluid.layers.fc(input=x, size=200) - param_attr = fluid.ParamAttr(name='batch_norm_w', initializer=fluid.initializer.Constant(value=1.0)) - bias_attr = fluid.ParamAttr(name='batch_norm_b', initializer=fluid.initializer.Constant(value=0.0)) - hidden2 = fluid.layers.batch_norm(input=hidden1, param_attr = param_attr, bias_attr = bias_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(3, 7, 3, 7)).astype('float32') - output = exe.run(feed={"x": np_x}, fetch_list = [hidden2]) - print(output) - -.. code-block:: python - - # batch_norm with momentum as Variable - import paddle.fluid as fluid - import paddle.fluid.layers.learning_rate_scheduler as lr_scheduler - - def get_decay_momentum(momentum_init, decay_steps, decay_rate): - global_step = lr_scheduler._decay_step_counter() - momentum = fluid.layers.create_global_var( - shape=[1], - value=float(momentum_init), - dtype='float32', - # set persistable for save checkpoints and resume - persistable=True, - name="momentum") - div_res = global_step / decay_steps - decayed_momentum = momentum_init * (decay_rate**div_res) - fluid.layers.assign(decayed_momentum, momentum) - - return momentum - - x = fluid.data(name='x', shape=[3, 7, 3, 7], dtype='float32') - hidden1 = fluid.layers.fc(input=x, size=200, param_attr='fc1.w') - momentum = get_decay_momentum(0.9, 1e5, 0.9) - hidden2 = fluid.layers.batch_norm(input=hidden1, momentum=momentum) - diff --git a/doc/paddle/api/paddle/fluid/layers/bilinear_tensor_product_cn.rst b/doc/paddle/api/paddle/fluid/layers/bilinear_tensor_product_cn.rst deleted file mode 100644 index d65e2abdc70a6a109b69ae474ed64f49167ff37e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/bilinear_tensor_product_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_bilinear_tensor_product: - -bilinear_tensor_product -------------------------------- - - -.. py:function:: paddle.fluid.layers.bilinear_tensor_product(x, y, size, act=None, name=None, param_attr=None, bias_attr=None) - -:api_attr: 声明式编程模式(静态图) - - - -该层对两个输入执行双线性张量积。 - -例如: - -.. math:: - out_{i} = x * W_{i} * {y^\mathrm{T}}, i=0,1,...,size-1 - -在这个公式中: - - :math:`x`: 第一个输入,包含 :math:`M` 个元素,形状为 [batch_size, M]。 - - :math:`y`: 第二个输入,包含 :math:`N` 个元素,形状为 [batch_size, N]。 - - :math:`W_{i}`: 第 :math:`i` 个被学习的权重,形状是 [M, N]。 - - :math:`out_{i}`: 输出的第 :math:`i` 个元素,形状是 [batch_size, size]。 - - :math:`y^\mathrm{T}`: :math:`y_{2}` 的转置。 - -参数: - - **x** (Variable): 2-D 输入张量,形状为 [batch_size, M], 数据类型为 float32 或 float64。 - - **y** (Variable): 2-D 输入张量,形状为 [batch_size, N],数据类型与 **x** 一致。 - - **size** (int): 此层的维度。 - - **act** (str, 可选): 应用到该层输出的激活函数。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为 None。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为 None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) : 指定偏置参数属性的对象。默认值为 None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - -返回: 一个形为 [batch_size, size] 的 2-D 张量。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - layer1 = fluid.layers.data("t1", shape=[-1, 5], dtype="float32") - layer2 = fluid.layers.data("t2", shape=[-1, 4], dtype="float32") - tensor = fluid.layers.bilinear_tensor_product(x=layer1, y=layer2, size=1000) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/chunk_eval_cn.rst b/doc/paddle/api/paddle/fluid/layers/chunk_eval_cn.rst deleted file mode 100644 index c264a071ab03ca4a53279da3906db671e499b1d2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/chunk_eval_cn.rst +++ /dev/null @@ -1,109 +0,0 @@ -.. _cn_api_fluid_layers_chunk_eval: - -chunk_eval -------------------------------- - -.. py:function:: paddle.fluid.layers.chunk_eval(input, label, chunk_scheme, num_chunk_types, excluded_chunk_types=None, sqe_length=None) - - - - -该OP计算语块识别(chunk detection)的准确率、召回率和F1值,常用于命名实体识别(NER,语块识别的一种)等序列标注任务中。 - -语块识别的基础请参考 `Chunking with Support Vector Machines `_ - -该OP支持IOB,IOE,IOBES和IO(plain)的标注方式。以下是这些标注方式在命名实体识别示例中的使用: - -:: - - - ====== ====== ====== ===== == ============ ===== ===== ===== == ========= - Li Ming works at Agricultural Bank of China in Beijing. - ====== ====== ====== ===== == ============ ===== ===== ===== == ========= - IO I-PER I-PER O O I-ORG I-ORG I-ORG I-ORG O I-LOC - IOB B-PER I-PER O O B-ORG I-ORG I-ORG I-ORG O B-LOC - IOE I-PER E-PER O O I-ORG I-ORG I-ORG E-ORG O E-LOC - IOBES B-PER E-PER O O I-ORG I-ORG I-ORG E-ORG O S-LOC - ====== ====== ====== ===== == ============ ===== ===== ===== == ========= - -例中有PER(人名),ORG(机构名)和LOC(地名)三种语块类型(命名实体类型)。可以看到,一个完整的标签包括标注类型(tag type)和语块类型(chunk type),形式为 ``标注类型-语块类型(tag type-chunk type)`` 。 - -由于该OP在计算实现上使用的是标签id而非标签字符串,为使其能正确运行,标签id要能够转换为相应的标注类型(tag type)和语块类型(chunk type)。该OP使用了下面的方式完成映射转换: - -:: - - - tag_type = label % num_tag_type - chunk_type = label / num_tag_type - -其中num_tag_type是标注方式中的标签类型(tag type)数,各标注方式的tag type取值如下: - -:: - - - Scheme Begin Inside End Single - plain 0 - - - - IOB 0 1 - - - IOE - 0 1 - - IOBES 0 1 2 3 - -据此,在上面的NER例子中,若标注方式是IOB,语块类型包括ORG、PER和LOC三种,则所有标签及其对应id如下: - -:: - - - B-ORG 0 - I-ORG 1 - B-PER 2 - I-PER 3 - B-LOC 4 - I-LOC 5 - O 6 - -从标签id可以正确的得到其对应的标注类型(tag type)和语块类型(chunk type)。 - -参数: - - **input** (Variable) - 表示网络预测的标签,为Tensor或LoD level为1的LoDTensor。Tensor时,其形状为 :math:`[N, M, 1]` ,其中 :math:`N` 表示batch size, :math:`M` 表示序列长度;LoDTensor时,其形状为 :math:`[N, 1]` 或 :math:`[N]` ,其中 :math:`N` 表示所有序列长度之和。数据类型为int64。 - - **label** (Variable) - 表示真实标签(ground-truth)的Tensor或LoDTensor,和 ``input`` 具有相同形状、LoD和数据类型。 - - **chunk_scheme** (str) - 标注方式,必须是IOB,IOE,IOBES或者plain中的一种。 - - **num_chunk_types** (int) - 表示标签中的语块类型数。 - - **excluded_chunk_types** (list,可选) - 表示不计入统计的语块类型,需要为语块类型(int表示)的列表。默认值为空的list。 - - **seq_length** (Variable,可选) - 当输入 ``input`` 和 ``label`` 是Tensor而非LoDTensor时,用来指示输入中每个序列长度的1-D Tensor。数据类型为int64。可以为空,默认为None。 - -返回:Variable的元组。元组中包含准确率、召回率、F1值,以及识别出的语块数目、标签中的语块数目、正确识别的语块数目。每个均是单个元素的Tensor,准确率、召回率、F1值的数据类型为float32,其他的数据类型为int64。 - -返回类型:tuple - -**代码示例**: - -.. code-block:: python: - - import paddle.fluid as fluid - - dict_size = 10000 - label_dict_len = 7 - sequence = fluid.data( - name='id', shape=[None, 1], lod_level=1, dtype='int64') - embedding = fluid.embedding( - input=sequence, size=[dict_size, 512]) - hidden = fluid.layers.fc(input=embedding, size=512) - label = fluid.data( - name='label', shape=[None, 1], lod_level=1, dtype='int64') - crf = fluid.layers.linear_chain_crf( - input=hidden, label=label, param_attr=fluid.ParamAttr(name="crfw")) - crf_decode = fluid.layers.crf_decoding( - input=hidden, param_attr=fluid.ParamAttr(name="crfw")) - fluid.layers.chunk_eval( - input=crf_decode, - label=label, - chunk_scheme="IOB", - num_chunk_types=int((label_dict_len - 1) / 2)) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/concat_cn.rst b/doc/paddle/api/paddle/fluid/layers/concat_cn.rst deleted file mode 100644 index aa36dd238d01ef6804bb8e4175650ab3b0244429..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/concat_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_tensor_concat: - -concat -------------------------------- - -.. py:function:: paddle.tensor.concat(x, axis=0, name=None) - - -该OP对输入沿 ``axis`` 轴进行联结,返回一个新的Tensor。 - -参数: - - **x** (list|tuple) - 待联结的Tensor list或者Tensor tuple ,支持的数据类型为:bool, float16, float32、float64、int32、int64, ``x`` 中所有Tensor的数据类型应该一致。 - - **axis** (int|Tensor,可选) - 指定对输入 ``x`` 进行运算的轴,可以是整数或者形状为[1]的Tensor,数据类型为int32或者int64。 ``axis`` 的有效范围是[-R, R),R是输入 ``x`` 中Tensor的维度, ``axis`` 为负值时与 :math:`axis + R` 等价。默认值为0。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:联结后的Tensor ,数据类型和 ``x`` 中的Tensor相同。 - -抛出异常: - - ``TypeError``: - 当输入 ``x`` 的类型不是list或者tuple时。 - - ``TypeError``: - 当输入 ``x`` 的数据类型不是 bool,float16, float32, float64, int32, int64时。 - - ``TypeError``: - 当 ``axis`` 的类型不是int或者Tensor时。 当 ``axis`` 是Tensor的时候其数据类型不是int32或者int64时。 - - ``TypeError``: - 当输入 ``x`` 中的Tensor存在数据类型不一致时。 - -**代码示例**: - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() # Now we are in imperative mode - in1 = np.array([[1, 2, 3], - [4, 5, 6]]) - in2 = np.array([[11, 12, 13], - [14, 15, 16]]) - in3 = np.array([[21, 22], - [23, 24]]) - x1 = paddle.imperative.to_variable(in1) - x2 = paddle.imperative.to_variable(in2) - x3 = paddle.imperative.to_variable(in3) - zero = paddle.full(shape=[1], dtype='int32', fill_value=0) - # When the axis is negative, the real axis is (axis + Rank(x)) - # As follow, axis is -1, Rank(x) is 2, the real axis is 1 - out1 = paddle.concat(x=[x1, x2, x3], axis=-1) - out2 = paddle.concat(x=[x1, x2], axis=0) - out3 = paddle.concat(x=[x1, x2], axis=zero) - # out1 - # [[ 1 2 3 11 12 13 21 22] - # [ 4 5 6 14 15 16 23 24]] - # out2 out3 - # [[ 1 2 3] - # [ 4 5 6] - # [11 12 13] - # [14 15 16]] diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/DynamicRNN_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/DynamicRNN_cn.rst deleted file mode 100644 index e082d6bf6e58467803050e426a8fa1cc1fcc9193..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/DynamicRNN_cn.rst +++ /dev/null @@ -1,431 +0,0 @@ -.. _cn_api_fluid_layers_DynamicRNN: - -DynamicRNN -=================== - - -.. py:class:: paddle.fluid.layers.DynamicRNN(name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该类型的输入仅支持LoDTensor,如果您需要处理的输入数据是Tensor类型, -请使用StaticRNN( fluid.layers.** :ref:`cn_api_fluid_layers_StaticRNN` **)。** - -DynamicRNN可以处理一批序列数据,其中每个样本序列的长度可以不同,每个序列的长度信息记录在LoD里面。 -DynamicRNN会按照时间步 (time step) 将输入序列展开,用户可以在 :code:`block` 中定义每个时间步要进行的运算。 -由于每个输入样本的序列长度不相同,RNN执行的step数由最长的序列决定。 -DynamicRNN的实现采用非padding的方式,每个时间步都会对输入数据进行收缩处理,移除已经处理完的序列的信息。 -因此,随着时间步的增加,每个时间步处理的样本数(batch size)会逐渐减少。 - -.. warning:: - 目前不支持在DynamicRNN的 :code:`block` 中任何层上配置 :code:`is_sparse = True` 。 - -参数: - - **name** (str,可选) - 具体用法参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -成员函数列表: - - :ref:`cn_api_fluid_layers_DynamicRNN_step_input` ,设置输入变量 - - :ref:`cn_api_fluid_layers_DynamicRNN_static_input` ,设置静态输入变量 - - :ref:`cn_api_fluid_layers_DynamicRNN_block` ,定义每个时间步执行的运算 - - :ref:`cn_api_fluid_layers_DynamicRNN_memory` ,创建用于在时间步之间传递信息的变量 - - :ref:`cn_api_fluid_layers_DynamicRNN_update_memory` ,更新需要传递的时间步信息 - - :ref:`cn_api_fluid_layers_DynamicRNN_output` ,设置时间步的输出变量 - - :ref:`cn_api_fluid_layers_DynamicRNN_call` ,获取RNN的输出序列 - - -.. _cn_api_fluid_layers_DynamicRNN_step_input: - -成员函数 step_input ---------------------------------- - -.. py:method:: step_input(x, level=0) - -将序列x设置为DynamicRNN输入。输入序列中最长的序列长度,将决定了RNN运算的长度。 -必须至少为DynamicRNN设置一个输入,也可以设置多个输入。 -如果多个输入x的 :code:`x.lod_level` 都为1,则要求多个输入LoDTensor携带完全相同的LoD信息。 -当输入x的 :code:`x.lod_level >= 2` 时,输入序列将按指定level进行展开,每个时间步携带 :code:`x.lod_level - level - 1` 层LoD信息, -此时要求多个输入序列的LoD在指定level上的信息完全一样。 - -- 示例1 - -.. code-block:: text - - # 输入,其中Si代表维度为[1, N]的数据 - level = 0 - x.lod = [[2, 1, 3]] - x.shape = [6, N] - x.data = [[S0], - [S0], - [S1], - [S2], - [S2], - [S2]] - - # 输出 - # step 0,持有3个序列的time step数据 - out.lod = [[]] - out.shape = [3, N] - out.data = [[S2], - [S0], - [S1]] - - # step 1,持有2个序列的time step数据 - out.lod = [[]] - out.shape = [2, N] - out.data = [[S2], - [S0]] - - # step 2,持有1个序列的time step数据 - out.lod = [[]] - out.shape = [1, N] - out.data = [[S2]] - - -参数: - - **x** (Variable) - 输入序列LoDTensor,代表由长度不同的多个序列组成的minibatch,要求 :code:`x.lod_level >= 1`。输入x第一个维度的值等于minibatch内所有序列的长度之和。RNN有多个输入序列时,多个输入LoDTensor的第一个维度必须相同,其它维度可以不同。支持的数据类型有:bool,float16,float32,float64,int8,int16,int32,int64,uint8。 - - **level** (int,可选) - 用于拆分输入序列的LoD层级,取值范围是 :math:`[0, x.lod\_level)`,默认值是0。 - -返回: 输入序列每个时间步的数据。执行第 :code:`step_idx` 个时间步时,若输入 :code:`x` 中有 :code:`num_sequences` 个长度不小于 :code:`step_idx` 的序列,则这个时间步返回值中只包含了这 :code:`num_sequences` 个序列第 :code:`step_idx` 时间步的数据。数据类型和输入一致。如果 :code:`x.lod_level == 1` ,返回值的维度是 :math:`\{num\_sequences, x.shape[1], ...\}`。否则,返回值也是一个变长的LoDTensor。 - -返回类型:Variable - -抛出异常: - - :code:`ValueError` :当 :code:`step_input()` 接口在RNN :code:`block()` 接口外面被调用时。 - - :code:`TypeError`:当输入x类型不是Variable时。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - sentence = fluid.data(name='sentence', shape=[None, 1], dtype='int64', lod_level=1) - embedding = fluid.layers.embedding(input=sentence, size=[65536, 32], is_sparse=True) - - drnn = fluid.layers.DynamicRNN() - with drnn.block(): - # 将embedding标记为RNN的输入,每个时间步取句子中的一个字进行处理 - word = drnn.step_input(embedding) - # 将memory初始化为一个值为0的常量Tensor,shape=[batch_size, 200],其中batch_size由输入embedding决定 - memory = drnn.memory(shape=[200]) - hidden = fluid.layers.fc(input=[word, memory], size=200, act='relu') - # 用hidden更新memory - drnn.update_memory(ex_mem=memory, new_mem=hidden) - # 将hidden标记为RNN的输出 - drnn.output(hidden) - - # 获得RNN的计算结果 - rnn_output = drnn() - - -.. _cn_api_fluid_layers_DynamicRNN_static_input: - -成员函数 static_input ---------------------------------- - -.. py:method:: static_input(x) - -将变量设置为RNN的静态输入。 - -- 示例1,静态输入携带LoD信息 - -.. code-block:: text - - # RNN的输入见step_input中的示例 - # 静态输入,其中Si代表维度为[1, M]的数据 - x.lod = [[3, 1, 2]] - x.shape = [6, M] - x.data = [[S0], - [S0], - [S0], - [S1], - [S2], - [S2]] - - # step 0,持有3个序列对应的数据 - out.lod = [[2, 3, 1]] - out.shape = [6, M] - out.data = [[S2], - [S2], - [S0], - [S0], - [S0], - [S1]] - - # step 1,持有2个序列对应的数据 - out.lod = [[2, 3]] - out.shape = [5, M] - out.data = [[S2], - [S2], - [S0], - [S0], - [S0]] - - # step 2,持有1个序列对应的数据 - out.lod = [[2]] - out.shape = [2, M] - out.data = [[S2], - [S2]] - - -- 示例2,静态输入不携带LoD信息 - -.. code-block:: text - - # RNN的输入见step_input中的示例 - # 静态输入,其中Si代表维度为[1, M]的数据 - x.lod = [[]] - x.shape = [3, M] - x.data = [[S0], - [S1], - [S2]] - - # step 0,持有3个序列对应的数据 - out.lod = [[]] - out.shape = [3, M] - out.data = [[S2], - [S0], - [S1]] - - # step 1,持有2个序列对应的数据 - out.lod = [[]] - out.shape = [2, M] - out.data = [[S2], - [S0]] - - # step 2,持有1个序列对应的数据 - out.lod = [[]] - out.shape = [1, M] - out.data = [[S2]] - - -参数: - - **x** (Variable) - 静态输入序列LoDTensor,要求持有与输入LoDTensor(通过 :code:`step_input` 设置的输入)相同的序列个数。如果输入x的LoD信息为空,则会被当成由 :code:`x.shape[0]` 个长度为1序列组成。支持的数据类型有:bool,float16,float32,float64,int8,int16,int32,int64,uint8。 - -返回: 经过按照RNN输入LoD信息重排序、且收缩处理后的静态输入LoDTensor。执行第 :code:`step_idx` 个时间步时,如果输入序列中只有 :code:`num_sequences` 长度不小于 :code:`step_idx` 的序列,静态输入也会进行收缩处理,只返回对应的 :code:`num_sequences` 个序列对应的数据。数据类型和输入一致。如果 :code:`x.lod == None` ,返回值的维度是 :math:`\{num\_sequences, x.shape[1], ...\}` 。否则,返回值是一个变长的LoDTensor。 - -返回类型:Variable - -抛出异常: - - :code:`ValueError`:当 :code:`static_input()` 接口在RNN :code:`block()` 接口外面被调用时。 - - :code:`TypeError`:当输入x类型不是Variable类型时。 - - :code:`RuntimeError`:当 :code:`static_input()` 接口在 :code:`step_input()` 接口之前被调用时。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - sentence = fluid.data(name='sentence', shape=[None, 32], dtype='float32', lod_level=1) - encoder_proj = fluid.data(name='encoder_proj', shape=[None, 32], dtype='float32', lod_level=1) - decoder_boot = fluid.data(name='boot', shape=[None, 10], dtype='float32') - - drnn = fluid.layers.DynamicRNN() - with drnn.block(): - # 将sentence标记为RNN的输入,每个时间步取句子中的一个字进行处理 - current_word = drnn.step_input(sentence) - # 将encode_proj标记为RNN的静态输入 - encoder_word = drnn.static_input(encoder_proj) - # 使用boot_memory初始化memory,并且需要依据输入序列进行重排序 - memory = drnn.memory(init=decoder_boot, need_reorder=True) - fc_1 = fluid.layers.fc(input=encoder_word, size=30) - fc_2 = fluid.layers.fc(input=current_word, size=30) - decoder_inputs = fc_1 + fc_2 - hidden, _, _ = fluid.layers.gru_unit(input=decoder_inputs, hidden=memory, size=30) - # 用hidden更新memory - drnn.update_memory(ex_mem=memory, new_mem=hidden) - out = fluid.layers.fc(input=hidden, size=10, bias_attr=True, act='softmax') - # 将out标记为RNN的输出 - drnn.output(out) - - # 获得RNN的计算结果 - rnn_output = drnn() - - -.. _cn_api_fluid_layers_DynamicRNN_block: - -成员函数 block ---------------------------------- - -.. py:method:: block() - -定义每个时间步执行的操作。 :code:`block` 语句里面定义的算子序列,将会被执行 :code:`max_sequence_len` 次( :code:`max_sequence_len` 是输入序列中大的序列长度)。 - -抛出异常: - - :code:`ValueError`:当RNN :code:`block()` 接口被多次调用时。 - - -.. _cn_api_fluid_layers_DynamicRNN_memory: - -成员函数 memory ---------------------------------- - -.. py:method:: memory(init=None, shape=None, value=0.0, need_reorder=False, dtype='float32') - -为RNN创建一个memory变量,用于在时间步之间传递信息。 -它可以用一个已有的Tensor来初始化,也可以初始化为一个特定维度的常量Tensor。 - -参数: - - **init** (Variable,可选) – 设置memory初始值的LoDTensor。如果init不是None,将使用init来初始化memory,要求持有与输入LoDTensor(通过 :code:`step_input` 设置的输入)相同的序列个数。如果输入init的LoD信息为空,则会被当成由 :code:`init.shape[0]` 个长度为1序列组成。默认值是None。 - - **shape** (list|tuple,可选) – 当init是None时,用来设置memory的维度。注意:shape中不包含batch_size。若设置 :math:`shape=\{D_1, D_2, ...\}`,memory Tensor的实际维度为 :math:`\{batch\_size, D_1, D_2, ...\}`,其中batch_size由输入序列决定。默认值是None。 - - **value** (float,可选) – 当init是None时,用来设置memory的初始值。默认值是0.0。 - - **need_reorder** (bool,可选) – 当init不是None时,用来决定init是否需要重新排序。动态RNN在计算时,会按照输入LoDTensor中序列的长度对输入进行排序,因此当init中的信息与输入序列样本紧密关联时,需要设置 :code:`need_reorder=True`。默认值是False。 - - **dtype** (str|numpy.dtype,可选) – 当init是None是,初始化memory的数据类型。默认值是"float32"。可设置的字符串值有:"float32","float64","int32","int64"。 - -返回:经过收缩处理后的memory LoDTensor。执行第 :code:`step_idx` 个时间步时,如果输入序列中只有 :code:`num_sequences` 长度不小于 :code:`step_idx` 的序列,memory也会进行收缩处理,只返回对应的 :code:`num_sequences` 个序列对应的数据。 - -返回类型:Variable - -抛出异常: - - :code:`ValueError`:当 :code:`memory()` 接口在RNN :code:`block()` 接口外面被调用时。 - - :code:`TypeError`:当init被设置了,但是不是Variable类型时。 - - :code:`ValueError`:当 :code:`memory()` 接口在 :code:`step_input()` 接口之前被调用时。 - -**代码示例一** - -.. code-block:: python - - import paddle.fluid as fluid - - sentence = fluid.data(name='sentence', shape=[None, 32], dtype='float32', lod_level=1) - boot_memory = fluid.data(name='boot', shape=[None, 10], dtype='float32') - - drnn = fluid.layers.DynamicRNN() - with drnn.block(): - # 将sentence标记为RNN的输入,每个时间步取句子中的一个字进行处理 - word = drnn.step_input(sentence) - # 使用boot_memory初始化memory,并且需要依据输入序列进行重排序 - memory = drnn.memory(init=boot_memory, need_reorder=True) - hidden = fluid.layers.fc(input=[word, memory], size=10, act='tanh') - # 用hidden更新memory - drnn.update_memory(ex_mem=memory, new_mem=hidden) - # 将hidden标记为RNN的输出 - drnn.output(hidden) - - # 获得RNN的计算结果 - rnn_output = drnn() - - -**代码示例二** - -.. code-block:: python - - import paddle.fluid as fluid - - sentence = fluid.data(name='sentence', shape=[None, 32], dtype='float32', lod_level=1) - - drnn = fluid.layers.DynamicRNN() - with drnn.block(): - # 将sentence标记为RNN的输入,每个时间步取句子中的一个字进行处理 - word = drnn.step_input(sentence) - # 将memory初始化为一个值为0的常量Tensor,shape=[batch_size, 10],其中batch_size由输入sentence决定 - memory = drnn.memory(shape=[10], dtype='float32', value=0) - hidden = fluid.layers.fc(input=[word, memory], size=10, act='tanh') - # 用hidden更新memory - drnn.update_memory(ex_mem=memory, new_mem=hidden) - # 将hidden标记为RNN的输出 - drnn.output(hidden) - - # 获得RNN的计算结果 - rnn_output = drnn() - - -.. _cn_api_fluid_layers_DynamicRNN_update_memory: - -成员函数 update_memory ---------------------------------- - -.. py:method:: update_memory(ex_mem, new_mem) - -将需要在时间步之间传递的信息更新。 - -参数: - - **ex_mem** (Variable) - 上一个时间步的信息。 - - **new_mem** (Variable) - 新的时间步信息。:code:`new_mem` 的维度和数据类型必须与 :code:`ex_mem` 一致。 - -返回:无 - -抛出异常: - - :code:`ValueError`:当 :code:`update_memory()` 接口在RNN :code:`block()` 接口外面被调用时。 - - :code:`TypeError`:当 :code:`ex_mem` 或 :code:`new_mem` 不是Variable类型时。 - - :code:`ValueError`:当 :code:`ex_mem` 不是使用 :code:`memory()` 接口定义的memory时。 - - :code:`ValueError`:当 :code:`update_memory()` 接口在 :code:`step_input()` 接口之前被调用时。 - - -.. _cn_api_fluid_layers_DynamicRNN_output: - -成员函数 output ---------------------------------- - -.. py:method:: output(*outputs) - -设置outputs为RNN每个时间步的输出变量。 - -参数: - - **\*outputs** (Variable ...) - 输出Tensor,可同时将多个Variable标记为输出。 - -返回:无 - -抛出异常: - - :code:`ValueError`:当 :code:`output()` 接口在RNN :code:`block()` 接口外面被调用时。 - - -.. _cn_api_fluid_layers_DynamicRNN_call: - -成员函数 __call__ ---------------------------------- - -.. py:method:: __call__() - -获取RNN计算的输出序列。 - -若定义了 :code:`drnn = DynamicRNN()`,则可以调用 :code:`drnn()` 获得输出序列,该输出序列是通过将每一个时间步的output数据合并得到的一个LoDTensor。 -当RNN的输入x(通过 :code:`step_input()` 接口设置)的 :code:`x.lod_level` 为1时,该输出LoDTensor将会和输入x持有完全相同的LoD信息。 -通过 :code:`drnn()` 获取的RNN输出LoDTensor中包含了所有时间步的计算结果,可调用 :ref:`cn_api_fluid_layers_sequence_last_step` 获取最后一个时间步的计算结果。 - -参数: - 无 - -返回:RNN的输出序列。 - -返回类型:Variable或Variable list - -抛出异常: - - :code:`ValueError` :当 :code:`__call__()` 接口在RNN :code:`block()` 定义之前被调用时。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - sentence = fluid.data(name='sentence', shape=[None, 32], dtype='float32', lod_level=1) - encoder_proj = fluid.data(name='encoder_proj', shape=[None, 32], dtype='float32', lod_level=1) - decoder_boot = fluid.data(name='boot', shape=[None, 10], dtype='float32') - - drnn = fluid.layers.DynamicRNN() - with drnn.block(): - # 将sentence标记为RNN的输入,每个时间步取句子中的一个字进行处理 - current_word = drnn.step_input(sentence) - # 将encode_proj标记为RNN的静态输入 - encoder_word = drnn.static_input(encoder_proj) - # 使用boot_memory初始化memory,并且需要依据输入序列进行重排序 - memory = drnn.memory(init=decoder_boot, need_reorder=True) - fc_1 = fluid.layers.fc(input=encoder_word, size=30) - fc_2 = fluid.layers.fc(input=current_word, size=30) - decoder_inputs = fc_1 + fc_2 - hidden, _, _ = fluid.layers.gru_unit(input=decoder_inputs, hidden=memory, size=30) - # 用hidden更新memory - drnn.update_memory(ex_mem=memory, new_mem=hidden) - out = fluid.layers.fc(input=hidden, size=10, bias_attr=True, act='softmax') - # 将hidden和out标记为RNN的输出 - drnn.output(hidden, out) - - # 获得RNN的计算结果 - hidden, out = drnn() - # 提取RNN最后一个时间步的计算结果 - last = fluid.layers.sequence_last_step(out) diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/IfElse_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/IfElse_cn.rst deleted file mode 100644 index 2ba7ff3b9eef50d97ba80f5e323df16ce7d6e815..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/IfElse_cn.rst +++ /dev/null @@ -1,85 +0,0 @@ -.. _cn_api_fluid_layers_IfElse: - -IfElse -------------------------------- - - -.. py:class:: paddle.fluid.layers.IfElse(cond, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该类用于实现IfElse分支控制功能, IfElse包含两个Block,true_block,false_block,IfElse会将满足True或False条件的数据分别放入不同的block运行。 - -cond是一个shape为[N, 1]、数据类型为bool的2-D tensor,表示输入数据对应部分的执行条件。 - -.. note:: - 如果参数 ``cond`` 的形状为[1],强烈建议您使用新的OP :ref:`cn_api_fluid_layers_cond` 而不是 ``IfElse``。 - OP :ref:`cn_api_fluid_layers_cond` 的使用方式更简单,并且调用该OP所用的代码更少且功能与 ``IfElse`` 一样。 - -IfElse OP同其他的OP在使用上有一定的区别,可能会对一些用户造成一定的困惑,以下展示了一个 -简单的样例对该OP进行说明。 - -.. code-block:: python - - # 以下代码完成的功能:对x中大于0的数据减去10,对x中小于0的数据加上10,并将所有的数据求和 - import numpy as np - import paddle.fluid as fluid - - x = fluid.layers.data(name='x', shape=[4, 1], dtype='float32', append_batch_size=False) - y = fluid.layers.data(name='y', shape=[4, 1], dtype='float32', append_batch_size=False) - - x_d = np.array([[3], [1], [-2], [-3]]).astype(np.float32) - y_d = np.zeros((4, 1)).astype(np.float32) - - # 比较x, y对元素的大小,输出cond, cond是shape为[4, 1],数据类型为bool的2-D tensor。 - # 根据输入数据x_d, y_d,可以推断出cond中的数据为[[true], [true], [false], [false]] - cond = fluid.layers.greater_than(x, y) - # 同其他常见OP不同的是,该OP返回的ie是一个IfElse OP的对象 - ie = fluid.layers.IfElse(cond) - - with ie.true_block(): - # 在这个block中,根据cond条件,获取x中对应条件为true维度的数据,并减去10 - out_1 = ie.input(x) - out_1 = out_1 - 10 - ie.output(out_1) - with ie.false_block(): - # 在这个block中,根据cond条件,获取x中对应条件为false维度的数据,并加上10 - out_1 = ie.input(x) - out_1 = out_1 + 10 - ie.output(out_1) - - # 根据cond条件将两个block中处理后的数据进行合并,此处的output为输出,类型为List,List中的元素类型为Variable。 - output = ie() # [array([[-7.], [-9.], [ 8.], [ 7.]], dtype=float32)] - - # 将输出List中的第一个Variable获取出来,并计算所有元素和 - out = fluid.layers.reduce_sum(output[0]) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - res = exe.run(fluid.default_main_program(), feed={"x":x_d, "y":y_d}, fetch_list=[out]) - print(res) - # [array([-1.], dtype=float32)] - -参数: - - **cond** (Variable)- cond是一个shape为[N, 1]、数据类型为bool的2-D tensor,表示N个输入数据的对应的执行条件。数据类型为bool。 - - **Name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -**返回:** - -同其他常见OP不同的是,该OP调用返回一个IfElse OP对象(如例子中的 ie),通过调用对象内部函数 ``true_block()`` , ``false_block()`` , ``input()`` , ``output()`` 对输入数据进行分支处理, -通过调用内部的 ``__call__()`` 函数,将不同分支处理的数据进行整合,作为整体的输出,输出类型为列表,列表中每个元素的类型为Variable。 - -**内部函数:** - -- 通过调用对象中的 ``with ie.true_block()`` 函数构建block,将条件为true下的计算逻辑放入此block中。如果没有构建相应的block,则对应条件维度下的输入数据不做改变。 - -- 通过调用对象中的 ``with ie.false_block()`` 函数构建block,将条件为false下的计算逻辑放入此block中。如果没有构建相应的block,则对应条件维度下的输入数据不做改变。 - -- ``out = ie.input(x)`` 会将x中对应条件维度的数据获取出来放入到out中,支持block内部处理多个输入。 - -- ``ie.output(out)`` 会将结果写入对应条件的输出中。 - -- 对象内部有 ``__call__()`` 函数,即通过对 ``output = ie()`` 的调用,将条件分别为True,False的block内部所有的输出进行融合作为整体的输出,输出的类型为列表,列表中每个元素的类型为Variable。 diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/Print_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/Print_cn.rst deleted file mode 100644 index 422bab77d425f81f2097ef9e297a7cf50335b1d6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/Print_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_layers_Print: - -Print -------------------------------- - - -.. py:function:: paddle.fluid.layers.Print(input, first_n=-1, message=None, summarize=20, print_tensor_name=True, print_tensor_type=True, print_tensor_shape=True, print_tensor_lod=True, print_phase='both') - -:api_attr: 声明式编程模式(静态图) - - - -**Print操作命令** - -该OP创建一个打印操作,打印正在访问的Tensor内容。 - -封装传入的Tensor,以便无论何时访问Tensor,都会打印信息message和Tensor的当前值。 - -参数: - - **input** (Variable)-将要打印的Tensor - - **summarize** (int)-打印Tensor中的元素数目,如果值为-1则打印所有元素。默认值为20 - - **message** (str)-打印Tensor信息前自定义的字符串类型消息,作为前缀打印 - - **first_n** (int)-打印Tensor的次数 - - **print_tensor_name** (bool)-可选,指明是否打印Tensor名称,默认为True - - **print_tensor_type** (bool)-可选,指明是否打印Tensor类型,默认为True - - **print_tensor_shape** (bool)-可选,指明是否打印Tensor维度信息,默认为True - - **print_tensor_lod** (bool)-可选,指明是否打印Tensor的LoD信息,默认为True - - **print_phase** (str)-可选,指明打印的阶段,包括 ``forward`` , ``backward`` 和 ``both`` ,默认为 ``both`` 。设置为 ``forward`` 时,只打印Tensor的前向信息;设置为 ``backward`` 时,只打印Tensor的梯度信息;设置为 ``both`` 时,则同时打印Tensor的前向信息以及梯度信息。 - -返回:输出Tensor - -返回类型:Variable - -.. note:: - 输入和输出是两个不同的Variable,在接下来的过程中,应该使用输出Variable而非输入Variable,否则打印层将失去backward的信息。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle - import numpy as np - - x = fluid.layers.data(name='x', shape=[1], dtype='float32', lod_level=1) - x = fluid.layers.Print(x, message="The content of input layer:") - - y = fluid.layers.data(name='y', shape=[1], dtype='float32', lod_level=2) - out = fluid.layers.sequence_expand(x=x, y=y, ref_level=0) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x_d = fluid.create_lod_tensor(np.array([[1.1], [2.2],[3.3],[4.4]]).astype('float32'), [[1,3]], place) - y_d = fluid.create_lod_tensor(np.array([[1.1],[1.1],[1.1],[1.1],[1.1],[1.1]]).astype('float32'), [[1,3], [1,2,1,2]], place) - results = exe.run(fluid.default_main_program(), - feed={'x':x_d, 'y': y_d }, - fetch_list=[out],return_numpy=False) -**运行输出**: - -.. code-block:: bash - - The content of input layer: The place is:CPUPlace - Tensor[x] - shape: [4,1,] - dtype: f - LoD: [[ 0,1,4, ]] - data: 1.1,2.2,3.3,4.4, - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/StaticRNN_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/StaticRNN_cn.rst deleted file mode 100644 index ee524611b8f70b678c80d24a89728b9af20da90f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/StaticRNN_cn.rst +++ /dev/null @@ -1,273 +0,0 @@ -.. _cn_api_fluid_layers_StaticRNN: - -StaticRNN -------------------------------- - - -.. py:class:: paddle.fluid.layers.StaticRNN(name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP用来处理一批序列数据,其中每个样本序列的长度必须相等。StaticRNN将序列按照时间步长展开,用户需要定义每个时间步中的处理逻辑。 - -参数: - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 创建memory变量作为prev,batch size来自于word变量。 - prev = rnn.memory(shape=[-1, hidden_size], batch_ref = word) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - # 把每一步处理后的hidden标记为输出序列。 - rnn.step_output(hidden) - # 获取最终的输出结果 - result = rnn() - -.. py:method:: step() - -定义在每个时间步执行的操作。step用在with语句中,with语句中定义的OP会被执行sequence_len次(sequence_len是输入序列的长度)。 - - -.. py:method:: memory(init=None, shape=None, batch_ref=None, init_value=0.0, init_batch_dim_idx=0, ref_batch_dim_idx=1) - -为静态RNN创建一个内存变量。 -如果init不为None,则用init将初始化memory。 如果init为None,则必须设置shape和batch_ref,函数会使用shape和batch_ref创建新的Variable来初始化init。 - -参数: - - **init** (Variable,可选) - 用来初始化memory的Tensor。如果没有设置,则必须提供shape和batch_ref参数。默认值None。 - - **shape** (list|tuple) - 当init为None时用来设置memory的维度,注意不包括batch_size。默认值None。 - - **batch_ref** (Variable,可选) - 当init为None时,memory变量的batch size会设置为该batch_ref变量的ref_batch_dim_idx轴。默认值None。 - - **init_value** (float,可选) - 当init为None时用来设置memory的初始值,默认值0.0。 - - **init_batch_dim_idx** (int,可选) - init变量的batch_size轴,默认值0。 - - **ref_batch_dim_idx** (int,可选) - batch_ref变量的batch_size轴,默认值1。 - -返回:返回创建的memory变量。 - -返回类型;Variable - - -**代码示例一** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 创建memory变量作为prev,batch size来自于word变量。 - prev = rnn.memory(shape=[-1, hidden_size], batch_ref = word) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - -**代码示例二** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - boot_memory = fluid.layers.data(name='boot', shape=[hidden_size], dtype='float32', lod_level=1) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 用init初始化memory。 - prev = rnn.memory(init=boot_memory) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - -.. py:method:: step_input(x) - -标记StaticRNN的输入序列。 - -参数: - - **x** (Variable) – 输入序列,x的形状应为[seq_len, ...]。 - -返回:输入序列中当前时间步的数据。 - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 创建memory变量作为prev,batch size来自于word变量。 - prev = rnn.memory(shape=[-1, hidden_size], batch_ref = word) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - -.. py:method:: step_output(o) - -标记StaticRNN输出的序列。 - -参数: - -**o** (Variable) – 输出序列 - -返回:无 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 创建memory变量作为prev,batch size来自于word变量。 - prev = rnn.memory(shape=[-1, hidden_size], batch_ref = word) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - # 把每一步处理后的hidden标记为输出序列。 - rnn.step_output(hidden) - - result = rnn() - -.. py:method:: output(*outputs) - -标记StaticRNN输出变量。 - -参数: - -**outputs** – 输出Tensor,可同时将多个Variable标记为输出。 - -返回:无 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - vocab_size, hidden_size=10000, 200 - x = layers.data(name="x", shape=[-1, 1, 1], dtype='int64') - - # 创建处理用的word sequence - x_emb = layers.embedding( - input=x, - size=[vocab_size, hidden_size], - dtype='float32', - is_sparse=False) - # 把batch size变换到第1维。 - x_emb = layers.transpose(x_emb, perm=[1, 0, 2]) - - rnn = fluid.layers.StaticRNN() - with rnn.step(): - # 将刚才创建的word sequence标记为输入,每个时间步取一个word处理。 - word = rnn.step_input(x_emb) - # 创建memory变量作为prev,batch size来自于word变量。 - prev = rnn.memory(shape=[-1, hidden_size], batch_ref = word) - hidden = fluid.layers.fc(input=[word, prev], size=hidden_size, act='relu') - # 用处理完的hidden变量更新prev变量。 - rnn.update_memory(prev, hidden) - # 把每一步的hidden和word标记为输出。 - rnn.output(hidden, word) - - result = rnn() - - -.. py:method:: update_memory(mem, var) - - -将memory从mem更新为var。 - -参数: - - **mem** (Variable) – memory接口定义的变量。 - - **var** (Variable) – RNN块中的变量,用来更新memory。var的维度和数据类型必须与mem一致。 - -返回:无 - -代码示例参考前述示例。 - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/Switch_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/Switch_cn.rst deleted file mode 100644 index e4d132861ae84f5d6ba6befc42a7b6811aed4d40..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/Switch_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_layers_Switch: - -Switch -------------------------------- - - -.. py:class:: paddle.fluid.layers.Switch (name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该类用于实现Switch分支控制功能。Switch分支包含多个case分支和一个default分支,Switch控制流会依次检查各case分支条件是否满足,并仅执行第一个满足条件的case分支后面的语句。若不存在满足条件的case分支,则仅执行default分支后面的语句。 - -.. note:: - 如果参数 ``cond`` 的形状为[1],强烈建议您使用新的OP :ref:`cn_api_fluid_layers_case` 而不是 ``Switch``。 - OP :ref:`cn_api_fluid_layers_case` 的使用方式更简单,并且调用该OP所用的代码更少且功能与 ``Switch`` 一样。 - -成员函数: - - **case(cond)** - Switch的case分支,其参数cond为bool型的标量Variable。只有当前case分支的cond为True,且之前的case分支的cond均为False,该case分支后的语句才会执行,且不再执行之后的case后的语句。 - - **default()** - Switch的default分支。当所有case分支的cond均为False时,执行default分支后的语句。 - -注意:case和default函数只能用于Switch的scope内部,示例如下: - -.. code-block:: python - - with fluid.layers.Switch() as switch: - with switch.case(cond1): - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=1) - with switch.case(cond2): - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=2) - with switch.default(): - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=0) - -参数: - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - lr = fluid.layers.create_global_var( - shape=[1], - value=0.0, - dtype='float32', - persistable=True, - name="learning_rate") - zero_var = fluid.layers.fill_constant( - shape=[1], dtype='float32', value=0.0) - one_var = fluid.layers.fill_constant( - shape=[1], dtype='float32', value=1.0) - two_var = fluid.layers.fill_constant( - shape=[1], dtype='float32', value=2.0) - - # 将参数中的begin设为非0值,则进入Switch的default分支,输出数组中的数字将为2 - global_step = fluid.layers.autoincreased_step_counter(counter_name='@LR_DECAY_COUNTER@', begin=0, step=1) - - with fluid.layers.control_flow.Switch() as switch: - with switch.case(global_step == zero_var): - fluid.layers.assign(input=one_var, output=lr) - with switch.default(): - fluid.layers.assign(input=two_var, output=lr) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - res = exe.run(fluid.default_main_program(), feed={}, fetch_list=[lr]) - print(res) # [array([1.], dtype=float32)] - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/While_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/While_cn.rst deleted file mode 100644 index 0e851830bd2dfeca29306e43cae88acb9aa2b798..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/While_cn.rst +++ /dev/null @@ -1,89 +0,0 @@ -.. _cn_api_fluid_layers_While: - -While -------------------------------- - - -.. py:class:: paddle.fluid.layers.While (cond, is_test=False, name=None) - -:api_attr: 声明式编程模式(静态图) - - - - -该类用于实现while循环控制功能,只要循环条件cond为True,就循环执行while循环体中的语句,直到cond为False为止。 - -.. note:: - 如果参数 ``cond`` 的形状为[1],强烈建议您使用新的OP :ref:`cn_api_fluid_layers_while_loop` 而不是 ``While``。 - OP :ref:`cn_api_fluid_layers_while_loop` 的使用方式更简单,并且调用该OP所用的代码更少且功能与 ``While`` 一样。 - -**注意:** - 在 ``While`` 中创建的局部变量类似于C++中的while,无法被外部引用,因此无法通过 ``Executor`` 中的 ``fetch_list`` 来获取。 - 若想实现该功能,PaddlePaddle提供了 ``assign`` 接口将局部变量赋值到外部,请参考示例代码2 或参考 `issue#22724 `_ 。 - -参数: - - **cond** (Variable) – 用于判断循环继续进行的条件,为数据类型bool型的Tensor,其shape必须为[1]。 - - **is_test** (bool,可选) – 用于表明是否在测试阶段执行,默认值为False。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -**代码示例 1** - -.. code-block:: python - - # 该示例代码展示整数循环+1,循环10次,输出计数结果 - import paddle.fluid as fluid - import numpy as np - - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=0) # 循环计数器 - - loop_len = fluid.layers.fill_constant(shape=[1],dtype='int64', value=10) # 循环次数 - - cond = fluid.layers.less_than(x=i, y=loop_len) # 循环条件 - while_op = fluid.layers.While(cond=cond) - with while_op.block(): # 循环体 - i = fluid.layers.increment(x=i, value=1, in_place=True) - fluid.layers.less_than(x=i, y=loop_len, cond=cond) # 更新循环条件 - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - res = exe.run(fluid.default_main_program(), feed={}, fetch_list=[i]) - print(res) # [array([10])] - - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=0) - loop_len = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10) - one = fluid.layers.fill_constant(shape=[1], dtype='float32', value=1) - data = fluid.data(name='data', shape=[1], dtype='float32') - sums = fluid.layers.fill_constant(shape=[1], dtype='float32', value=0) # 在 While 外先定义要获取的变量,需和要获取的 While 内部的变量名称不同 - - cond = fluid.layers.less_than(x=i, y=loop_len) - while_op = fluid.layers.While(cond=cond) - with while_op.block(): - sums_tensor = fluid.layers.elementwise_add(x=data, y=data) - fluid.layers.assign(input=sums_tensor, output=sums) # 将 While 内定义的变量 sums_tenosr 通过 layers.assign 更新至 While 外的变量 sums 中 - i = fluid.layers.increment(x=i, value=1, in_place=True) - data = fluid.layers.elementwise_add(x=data, y=one) - fluid.layers.less_than(x=i, y=loop_len, cond=cond) - - feed_data = np.ones([1]).astype('float32') - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - res = exe.run(fluid.default_main_program(), feed={'data': feed_data}, fetch_list=sums) - print(res[0]) # [2.] # 因 While 内的 data 没有将值更新到 While 外,故循环过后此处 sums 的值为 [2.] - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/array_length_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/array_length_cn.rst deleted file mode 100644 index 27fcaf003b8dab728cded431ae24e525d9e4cb47..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/array_length_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_array_length: - -array_length -------------------------------- - -.. py:function:: paddle.fluid.layers.array_length(array) - - - - -该OP用于获取输入数组 :ref:`cn_api_fluid_LoDTensorArray` 的长度。可以与 :ref:`cn_api_fluid_layers_array_read` 、 :ref:`cn_api_fluid_layers_array_write` 、 :ref:`cn_api_fluid_layers_While` OP结合使用,实现LoDTensorArray的遍历与读写。 - -参数: - - **array** (LoDTensorArray) - 输入的数组LoDTensorArray - -返回:shape为[1]的1-D Tensor, 表示数组LoDTensorArray的长度,数据类型为int64 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - tmp = fluid.layers.zeros(shape=[10], dtype='int32') - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10) - #tmp是shape为[10]的Tensor,将tmp写入到数组arr下标为10的位置,arr的长度因此为11 - arr = fluid.layers.array_write(tmp, i=i) - #查看arr的长度 - arr_len = fluid.layers.array_length(arr) - - #可以通过executor打印出LoDTensorArray的长度 - input = fluid.layers.Print(arr_len, message="The length of LoDTensorArray:") - main_program = fluid.default_main_program() - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(main_program) - -**运行输出** - -.. code-block:: python - - 1569576542 The length of LoDTensorArray: The place is:CPUPlace - Tensor[array_length_0.tmp_0] - shape: [1,] - dtype: l - data: 11, - - #输出shape为[1]的Tensor,值为11,表示LoDTensorArray长度为11 - #dtype为对应C++数据类型,在不同环境下可能显示值不同,但本质一致 - #例如:如果Tensor中数据类型是int64,则对应的C++数据类型为int64_t,所以dtype值为typeid(int64_t).name(), - # 其在MacOS下为'x',linux下为'l',Windows下为'__int64',都表示64位整型变量 diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/array_read_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/array_read_cn.rst deleted file mode 100644 index 6e8cd4fb70ec2f31bbb93822883c0cfc491cb691..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/array_read_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_layers_array_read: - -array_read -------------------------------- - -.. py:function:: paddle.fluid.layers.array_read(array,i) - - - - -该OP用于读取输入数组 :ref:`cn_api_fluid_LoDTensorArray` 中指定位置的数据, ``array`` 为输入的数组, ``i`` 为指定的读取位置。常与 :ref:`cn_api_fluid_layers_array_write` OP配合使用进行LoDTensorArray的读写。 - -例1: -:: - 输入: - 包含4个Tensor的LoDTensorArray,前3个shape为[1],最后一个shape为[1,2]: - input = ([0.6], [0.1], [0.3], [0.4, 0.2]) - 并且: - i = [3] - - 输出: - output = [0.4, 0.2] - -参数: - - **array** (Variable) - 输入的数组LoDTensorArray - - **i** (Variable) - shape为[1]的1-D Tensor,表示从 ``array`` 中读取数据的位置,数据类型为int64 - - -返回:从 ``array`` 中指定位置读取的LoDTensor或Tensor - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - #先创建一个LoDTensorArray,再在指定位置写入Tensor,然后从该位置读取Tensor - import paddle.fluid as fluid - arr = fluid.layers.create_array(dtype='float32') - tmp = fluid.layers.fill_constant(shape=[3, 2], dtype='int64', value=5) - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10) - #tmp是shape为[3,2]的Tensor,将其写入空数组arr的下标10的位置,则arr的长度变为11 - arr = fluid.layers.array_write(tmp, i, array=arr) - #读取arr的下标10的位置的数据 - item = fluid.layers.array_read(arr, i) - - #可以通过executor打印出该数据 - input = fluid.layers.Print(item, message="The LoDTensor of the i-th position:") - main_program = fluid.default_main_program() - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(main_program) - -**输出结果** - -.. code-block:: python - - 1569588169 The LoDTensor of the i-th position: The place is:CPUPlace - Tensor[array_read_0.tmp_0] - shape: [3,2,] - dtype: l - data: 5,5,5,5,5,5, - - #输出了shape为[3,2]的Tensor - #dtype为对应C++数据类型,在不同环境下可能显示值不同,但本质一致 - #例如:如果Tensor中数据类型是int64,则对应的C++数据类型为int64_t,所以dtype值为typeid(int64_t).name(), - # 其在MacOS下为'x',linux下为'l',Windows下为'__int64',都表示64位整型变量 diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/array_write_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/array_write_cn.rst deleted file mode 100644 index 4f59d605093261366a4fea7d2e48dd9b4011158c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/array_write_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_array_write: - -array_write -------------------------------- - -.. py:function:: paddle.fluid.layers.array_write(x, i, array=None) - - - - -该OP将输入的变量 ``x`` 写入到数组 :ref:`cn_api_fluid_LoDTensorArray` ``array`` 的第i个位置,并返回修改后的LoDTensorArray,如果 ``array`` 为None,则创建一个新的LoDTensorArray。常与 :ref:`cn_api_fluid_layers_array_read` OP联合使用对LoDTensorArray进行读写。 - -参数: - - **x** (Variable) – 待写入的数据,多维Tensor或LoDTensor,数据类型支持float32,float64,int32,int64 - - **i** (Variable) – shape为[1]的1-D Tensor,表示写入到输出数组LoDTensorArray的位置,数据类型为int64 - - **array** (Variable,可选) – 指定写入 ``x`` 的数组LoDTensorArray。默认值为None, 此时将创建新的LoDTensorArray并作为结果返回 - -返回: 写入输入 ``x`` 之后的LoDTensorArray - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - tmp = fluid.layers.fill_constant(shape=[3, 2], dtype='int64', value=5) - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10) - #将tmp写入数组arr下标为10的位置,并返回arr - arr = fluid.layers.array_write(tmp, i=i) - - #此时arr是长度为11的LoDTensorArray,可以通过array_read来查看下标为10的LoDTensor,并将之打印出来 - item = fluid.layers.array_read(arr, i=i) - input = fluid.layers.Print(item, message="The content of i-th LoDTensor:") - main_program = fluid.default_main_program() - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(main_program) - -**输出结果** - -.. code-block:: python - - 1570533133 The content of i-th LoDTensor: The place is:CPUPlace - Tensor[array_read_0.tmp_0] - shape: [3,2,] - dtype: l - data: 5,5,5,5,5,5, - #返回了shape为[3,2]的Tensor,即为上面写入的tmp - #dtype为对应C++数据类型,在不同环境下可能显示值不同,但本质一致 - #例如:如果Tensor中数据类型是int64,则对应的C++数据类型为int64_t,所以dtype值为typeid(int64_t).name(), - # 其在MacOS下为'x',linux下为'l',Windows下为'__int64',都表示64位整型变量 diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/case_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/case_cn.rst deleted file mode 100644 index f1f76eae157728e7866eed1ef08e43c41dbe9a1f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/case_cn.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. _cn_api_fluid_layers_case: - -case -------------------------------- - - -.. py:function:: paddle.fluid.layers.case(pred_fn_pairs, default=None, name=None) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.case -:alias: paddle.nn.case,paddle.nn.control_flow.case -:old_api: paddle.fluid.layers.case - - - -该OP的运行方式类似于python的if-elif-elif-else。 - -参数: - - **pred_fn_pairs** (list|tuple) - 一个list或者tuple,元素是二元组(pred, fn)。其中 ``pred`` 是形状为[1]的布尔型 Tensor,``fn`` 是一个可调用对象。所有的可调用对象都返回相同结构的Tensor。 - - **default** (callable,可选) - 可调用对象,返回一个或多个张量。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值:None。 - -返回:如果 ``pred_fn_pairs`` 中存在pred是True的元组(pred, fn),则返回第一个为True的pred的元组中fn的返回结果;如果 ``pred_fn_pairs`` 中不存在pred为True的元组(pred, fn) 且 ``default`` 不是None,则返回调用 ``default`` 的返回结果; -如果 ``pred_fn_pairs`` 中不存在pred为True的元组(pred, fn) 且 ``default`` 是None,则返回 ``pred_fn_pairs`` 中最后一个pred的返回结果。 - -返回类型:Variable|list(Variable) - -抛出异常: - - ``TypeError`` - 如果 ``pred_fn_pairs`` 的类型不是list或tuple。 - - ``TypeError`` - 如果 ``pred_fn_pairs`` 的元素的类型不是tuple。 - - ``TypeError`` - 如果 ``pred_fn_pairs`` 的tuple类型的元素大小不是2。 - - ``TypeError`` - 如果 ``pred_fn_pairs`` 中的2-tuple的第一个元素的类型不是Variable。 - - ``TypeError`` - 如果 ``pred_fn_pairs`` 中的2-tuple的第二个元素不是可调用对象。 - - ``TypeError`` - 当 ``default`` 不是None又不是可调用对象时。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - def fn_1(): - return layers.fill_constant(shape=[1, 2], dtype='float32', value=1) - - def fn_2(): - return layers.fill_constant(shape=[2, 2], dtype='int32', value=2) - - def fn_3(): - return layers.fill_constant(shape=[3], dtype='int32', value=3) - - main_program = fluid.default_startup_program() - startup_program = fluid.default_main_program() - with fluid.program_guard(main_program, startup_program): - x = layers.fill_constant(shape=[1], dtype='float32', value=0.3) - y = layers.fill_constant(shape=[1], dtype='float32', value=0.1) - z = layers.fill_constant(shape=[1], dtype='float32', value=0.2) - - pred_1 = layers.less_than(z, x) # true: 0.2 < 0.3 - pred_2 = layers.less_than(x, y) # false: 0.3 < 0.1 - pred_3 = layers.equal(x, y) # false: 0.3 == 0.1 - - # Call fn_1 because pred_1 is True - out_1 = layers.case( - pred_fn_pairs=[(pred_1, fn_1), (pred_2, fn_2)], default=fn_3) - - # Argument default is None and no pred in pred_fn_pairs is True. fn_3 will be called. - # because fn_3 is the last callable in pred_fn_pairs. - out_2 = layers.case(pred_fn_pairs=[(pred_2, fn_2), (pred_3, fn_3)]) - - exe = fluid.Executor(fluid.CPUPlace()) - res_1, res_2 = exe.run(main_program, fetch_list=[out_1, out_2]) - print(res_1) # [[1. 1.]] - print(res_2) # [3 3 3] - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/cond_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/cond_cn.rst deleted file mode 100644 index a72495a7392e8a17695a1eee96e286a7bcfba3dc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/cond_cn.rst +++ /dev/null @@ -1,94 +0,0 @@ -.. _cn_api_fluid_layers_cond: - -cond -------------------------------- - - -.. py:function:: paddle.fluid.layers.cond(pred, true_fn=None, false_fn=None, name=None) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.cond -:alias: paddle.nn.cond,paddle.nn.control_flow.cond -:old_api: paddle.fluid.layers.cond - - - -如果 ``pred`` 是 ``True`` ,该API返回 ``true_fn()`` ,否则返回 ``false_fn()`` 。 -用户如果不想在 ``callable`` 中做任何事,可以把 ``true_fn`` 或 ``false_fn`` 设为 ``None`` ,此时本API会把该 ``callable`` 视为简单返回 ``None`` 。 - -``true_fn`` 和 ``false_fn`` 需要返回同样嵌套结构(nest structure)的Tensor,如果不想返回任何值也可都返回 ``None`` 。 -PaddlePaddle里Tensor的嵌套结构是指一个Tensor,或者Tensor的元组(tuple),或者Tensor的列表(list)。 - -.. note:: - 1. 因为PaddlePaddle的静态图数据流, ``true_fn`` 和 ``false_fn`` 返回的元组必须形状相同,但是里面的Tensor形状可以不同。 - 2. 不论运行哪个分支,在 ``true_fn`` 和 ``false_fn`` 外创建的Tensor和Op都会被运行,即PaddlePaddle并不是惰性语法(lazy semantics)。例如 - - .. code-block:: python - - import paddle.fluid as fluid - a = fluid.data(name='a', shape=[-1, 1], dtype='float32') - b = fluid.data(name='b', shape=[-1, 1], dtype='float32') - c = a * b - out = fluid.layers.cond(a < b, lambda: a + c, lambda: b * b) - - 不管 ``a < b`` 是否成立, ``c = a * b`` 都会被运行。 - -参数: - - **pred** (Variable) - 一个形状为[1]的布尔型(boolean)的Tensor,该布尔值决定要返回 ``true_fn`` 还是 ``false_fn`` 的运行结果。 - - **true_fn** (callable) - 一个当 ``pred`` 是 ``True`` 时被调用的callable,默认值: ``None`` 。 - - **false_fn** (callable) - 一个当 ``pred`` 是 ``False`` 时被调用的callable,默认值: ``None`` 。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值: ``None`` 。 - -返回: - 如果 ``pred`` 是 ``True`` ,该API返回 ``true_fn()`` ,否则返回 ``false_fn()`` 。 - -返回类型:Variable|list(Variable)|tuple(Variable) - -抛出异常: - - ``TypeError`` - 如果 ``true_fn`` 或 ``false_fn`` 不是callable。 - - ``ValueError`` - 如果 ``true_fn`` 和 ``false_fn`` 没有返回同样的嵌套结构(nest structure),对嵌套结构的解释见上文。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - from paddle.fluid.executor import Executor - from paddle.fluid.framework import Program, program_guard - - # - # pseudocode: - # if 0.1 < 0.23: - # return 1, True - # else: - # return 3, 2 - # - - def true_func(): - return layers.fill_constant( - shape=[1, 2], dtype='int32', value=1), layers.fill_constant( - shape=[2, 3], dtype='bool', value=True) - - def false_func(): - return layers.fill_constant( - shape=[3, 4], dtype='float32', value=3), layers.fill_constant( - shape=[4, 5], dtype='int64', value=2) - - main_program = Program() - startup_program = Program() - with program_guard(main_program, startup_program): - x = layers.fill_constant(shape=[1], dtype='float32', value=0.1) - y = layers.fill_constant(shape=[1], dtype='float32', value=0.23) - pred = layers.less_than(x, y) - out = layers.cond(pred, true_func, false_func) - # out is a tuple containing 2 tensors - - place = fluid.CUDAPlace(0) if fluid.core.is_compiled_with_cuda( - ) else fluid.CPUPlace() - exe = fluid.Executor(place) - ret = exe.run(main_program, fetch_list=out) - # ret[0] = [[1 1]] - # ret[1] = [[ True True True] - # [ True True True]] - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/create_array_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/create_array_cn.rst deleted file mode 100644 index 1426688b11bafd00a8a115aaf3f3eefcd907979b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/create_array_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_create_array: - -create_array -------------------------------- - -.. py:function:: paddle.fluid.layers.create_array(dtype) - - - - - -此OP创建一个LoDTensorArray,它可以用作 :ref:`cn_api_fluid_layers_array\_write` , :ref:`cn_api_fluid_layers_array\_read` OP的输入,以及和 :ref:`cn_api_fluid_layers_While` OP -一起创建RNN网络。 - -参数: - - **dtype** (str) — 指定Tensor中元素的数据类型,支持的数据类型值:float32,float64,int32,int64。 - -返回: 返回创建的空LoDTensorArray,Tensor中的元素数据类型为指定的dtype。 - -返回类型: Variable。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.create_array(dtype='float32') # 创建一个数据类型为float32的LoDTensorArray。 - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/equal_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/equal_cn.rst deleted file mode 100644 index 9a66e76cedc7d3997fe8e6cbfefca91232f5734b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/equal_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_equal: - -equal -------------------------------- - -.. py:function:: paddle.fluid.layers.equal(x, y, cond=None, name=None) - - -该OP返回 :math:`x==y` 逐元素比较x和y是否相等,x和y的维度应该相同。 - -参数: - - **x** (Variable) - 输入Tensor,支持的数据类型包括 float32, float64,int32, int64。 - - **y** (Variable) - 输入Tensor,支持的数据类型包括 float32, float64, int32, int64。 - - **cond** (Variable,可选) – 如果为None,则创建一个Tensor来作为进行比较的输出结果,该Tensor的shape和数据类型和输入x一致;如果不为None,则将Tensor作为该OP的输出,数据类型和数据shape需要和输入x一致。默认值为None。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出结果的Tensor,输出Tensor的shape和输入一致,Tensor数据类型为bool。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - out_cond =fluid.data(name="input1", shape=[2], dtype='bool') - label = fluid.layers.assign(np.array([3, 3], dtype="int32")) - limit = fluid.layers.assign(np.array([3, 2], dtype="int32")) - label_cond = fluid.layers.assign(np.array([1, 2], dtype="int32")) - - out1 = fluid.layers.equal(x=label,y=limit) #out1=[True, False] - out2 = fluid.layers.equal(x=label_cond,y=limit, cond=out_cond) #out2=[False, True] out_cond=[False, True] - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/greater_equal_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/greater_equal_cn.rst deleted file mode 100644 index 7141718419cc55b0fdb4546dcd16bc89c92a2e35..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/greater_equal_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_greater_equal: - -greater_equal -------------------------------- - -.. py:function:: paddle.fluid.layers.greater_equal(x, y, cond=None, name=None) - -:alias_main: paddle.greater_equal -:alias: paddle.greater_equal,paddle.tensor.greater_equal,paddle.tensor.logic.greater_equal -:old_api: paddle.fluid.layers.greater_equal - - - -该OP逐元素地返回 :math:`x >= y` 的逻辑值,使用重载算子 `>=` 可以有相同的计算函数效果。 - - -参数: - - **x** (Variable) – 进行比较的第一个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **y** (Variable) – 进行比较的第二个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **cond** (Variable,可选) – 如果为None,则创建一个Tensor来作为进行比较的输出结果,该Tensor的shape,数据类型和输入x一致;如果不为None,则将Tensor作为该OP的输出,数据shape和数据类型需要和输入x一致。默认值为None。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出结果的Tensor,数据的shape和输入x一致。 - -返回类型:Variable,数据类型为bool类型。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - label = layers.assign(np.array([2, 2], dtype='int32')) - limit = layers.assign(np.array([2, 3], dtype='int32')) - out = fluid.layers.greater_equal(x=label, y=limit) #out=[True, False] - out_1 = label >= limit #out1=[True, False] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/greater_than_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/greater_than_cn.rst deleted file mode 100644 index 3f208e21ad5433125b3c22fa76ee06968a7c8153..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/greater_than_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_fluid_layers_greater_than: - -greater_than -------------------------------- - -.. py:function:: paddle.fluid.layers.greater_than(x, y, cond=None, name=None) - -:alias_main: paddle.greater_than -:alias: paddle.greater_than,paddle.tensor.greater_than,paddle.tensor.logic.greater_than -:old_api: paddle.fluid.layers.greater_than - - - -该OP逐元素地返回 :math:`x > y` 的逻辑值,使用重载算子 `>` 可以有相同的计算函数效果。 - -参数: - - **x** (Variable) – 进行比较的第一个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **y** (Variable) – 进行比较的第二个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **cond** (Variable,可选) – 如果为None,则创建一个Tensor来作为进行比较的输出结果,该Tensor的shape和数据类型和输入x一致;如果不为None,则将Tensor作为该OP的输出,数据类型和数据shape需要和输入x一致。默认值为None。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出结果的Tensor,数据的shape和输入x一致。 - -返回类型:Variable,数据类型为bool类型。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - label = layers.assign(np.array([2, 3], dtype='int32')) - limit = layers.assign(np.array([3, 2], dtype='int32')) - out = fluid.layers.greater_than(x=label, y=limit) #out=[False, True] - out1 = label > limit #out1=[False, True] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/increment_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/increment_cn.rst deleted file mode 100644 index 8edb5db4ab6fb7c7494c40b7bb9e4f2ebac5e04a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/increment_cn.rst +++ /dev/null @@ -1,31 +0,0 @@ -.. _cn_api_fluid_layers_increment: - -increment -------------------------------- - -.. py:function:: paddle.fluid.layers.increment(x, value=1.0, in_place=True) - -:alias_main: paddle.increment -:alias: paddle.increment,paddle.tensor.increment,paddle.tensor.math.increment -:old_api: paddle.fluid.layers.increment - - - -使输入Tensor ``x`` 的数据累加 ``value`` , 该OP通常用于循环次数的计数。 - -参数: - - **x** (Variable) – 元素个数为1的Tensor,数据类型必须为float32,float64,int32,int64。 - - **value** (float,可选) – 需要增加的值,默认为1.0。 - - **in_place** (bool,可选) – 输出Tensor是否和输入Tensor ``x`` 复用同一块内存,默认为True。 - -返回:累加计算后的Tensor,形状、数据类型和 ``x`` 一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - counter = fluid.layers.zeros(shape=[1], dtype='float32') # [0.] - fluid.layers.increment(counter) # [1.] diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/is_empty_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/is_empty_cn.rst deleted file mode 100644 index 90d4eb57a74fc3d0975f29c058236e4ed2c0f7ee..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/is_empty_cn.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _cn_api_fluid_layers_is_empty: - -is_empty -------------------------------- - -.. py:function:: paddle.fluid.layers.is_empty(x, cond=None) - -:alias_main: paddle.is_empty -:alias: paddle.is_empty,paddle.tensor.is_empty,paddle.tensor.logic.is_empty -:old_api: paddle.fluid.layers.is_empty - - - -测试变量是否为空 - -参数: - - **x** (Variable)-测试的变量 - - **cond** (Variable|None)-可选输出参数,默认为空(None)。若传入了该参数,则该参数中存储返回给定x的测试结果 - -返回:布尔类型的标量。如果变量x为空则值为真 - -返回类型:Variable - -抛出异常:``TypeError``-如果input类型不是Variable或cond存储的返回结果的类型不是bool - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[4, 32, 32], dtype="float32") - res = fluid.layers.is_empty(x=input) - # or: - # fluid.layers.is_empty(x=input, cond=res) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/less_equal_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/less_equal_cn.rst deleted file mode 100644 index da8b1b83343ec06b21738177555c79855efbdb2f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/less_equal_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_fluid_layers_less_equal: - -less_equal -------------------------------- - -.. py:function:: paddle.fluid.layers.less_equal(x, y, cond=None, name=None) - -:alias_main: paddle.less_equal -:alias: paddle.less_equal,paddle.tensor.less_equal,paddle.tensor.logic.less_equal -:old_api: paddle.fluid.layers.less_equal - - - -该OP逐元素地返回 :math:`x <= y` 的逻辑值,使用重载算子 `<=` 可以有相同的计算函数效果。 - -参数: - - **x** (Variable) – 进行比较的第一个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **y** (Variable) – 进行比较的第二个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **cond** (Variable,可选) – 如果为None,则创建一个Tensor来作为进行比较的输出结果,该Tensor的shape和数据类型和输入x一致;如果不为None,则将Tensor作为该OP的输出,数据类型和数据shape需要和输入x一致。默认值为None。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出结果的Tensor,数据的shape和输入x一致。 - -返回类型:Variable,数据类型为bool类型。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - label = layers.assign(np.array([1, 3], dtype='int32')) - limit = layers.assign(np.array([1, 2], dtype='int32')) - out = fluid.layers.less_equal(x=label, y=limit) #out=[True, False] - out1 = label<= limit #out1=[True, False] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/less_than_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/less_than_cn.rst deleted file mode 100644 index 6ad37577315a293779e5b1da1a9e449179c9b52f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/less_than_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_less_than: - -less_than -------------------------------- - -.. py:function:: paddle.fluid.layers.less_than(x, y, force_cpu=None, cond=None, name=None) - -:alias_main: paddle.less_than -:alias: paddle.less_than,paddle.tensor.less_than,paddle.tensor.logic.less_than -:old_api: paddle.fluid.layers.less_than - - - - -该OP逐元素地返回 :math:`x < y` 的逻辑值,使用重载算子 `<` 可以有相同的计算函数效果 - - -参数: - - **x** (Variable) - 进行比较的第一个输入,是一个多维的LoDTensor/Tensor,数据类型可以是float32,float64,int32,int64。 - - **y** (Variable) - 进行比较的第二个输入,是一个多维的LoDTensor/Tensor,数据类型可以是float32,float64,int32,int64。 - - **force_cpu** (bool) – 如果为True则强制将输出变量写入CPU内存中,否则将其写入目前所在的运算设备上。默认值为False。注意:该属性已弃用,其值始终是False。 - - **cond** (Variable,可选) – 指定算子输出结果的LoDTensor/Tensor,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回:输出结果的LoDTensor/Tensor,数据的shape和输入x一致。 - -返回类型: Variable,数据类型为bool。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # Graph Organizing - x = fluid.layers.data(name='x', shape=[2], dtype='float64') - y = fluid.layers.data(name='y', shape=[2], dtype='float64') - result = fluid.layers.less_than(x=x, y=y) - # The comment lists another available method. - # result = fluid.layers.fill_constant(shape=[2], dtype='float64', value=0) - # fluid.layers.less_than(x=x, y=y, cond=result) - - # Create an executor using CPU as example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - x_i = np.array([[1, 2], [3, 4]]).astype(np.float64) - y_i = np.array([[2, 2], [1, 3]]).astype(np.float64) - result_value, = exe.run(fluid.default_main_program(), feed={'x':x_i, 'y':y_i}, fetch_list=[result]) - print(result_value) # [[True, False], [False, False]] - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/not_equal_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/not_equal_cn.rst deleted file mode 100644 index 5a9cedf60cc03d67d8571424cffc2af62a583184..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/not_equal_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_not_equal: - -not_equal -------------------------------- - -.. py:function:: paddle.fluid.layers.not_equal(x, y, cond=None, name=None) - -:alias_main: paddle.not_equal -:alias: paddle.not_equal,paddle.tensor.not_equal,paddle.tensor.logic.not_equal -:old_api: paddle.fluid.layers.not_equal - - - -该OP逐元素地返回 :math:`x != y` 的逻辑值,使用重载算子 `!=` 可以有相同的计算函数效果。 - -参数: - - **x** (Variable) – 进行比较的第一个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **y** (Variable) – 进行比较的第二个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **cond** (Variable,可选) – 如果为None,则创建一个Tensor来作为进行比较的输出结果,该Tensor的shape和数据类型和输入x一致;如果不为None,则将Tensor作为该OP的输出,数据类型和数据shape需要和输入x一致。默认值为None。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 -返回:输出结果的Tensor,数据的shape和输入x一致。 - -返回类型:变量(Variable),数据类型为bool类型。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - label = layers.assign(np.array([2, 3], dtype='int32')) - limit = layers.assign(np.array([3, 2], dtype='int32')) - out = fluid.layers.not_equal(x=label, y=limit) #out=[True, True] - out1 = label != limit #out1=[True, True] - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/reorder_lod_tensor_by_rank_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/reorder_lod_tensor_by_rank_cn.rst deleted file mode 100644 index 7e67ee31003a74f34f64e9403336732388ca0ed2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/reorder_lod_tensor_by_rank_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_reorder_lod_tensor_by_rank: - -reorder_lod_tensor_by_rank -------------------------------- - -.. py:function:: paddle.fluid.layers.reorder_lod_tensor_by_rank(x, rank_table) - - - - - -该OP根据 ``rank_table`` 中提供的 ``LoDRankTable`` 类型的顺序信息来实现对 ``X`` 的重新排列。 -接口参数 ``X`` 是由多个序列(Sequence)组成的的一个批序列(Batch of Sequences), ``rank_table`` 存储着对batch中序列重新排列的 ``LoDRankTable`` 类型的顺序信息。 - -例如: - -假设在 ``rank_table`` 中存储的序列索引为 :math:`[3,0,2,1]` , ``X`` 将会被这样被重新排列: -``X`` 中的第四个序列(即索引为3的序列,后面以此类推)会变成排列后的batch中的第一个,紧接着就是原来batch中的第一个元素,第三个元素,和第二个元素。 -简言之,若有原batch::math:`X = [Seq0, Seq1, Seq2, Seq3]` 且 RankTable 中的索引为 :math:`[3,0,2,1]` ,那么输出即为 :math:`Out = [Seq3, Seq0, Seq2, Seq1]` ,它携带着新的LoD信息。 -如果 ``X`` 的LoD信息是空的,这表明 ``X`` 不是序列型数据。这和由多个定长为1的序列组成的batch是相同的情况。此时,该函数将对 ``X`` 中数据 在第一轴(axis)上按 ``rank_table`` 里的规则加以排列。 -例如,现有 :math:`X = [Slice0, Slice1, Slice2, Slice3]` ,并且它LoD信息为空,在 ``rank_table`` 索引为 :math:`[3, 0, 2, 1]` 。则 :math:`Out = [Slice3, Slice0, Slice2, Slice1]` ,并且不在其中追加LoD信息。 - -注意:该OP对 ``X`` 进行的排序所依据的 ``LoDRankTable`` 不一定是在 ``X`` 的基础上得出来的。它可以由其他不同的序列得出,并由该OP依据这个 ``LoDRankTable`` 来对 ``X`` 排序。 - -参数: - - **x** (Variable) - 待根据提供的 ``rank_table`` 进行排序的LoDTensor. - - **rank_table** (Variable) - 提供对 ``x`` 重新排列的 ``LoDRankTable`` 类型的顺序信息. - - -返回: 重新排列后的LoDTensor - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - - import numpy as np - import paddle.fluid as fluid - - rank_data = fluid.layers.data(name='rank_data', shape=[5], dtype='float32', lod_level=2) - table = fluid.layers.control_flow.lod_rank_table(rank_data, level=1) - - data = fluid.layers.data(name='data', shape=[9], lod_level=2) - new_data = fluid.layers.reorder_lod_tensor_by_rank( - x=data, rank_table=table) - - - place=fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - rank_tensor = fluid.create_lod_tensor(np.random.random([14,5]).astype("float32"), [[4,1], [3, 2, 2, 3, 4]], place) - - data_ndarray = np.random.random([27, 9]).astype("float32") - data_lod = [[1, 2, 2, 4, 4], [2, 2, 4, 2, 2, 2, 1, 1, 2, 2, 4, 2, 1]] - data_tensor = fluid.create_lod_tensor(data_ndarray, data_lod, place) - - out = exe.run(fluid.default_main_program(),feed={'data':data_tensor, 'rank_data':rank_tensor}, fetch_list=[new_data], return_numpy=False) - print(out[0]) - # lod: {{0, 4, 5, 9, 11, 13}{0, 2, 6, 8, 9, 11, 13, 14, 15, 17, 19, 23, 25, 27}} - #shape: [27, 9] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/switch_case_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/switch_case_cn.rst deleted file mode 100644 index a5b2766d722610d14738c437a485a660eb6e1c66..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/switch_case_cn.rst +++ /dev/null @@ -1,83 +0,0 @@ -.. _cn_api_fluid_layers_switch_case: - -switch_case -------------------------------- - - -.. py:function:: paddle.fluid.layers.switch_case(branch_index, branch_fns, default=None, name=None) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.switch_case -:alias: paddle.nn.switch_case,paddle.nn.control_flow.switch_case -:old_api: paddle.fluid.layers.switch_case - - - -该OP的运行方式类似于c++的switch/case。 - -参数: - - **branch_index** (Variable)- 形状为[1]的Tensor,指定将要执行的分支。数据类型是 ``int32``, ``int64`` 或 ``uint8``。 - - **branch_fns** (dict|list|tuple) - 如果 ``branch_fns`` 是一个list或tuple,它的元素可以是 (int, callable) 二元组,即由整数和可调用对象构成的二元组,整数表示对应的可调用对象的键;也可以仅仅是可调用对象,它在list或者tuple中的实际索引值将作为该可调用对象的键。如果 ``branch_fns`` 是一个字典,那么它的键是整数,它的值是可调用对象。所有的可调用对象都返回相同结构的Tensor。 - - **default** (callable,可选) - 可调用对象,返回一个或多个张量。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值:None。 - -返回:如果 ``branch_fns`` 中存在与 ``branch_index`` 匹配的可调用对象,则返回该可调用对象的返回结果;如果 ``branch_fns`` 中不存在与 ``branch_index`` 匹配的可调用对象且 ``default`` 不是None,则返回调用 ``default`` 的返回结果; -如果 ``branch_fns`` 中不存在与 ``branch_index`` 匹配的可调用对象且 ``default`` 是None,则返回 ``branch_fns`` 中键值最大的可调用对象的返回结果。 - -返回类型:Variable|list(Variable) - -抛出异常: - - ``TypeError`` - 如果 ``branch_index`` 的类型不是list或tuple。 - - ``TypeError`` - 如果 ``branch_index`` 的数据类型不是 ``int32``, ``int64`` 或 ``uint8``。 - - ``TypeError`` - 如果 ``branch_fns`` 的类型不是dict,list或tuple。 - - ``TypeError`` - 如果 ``branch_fns`` 的元素不是2-tuple。 - - ``TypeError`` - 如果 ``branch_fns`` 中的2-tuple的第一个元素的类型不是整数。 - - ``ValueError`` - 如果 ``branch_fns`` 中的2-tuple的第一个元素值不唯一。 - - ``TypeError`` - 如果 ``branch_fns`` 中的2-tuple的第二个元素不是可调用对象。 - - ``TypeError`` - 当 ``default`` 不是None又不是可调用对象时。 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - def fn_1(): - return layers.fill_constant(shape=[1, 2], dtype='float32', value=1) - - def fn_2(): - return layers.fill_constant(shape=[2, 2], dtype='int32', value=2) - - def fn_3(): - return layers.fill_constant(shape=[3], dtype='int32', value=3) - - main_program = fluid.default_startup_program() - startup_program = fluid.default_main_program() - with fluid.program_guard(main_program, startup_program): - index_1 = layers.fill_constant(shape=[1], dtype='int32', value=1) - index_2 = layers.fill_constant(shape=[1], dtype='int32', value=2) - - out_1 = layers.switch_case( - branch_index=index_1, - branch_fns={1: fn_1, 2: fn_2}, - default=fn_3) - - out_2 = layers.switch_case( - branch_index=index_2, - branch_fns=[(1, fn_1), (2, fn_2)], - default=fn_3) - - # Argument default is None and no index matches. fn_3 will be called because of the max index 7. - out_3 = layers.switch_case( - branch_index=index_2, - branch_fns=[(0, fn_1), (4, fn_2), (7, fn_3)]) - - exe = fluid.Executor(fluid.CPUPlace()) - res_1, res_2, res_3 = exe.run(main_program, fetch_list=[out_1, out_2, out_3]) - print(res_1) # [[1. 1.]] - print(res_2) # [[2 2] [2 2]] - print(res_3) # [3 3 3] - - diff --git a/doc/paddle/api/paddle/fluid/layers/control_flow/while_loop_cn.rst b/doc/paddle/api/paddle/fluid/layers/control_flow/while_loop_cn.rst deleted file mode 100644 index 5cfb1f648a2210683736d8786f55eead04f991db..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/control_flow/while_loop_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_while_loop: - -while_loop -____________________________________ - - - -.. py:function:: paddle.fluid.layers.while_loop(cond, body, loop_vars, is_test=False, name=None) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.while_loop -:alias: paddle.nn.while_loop,paddle.nn.control_flow.while_loop -:old_api: paddle.fluid.layers.while_loop - - - -该API用于实现类似while的循环控制功能,只要循环条件 ``cond`` 的返回值为True,``while_loop`` 则会循环执行循环体 ``body`` ,直到 ``cond`` 的返回值为False。 - -**注意:** - ``body`` 中定义的局部变量无法使用 ``Executor`` 的 ``fetch_list`` 来获取的,变量需在 ``body`` 外定义并将其置于 ``loop_vars`` 中进行循环更新后才可通过 ``fetch_list`` 获取。 - -参数: - - **cond** (callable) - 返回boolean类型张量的可调用函数,用以判断循环是否继续执行。 ``cond`` 的参数和 ``loop_vars`` 相对应。 - - **body** (callable) - 循环执行的结构体。其返回一个包含tensor或LoDTensorArray的列表或元组,且这些tensor或LoDTensorArray的长度,结构,类型和 ``loop_vars`` 中的相同。 且``body`` 的参数与 ``loop_vars`` 相对应。 - - **loop_vars** (list|tuple) - 包含tensor或LoDTensorArray的列表或是元组,将其传入至 ``cond`` 和 ``body`` 中,得到循环条件和输出值。 - - **is_test** (bool,可选) - 用于表明是否在测试阶段执行,默认值为False。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`。一般无需设置,默认值为None。 - -返回:循环迭代之后 ``body`` 的返回值,和 ``loop_vars`` 具有相同的结构。 - -返回类型:list|tuple - -异常抛出: - - ``TypeError``:若 ``cond`` 不是可调用的。 - - ``TypeError``:若 ``body`` 不是可调用的。 - - ``TypeError``:若 ``loop_vars`` 不是列表或是元组。 - - ``TypeError``:若 ``cond`` 返回值不是变量。 - - ``TypeError``:若 ``cond`` 返回值不是boolean类型的variable。 - - ``TypeError``:若 ``cond`` 返回值的shape不等于1。 - - ``ValueError``:若 ``loop_vars`` 为空。 - - ``ValueError``:若 ``cond`` 返回值的长度和类型和 ``loop_vars`` 不同。 - -**示例代码** - -.. code-block:: python - - # 该示例代码展示整数循环+1,循环10次,输出计数结果 - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - def cond(i, ten): # 参数和loop_vars相对应 - return i < ten - - def body(i, ten): # 参数和loop_vars相对应 - i = i + 1 - return [i, ten] - - main_program = fluid.default_main_program() - startup_program = fluid.default_startup_program() - with fluid.program_guard(main_program, startup_program): - i = layers.fill_constant(shape=[1], dtype='int64', value=0) # 循环计数器 - ten = layers.fill_constant(shape=[1], dtype='int64', value=10) # 循环次数 - i, ten = layers.while_loop(cond, body, [i, ten]) - - exe = fluid.Executor(fluid.CPUPlace()) - res = exe.run(main_program, feed={}, fetch_list=[i]) - print(res) #[array([10])] diff --git a/doc/paddle/api/paddle/fluid/layers/conv2d_cn.rst b/doc/paddle/api/paddle/fluid/layers/conv2d_cn.rst deleted file mode 100644 index 4ae868dfea111869eaa664cc4ca7a763c86651c3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/conv2d_cn.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _cn_api_fluid_layers_conv2d: - -conv2d -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv2d(input, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format="NCHW") - -:api_attr: 声明式编程模式(静态图) - - - -该OP是二维卷积层(convolution2D layer),根据输入、滤波器、步长(stride)、填充(padding)、膨胀比例(dilations)一组参数计算输出特征层大小。输入和输出是NCHW或NHWC格式,其中N是批尺寸,C是通道数,H是特征高度,W是特征宽度。滤波器是MCHW格式,M是输出图像通道数,C是输入图像通道数,H是滤波器高度,W是滤波器宽度。如果组数(groups)大于1,C等于输入图像通道数除以组数的结果。详情请参考UFLDL's : `卷积 `_ 。如果bias_attr不为False,卷积计算会添加偏置项。如果指定了激活函数类型,相应的激活函数会作用在最终结果上。 - -对每个输入X,有等式: - -.. math:: - - Out = \sigma \left ( W * X + b \right ) - -其中: - - :math:`X` :输入值,NCHW或NHWC格式的4-D Tensor - - :math:`W` :滤波器值,MCHW格式的4-D Tensor - - :math:`*` :卷积操作 - - :math:`b` :偏置值,2-D Tensor,形状为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值,NCHW或NHWC格式的4-D Tensor, 和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入形状::math:`(N,C_{in},H_{in},W_{in})` - - 滤波器形状: :math:`(C_{out},C_{in},H_{f},W_{f})` - -- 输出: - - 输出形状: :math:`(N,C_{out},H_{out},W_{out})` - -其中 - -.. math:: - - H_{out} &= \frac{\left ( H_{in} + padding\_height\_top + padding\_height\_bottom-\left ( dilation[0]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - W_{out} &= \frac{\left ( W_{in} + padding\_width\_left + padding\_width\_right -\left ( dilation[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - -如果 ``padding`` = "SAME": - -.. math:: - H_{out} = \frac{(H_{in} + stride[0] - 1)}{stride[0]} - -.. math:: - W_{out} = \frac{(W_{in} + stride[1] - 1)}{stride[1]} - -如果 ``padding`` = "VALID": - -.. math:: - H_{out} = \frac{\left ( H_{in} -\left ( dilation[0]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - W_{out} = \frac{\left ( W_{in} -\left ( dilation[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - -参数: - - **input** (Variable) - 形状为 :math:`[N, C, H, W]` 或 :math:`[N, H, W, C]` 的4-D Tensor,N是批尺寸,C是通道数,H是特征高度,W是特征宽度,数据类型为float16, float32或float64。 - - **num_filters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - - **filter_size** (int|list|tuple) - 滤波器大小。如果它是一个列表或元组,则必须包含两个整数值:(filter_size_height,filter_size_width)。若为一个整数,filter_size_height = filter_size_width = filter_size。 - - **stride** (int|list|tuple,可选) - 步长大小。滤波器和输入进行卷积计算时滑动的步长。如果它是一个列表或元组,则必须包含两个整型数:(stride_height,stride_width)。若为一个整数,stride_height = stride_width = stride。默认值:1。 - - **padding** (int|list|tuple|str,可选) - 填充大小。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含4个二元组:当 ``data_format`` 为"NCHW"时为 [[0,0], [0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NHWC"时为[[0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含4个整数值:[padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含2个整数值:[padding_height, padding_width],此时padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_height = padding_width = padding。默认值:0。 - - **dilation** (int|list|tuple,可选) - 膨胀比例大小。空洞卷积时会使用该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息。如果膨胀比例为列表或元组,则必须包含两个整型数:(dilation_height,dilation_width)。若为一个整数,dilation_height = dilation_width = dilation。默认值:1。 - - **groups** (int,可选) - 二维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=n,输入和滤波器分别根据通道数量平均分为n组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算,……,第n组滤波器和第n组输入进行卷积计算。默认值:1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool,可选)- 指定偏置参数属性的对象。若 ``bias_attr`` 为bool类型,只支持为False,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool,可选)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **act** (str,可选) - 激活函数类型, 如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` 。如果设为None,则未添加激活函数。默认值:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值:None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:4-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回卷积计算的结果,如果指定激活层,则返回卷积和激活计算之后的最终结果。 - -返回类型:Variable。 - -抛出异常: - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``input`` 的通道数未被明确定义。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有4个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果输入不是4-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - - ``ShapeError`` - 如果输出的通道数不能被 ``groups`` 整除。 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv2d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv2d(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/conv2d_transpose_cn.rst b/doc/paddle/api/paddle/fluid/layers/conv2d_transpose_cn.rst deleted file mode 100644 index 3223f07188db98723157b6d8a53336dd9291653a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/conv2d_transpose_cn.rst +++ /dev/null @@ -1,120 +0,0 @@ -.. _cn_api_fluid_layers_conv2d_transpose: - -conv2d_transpose -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv2d_transpose(input, num_filters, output_size=None, filter_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format='NCHW') - -:api_attr: 声明式编程模式(静态图) - - - -二维转置卷积层(Convlution2D transpose layer) - -该层根据输入(input)、滤波器(filter)和卷积核膨胀比例(dilations)、步长(stride)、填充(padding)来计算输出特征层大小或者通过output_size指定输出特征层大小。输入(Input)和输出(Output)为NCHW或NHWC格式,其中N为批尺寸,C为通道数(channel),H为特征层高度,W为特征层宽度。滤波器是MCHW格式,M是输出图像通道数,C是输入图像通道数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入图像通道数除以组数的结果。转置卷积的计算过程相当于卷积的反向计算。转置卷积又被称为反卷积(但其实并不是真正的反卷积)。欲了解转置卷积层细节,请参考下面的说明和 参考文献_ 。如果参数bias_attr不为False, 转置卷积计算会添加偏置项。如果act不为None,则转置卷积计算之后添加相应的激活函数。 - -.. _参考文献: https://arxiv.org/pdf/1603.07285.pdf - - -输入 :math:`X` 和输出 :math:`Out` 函数关系如下: - -.. math:: - Out=\sigma (W*X+b)\\ - -其中: - - :math:`X` : 输入,具有NCHW或NHWC格式的4-D Tensor - - :math:`W` : 滤波器,具有NCHW格式的4-D Tensor - - :math:`*` : 卷积计算(注意:转置卷积本质上的计算还是卷积) - - :math:`b` : 偏置(bias),2-D Tensor,形状为 ``[M,1]`` - - :math:`σ` : 激活函数 - - :math:`Out` : 输出值,NCHW或NHWC格式的4-D Tensor, 和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入Tensor的形状: :math:`(N,C_{in}, H_{in}, W_{in})` - - 滤波器的形状 : :math:`(C_{in}, C_{out}, H_f, W_f)` - -- 输出: - - 输出Tensor的形状 : :math:`(N,C_{out}, H_{out}, W_{out})` - -其中 - -.. math:: - - & H'_{out} = (H_{in}-1)*strides[0] - pad\_height\_top - pad\_height\_bottom + dilations[0]*(H_f-1)+1\\ - & W'_{out} = (W_{in}-1)*strides[1]- pad\_width\_left - pad\_width\_right + dilations[1]*(W_f-1)+1 \\ - & H_{out}\in[H'_{out},H'_{out} + strides[0])\\ - & W_{out}\in[W'_{out},W'_{out} + strides[1])\\ - -如果 ``padding`` = "SAME": - -.. math:: - & H'_{out} = \frac{(H_{in} + stride[0] - 1)}{stride[0]}\\ - & W'_{out} = \frac{(W_{in} + stride[1] - 1)}{stride[1]}\\ - -如果 ``padding`` = "VALID": - -.. math:: - & H'_{out} = (H_{in}-1)*strides[0] + dilations[0]*(H_f-1)+1\\ - & W'_{out} = (W_{in}-1)*strides[1] + dilations[1]*(W_f-1)+1 \\ - -注意: - -如果output_size为None,则 :math:`H_{out}` = :math:`H^\prime_{out}` , :math:`W_{out}` = :math:`W^\prime_{out}` ;否则,指定的output_size_height(输出特征层的高) :math:`H_{out}` 应当介于 :math:`H^\prime_{out}` 和 :math:`H^\prime_{out} + strides[0]` 之间(不包含 :math:`H^\prime_{out} + strides[0]` ), 并且指定的output_size_width(输出特征层的宽) :math:`W_{out}` 应当介于 :math:`W^\prime_{out}` 和 :math:`W^\prime_{out} + strides[1]` 之间(不包含 :math:`W^\prime_{out} + strides[1]` )。 - -由于转置卷积可以当成是卷积的反向计算,而根据卷积的输入输出计算公式来说,不同大小的输入特征层可能对应着相同大小的输出特征层,所以对应到转置卷积来说,固定大小的输入特征层对应的输出特征层大小并不唯一。 - -如果指定了output_size, ``conv2d_transpose`` 可以自动计算滤波器的大小。 - -参数: - - **input** (Variable)- 形状为 :math:`[N, C, H, W]` 或 :math:`[N, H, W, C]` 的4-D Tensor,N是批尺寸,C是通道数,H是特征高度,W是特征宽度。数据类型:float32或float64。 - - **num_filters** (int) - 滤波器(卷积核)的个数,与输出图片的通道数相同。 - - **output_size** (int|tuple,可选) - 输出图片的大小。如果output_size是一个元组,则必须包含两个整型数,(output_size_height,output_size_width)。如果output_size=None,则内部会使用filter_size、padding和stride来计算output_size。如果output_size和filter_size是同时指定的,那么它们应满足上面的公式。默认:None。output_size和filter_size不能同时为None。 - - **filter_size** (int|tuple,可选) - 滤波器大小。如果filter_size是一个元组,则必须包含两个整型数,(filter_size_height, filter_size_width)。否则,filter_size_height = filter_size_width = filter_size。如果filter_size=None,则必须指定output_size, ``conv2d_transpose`` 内部会根据output_size、padding和stride计算出滤波器大小。默认:None。output_size和filter_size不能同时为None。 - - **padding** (int|list|tuple|str,可选) - 填充padding大小。padding参数在输入特征层每边添加 ``dilation * (kernel_size - 1) - padding`` 个0。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含4个二元组:当 ``data_format`` 为"NCHW"时为 [[0,0], [0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NHWC"时为[[0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含4个整数值:[padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含2个整数值:[padding_height, padding_width],此时padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_height = padding_width = padding。默认值:0。 - - **stride** (int|tuple,可选) - 步长stride大小。滤波器和输入进行卷积计算时滑动的步长。如果stride是一个元组,则必须包含两个整型数,形式为(stride_height,stride_width)。否则,stride_height = stride_width = stride。默认:stride = 1。 - - **dilation** (int|tuple,可选) - 膨胀比例(dilation)大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 `_ 较好理解。如果膨胀比例dilation是一个元组,那么元组必须包含两个整型数,形式为(dilation_height, dilation_width)。否则,dilation_height = dilation_width = dilation。默认:dilation= 1。 - - **groups** (int,可选) - 二维转置卷积层的组数。从Alex Krizhevsky的CNN Deep论文中的群卷积中受到启发,当group=2时,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认:group = 1。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv2d_transpose算子默认的权重初始化是Xavier。 - - **bias_attr** (ParamAttr|False,可选)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv2d_transpose算子默认的偏置初始化是0.0。 - - **use_cudnn** (bool,可选) - 是否使用cudnn内核,只有已安装cudnn库时才有效。默认:True。 - - **act** (str,可选) - 激活函数类型,如果设置为None,则不使用激活函数。默认:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:4-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回转置卷积计算的结果,如果指定激活层,则返回转置卷积和激活计算之后的最终结果。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` : 如果输入的shape、filter_size、stride、padding和groups不匹配,抛出ValueError - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有4个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ValueError`` - 如果 ``output_size`` 和 ``filter_size`` 同时为None。 - - ``ShapeError`` - 如果输入不是4-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv2d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv2d_transpose(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) - - diff --git a/doc/paddle/api/paddle/fluid/layers/conv3d_cn.rst b/doc/paddle/api/paddle/fluid/layers/conv3d_cn.rst deleted file mode 100644 index 7468274e7a27a5ce3984d4fb1e0d13daa2237b05..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/conv3d_cn.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. _cn_api_fluid_layers_conv3d: - -conv3d -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv3d(input, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format="NCDHW") - -:api_attr: 声明式编程模式(静态图) - - - -该OP是三维卷积层(convolution3D layer),根据输入、滤波器、步长(stride)、填充(padding)、膨胀比例(dilations)一组参数计算得到输出特征层大小。输入和输出是NCDHW或NDWHC格式,其中N是批尺寸,C是通道数,D是特征层深度,H是特征层高度,W是特征层宽度。三维卷积(Convlution3D)和二维卷积(Convlution2D)相似,但多了一维深度信息(depth)。如果bias_attr不为False,卷积计算会添加偏置项。如果指定了激活函数类型,相应的激活函数会作用在最终结果上。 - -对每个输入X,有等式: - -.. math:: - - Out = \sigma \left ( W * X + b \right ) - -其中: - - :math:`X` :输入值,NCDHW或NDHWC格式的5-D Tensor - - :math:`W` :滤波器值,MCDHW格式的5-D Tensor - - :math:`*` :卷积操作 - - :math:`b` :偏置值,2-D Tensor,形为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值, NCDHW或NDHWC格式的5-D Tensor,和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入形状: :math:`(N, C_{in}, D_{in}, H_{in}, W_{in})` - - 滤波器形状: :math:`(C_{out}, C_{in}, D_f, H_f, W_f)` - -- 输出: - - 输出形状: :math:`(N, C_{out}, D_{out}, H_{out}, W_{out})` - -其中 - -.. math:: - - D_{out} &= \frac{\left ( D_{in} + padding\_depth\_front + padding\_depth\_back-\left ( dilation[0]*\left ( D_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - H_{out} &= \frac{\left ( H_{in} + padding\_height\_top + padding\_height\_bottom-\left ( dilation[1]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - - W_{out} &= \frac{\left ( W_{in} + padding\_width\_left + padding\_width\_right -\left ( dilation[2]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[2]}+1 - -如果 ``padding`` = "SAME": - -.. math:: - D_{out} = \frac{(D_{in} + stride[0] - 1)}{stride[0]} - - H_{out} = \frac{(H_{in} + stride[1] - 1)}{stride[1]} - - W_{out} = \frac{(W_{in} + stride[2] - 1)}{stride[2]} - -如果 ``padding`` = "VALID": - -.. math:: - D_{out} = \frac{\left ( D_{in} -\left ( dilation[0]*\left ( D_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - H_{out} = \frac{\left ( H_{in} -\left ( dilation[1]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - - W_{out} = \frac{\left ( W_{in} -\left ( dilation[2]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[2]}+1 - -参数: - - **input** (Variable) - 形状为 :math:`[N, C, D, H, W]` 或 :math:`[N, D, H, W, C]` 的5-D Tensor,N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度,数据类型为float16, float32或float64。 - - **num_fliters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - - **filter_size** (int|list|tuple) - 滤波器大小。如果它是一个列表或元组,则必须包含三个整数值:(filter_size_depth, filter_size_height,filter_size_width)。若为一个整数,则filter_size_depth = filter_size_height = filter_size_width = filter_size。 - - **stride** (int|list|tuple,可选) - 步长大小。滤波器和输入进行卷积计算时滑动的步长。如果它是一个列表或元组,则必须包含三个整型数:(stride_depth, stride_height, stride_width)。若为一个整数,stride_depth = stride_height = stride_width = stride。默认值:1。 - - **padding** (int|list|tuple|str,可选) - 填充大小。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含5个二元组:当 ``data_format`` 为"NCDHW"时为 [[0,0], [0,0], [padding_depth_front, padding_depth_back], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NDHWC"时为[[0,0], [padding_depth_front, padding_depth_back], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含6个整数值:[padding_depth_front, padding_depth_back, padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含3个整数值:[padding_depth, padding_height, padding_width],此时 padding_depth_front = padding_depth_back = padding_depth, padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_depth = padding_height = padding_width = padding。默认值:0。 - - **dilation** (int|list|tuple,可选) - 膨胀比例大小。空洞卷积时会使用该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息。如果膨胀比例为列表或元组,则必须包含三个整型数:(dilation_depth, dilation_height,dilation_width)。若为一个整数,dilation_depth = dilation_height = dilation_width = dilation。默认值:1。 - - **groups** (int,可选) - 三维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=n,输入和滤波器分别根据通道数量平均分为n组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算,……,第n组滤波器和第n组输入进行卷积计算。默认值:1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool,可选)- 指定偏置参数属性的对象。若 ``bias_attr`` 为bool类型,只支持为False,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool,可选)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **act** (str,可选) - 激活函数类型, 如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` 。如果设为None,则未添加激活函数。默认值:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值:None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCDHW"和"NDHWC"。N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度。默认值:"NCDHW"。 - -返回:5-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回卷积计算的结果,如果指定激活层,则返回卷积和激活计算之后的最终结果。 - -返回类型:Variable。 - -抛出异常: - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCDHW"也不是"NDHWC"。 - - ``ValueError`` - 如果 ``input`` 的通道数未被明确定义。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有5个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果输入不是5-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - - ``ShapeError`` - 如果输出的通道数不能被 ``groups`` 整除。 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 12, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv3d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv3d(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 12, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) - - diff --git a/doc/paddle/api/paddle/fluid/layers/conv3d_transpose_cn.rst b/doc/paddle/api/paddle/fluid/layers/conv3d_transpose_cn.rst deleted file mode 100644 index 0331df5d6a4fab39a78c68190b0b1066ec5681a9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/conv3d_transpose_cn.rst +++ /dev/null @@ -1,124 +0,0 @@ -.. _cn_api_fluid_layers_conv3d_transpose: - -conv3d_transpose -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv3d_transpose(input, num_filters, output_size=None, filter_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format='NCDHW') - -:api_attr: 声明式编程模式(静态图) - - - -三维转置卷积层(Convlution3D transpose layer) - -该层根据输入(input)、滤波器(filter)和卷积核膨胀比例(dilations)、步长(stride)、填充(padding)来计算输出特征层大小或者通过output_size指定输出特征层大小。输入(Input)和输出(Output)为NCDHW或者NDHWC格式。其中N为批尺寸,C为通道数(channel),D为特征深度,H为特征层高度,W为特征层宽度。转置卷积的计算过程相当于卷积的反向计算。转置卷积又被称为反卷积(但其实并不是真正的反卷积)。欲了解卷积转置层细节,请参考下面的说明和 参考文献_ 。如果参数bias_attr不为False, 转置卷积计算会添加偏置项。如果act不为None,则转置卷积计算之后添加相应的激活函数。 - -.. _参考文献: http://www.matthewzeiler.com/wp-content/uploads/2017/07/cvpr2010.pdf - -输入 :math:`X` 和输出 :math:`Out` 函数关系如下: - -.. math:: - \\Out=\sigma (W*X+b)\\ - -其中: - - :math:`X` : 输入,具有NCDHW或NDHWC格式的5-D Tensor - - :math:`W` : 滤波器,具有NCDHW格式的5-D Tensor - - :math:`*` : 卷积操作(注意:转置卷积本质上的计算还是卷积) - - :math:`b` : 偏置(bias),2-D Tensor,形状为 ``[M,1]`` - - :math:`σ` : 激活函数 - - :math:`Out` : 输出值,NCDHW或NDHWC格式的5-D Tensor,和 ``X`` 的形状可能不同 - -**示例** - -输入: - - 输入的shape::math:`(N,C_{in}, D_{in}, H_{in}, W_{in})` - - 滤波器的shape::math:`(C_{in}, C_{out}, D_f, H_f, W_f)` - - - -输出: - - 输出的shape::math:`(N,C_{out}, D_{out}, H_{out}, W_{out})` - - -其中: - -.. math:: - - & D'_{out}=(D_{in}-1)*strides[0] - pad\_depth\_front - pad\_depth\_back + dilations[0]*(D_f-1)+1\\ - & H'_{out}=(H_{in}-1)*strides[1] - pad\_height\_top - pad\_height\_bottom + dilations[1]*(H_f-1)+1\\ - & W'_{out}=(W_{in}-1)*strides[2] - pad\_width\_left - pad\_width\_right + dilations[2]*(W_f-1)+1\\ - & D_{out}\in[D'_{out},D'_{out} + strides[0])\\ - & H_{out}\in[H'_{out},H'_{out} + strides[1])\\ - & W_{out}\in[W'_{out},W'_{out} + strides[2])\\ - -如果 ``padding`` = "SAME": - -.. math:: - D'_{out} = \frac{(D_{in} + stride[0] - 1)}{stride[0]}\\ - H'_{out} = \frac{(H_{in} + stride[1] - 1)}{stride[1]}\\ - W'_{out} = \frac{(W_{in} + stride[2] - 1)}{stride[2]}\\ - -如果 ``padding`` = "VALID": - -.. math:: - D'_{out}=(D_{in}-1)*strides[0] + dilations[0]*(D_f-1)+1\\ - H'_{out}=(H_{in}-1)*strides[1] + dilations[1]*(H_f-1)+1\\ - W'_{out}=(W_{in}-1)*strides[2] + dilations[2]*(W_f-1)+1\\ - -注意: - -如果output_size为None,则 :math:`D_{out}` = :math:`D^\prime_{out}` , :math:`H_{out}` = :math:`H^\prime_{out}` , :math:`W_{out}` = :math:`W^\prime_{out}` ;否则,指定的output_size_depth(输出特征层的深度) :math:`D_{out}` 应当介于 :math:`D^\prime_{out}` 和 :math:`D^\prime_{out} + strides[0]` 之间(不包含 :math:`D^\prime_{out} + strides[0]` ),指定的output_size_height(输出特征层的高) :math:`H_{out}` 应当介于 :math:`H^\prime_{out}` 和 :math:`H^\prime_{out} + strides[1]` 之间(不包含 :math:`H^\prime_{out} + strides[1]` ), 并且指定的output_size_width(输出特征层的宽) :math:`W_{out}` 应当介于 :math:`W^\prime_{out}` 和 :math:`W^\prime_{out} + strides[2]` 之间(不包含 :math:`W^\prime_{out} + strides[2]` )。 - -由于转置卷积可以当成是卷积的反向计算,而根据卷积的输入输出计算公式来说,不同大小的输入特征层可能对应着相同大小的输出特征层,所以对应到转置卷积来说,固定大小的输入特征层对应的输出特征层大小并不唯一。 - -如果指定了output_size, ``conv3d_transpose`` 可以自动计算滤波器的大小。 - -参数: - - **input** (Variable)- 形状为 :math:`[N, C, D, H, W]` 或 :math:`[N, D, H, W, C]` 的5-D Tensor,N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度,数据类型:float32或float64。 - - **num_filters** (int) - 滤波器(卷积核)的个数,与输出的图片的通道数相同。 - - **output_size** (int|tuple,可选) - 输出图片的大小。如果output_size是一个元组,则必须包含三个整型数,(output_size_depth,output_size_height,output_size_width)。如果output_size=None,则内部会使用filter_size、padding和stride来计算output_size。如果output_size和filter_size是同时指定的,那么它们应满足上面的公式。默认:None。output_size和filter_size不能同时为None。 - - **filter_size** (int|tuple,可选) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_depth,filter_size_height, filter_size_width)。否则,filter_size_depth = filter_size_height = filter_size_width = filter_size。如果filter_size=None,则必须指定output_size, ``conv2d_transpose`` 内部会根据output_size、padding和stride计算出滤波器大小。默认:None。output_size和filter_size不能同时为None。 - - **padding** (int|list|tuple|str,可选) - 填充padding大小。padding参数在输入特征层每边添加 ``dilation * (kernel_size - 1) - padding`` 个0。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含5个二元组:当 ``data_format`` 为"NCDHW"时为 [[0,0], [0,0], [pad_depth_front, pad_depth_back], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right]],当 ``data_format`` 为"NDHWC"时为[[0,0], [pad_depth_front, pad_depth_back], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right], [0,0]];(2)包含6个整数值:[pad_depth_front, pad_depth_back, pad_height_top, pad_height_bottom, pad_width_left, pad_width_right];(3)包含3个整数值:[pad_depth, pad_height, pad_width],此时 pad_depth_front = pad_depth_back = pad_depth, pad_height_top = pad_height_bottom = pad_height, pad_width_left = pad_width_right = pad_width。若为一个整数,pad_depth = pad_height = pad_width = padding。默认值:0。 - - **stride** (int|tuple,可选) - 步长stride大小。滤波器和输入进行卷积计算时滑动的步长。如果stride是一个元组,那么元组的形式为(stride_depth,stride_height,stride_width)。否则,stride_depth = stride_height = stride_width = stride。默认:stride = 1。 - - **dilation** (int|tuple,可选) - 膨胀比例dilation大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 `_ 较好理解。如果膨胀比例dilation是一个元组,那么元组的形式为(dilation_depth,dilation_height, dilation_width)。否则,dilation_depth = dilation_height = dilation_width = dilation。默认:dilation= 1。 - - **groups** (int,可选) - 三维转置卷积层的组数。从Alex Krizhevsky的CNN Deep论文中的群卷积中受到启发,当group=2时,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认:group = 1。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv3d_transpose算子默认的权重初始化是Xavier。 - - **bias_attr** (ParamAttr|False,可选)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv3d_transpose算子默认的偏置初始化是0.0。 - - **use_cudnn** (bool,可选) - 是否使用cudnn内核,只有已安装cudnn库时才有效。默认:True。 - - **act** (str,可选) - 激活函数类型,如果设置为None,则不使用激活函数。默认:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCDHW"和"NDHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCDHW"。 - -返回:5-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回转置卷积计算的结果,如果指定激活层,则返回转置卷积和激活计算之后的最终结果。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` - 如果输入的shape、filter_size、stride、padding和groups不匹配。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCDHW"也不是"NDHWC"。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有5个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ValueError`` - 如果 ``output_size`` 和 ``filter_size`` 同时为None。 - - ``ShapeError`` - 如果输入不是5-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 12, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv3d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv3d_transpose(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 12, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) diff --git a/doc/paddle/api/paddle/fluid/layers/cos_sim_cn.rst b/doc/paddle/api/paddle/fluid/layers/cos_sim_cn.rst deleted file mode 100644 index bee83df05f929eb2808de57958d66198e8531d05..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/cos_sim_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_cos_sim: - -cos_sim -------------------------------- - -.. py:function:: paddle.fluid.layers.cos_sim(X, Y) - - - - -余弦相似度算子(Cosine Similarity Operator) - -.. math:: - - Out = \frac{X^{T}*Y}{\sqrt{X^{T}*X}*\sqrt{Y^{T}*Y}} - -输入X和Y必须具有相同的shape。但是有一个例外:如果输入Y的第一维为1(不同于输入X的第一维度),在计算它们的余弦相似度之前,Y的第一维度会自动进行广播(broadcast),以便于匹配输入X的shape。 - -输入X和Y可以都携带或者都不携带LoD(Level of Detail)信息。但输出和输入X的LoD信息保持一致。 - -参数: - - **X** (Variable) - cos_sim操作函数的第一个输入,维度为 ``[N_1, N_2, ..., N_k]`` 的多维LoDTensor, 维度不能小于2。数据类型:float32。 - - **Y** (Variable) - cos_sim操作函数的第二个输入,维度为 ``[N_1 或者 1, N_2, ..., N_k]`` 的多维Tensor。数据类型:float32。 - -返回:LoDTensor。输出两个输入的余弦相似度。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name='x', shape=[3, 7], dtype='float32', append_batch_size=False) - y = fluid.layers.data(name='y', shape=[1, 7], dtype='float32', append_batch_size=False) - out = fluid.layers.cos_sim(x, y) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(3, 7)).astype('float32') - np_y = np.random.random(size=(1, 7)).astype('float32') - output = exe.run(feed={"x": np_x, "y": np_y}, fetch_list = [out]) - print(output) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/create_array_cn.rst b/doc/paddle/api/paddle/fluid/layers/create_array_cn.rst deleted file mode 100644 index 1426688b11bafd00a8a115aaf3f3eefcd907979b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/create_array_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_create_array: - -create_array -------------------------------- - -.. py:function:: paddle.fluid.layers.create_array(dtype) - - - - - -此OP创建一个LoDTensorArray,它可以用作 :ref:`cn_api_fluid_layers_array\_write` , :ref:`cn_api_fluid_layers_array\_read` OP的输入,以及和 :ref:`cn_api_fluid_layers_While` OP -一起创建RNN网络。 - -参数: - - **dtype** (str) — 指定Tensor中元素的数据类型,支持的数据类型值:float32,float64,int32,int64。 - -返回: 返回创建的空LoDTensorArray,Tensor中的元素数据类型为指定的dtype。 - -返回类型: Variable。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.create_array(dtype='float32') # 创建一个数据类型为float32的LoDTensorArray。 - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/create_global_var_cn.rst b/doc/paddle/api/paddle/fluid/layers/create_global_var_cn.rst deleted file mode 100644 index 97034b6dc1c6bc60e8be576cb2332deb1f1d77f7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/create_global_var_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_create_global_var: - -create_global_var -------------------------------- - -.. py:function:: paddle.fluid.layers.create_global_var(shape,value,dtype,persistable=False,force_cpu=False,name=None) - - - - -该OP在全局块中创建一个新的Tensor,Tensor的值为 ``value`` 。 - -参数: - - **shape** (list[int])- 指定输出Tensor的形状,它可以是一个整数列表。 - - **value** (float)- 变量的值,填充新创建的变量。 - - **dtype** (str|numpy.dtype,可选)– 初始化数据类型。 - - **persistable** (bool,可选)- 是否为永久变量,默认:False。 - - **force_cpu** (bool,可选)- 是否将该变量压入CPU,默认值为 False。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:创建的Tensor变量 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - var = layers.create_global_var(shape=[2,3], value=1.0, dtype='float32', - persistable=True, force_cpu=True, name='new_var') - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/create_parameter_cn.rst b/doc/paddle/api/paddle/fluid/layers/create_parameter_cn.rst deleted file mode 100644 index 4176d7507f80e9767b32755f1169fbcbd502bb6a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/create_parameter_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_create_parameter: - -create_parameter -------------------------------- - - -.. py:function:: paddle.fluid.layers.create_parameter(shape,dtype,name=None,attr=None,is_bias=False,default_initializer=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP创建一个参数。该参数是一个可学习的变量, 拥有梯度并且可优化。 - -**注意:这是一个低级别的API。如果您希望自己创建新的op,这个API将非常有用,无需使用layers。** - -参数: - - **shape** (list[int]) - 指定输出Tensor的形状,它可以是一个整数列表。 - - **dtype** (str|numpy.dtype) – 初始化数据类型。可设置的字符串值有:"float16","float32","float64"。 - - **name** (str,可选) - 参数的名称。具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **attr** (ParamAttr,可选) - 指定参数的属性对象。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。默认值为None,表示将采用 ParamAttr 的默认方式初始化。 - - **is_bias** (bool,可选) - 当default_initializer为空,该值会对选择哪个默认初始化程序产生影响。如果is_bias为真,则使用initializer.Constant(0.0),否则使用Xavier(),默认值False。 - - **default_initializer** (Initializer,可选) - 参数的初始化程序,默认值为空。 - -返回:创建的Tensor变量。 - -返回类型:Variable。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - W = layers.create_parameter(shape=[784, 200], dtype='float32') - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/create_py_reader_by_data_cn.rst b/doc/paddle/api/paddle/fluid/layers/create_py_reader_by_data_cn.rst deleted file mode 100644 index ed42dceaa52ef3be13ffc4d2d50d7458fb317584..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/create_py_reader_by_data_cn.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. _cn_api_fluid_layers_create_py_reader_by_data: - -create_py_reader_by_data -------------------------------- - - -.. py:function:: paddle.fluid.layers.create_py_reader_by_data(capacity,feed_list,name=None,use_double_buffer=True) - -:api_attr: 声明式编程模式(静态图) - - - -创建一个Python端提供数据的reader。该OP与 :ref:`cn_api_fluid_layers_py_reader` 类似,不同点在于它能够从feed变量列表读取数据。 - -参数: - - **capacity** (int) - ``py_reader`` 维护的队列缓冲区的容量大小。单位是batch数量。若reader读取速度较快,建议设置较大的 ``capacity`` 值。 - - **feed_list** (list(Variable)) - feed变量列表,这些变量一般由 :code:`fluid.data()` 创建。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **use_double_buffer** (bool,可选) - 是否使用双缓冲区,双缓冲区是为了预读下一个batch的数据、异步CPU -> GPU拷贝。默认值为True。 - -返回:能够从feed变量列表读取数据的reader,数据类型和feed变量列表中变量的数据类型相同。 - -返回类型:reader - -**代码示例:** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import paddle.dataset.mnist as mnist - - def network(img, label): - # 用户构建自定义网络,此处以一个简单的线性回归为例。 - predict = fluid.layers.fc(input=img, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=predict, label=label) - return fluid.layers.mean(loss) - - MEMORY_OPT = False - USE_CUDA = False - - image = fluid.data(name='image', shape=[None, 1, 28, 28], dtype='float32') - label = fluid.data(name='label', shape=[None, 1], dtype='int64') - reader = fluid.layers.create_py_reader_by_data(capacity=64, - feed_list=[image, label]) - reader.decorate_paddle_reader( - paddle.reader.shuffle(paddle.batch(mnist.train(), batch_size=5), buf_size=500)) - img, label = fluid.layers.read_file(reader) - loss = network(img, label) # 用户构建自定义网络并返回损失函数 - - place = fluid.CUDAPlace(0) if USE_CUDA else fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - build_strategy = fluid.BuildStrategy() - build_strategy.memory_optimize = True if MEMORY_OPT else False - exec_strategy = fluid.ExecutionStrategy() - compiled_prog = fluid.compiler.CompiledProgram( - fluid.default_main_program()).with_data_parallel( - loss_name=loss.name, - build_strategy=build_strategy, - exec_strategy=exec_strategy) - - for epoch_id in range(2): - reader.start() - try: - while True: - exe.run(compiled_prog, fetch_list=[loss.name]) - except fluid.core.EOFException: - reader.reset() diff --git a/doc/paddle/api/paddle/fluid/layers/crf_decoding_cn.rst b/doc/paddle/api/paddle/fluid/layers/crf_decoding_cn.rst deleted file mode 100644 index ea5fd7eb1e56351474a5a72181b8e58e1929811d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/crf_decoding_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_crf_decoding: - -crf_decoding -------------------------------- - - -.. py:function:: paddle.fluid.layers.crf_decoding(input, param_attr, label=None, length=None) - -:api_attr: 声明式编程模式(静态图) - - - - - -该层读取由 :ref:`cn_api_fluid_layers_linear_chain_crf` 学习的 emission feature weights(发射状态特征的权重)和 transition feature weights (转移特征的权重) 进行解码。 -本层实现了 Viterbi 算法,可以动态地寻找隐藏状态最可能的序列,该序列也被称为 Viterbi 路径(Viterbi path),从而得到观察标签 (tags) 序列。 - -这个层运算的结果会随着输入 ``Label`` 的有无而改变: - - 1. ``Label`` 非 None 的情况,在实际训练中时常发生。此时本层会协同 :ref:`cn_api_fluid_layers_chunk_eval` 工作。在 LoDTensor 模式下,本层会返回一行形为 [N X 1] 的向量,在 padding 模式下,返回形状则为 [B x S],其中值为 0 的部分代表该 label 不适合作为对应结点的标注,值为1的部分则反之。此类型的输出可以直接作为 :ref:`cn_api_fluid_layers_chunk_eval` 算子的输入; - - 2. 当没有 ``Label`` 时,该函数会执行标准解码过程; - -(没有 ``Label`` 时)该运算返回一个形状为 [N X 1] 或 [B x S] 的向量,此处的形状取决于输入是 LoDTensor 还是普通 Tensor,其中元素取值范围为 0 ~ 最大标注个数-1,分别为预测出的标注(tag)所在的索引。 - -参数: - - **input** (Variable) — 一个形为 [N x D] 的 LoDTensor,其中 N 是mini-batch的大小,D是标注(tag) 的总数; 或者形为 [B x S x D] 的普通 Tensor,B 是批次大小,S 是序列最大长度,D 是标注的总数。 该输入是 :ref:`cn_api_fluid_layers_linear_chain_crf`` 的 unscaled emission weight matrix (未标准化的发射权重矩阵)。数据类型为 float32 或者 float64。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **label** (Variable,可选) — 形为 [N x 1] 的正确标注(ground truth)(LoDTensor 模式),或者形状为 [B x S]。 有关该参数的更多信息,请详见上述描述。数据类型为 int64。 - - **length** (Variable,可选) — 形状为 [B x 1], 表示输入序列的真实长度。该输入非 None,表示该层工作在 padding 模式下,即 ``input`` 和 ``label`` 都是带 padding 的普通 Tensor。数据类型为 int64。 - -返回:解码结果具体内容根据 ``Label`` 参数是否提供而定,请参照上面的介绍来详细了解。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - images = fluid.layers.data(name='pixel', shape=[784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int32') - hidden = fluid.layers.fc(input=images, size=2) - crf = fluid.layers.linear_chain_crf(input=hidden, label=label, - param_attr=fluid.ParamAttr(name="crfw")) - crf_decode = fluid.layers.crf_decoding(input=hidden, - param_attr=fluid.ParamAttr(name="crfw")) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/crop_cn.rst b/doc/paddle/api/paddle/fluid/layers/crop_cn.rst deleted file mode 100644 index 18d375f06d5e4277e93995db4de71a3006cbf0fb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/crop_cn.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. _cn_api_fluid_layers_crop: - -crop -------------------------------- - -.. py:function:: paddle.fluid.layers.crop(x, shape=None, offsets=None, name=None) - - - - -该OP根据偏移量(offsets)和形状(shape),裁剪输入张量。 - -**注意:** 此OP已被弃用,它将在以后的版本中被删除,请使用 :ref:`cn_api_fluid_layers_crop_tensor` 替代 - -**样例**: - -:: - - * Case 1: - Given - X = [[0, 1, 2, 0, 0] - [0, 3, 4, 0, 0] - [0, 0, 0, 0, 0]], - and - shape = [2, 2], - offsets = [0, 1], - output is: - Out = [[1, 2], - [3, 4]]. - * Case 2: - Given - X = [[0, 1, 2, 5, 0] - [0, 3, 4, 6, 0] - [0, 0, 0, 0, 0]], - and shape is tensor - shape = [[0, 0, 0] - [0, 0, 0]] - and - offsets = [0, 1], - - output is: - Out = [[1, 2, 5], - [3, 4, 6]]. - - -参数: - - **x** (Variable): 多维Tensor,数据类型为float32 - - **shape** (Variable|list/tuple of integers) - 指定输出Tensor的形状,它可以是一个Tensor/整数列表/整数元组。如果是Tensor,它的秩必须与x相同,它的形状指定了输出Tensor的形状,它的元素的数值在这里不起作用,该方式适用于每次迭代时候需要改变输出形状的情况。如果是整数列表/元组,则其长度必须与x的秩相同 - - **offsets** (Variable|list/tuple of integers|None,可选) - 指定每个维度上的裁剪的偏移量,它可以是一个Tensor,或者一个整数列表/整数元组。如果是一个Tensor,它的秩必须与x相同,这种方法适用于每次迭代的偏移量(offset)都可能改变的情况。如果是一个整数列表/元组,则长度必须与x的秩相同,如果offsets=None,则每个维度的偏移量为0。默认值为None - - **name** (str|None,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 经过形状裁剪之后的Tensor,与输入x具有相同的数据类型 - -返回类型: Variable - -抛出异常: 如果形状不是列表、元组或Variable,抛出ValueError - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - # case 1 - # 输入x的形状为[-1, 3, 5], - # 参数shape = y是个Variable,形状是[-1, 2, 2],输出Tensor将具有和y一样的形状 - # y的具体数值不起作用,起作用的只有它的形状 - # 经过下面的crop操作之后输出张量的形状是: [-1, 2, 2] - x = fluid.layers.data(name="x", shape=[3, 5], dtype="float32") - y = fluid.layers.data(name="y", shape=[2, 2], dtype="float32") - crop = fluid.layers.crop(x, shape=y) - ## 或者 case 2 - # 输入z的形状为: [-1, 3, 5], shape为整数列表[-1, 2, 3] - # 则经过下面的crop操作之后输出张量的形状为:[-1, 2, 3] - z = fluid.layers.data(name="z", shape=[3, 5], dtype="float32") - crop = fluid.layers.crop(z, shape=[-1, 2, 3]) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ctc_greedy_decoder_cn.rst b/doc/paddle/api/paddle/fluid/layers/ctc_greedy_decoder_cn.rst deleted file mode 100644 index c2d8f67ca85f49c121c2a6530b4ad7bcb1632328..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ctc_greedy_decoder_cn.rst +++ /dev/null @@ -1,105 +0,0 @@ -.. _cn_api_fluid_layers_ctc_greedy_decoder: - -ctc_greedy_decoder -------------------------------- - -.. py:function:: paddle.fluid.layers.ctc_greedy_decoder(input, blank, name=None) - - - - - -该OP用于贪婪策略解码序列,步骤如下: - 1. 获取输入中的每一行的最大值索引,也就是numpy.argmax(input, axis=0)。 - 2. 对于step1结果中的每个序列,合并两个空格之间的重复部分并删除所有空格。 - -该API支持两种输入,LoDTensor和Tensor输入,不同输入的代码样例如下: - -**样例**: - -:: - - # for lod tensor input - 已知: - - input.data = [[0.6, 0.1, 0.3, 0.1], - [0.3, 0.2, 0.4, 0.1], - [0.1, 0.5, 0.1, 0.3], - [0.5, 0.1, 0.3, 0.1], - - [0.5, 0.1, 0.3, 0.1], - [0.2, 0.2, 0.2, 0.4], - [0.2, 0.2, 0.1, 0.5], - [0.5, 0.1, 0.3, 0.1]] - - input.lod = [[4, 4]] - - 计算过程: - - 1. 将argmax的运算结果应用于输入的第一个序列,即 input.data[0:4] 。 - 则得出的结果为[[0], [2], [1], [0]] - 2. 合并重复的索引值部分,删除空格,即为0的值。 - 则第一个输入序列对应的输出为:[[2], [1]] - - 最后 - - output.data = [[2], - [1], - [3]] - - output.lod = [[2, 1]] - - # for tensor input - input.data = [[[0.6, 0.1, 0.3, 0.1], - [0.3, 0.2, 0.4, 0.1], - [0.1, 0.5, 0.1, 0.3], - [0.5, 0.1, 0.3, 0.1]], - - [[0.5, 0.1, 0.3, 0.1], - [0.2, 0.2, 0.2, 0.4], - [0.2, 0.2, 0.1, 0.5], - [0.5, 0.1, 0.3, 0.1]]] - - input_length.data = [[4], [4]] - input.shape = [2, 4, 4] - - step1: Apply argmax to first input sequence which is input.data[0:4]. Then we get: - [[0], [2], [1], [0]], for input.data[4:8] is [[0], [3], [3], [0]], shape is [2,4,1] - step2: Change the argmax result to use padding mode, then argmax result is - [[0, 2, 1, 0], [0, 3, 3, 0]], shape is [2, 4], lod is [], input_length is [[4], [4]] - step3: Apply ctc_align to padding argmax result, padding_value is 0 - - Finally: - output.data = [[2, 1, 0, 0], - [3, 0, 0, 0]] - output_length.data = [[2], [1]] - - -参数: - - **input** (Variable) — 变长序列的概率, 在输入为LoDTensor情况下,它是具有LoD信息的二维LoDTensor。 形状为[Lp,num_classes +1],其中Lp是所有输入序列的长度之和,num_classes是真实的类数。 在输入为Tensor情况下,它是带有填充的3-D张量,其形状为[batch_size,N,num_classes +1]。 (不包括空白标签)。 数据类型可以是float32或float64。 - - **blank** (int) — Connectionist Temporal Classification (CTC) loss空白标签索引, 其数值属于半开区间[0,num_classes + 1) - - **name** (str) — (str|None,可选) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None - -返回:对于输入为LoDTensor的情况,返回CTC贪婪解码器的结果,即2-D LoDTensor,形状为[Lp,1],数据类型为int64。 “ Lp”是所有输出序列长度的总和。 如果结果中的所有序列均为空,则结果LoDTensor将为[-1],其中LoD为[[]]。对于输入为Tensor的情况,返回一个元组,(output, output_length), 其中,output是一个形状为 [batch_size, N],类型为int64的Tensor。output_length是一个形状为[batch_size, 1],类型为int64的Tensor,表示Tensor输入下,每个输出序列的长度。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - # for lod mode - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[None, 8], dtype='float32', lod_level=1) - cost = fluid.layers.ctc_greedy_decoder(input=x, blank=0) - # for padding mode - x_pad = fluid.data(name='x_pad', shape=[10, 4, 8], dtype='float32') - x_pad_len = fluid.data(name='x_pad_len', shape=[10, 1], dtype='int64') - out, out_len = fluid.layers.ctc_greedy_decoder(input=x_pad, blank=0, - input_length=x_pad_len) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/data_cn.rst b/doc/paddle/api/paddle/fluid/layers/data_cn.rst deleted file mode 100644 index f250c9438581e2cddaebe4f72c8adb5c6821cdb9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/data_cn.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _cn_api_fluid_data: - -data -------------------------------- - - -.. py:function:: paddle.fluid.data(name, shape, dtype='float32', lod_level=0) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.data -:alias: paddle.nn.data,paddle.nn.input.data -:old_api: paddle.fluid.data - - - -该OP会在全局block中创建变量(Variable),该全局变量可被计算图中的算子(operator)访问。该变量可作为占位符用于数据输入。例如用执行器(Executor)feed数据进该变量 - -注意: - - 不推荐使用 ``paddle.fluid.layers.data`` ,其在之后的版本中会被删除。请使用这个 ``paddle.fluid.data`` 。 - - ``paddle.fluid.layers.data`` 在组网期间会设置创建的变量维度(shape)和数据类型(dtype),但不会检查输入数据的维度和数据类型是否符合要求。 ``paddle.fluid.data`` 会在运行过程中由Executor/ParallelExecutor检查输入数据的维度和数据类型。 - - 如果想输入变长输入,可以使用 ``paddle.fluid.data`` 时将变长维度设为-1,或者直接输入 ``paddle.fluid.layers.data`` 且PaddlePaddle会按具体输入的形状运行。 - - 本API创建的变量默认 ``stop_gradient`` 属性为true,这意味这反向梯度不会被传递过这个数据变量。如果用户想传递反向梯度,可以设置 ``var.stop_gradient = False`` 。 - -参数: - - **name** (str)- 被创建的变量的名字,具体用法请参见 :ref:`api_guide_Name` 。 - - **shape** (list|tuple)- 声明维度信息的list或tuple。 - - **dtype** (np.dtype|VarType|str,可选)- 数据类型,支持bool,float16,float32,float64,int8,int16,int32,int64,uint8。默认值为float32。 - - **lod_level** (int,可选)- LoDTensor变量的LoD level数,LoD level是PaddlePaddle的高级特性,一般任务中不会需要更改此默认值,关于LoD level的详细适用场景和用法请见 :ref:`cn_user_guide_lod_tensor` 。默认值为0。 - -返回:全局变量,可进行数据访问 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # Creates a variable with fixed size [3, 2, 1] - # User can only feed data of the same shape to x - x = fluid.data(name='x', shape=[3, 2, 1], dtype='float32') - - # Creates a variable with changable batch size -1. - # Users can feed data of any batch size into y, - # but size of each data sample has to be [2, 1] - y = fluid.data(name='y', shape=[-1, 2, 1], dtype='float32') - - z = x + y - - # In this example, we will feed x and y with np-ndarry "1" - # and fetch z, like implementing "1 + 1 = 2" in PaddlePaddle - feed_data = np.ones(shape=[3, 2, 1], dtype=np.float32) - - exe = fluid.Executor(fluid.CPUPlace()) - out = exe.run(fluid.default_main_program(), - feed={ - 'x': feed_data, - 'y': feed_data - }, - fetch_list=[z.name]) - - # np-ndarray of shape=[3, 2, 1], dtype=float32, whose elements are 2 - print(out) - - diff --git a/doc/paddle/api/paddle/fluid/layers/data_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/data_norm_cn.rst deleted file mode 100644 index 4954dfa22a7c67baa441c7a209ab7df87d8cc4d8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/data_norm_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _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, name=None, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False) - -:api_attr: 声明式编程模式(静态图) - - - -**数据正则化层** - -可用作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** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - **in_place** (bool,默认值False) - 使data_norm的输入和输出复用同一块内存。 - - **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进行模型平均。 - - **slot_dim** (int, 默认值为-1) - 一个slot的embedding维度,slot用来表征一类特征的集合,在pslib模式下,通常我们通过slot区分特征id,并从参数服务器(pslib)中提取它们的embedding。embedding的第一维是历史上这个embedding展示的次数。如果本op的输入是由这样的embedding连接而来,那么当这个特征id是新的或空的,则正则化结果可能不实际。为了避免这种情况,我们添加了slot_dim来定位并判断这一维是否为零。如果是的话,我们选择跳过正则化。 - - **summary_decay_rate** (float, 默认值为0.9999999) - 更新summary信息时的衰减率。 - - **sync_stats** (bool, 默认值False) - 在多GPU卡的场景下可以使用,用来同步多卡间的summary信息。 - - **enable_scale_and_shift** (bool, 默认值False) - 在分布式全局正则化后是否做像batchnorm一样做scale&shift的操作。 - -返回: 张量变量,是对输入数据进行正则化后的结果。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - hidden1 = fluid.layers.data(name="hidden1", shape=[200]) - hidden2 = fluid.layers.data_norm(name="hidden2", input=hidden1) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/deformable_conv_cn.rst b/doc/paddle/api/paddle/fluid/layers/deformable_conv_cn.rst deleted file mode 100644 index a74315d5ad7fbcc54bef8869c7ebd11433450b2d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/deformable_conv_cn.rst +++ /dev/null @@ -1,102 +0,0 @@ -.. _cn_api_fluid_layers_deformable_conv: - -deformable_conv -------------------------------- - - -.. py:function:: paddle.fluid.layers.deformable_conv(input, offset, mask, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, deformable_groups=None, im2col_step=None, param_attr=None, bias_attr=None, modulated=True, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**可变形卷积算子** - -deformable_conv op对输入4-D Tensor计算2-D可变形卷积。给定输入Tensor x,输出Tensor y,可变形卷积运算如下所示: - -可形变卷积v2: - - :math:`y(p) = \sum_{k=1}^{K}{w_k * x(p + p_k + \Delta p_k) * \Delta m_k}` - -可形变卷积v1: - - :math:`y(p) = \sum_{k=1}^{K}{w_k * x(p + p_k + \Delta p_k)}` - -其中 :math:`\Delta p_k` 和 :math:`\Delta m_k` 分别为第k个位置的可学习偏移和调制标量。在deformable_conv_v1中 :math:`\Delta m_k` 为1. - -具体细节可以参考论文:`<> `_ 和 `<> `_ 。 - -**示例** - -输入: - input 形状: :math:`(N, C_{in}, H_{in}, W_{in})` - - 卷积核形状: :math:`(C_{out}, C_{in}, H_f, W_f)` - - offset 形状: :math:`(N, 2 * deformable\_groups * H_f * H_w, H_{in}, W_{in})` - - mask 形状: :math:`(N, deformable\_groups * H_f * H_w, H_{in}, W_{in})` - -输出: - 输出形状: :math:`(N, C_{out}, H_{out}, W_{out})` - -其中 - -.. math:: - - H_{out}&= \frac{(H_{in} + 2 * paddings[0] - (dilations[0] * (H_f - 1) + 1))}{strides[0]} + 1 - - W_{out}&= \frac{(W_{in} + 2 * paddings[1] - (dilations[1] * (W_f - 1) + 1))}{strides[1]} + 1 - - -参数: - - **input** (Variable) - 形状为 :math:`[N, C, H, W]` 的输入Tensor,数据类型为float32或float64。 - - **offset** (Variable) – 可变形卷积层的输入坐标偏移,数据类型为float32或float64。 - - **mask** (Variable, 可选) – 可变形卷积层的输入掩码,当使用可变形卷积算子v1时,请将mask设置为None, 数据类型为float32或float64。 - - **num_filters** (int) – 卷积核数,与输出Tensor通道数相同。 - - **filter_size** (int|tuple) – 卷积核大小。如果filter_size为元组,则必须包含两个整数(filter_size_H, filter_size_W)。若数据类型为int,卷积核形状为(filter_size, filter_size)。 - - **stride** (int|tuple) – 步长大小。如果stride为元组,则必须包含两个整数(stride_H, stride_W)。否则stride_H = stride_W = stride。默认值为1。 - - **padding** (int|tuple) – padding大小。如果padding为元组,则必须包含两个整数(padding_H, padding_W)。否则padding_H = padding_W = padding。默认值为0。 - - **dilation** (int|tuple) – dilation大小。如果dilation为元组,则必须包含两个整数(dilation_H, dilation_W)。否则dilation_H = dilation_W = dilation。默认值为1。 - - **groups** (int) – 卷积组数。依据Alex Krizhevsky的Deep CNN论文中的分组卷积,有:当group=2时,前一半卷积核只和前一半输入通道有关,而后一半卷积核只和后一半输入通道有关。缺省值为1。 - - **deformable_groups** (int) – 可变形卷积组数。默认值为1。 - - **im2col_step** (int) – 每个im2col计算的最大图像数。总batch大小应可以被该值整除或小于该值。如果您面临内存问题,可以尝试在此处使用一个较小的值。默认值为64。 - - **param_attr** (ParamAttr,可选) – 可变形卷积的可学习权重的属性。如果将其设置为None或某种ParamAttr,可变形卷积将创建ParamAttr作为param_attr。如果没有设置此param_attr的Initializer,该参数将被Normal(0.0, std)初始化,且其中的std为 :math:`(\frac{2.0 }{filter\_elem\_num})^{0.5}` 。默认值为None。 - - **bias_attr** (ParamAttr|bool,可选) – 可变形卷积层的偏置的参数属性。如果设为False,则输出单元不会加偏置。如果设为None或者某种ParamAttr,conv2d会创建ParamAttr作为bias_attr。如果不设置bias_attr的Initializer,偏置会被初始化为0。默认值为None。 - - **modulated** (bool)- 确定使用v1和v2中的哪个版本,如果为True,则选择使用v2。默认值为True。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:可变形卷积输出的4-D Tensor,数据类型为float32或float64。 - -返回类型:Variable - -抛出异常:ValueError – 如果input, filter_size, stride, padding和groups的大小不匹配。 - -**代码示例** - -.. code-block:: python - - #deformable conv v2: - - import paddle.fluid as fluid - C_in, H_in, W_in = 3, 32, 32 - filter_size, deformable_groups = 3, 1 - data = fluid.layers.data(name='data', shape=[C_in, H_in, W_in], dtype='float32') - offset = fluid.layers.data(name='offset', shape=[2*deformable_groups*filter_size**2, H_in, W_in], dtype='float32') - mask = fluid.layers.data(name='mask', shape=[deformable_groups*filter_size**2, H_in, W_in], dtype='float32') - out = fluid.layers.deformable_conv(input=data, offset=offset, mask=mask, - num_filters=2, filter_size=filter_size, padding=1, modulated=True) - - #deformable conv v1: - - import paddle.fluid as fluid - C_in, H_in, W_in = 3, 32, 32 - filter_size, deformable_groups = 3, 1 - data = fluid.layers.data(name='data', shape=[C_in, H_in, W_in], dtype='float32') - offset = fluid.layers.data(name='offset', shape=[2*deformable_groups*filter_size**2, H_in, W_in], dtype='float32') - out = fluid.layers.deformable_conv(input=data, offset=offset, mask=None, - num_filters=2, filter_size=filter_size, padding=1, modulated=False) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/anchor_generator_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/anchor_generator_cn.rst deleted file mode 100644 index ada0130cce84b1f94d57f60859b04f3b83d1d6ca..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/anchor_generator_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_anchor_generator: - -anchor_generator -------------------------------- - -.. py:function:: paddle.fluid.layers.anchor_generator(input, anchor_sizes=None, aspect_ratios=None, variance=[0.1, 0.1, 0.2, 0.2], stride=None, offset=0.5, name=None) - -:alias_main: paddle.nn.functional.anchor_generator -:alias: paddle.nn.functional.anchor_generator,paddle.nn.functional.vision.anchor_generator -:old_api: paddle.fluid.layers.anchor_generator - - - -**Anchor generator operator** - -为RCNN算法生成anchor,输入的每一位产生N个anchor,N=size(anchor_sizes)*size(aspect_ratios)。生成anchor的顺序首先是aspect_ratios循环,然后是anchor_sizes循环。 - -参数: - - **input** (Variable) - 维度为[N,C,H,W]的4-D Tensor。数据类型为float32或float64。 - - **anchor_sizes** (float32|list|tuple,可选) - 生成anchor的anchor大小,以绝对像素的形式表示,例如:[64.,128.,256.,512.]。若anchor的大小为64,则意味着这个anchor的面积等于64**2。默认值为None。 - - **aspect_ratios** (float32|list|tuple,可选) - 生成anchor的高宽比,例如[0.5,1.0,2.0]。默认值为None。 - - **variance** (list|tuple,可选) - 变量,在框回归delta中使用,数据类型为float32。默认值为[0.1,0.1,0.2,0.2]。 - - **stride** (list|tuple,可选) - anchor在宽度和高度方向上的步长,比如[16.0,16.0],数据类型为float32。默认值为None。 - - **offset** (float32,可选) - 先验框的中心位移。默认值为0.5 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - - 表示输出anchor的Tensor,数据类型为float32或float64。维度为[H,W,num_anchors,4]。 ``H`` 是输入的高度, ``W`` 是输入的宽度, ``num_anchors`` 是输入每位的框数,每个anchor格式(未归一化)为(xmin,ymin,xmax,ymax) - - - 表示输出variance的Tensor,数据类型为float32或float64。维度为[H,W,num_anchors,4]。 ``H`` 是输入的高度, ``W`` 是输入的宽度, ``num_anchors`` 是输入每个位置的框数,每个变量的格式为(xcenter,ycenter,w,h)。 - - -返回类型:Variable - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - conv1 = fluid.data(name='conv1', shape=[None, 48, 16, 16], dtype='float32') - anchor, var = fluid.layers.anchor_generator( - input=conv1, - anchor_sizes=[64, 128, 256, 512], - aspect_ratios=[0.5, 1.0, 2.0], - variance=[0.1, 0.1, 0.2, 0.2], - stride=[16.0, 16.0], - offset=0.5) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/bipartite_match_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/bipartite_match_cn.rst deleted file mode 100644 index 23f2832d97d605b6a80af69ec8ceafbdc3ad9d40..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/bipartite_match_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_fluid_layers_bipartite_match: - -bipartite_match -------------------------------- - -.. py:function:: paddle.fluid.layers.bipartite_match(dist_matrix, match_type=None, dist_threshold=None, name=None) - -:alias_main: paddle.nn.functional.bipartite_match -:alias: paddle.nn.functional.bipartite_match,paddle.nn.functional.vision.bipartite_match -:old_api: paddle.fluid.layers.bipartite_match - - - -该OP实现了贪心二分匹配算法,该算法用于根据输入距离矩阵获得与最大距离的匹配。对于输入二维矩阵,二分匹配算法可以找到每一行的匹配列(匹配意味着最大距离),也可以找到每列的匹配行。此算子仅计算列到行的匹配索引。对于每个实例,匹配索引的数量是 -输入距离矩阵的列号。**该OP仅支持CPU** - -它有两个输出,匹配的索引和距离。简单的描述是该算法将最佳(最大距离)行实体与列实体匹配,并且匹配的索引在ColToRowMatchIndices的每一行中不重复。如果列实体与任何行实体不匹配,则ColToRowMatchIndices设置为-1。 - -注意:输入距离矩阵可以是LoDTensor(带有LoD)或Tensor。如果LoDTensor带有LoD,则ColToRowMatchIndices的高度是批量大小。如果是Tensor,则ColToRowMatchIndices的高度为1。 - -注意:此API是一个非常低级别的API。它由 ``ssd_loss`` 层使用。请考虑使用 ``ssd_loss`` 。 - -参数: - - **dist_matrix** (Variable)- 维度为:[K,M]的2-D LoDTensor,数据类型为float32或float64。它是由每行和每列来表示实体之间的成对距离矩阵。例如,假设一个实体是具有形状[K]的A,另一个实体是具有形状[M]的B. dist_matrix [i] [j]是A[i]和B[j]之间的距离。距离越大,匹配越好。注意:此张量可以包含LoD信息以表示一批输入。该批次的一个实例可以包含不同数量的实体。 - - **match_type** (str,可选)- 匹配方法的类型,应为'bipartite'或'per_prediction'。默认值为None,即'bipartite'。 - - **dist_threshold** (float32,可选)- 如果match_type为'per_prediction',则此阈值用于根据最大距离确定额外匹配的bbox,默认值为None,即0.5。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - - matched_indices(Variable)- 维度为[N,M]的2-D Tensor, 数据类型为int32。 N是批量大小。如果match_indices[i][j]为-1,则表示B[j]与第i个实例中的任何实体都不匹配。否则,这意味着在第i个实例中B[j]与行match_indices[i][j]匹配。第i个实>例的行号保存在match_indices[i][j]中。 - - matched_distance(Variable)- 维度为[N,M]的2-D Tensor, 数据类型为float32,。 N是批量大小。如果match_indices[i][j]为-1,则match_distance[i][j]也为-1.0。否则,假设match_distance[i][j]=d,并且每个实例的行偏移称为LoD。然后match_distance[i][j]=dist_matrix[d]+ LoD[i]][j]。 - - -返回类型:Tuple - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[None, 4], dtype='float32') - y = fluid.data(name='y', shape=[None, 4], dtype='float32') - iou = fluid.layers.iou_similarity(x=x, y=y) - matched_indices, matched_dist = fluid.layers.bipartite_match(iou) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/box_clip_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/box_clip_cn.rst deleted file mode 100644 index 2b5b4ad767b52a49333a9aada0cfce187e71aa1a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/box_clip_cn.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _cn_api_fluid_layers_box_clip: - -box_clip -------------------------------- - -.. py:function:: paddle.fluid.layers.box_clip(input, im_info, name=None) - -:alias_main: paddle.nn.functional.box_clip -:alias: paddle.nn.functional.box_clip,paddle.nn.functional.vision.box_clip -:old_api: paddle.fluid.layers.box_clip - - - -将检测框框剪切为 ``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) – 维度为[N_1, N_2, ..., N_k, 4]的多维Tensor,其中最后一维为box坐标维度。数据类型为float32或float64。 - - **im_info** (Variable) – 维度为[N, 3]的2-D Tensor,N为输入图片个数。具有(高度height,宽度width,比例scale)图像的信息,其中高度和宽度是输入大小,比例是输入大小和原始大小的比率。数据类型为float32或float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 表示剪切后的检测框的Tensor或LoDTensor,数据类型为float32或float64,形状与输入检测框相同 - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - boxes = fluid.data( - name='boxes', shape=[None, 8, 4], dtype='float32', lod_level=1) - im_info = fluid.data(name='im_info', shape=[None, 3]) - out = fluid.layers.box_clip( - input=boxes, im_info=im_info) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/box_coder_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/box_coder_cn.rst deleted file mode 100644 index eb991c1e53e93aa4bfa4b0aa512cf5d78465ee84..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/box_coder_cn.rst +++ /dev/null @@ -1,96 +0,0 @@ -.. _cn_api_fluid_layers_box_coder: - -box_coder -------------------------------- - -.. py:function:: paddle.fluid.layers.box_coder(prior_box, prior_box_var, target_box, code_type='encode_center_size', box_normalized=True, name=None, axis=0) - -:alias_main: paddle.nn.functional.box_coder -:alias: paddle.nn.functional.box_coder,paddle.nn.functional.vision.box_coder -:old_api: paddle.fluid.layers.box_coder - - - -Bounding Box Coder - -编码/解码带有先验框信息的目标边界框 - -编码规则描述如下: - -.. math:: - - ox &= (tx - px)/pw/pxv - - oy &= (ty - py)/ph/pyv - - ow &= log(abs(tw/pw))/pwv - - oh &= log(abs(th/ph))/phv - -解码规则描述如下: - -.. math:: - - ox &= (pw * pxv * tx * + px ) - tw/2 - - oy &= (ph * pyv * ty * + py ) - th/2 - - ow &= exp(pwv * tw ) * pw + tw/2 - - oh &= exp(phv * th ) * ph + th/2 - -其中tx,ty,tw,th分别表示目标框的中心坐标、宽度和高度。同样地,px,py,pw,ph表示先验框地中心坐标、宽度和高度。pxv,pyv,pwv,phv表示先验框变量,ox,oy,ow,oh表示编码/解码坐标、宽度和高度。 - - -在Box Decoding期间,支持两种broadcast模式。 假设目标框具有形状[N,M,4],并且prior框的形状可以是[N,4]或[M,4]。 然后,prior框将沿指定的轴broadcast到目标框。 - - -参数: - - **prior_box** (Variable) - 维度为[M,4]的2-D Tensor,M表示存储M个框,数据类型为float32或float64。先验框,每个框代表[xmin,ymin,xmax,ymax],[xmin,ymin]是先验框的左顶点坐标,如果输入数图像特征图,则接近坐标原点。[xmax,ymax]是先验框的右底点坐 -标 - - **prior_box_var** (list|Variable|None) - 支持三种输入类型,一是维度为:math:`[M,4]`的2-D Tensor,存储M个先验框的variance,数据类型为float32或float64。另外是一个长度为4的列表,所有先验框共用这个列表中的variance,数据类型为float32或float64。为None时不参与计算。 - - **target_box** (Variable) - 数据类型为float,double的Tensor或者LoDTensor,当code_type为‘encode_center_size’,输入是二维LoDTensor,维度为[N,4],N为目标框的个数,目标框的格式与先验框相同。当code_type为‘decode_center_size’,输>入为3-D Tensor,维度为[N,M,4]。通常N表示产生检测框的个数,M表示类别数。此时目标框为偏移量。 - - **code_type** (str) - 编码类型用目标框,可以是encode_center_size或decode_center_size,默认值为`encode_center_size` - - **box_normalized** (bool) - 先验框坐标是否正则化,即是否在[0, 1]区间内。默认值为true - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **axis** (int32) – 在PriorBox中为axis指定的轴broadcast以进行框解码,例如,如果axis为0,TargetBox具有形状[N,M,4]且PriorBox具有形状[M,4],则PriorBox将broadcast到[N,M,4]用于解码。仅在code_type为decode_center_size时有效。默认值为0 - - -返回: - - 表示解码或编码结果的Tensor或LoDTensor。数据类型为float32或float64。 - - ``code_type`` 为 ``‘encode_center_size’`` 时,形状为[N,M,4]的编码结果,N为目标框的个数,M为先验框的个数。 - - ``code_type`` 为 ``‘decode_center_size’`` 时,形状为[N,M,4]的解码结果,形状与输入目标框相同。 - - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # For encode - prior_box_encode = fluid.data(name='prior_box_encode', - shape=[512, 4], - dtype='float32') - target_box_encode = fluid.data(name='target_box_encode', - shape=[81,4], - dtype='float32') - output_encode = fluid.layers.box_coder(prior_box=prior_box_encode, - prior_box_var=[0.1,0.1,0.2,0.2], - target_box=target_box_encode, - code_type="encode_center_size") - # For decode - prior_box_decode = fluid.data(name='prior_box_decode', - shape=[512, 4], - dtype='float32') - target_box_decode = fluid.data(name='target_box_decode', - shape=[512,81,4], - dtype='float32') - output_decode = fluid.layers.box_coder(prior_box=prior_box_decode, - prior_box_var=[0.1,0.1,0.2,0.2], - target_box=target_box_decode, - code_type="decode_center_size", - box_normalized=False, - axis=1) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/box_decoder_and_assign_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/box_decoder_and_assign_cn.rst deleted file mode 100644 index df65ef34c8563521040a6851646e4b23192f7424..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/box_decoder_and_assign_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_layers_box_decoder_and_assign: - -box_decoder_and_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.box_decoder_and_assign(prior_box, prior_box_var, target_box, box_score, box_clip, name=None) - -:alias_main: paddle.nn.functional.box_decoder_and_assign -:alias: paddle.nn.functional.box_decoder_and_assign,paddle.nn.functional.vision.box_decoder_and_assign -:old_api: paddle.fluid.layers.box_decoder_and_assign - - - -边界框编码器。 - -根据先验框来解码目标边界框。 - -解码方案为: - -.. math:: - - ox &= (pw \times pxv \times tx + px) - \frac{tw}{2}\\ - oy &= (ph \times pyv \times ty + py) - \frac{th}{2}\\ - ow &= \exp (pwv \times tw) \times pw + \frac{tw}{2}\\ - oh &= \exp (phv \times th) \times ph + \frac{th}{2} - -其中tx,ty,tw,th分别表示目标框的中心坐标,宽度和高度。 类似地,px,py,pw,ph表示prior_box(anchor)的中心坐标,宽度和高度。 pxv,pyv,pwv,phv表示prior_box的variance,ox,oy,ow,oh表示decode_box中的解码坐标,宽度和高度。 - -box decode过程得出decode_box,然后分配方案如下所述: - -对于每个prior_box,使用最佳non-background(非背景)类的解码值来更新prior_box位置并获取output_assign_box。 因此,output_assign_box的形状与PriorBox相同。 - - - -参数: - - **prior_box** (Variable) - 维度为[N,4]的2-D Tensor,包含N个框,数据类型为float32或float64。每个框表示为[xmin,ymin,xmax,ymax], [xmin,ymin]是anchor框的左上坐标,如果输入是图像特征图,则它们接近坐标系的原点。 [xmax,ymax]是anchor框的右下坐标 - - **prior_box_var** (Variable) - 维度为[N,4]的2-D Tensor,包含N组variance。数据类型为float32或float64。 prior_box_var默认将所有元素设置为1 - - **target_box** (Variable) - 维度为[N,classnum * 4]的2-D Tensor或LoDTensor,拥有N个目标框,数据类型为float32或float64。 - - **box_score** (Variable) - 维度为[N,classnum]的2-D Tensor或LoDTensor,拥有N个目标框,数据类型为float32或float64。表示每个框属于各分类概率值。 - - **box_clip** (float32) - 裁剪框以防止溢出,默认值为4.135(即np.log(1000. / 16.)) - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: - - - 表示解压检测框的Tensor或LoDTensor,数据类型为float32,float64。维度为[N,classnum * 4],N个prior_box解码得到的N个目标框的结果。 - - 表示输出最佳检测框的Tensor或LoDTensor,数据类型为float32,float64。维度为[N,4],N个prior_box解码后得到目标框,再选择最佳非背景类的目标框结果。 - - -返回类型:Tuple - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - pb = fluid.data( - name='prior_box', shape=[None, 4], dtype='float32') - pbv = fluid.data( - name='prior_box_var', shape=[4], dtype='float32') - loc = fluid.data( - name='target_box', shape=[None, 4*81], dtype='float32') - scores = fluid.data( - name='scores', shape=[None, 81], dtype='float32') - decoded_box, output_assign_box = fluid.layers.box_decoder_and_assign( - pb, pbv, loc, scores, 4.135) - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/collect_fpn_proposals_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/collect_fpn_proposals_cn.rst deleted file mode 100644 index 9c00888befa5a82ec0296f9f51496bea1697f273..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/collect_fpn_proposals_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_collect_fpn_proposals: - -collect_fpn_proposals -------------------------------- - -.. py:function:: paddle.fluid.layers.collect_fpn_proposals(multi_rois, multi_scores, min_level, max_level, post_nms_top_n, name=None) - -:alias_main: paddle.nn.functional.collect_fpn_proposals -:alias: paddle.nn.functional.collect_fpn_proposals,paddle.nn.functional.vision.collect_fpn_proposals -:old_api: paddle.fluid.layers.collect_fpn_proposals - - - -**该op仅支持LoDTensor输入**。连接多级RoIs(感兴趣区域)并依据multi_scores选择N个RoIs。此操作执行以下步骤: -1、选择num_level个RoIs和scores作为输入:num_level = max_level - min_level -2、连接num_level个RoIs和scores。 -3、对scores排序并选择post_nms_top_n个scores。 -4、通过scores中的选定位置收集RoIs。 -5、通过对应的batch_id重新对RoIs排序。 - - -参数: - - **multi_rois** (list) – 要收集的RoIs列表,列表中的元素为[N, 4]的2-D LoDTensor, 数据类型为float32或float64,其中N为RoI的个数。 - - **multi_scores** (list) - 要收集的RoIs对应分数的列表,列表中的元素为[N, 1]的2-D LoDTensor, 数据类型为float32或float64,其中N为RoI的个数。 - - **min_level** (int) - 要收集的FPN层的最低级 - - **max_level** (int) – 要收集的FPN层的最高级 - - **post_nms_top_n** (int) – 所选RoIs的数目 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:表示选定具有高分数的RoIs的LoDTensor,数据类型为float32或float64,同时具有LoD信息,维度为[M, 4],其中M为post_nms_top_n。 - - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - multi_rois = [] - multi_scores = [] - for i in range(4): - multi_rois.append(fluid.data( - name='roi_'+str(i), shape=[None, 4], dtype='float32', lod_level=1)) - for i in range(4): - multi_scores.append(fluid.data( - name='score_'+str(i), shape=[None, 1], dtype='float32', lod_level=1)) - - fpn_rois = fluid.layers.collect_fpn_proposals( - multi_rois=multi_rois, - multi_scores=multi_scores, - min_level=2, - max_level=5, - post_nms_top_n=2000) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/density_prior_box_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/density_prior_box_cn.rst deleted file mode 100644 index c88bff497978ffa81b31b332df065ff2e265c77a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/density_prior_box_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_layers_density_prior_box: - -density_prior_box -------------------------------- - -.. py:function:: paddle.fluid.layers.density_prior_box(input, image, densities=None, fixed_sizes=None, fixed_ratios=None, variance=[0.1, 0.1, 0.2, 0.2], clip=False, steps=[0.0, 0.0], offset=0.5, flatten_to_2d=False, name=None) - -:alias_main: paddle.nn.functional.density_prior_box -:alias: paddle.nn.functional.density_prior_box,paddle.nn.functional.vision.density_prior_box -:old_api: paddle.fluid.layers.density_prior_box - - - - -该OP为SSD算法(Single Shot MultiBox Detector)生成density prior box,在每个 ``input`` 的位置产生N个候选框,其中,N由 ``densities`` , ``fixed_sizes`` 和 ``fixed_ratios`` 来计算。生成的每个输入位置附近的候选框中心(网格点)由 ``densities`` 和 ``density prior box`` 的数量计算,其中 ``density prior box`` 的数量由 ``fixed_sizes`` 和 ``fixed_ratios`` 决定。``fixed_sizes`` 和 ``densities`` 的大小一致。 - -.. math:: - - N\_density\_prior\_box =sum(N\_fixed\_ratios * {densities\_i}^2) - - -参数: - - **input** (Variable) - 形状为NCHW的4-D Tensor,数据类型为float32或float64。 - - **image** (Variable) - 输入图像,形状为NCHW的4-D Tensor,数据类型为float32或float64。 - - **densities** (list|tuple|None) - 生成的density prior boxes的densities,此属性应该是一个整数列表或数组。默认值为None。 - - **fixed_sizes** (list|tuple|None) - 生成的density prior boxes的大小,此属性应该为和 :attr:`densities` 有同样长度的列表或数组。默认值为None。 - - **fixed_ratios** (list|tuple|None) - 生成的density prior boxes的比值,如果该属性未被设置,同时 :attr:`densities` 和 :attr:`fix_sizes` 被设置,则 :attr:`aspect_ratios` 被用于生成 density prior boxes - - **variance** (list|tuple) - 将被用于density prior boxes编码的方差,默认值为:[0.1, 0.1, 0.2, 0.2] - - **clip** (bool) - 是否裁剪超出范围的box。默认值:False - - **step** (list|tuple) - Prior boxes在宽度和高度的步长,如果step[0]等于0.0或step[1]等于0.0, input的the density prior boxes的高度/宽度的步长将被自动计算。默认值:Default: [0., 0.] - - **offset** (float) - Prior boxes中心偏移值,默认为:0.5 - - **flatten_to_2d** (bool) - 是否将output prior boxes和方差 ``flatten`` 至2-D,其中第二个dim为4。默认值:False - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - -返回:含有两个变量的元组,包括: - 候选框: - - 当flatten_to_2d为False时,形状为[H, W, num_priors, 4]的4-D Tensor。 - 当flatten_to_2d为True时,形式为[H * W * num_priors, 4]的 2-D Tensor。 - 其中,H是输入的高度,W是输入的宽度,num_priors是输入中每个位置的候选框数。 - - 候选框的方差: - - 当flatten_to_2d为False时,形状为[H, W, num_priors, 4]的4-D Tensor。 - 当flatten_to_2d为True时,形式为[H * W * num_priors, 4]的2-D Tensor。 - 其中,H是输入的高度,W是输入的宽度,num_priors是输入中每个位置的候选框数。 - -返回类型:元组 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9]) - images = fluid.layers.data(name="images", shape=[3,9,12]) - box, var = fluid.layers.density_prior_box( - input=input, - image=images, - densities=[4, 2, 1], - fixed_sizes=[32.0, 64.0, 128.0], - fixed_ratios=[1.], - clip=True, - flatten_to_2d=True) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/detection_output_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/detection_output_cn.rst deleted file mode 100644 index 9d39e7881dc9b191dcec464b3a190404aef933d1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/detection_output_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_detection_output: - -detection_output -------------------------------- - -.. py:function:: paddle.fluid.layers.detection_output(loc, scores, prior_box, prior_box_var, background_label=0, nms_threshold=0.3, nms_top_k=400, keep_top_k=200, score_threshold=0.01, nms_eta=1.0) - -:alias_main: paddle.nn.functional.detection_output -:alias: paddle.nn.functional.detection_output,paddle.nn.functional.vision.detection_output -:old_api: paddle.fluid.layers.detection_output - - - -给定回归位置偏移、置信度以及先验框信息计算检测的输出,执行步骤如下: - - 1.根据先验框(``prior_box``)信息和回归位置偏移解码出预测框坐标。 - - 2.通过多类非极大值抑制(NMS)获得最终检测输出。 - -请注意,该操作符没有将最终输出边界框clip至图像大小。 - -参数: - - **loc** (Variable) - 3-D Tensor,数据类型为float32或float64,表示回归位置偏移。维度为[N,M,4],M是输入的预测bounding box的个数,N是batch size,每个bounding box有四个坐标值,格式为[xmin,ymin,xmax,ymax],[xmin,ymin]是左上角坐标,[xmax,ymax]是右下角坐标。 - - **scores** (Variable) - 3-D Tensor,数据类型为float32或float64,表示未归一化的置信度。维度为[N,M,C],N和M的含义同上,C是类别数。 - - **prior_box** (Variable) - 2-D Tensor,表示先验框。维度为[M,4],M是提取的先验框个数,格式为[xmin,ymin,xmax,ymax]。 - - **prior_box_var** (Variable) - 2-D Tensor,表示先验框的方差,和 ``prior_box`` 维度相同。 - - **background_label** (int) - 背景标签类别值,背景标签类别上不做NMS。若设为-1,将考虑所有类别。默认值是0。 - - **nms_threshold** (float) - 用于NMS的阈值(threshold),默认值是0.3。 - - **nms_top_k** (int) - 基于score_threshold过滤预测框后,NMS操作前,要挑选出的置信度高的预测框的个数。默认值是400。 - - **keep_top_k** (int) - NMS操作后,要挑选的bounding box总数。默认值是200。 - - **score_threshold** (float) - 置信度得分阈值(Threshold),在NMS之前用来过滤低置信数的边界框(bounding box)。若未提供,则考虑所有框。默认值是0.001。 - - **nms_eta** (float) - 一种adaptive NMS的参数,仅当该值小于1.0时才起作用。默认值是1.0。 - -返回: - 输出是2-D LoDTensor,形状为[No,6]。每行有6个值:[label,confidence,xmin,ymin,xmax,ymax]。No是该mini-batch总的检测框数。LoD的层级数为1,如果采用偏移的LoD表示,则第i个图像有 ``LoD[i+1] - LoD[i]`` 个检测结果,如果等于0,则表示无检测结果。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - pb = fluid.data(name='prior_box', shape=[10, 4], dtype='float32') - pbv = fluid.data(name='prior_box_var', shape=[10, 4], dtype='float32') - loc = fluid.data(name='target_box', shape=[2, 21, 4], dtype='float32') - scores = fluid.data(name='scores', shape=[2, 21, 10], dtype='float32') - nmsed_outs = fluid.layers.detection_output(scores=scores, - loc=loc, - prior_box=pb, - prior_box_var=pbv) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/distribute_fpn_proposals_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/distribute_fpn_proposals_cn.rst deleted file mode 100644 index 33cbb83a59486ec75eef9962b0af3035f61e3415..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/distribute_fpn_proposals_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_distribute_fpn_proposals: - -distribute_fpn_proposals -------------------------------- - -.. py:function:: paddle.fluid.layers.distribute_fpn_proposals(fpn_rois, min_level, max_level, refer_level, refer_scale, name=None) - -:alias_main: paddle.nn.functional.distribute_fpn_proposals -:alias: paddle.nn.functional.distribute_fpn_proposals,paddle.nn.functional.vision.distribute_fpn_proposals -:old_api: paddle.fluid.layers.distribute_fpn_proposals - - - -**该op仅支持LoDTensor输入**。在 Feature Pyramid Networks(FPN)模型中,需要依据proposal的尺度和参考尺度与级别将所有proposal分配到不同的FPN级别中。 此外,为了恢复proposals的顺序,我们返回一个数组,该数组表示当前proposals中的原始RoIs索引。 要计算每个RoI的FPN级别,公式如下: - -.. math:: - roi\_scale &= \sqrt{BBoxArea(fpn\_roi)}\\ - level = floor(&\log(\frac{roi\_scale}{refer\_scale}) + refer\_level) - -其中BBoxArea方法用来计算每个RoI的区域。 - - -参数: - - **fpn_rois** (Variable) - 维度为[N,4]的2-D LoDTensor,其中N为检测框的个数,数据类型为float32或float64。 - - **min_level** (int32) - 产生proposal最低级别FPN层。 - - **max_level** (int32) - 产生proposal最高级别FPN层。 - - **refer_level** (int32) - 具有指定比例的FPN层的引用级别。 - - **refer_scale** (int32) - 具有指定级别的FPN层的引用比例。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - - multi_rois(List)- 长度为(max_level-min_level+1)的列表,其中元素为Variable,维度为[M, 4]的2-D LoDTensor,M为每个级别proposal的个数,数据类型为float32或float64。表示每个FPN级别包含的proposals。 - - restore_ind(Variable)- 维度为[N,1]的Tensor,N是总rois的数量。数据类型为int32。 它用于恢复fpn_rois的顺序。 - - -返回类型:Tuple - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - fpn_rois = fluid.data( - name='data', shape=[None, 4], dtype='float32', lod_level=1) - multi_rois, restore_ind = fluid.layers.distribute_fpn_proposals( - fpn_rois=fpn_rois, - min_level=2, - max_level=5, - refer_level=4, - refer_scale=224) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/generate_mask_labels_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/generate_mask_labels_cn.rst deleted file mode 100644 index 51854d3898e3f968a1f6704b7784edbcc6155755..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/generate_mask_labels_cn.rst +++ /dev/null @@ -1,93 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.generate_mask_labels -:alias: paddle.nn.functional.generate_mask_labels,paddle.nn.functional.vision.generate_mask_labels -:old_api: paddle.fluid.layers.generate_mask_labels - - - -**为Mask-RCNN生成mask标签** - -对于给定的 RoI (Regions of Interest) 和 输入ground truth的分类标签和分割的坐标标签,采样出前景RoI,并返回其在输入 ``rois`` 中索引位置,并对每个RoI生成 :math:`K*M^{2}` 的二值mask标签。K为类别个数,M是RoI特征图大小。这些输出目标一般用于计算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 Tensor,数据类型为float32。 N是batch size,其每个元素是图像的高度、宽度、比例,比例是图片预处理时resize之后的大小和原始大小的比例 :math:`\frac{target\_size}{original\_size}` 。 - - **gt_classes** (Variable) – 维度为[M,1]的2-D LoDTensor,数据类型为int32,LoD层数为1。 M是的groud-truth总数,其每个元素是类别索引。 - - **is_crowd** (Variable) – 维度和 ``gt_classes`` 相同的 LoDTensor,数据类型为int32,每个元素指示一个ground-truth是否为crowd(crowd表示一组对象的集合)。 - - **gt_segms** (Variable) – 维度为[S,2]的2D LoDTensor,它的LoD层数为3,数据类型为float32。通常用户不需要理解LoD,但用户应该在Reader中返回正确的数据格式。LoD[0]表示每个实例中GT对象的数目。 LoD[1]表示每个GT对象的标签分段数。LoD[2]表示每个分段标签多边形(polygon)坐标点的个数。S为所有示例的标签的多边形坐标点的总数。每个元素是(x,y)坐标点。 - - **rois** (Variable) – 维度维度[R,4]的2-D LoDTensor,LoD层数为1,数据类型为float32。 R是RoI的总数,其中每个元素是在原始图像范围内具有(xmin,ymin,xmax,ymax)格式的bounding box。 - - **labels_int32** (Variable) – 形为[R,1]且类型为int32的2-D LoDTensor,数据类型为int32。 R与 ``rois`` 中的R含义相同。每个元素表示RoI框的一个类别标签索引。 - - **num_classes** (int) – 类别数目。 - - **resolution** (int) – 特征图分辨率大小。 - -返回: - - mask_rois (Variable): 维度为[P,4]的2-D LoDTensor,数据类型为float32。P是采样出的RoI总数,每个元素都是在原始图像大小范围内具有[xmin,ymin,xmax,ymax]格式的bounding box。 - - mask_rois_has_mask_int32(Variable):维度为[P,1]的2-D LoDTensor,数据类型为int32。每个元素表示采样出的RoI在输入 ``rois`` 内的位置索引。 - - mask_int32(Variable):维度为[P,K * M * M]的2-D LoDTensor,数据类型为int32。K为种类数,M为特征图的分辨率大小,每个元素都是二值mask标签。 - -返回类型:tuple(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - im_info = fluid.data(name="im_info", shape=[None, 3], dtype="float32") - gt_classes = fluid.data(name="gt_classes", shape=[None, 1], - dtype="float32", lod_level=1) - is_crowd = fluid.data(name="is_crowd", shape=[None, 1], - dtype="float32", lod_level=1) - gt_masks = fluid.data(name="gt_masks", shape=[None, 2], - dtype="float32", lod_level=3) - # rois, roi_labels 可以是fluid.layers.generate_proposal_labels的输出 - rois = fluid.data(name="rois", shape=[None, 4], - dtype="float32", lod_level=1) - roi_labels = fluid.data(name="roi_labels", shape=[None, 1], - dtype="int32", lod_level=1) - 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=roi_labels, - num_classes=81, - resolution=14) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/generate_proposal_labels_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/generate_proposal_labels_cn.rst deleted file mode 100644 index a957d20deaa3b9f05ce21436c49526c760e5094f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/generate_proposal_labels_cn.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. _cn_api_fluid_layers_generate_proposal_labels: - -generate_proposal_labels -------------------------------- - -.. py:function:: paddle.fluid.layers.generate_proposal_labels(rpn_rois, gt_classes, is_crowd, gt_boxes, im_info, batch_size_per_im=256, fg_fraction=0.25, fg_thresh=0.25, bg_thresh_hi=0.5, bg_thresh_lo=0.0, bbox_reg_weights=[0.1, 0.1, 0.2, 0.2], class_nums=None, use_random=True, is_cls_agnostic=False, is_cascade_rcnn=False) - -:alias_main: paddle.nn.functional.generate_proposal_labels -:alias: paddle.nn.functional.generate_proposal_labels,paddle.nn.functional.vision.generate_proposal_labels -:old_api: paddle.fluid.layers.generate_proposal_labels - - - -**注意:该OP无对应的反向OP** - -该OP根据RPN预测产出的bounding boxes和groundtruth,抽取出用来计算loss的foreground boxes and background boxes。 - -RPN的输出经过 ``generate_proposals OP`` 的处理,产出 ``RPN RoIs`` ,即该OP的输入。然后,在该OP中按以下规则对 ``RPN RoIs`` 进行分类: - -- 与某个groundtruth的重叠面积大于 ``fg_thresh`` ,则该box被标记为foreground box。 -- 与某个groundtruth的重叠面积大于 ``bg_thresh_lo`` 且小于 ``bg_thresh_hi`` ,则该box被标记为background box。 - -按上述规则筛选出一批boxes后,在对这些boxes做随机采样,以保证foreground boxes的数量不高于batch_size_per_im * fg_fraction。 - -对最终得到的boxes, 我们给它们分配类别标签和回归目标(box label),并产出 ``bboxInsideWeights`` 和 ``BboxOutsideWeights`` 。 - -参数: - - **rpn_rois** (Variable) – Shape为 ``[N, 4]`` 的2-D LoDTensor。 其中,N为RoIs的个数。每个RoI以 :math:`[x_{min}, y_{min}, x_{max}, y_{max}]` 的格式表示,其中,:math:`x_{min}` 和 :math:`y_{min}` 为RoI的左上角坐标,:math:`x_{max}` 和 :math:`y_{max}` 为RoI的右下角坐标。数据类型支持float32和float64。 - - **gt_classes** (Variable) – Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于表示groundtruth boxes的类别ID。数据类型支持int32。 - - **is_crowd** (Variable) –Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于标记boxes是否是crowd。数据类型支持int32。 - - **gt_boxes** (Variable) – Shape为 ``[M, 4]`` 的2-D LoDTensor,M为groundtruth boxes的数量。每个box以 :math:`[x_{min}, y_{min}, x_{max}, y_{max}]` 的格式表示。 - - **im_info** (Variable) - Shape为 ``[N,3]`` 的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和 ``feature map`` 相对于原始图像缩放的比例。 - - **batch_size_per_im** (int,可选) – 整型数字。每张图片抽取出的的RoIs的数目。数据类型支持int32。缺省值为256。 - - **fg_fraction** (float,可选) – 浮点数值。在单张图片中,foreground boxes占所有boxes的比例。数据类型支持float32。缺省值为0.25。 - - **fg_thresh** (float,可选) – 浮点数值。foreground重叠阀值,用于筛选foreground boxes。数据类型支持float32。缺省值为0.25。 - - **bg_thresh_hi** (float,可选) – 浮点数值。background重叠阀值的上界,用于筛选background boxes。数据类型支持float32。缺省值为0.5。 - - **bg_thresh_lo** (float,可选) – 浮点数值。background重叠阀值的下界,用于筛选background boxes。数据类型支持float32。缺省值为0.0。 - - **bbox_reg_weights** (list|tuple,可选) – 列表或元组。Box 回归权重。数据类型支持float32。缺省值为[0.1,0.1,0.2,0.2]。 - - **class_nums** (int,可选) – 整型数字。类别数目。数据类型支持int32。缺省值为None。 - - **use_random** (bool,可选) – 布尔类型。是否使用随机采样来选择foreground boxes和background boxes。缺省值为True。 - - **is_cls_agnostic** (bool,可选)- 布尔类型。是否忽略类别,只做位置回归。缺省值为False。 - - **is_cascade_rcnn** (bool,可选)- 布尔类型。是否为 cascade RCNN 模型,为True时采样策略发生变化。缺省值为False。 - - -返回:元组,格式为 ``(rois, labels_int32, bbox_targets, bbox_inside_weights, bbox_outside_weights)`` ,其中,各个元素解释如下: - -- **rois** - Shape为 ``[P, 4]`` 的2-D LoDTensor,P一般是 ``batch_size_per_im * batch_size`` 。每个RoIs以 ``[xmin, ymin, xmax, ymax]`` 的格式表示。数据类型与 ``rpn_rois`` 一致。 -- **labels_int32** - Shape为 ``[P, 1]`` 的2-D LoDTensor,P一般是 ``batch_size_per_im * batch_size`` 。表示每个RoI的类别ID。数据类型为int32。 -- **bbox_targets** - Shape为 ``[P, 4 * class_num]`` 的2-D LoDTensor,表示所有RoIs的回归目标(box label)。数据类型与 ``rpn_rois`` 一致。 -- **bbox_inside_weights** - Shape为 ``[P, 4 * class_num]`` 的2-D LoDTensor。foreground boxes回归loss的权重。数据类型与 ``rpn_rois`` 一致。 -- **bbox_outside_weights** - Shape为 ``[P, 4 * class_num]`` 的2-D LoDTensor。回归loss的权重。数据类型与 ``rpn_rois`` 一致。 - -返回类型:元组 - - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - rpn_rois = fluid.layers.data(name='rpn_rois', shape=[2, 4], - append_batch_size=False, dtype='float32') - gt_classes = fluid.layers.data(name='gt_classes', shape=[8, 1], - append_batch_size=False, dtype='float32') - is_crowd = fluid.layers.data(name='is_crowd', shape=[8, 1], - append_batch_size=False, dtype='float32') - gt_boxes = fluid.layers.data(name='gt_boxes', shape=[8, 4], - append_batch_size=False, dtype='float32') - im_info = fluid.layers.data(name='im_info', shape=[10, 3], - append_batch_size=False, dtype='float32') - rois, labels, bbox, inside_weights, - outside_weights = fluid.layers.generate_proposal_labels( - rpn_rois, gt_classes, is_crowd, gt_boxes, im_info, - class_nums=10) - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/generate_proposals_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/generate_proposals_cn.rst deleted file mode 100644 index 7bd143ec306bbeac65430bca235d6dfc7eb32e45..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/generate_proposals_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_generate_proposals: - -generate_proposals -------------------------------- - -.. py:function:: paddle.fluid.layers.generate_proposals(scores, bbox_deltas, im_info, anchors, variances, pre_nms_top_n=6000, post_nms_top_n=1000, nms_thresh=0.5, min_size=0.1, eta=1.0, name=None) - -:alias_main: paddle.nn.functional.generate_proposals -:alias: paddle.nn.functional.generate_proposals,paddle.nn.functional.vision.generate_proposals -:old_api: paddle.fluid.layers.generate_proposals - - - - -该OP根据每个检测框为foreground对象的概率,推选生成用于后续检测网络的RoIs。 -其中的检测框根据 ``anchors`` 和 ``bbox_deltas`` 计算得到。 - - -该OP通过以下步骤生成 ``RoIs`` : - - 1、通过转置操作将 ``scores`` 和 ``bbox_deltas`` 的大小分别调整为 ``(H * W * A,1)`` 和 ``(H * W * A,4)`` 。 - - 2、根据 ``anchors`` 和 ``bbox_deltas`` 计算出候选框的位置。 - - 3、Clip boxes to image。 - - 4、删除面积较小的候选框。 - - 5、通过NMS选出满足条件的候选框作为结果。 - -参数: - - **scores** (Variable) - Shape为 ``[N,A,H,W]`` 的4-D Tensor,表示每个框包含object的概率。N是批量大小,A是anchor数,H和W是feature map的高度和宽度。数据类型支持float32。 - - **bbox_deltas** (Variable)- Shape为 ``[N,4 * A,H,W]`` 的4-D Tensor,表示预测出的候选框的位置和anchor的位置之间的距离。数据类型支持float32。 - - **im_info** (Variable) - Shape为 ``[N,3]`` 的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和feature map相对于原始图像缩放的比例。 - - **anchors** (Variable) - Shape为 ``[H,W,A,4]`` 的4-D Tensor。H和W是feature map的高度和宽度。A是每个位置的框的数量。每个anchor以 ``(xmin,ymin,xmax,ymax)`` 的格式表示,其中, ``xmin`` 和 ``ymin`` 为左上角的坐标, ``xmax`` 和 ``ymax`` 为右下角的坐标。 - - **variances** (Variable) - Shape为 ``[H,W,A,4]`` 的4-D Tensor,表示 ``anchors`` 的方差。每个anchor的方差都是 ``(xcenter,ycenter,w,h)`` 的格式表示。 - - **pre_nms_top_n** (int,可选) - 整型数字。每张图在NMS操作之前要保留的总框数。数据类型仅支持int32。缺省值为6000。 - - **post_nms_top_n** (int,可选) - 整型数字。每个图在NMS后要保留的总框数。数据类型仅支持int32。缺省值为1000。 - - **nms_thresh** (float,可选) - 浮点型数字。NMS中的阈值。数据类型仅支持float32。缺省值为0.5。 - - **min_size** (float,可选) - 浮点型数字。根据宽和高过滤候选框的阈值,宽或高小于该阈值的候选框将被过滤掉。数据类型仅支持float32。缺省值为0.1。 - - **eta** (float,可选) - 浮点型数字。自适应阈值的衰减系数。仅在自适应NMS中且自适应阈值大于0.5时生效,在每次迭代中 ``adaptive_threshold = adaptive_treshold * eta`` 。缺省值为1.0。 - - -返回: 元组,格式为 ``(rpn_rois, rpn_roi_probs)`` - -- **rpn_rois** (Variable) - 表示产出的RoIs, shape为 ``[N, 4]`` 的2D LoDTensor, N为RoIs的数量。数据类型与 ``scores`` 一致。 -- **rpn_roi_probs** (Variable) - 表示RoIs的得分,shape为 ``[N, 1]`` ,N为RoIs的数量。数据类型与 ``scores`` 一致。 - -返回类型:元组 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - scores = fluid.layers.data(name='scores', shape=[2, 4, 5, 5], - append_batch_size=False, dtype='float32') - bbox_deltas = fluid.layers.data(name='bbox_deltas', shape=[2, 16, 5, 5], - append_batch_size=False, dtype='float32') - im_info = fluid.layers.data(name='im_info', shape=[2, 3], - append_batch_size=False, dtype='float32') - anchors = fluid.layers.data(name='anchors', shape=[5, 5, 4, 4], - append_batch_size=False, dtype='float32') - variances = fluid.layers.data(name='variances', shape=[5, 5, 10, 4], - append_batch_size=False, dtype='float32') - rois, roi_probs = fluid.layers.generate_proposals(scores, bbox_deltas, - im_info, anchors, variances) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/iou_similarity_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/iou_similarity_cn.rst deleted file mode 100644 index befe69f841dcf40fdf4a70e34a91d59673af978d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/iou_similarity_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_iou_similarity: - -iou_similarity -------------------------------- - -.. py:function:: paddle.fluid.layers.iou_similarity(x, y, box_normalized=True, name=None) - -:alias_main: paddle.nn.functional.iou_similarity -:alias: paddle.nn.functional.iou_similarity,paddle.nn.functional.loss.iou_similarity -:old_api: paddle.fluid.layers.iou_similarity - - - -**IOU Similarity Operator** - -计算两个框列表的intersection-over-union(IOU)。框列表 :math:`X` 应为LoDTensor, :math:`Y` 是普通张量, :math:`X` 成批输入的所有实例共享 :math:`Y` 中的框。给定框A和框B,IOU的运算如下: - -.. math:: - IOU(A, B) = \frac{area(A\cap B)}{area(A)+area(B)-area(A\cap B)} - -参数: - - **x** (Variable) - 框列表 :math:`X` 是二维LoDTensor,维度为 :math:`[N,4]` ,存有 :math:`N` 个框,每个框表示为 :math:`[xmin, ymin, xmax, ymax]` ,:math:`X` 的维度为 :math:`[N,4]` 。如果输入是图像特征图,:math:`[xmin, ymin]` 表示框的左上角坐标,接近坐标轴的原点。:math:`[xmax, ymax]` 表示框的右下角坐标。该张量包含批次输入的LoD信息。该批次输入的一个实例能容纳不同的项数。数据类型为float32或float64。 - - **y** (Variable) - 框列表 :math:`Y` 是二维张量,存有 :math:`M` 个框,每个框表示为 :math:`[xmin, ymin, xmax, ymax]` ,:math:`Y` 的维度为 :math:`[M,4]`。如果输入是图像特征图,:math:`[xmin, ymin]` 表示框的左上角坐标,接近坐标轴的原点。:math:`[xmax, ymax]` 表示框的右下角坐标。数据类型为float32或float64。 - - **box_normalized** (bool) - 先验框坐标是否正则化,即是否在[0, 1]区间内。默认值为true - -返回:维度为 :math:`[N,M]` 的LoDTensor,代表每一对iou分数,数据类型与 :math:`X` 相同 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.layers.data(name='x', shape=[4], dtype='float32') - y = fluid.layers.data(name='y', shape=[4], dtype='float32') - iou = fluid.layers.iou_similarity(x=x, y=y) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/locality_aware_nms_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/locality_aware_nms_cn.rst deleted file mode 100644 index f85aead2e4ef836512851fac9e34df172dea3550..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/locality_aware_nms_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_locality_aware_nms: - -locality_aware_nms -------------------------------- - -.. py:function:: paddle.fluid.layers.locality_aware_nms(bboxes, scores, score_threshold, nms_top_k, keep_top_k, nms_threshold=0.3, normalized=True, nms_eta=1.0, background_label=-1, name=None) - - - - -**局部感知NMS** - -`局部感知NMS `_ 用于对边界框(bounding box)和评分(scores)执行局部感知非极大值抑制(LANMS)。 - -首先,根据边界框之间的IOU(交并比),对边界框和评分进行融合。 - -在NMS中,如果提供 ``score_threshold`` 阈值,则此OP贪心地选择所有得分(scores)高于 ``score_threshold`` 的检测边界框(bounding box)的子集,如果nms_top_k大于-1,则选择最大的nms_top_k置信度分数。 接着,该OP依据 adaptive nms(基于 ``nms_threshold`` 和 ``nms_eta``),删除与已选择的框IOU(交并比)高于nms_threshold 的重叠框。 - -在NMS步骤后,如果keep_top_k大于-1,则每个图像最多保留keep_top_k个框(bounding box)。 - - - -参数: - - **bboxes** (Variable) – 支持两种类型的边界框(bounding box): - - 1. (Tensor)形为[N,M,4 或 8、16、24、32]的3-D张量,表示将预测M个边界框的预测位置, N是批大小(batch size)。当边界框(bounding box)大小等于4时,每个边界框有四个坐标值,布局为 :math:`[xmin, ymin, xmax, ymax]` 。数据类型为float32或float64。 - - - **scores** (Variable) – 支持两种类型的分数: - - 1. (Tensor)具有形状 :math:`[N, C, M]` 的3-D张量表示预测的置信度。 N是批量大小 batch size,C是种类数目,M是边界框bounding box的数量。目前仅支持单个类别,所以输入维度应为 :math:`[N, 1, M]` 。请注意,M等于bboxes的第二维。数据类型为float32或float64。 - - - **background_label** (int) – 背景标签(类别)的索引,如果设置为 0 ,则忽略背景标签(类别)。如果设置为 -1 ,则考虑所有类别。默认值:-1 - - **score_threshold** (float) – 过滤掉低置信度分数的边界框的阈值。如果没有提供,请考虑所有边界框。 - - **nms_top_k** (int) – 基于 score_threshold 的过滤检测后,根据置信度保留的最大检测次数。 - - **nms_threshold** (float) – 在LANMS中用于融合检测框和剔除检测框IOU的阈值,默认值:0.3 。 - - **nms_eta** (float) – 在NMS中用于调整 nms_threshold 的参数,设为1时表示nms_threshold不变。默认值:1.0 。 - - **keep_top_k** (int) – NMS步骤后每个图像要保留的总bbox数。 -1表示在NMS步骤之后保留所有bbox。 - - **normalized** (bool) – 检测是否已经经过正则化。默认值:True 。 - - **name** (str|None) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为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}) - -返回类型:Variable,数据类型与输入一致。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - boxes = fluid.data(name='bboxes', shape=[None, 81, 8], - dtype='float32') - scores = fluid.data(name='scores', shape=[None, 1, 81], - dtype='float32') - out = fluid.layers.locality_aware_nms(bboxes=boxes, - scores=scores, - score_threshold=0.5, - nms_top_k=400, - nms_threshold=0.3, - keep_top_k=200, - normalized=False) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/matrix_nms_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/matrix_nms_cn.rst deleted file mode 100644 index f0c8af1e6cb09f7137d40bd4899395a3cb6e4e41..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/matrix_nms_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_matrix_nms: - -matrix_nms -------------------------------- - - -.. py:function:: paddle.fluid.layers.matrix_nms(bboxes, scores, score_threshold, post_threshold, nms_top_k, keep_top_k, use_gaussian=False, gaussian_sigma=2., background_label=0, normalized=True, return_index=False, name=None) - -:alias_main: paddle.nn.functional.matrix_nms -:alias: paddle.nn.functional.matrix_nms,paddle.nn.functional.extension.matrix_nms -:old_api: paddle.fluid.layers.matrix_nms - - - -**Matrix NMS** - -该OP使用Matrix NMS算法对边界框(bounding box)和评分(scores)执行多类非极大值抑制(NMS)。 - -如果提供 ``score_threshold`` 阈值且 ``nms_top_k`` 大于-1,则选择置信度分数最大的k个框。 然后按照Matrix NMS算法对分数进行衰减。经过抑制后,如果 ``keep_top_k`` 大于-1, 则每张图片最终保留 ``keep_top_k`` 个检测框。 - -在NMS步骤后,如果keep_top_k大于-1,则每个图像最多保留keep_top_k个框(bounding box)。 - - -参数: - - **bboxes** (Variable) - 形为[N,M,4]的3-D张量,表示将预测M个边界框的预测位置, N是批大小(batch size)。当边界框(bounding box)大小等于4时,每个边界框有四个坐标值,布局为[xmin,ymin,xmax,ymax]。数据类型为float32或float64。 - - **scores** (Variable) – 形为[N,C,M]的3-D张量,表示预测的置信度。 N是批大小(batch size),C是种类数目,M是边界框bounding box的数量。对于每个类别,存在对应于M个边界框的总M个分数。请注意,M等于bboxes的第二维。数据类型为float32或float64。 - - **score_threshold** (float) – 过滤掉低置信度分数的边界框的阈值。 - - **post_threshold** (float) – 经过NMS衰减后,过滤掉低置信度分数的边界框的阈值。 - - **nms_top_k** (int) – 基于 score_threshold 的过滤检测后,根据置信度保留的最大检测次数。 - - **keep_top_k** (int) – 经过NMS抑制后, 最终保留的最大检测次数。如果设置为 -1 ,则则保留全部。 - - **use_gaussian** (bool) – 是否使用高斯函数衰减。默认值:False 。 - - **gaussian_sigma** (float) – 高斯函数的Sigma值,默认值:2.0 。 - - **background_label** (int) – 背景标签(类别)的索引,如果设置为 0 ,则忽略背景标签(类别)。如果设置为 -1 ,则考虑所有类别。默认值:0 - - **normalized** (bool) – 检测是否已经经过正则化。默认值:True 。 - - **return_index** (bool) – 是否同时返回保留检测框的序号。默认值:False 。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - **Out** (Variable) - 形为[No,6]的2-D LoDTensor,表示检测结果。每行有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}) - - **Index** (Variable) - 形为[No,1]的2-D LoDTensor,表示检测结果在整个批次中的序号。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - boxes = fluid.data(name='bboxes', shape=[None,81, 4], - dtype='float32', lod_level=1) - scores = fluid.data(name='scores', shape=[None,81], - dtype='float32', lod_level=1) - out = fluid.layers.matrix_nms(bboxes=boxes, - scores=scores, - background_label=0, - score_threshold=0.5, - post_threshold=0.1, - nms_top_k=400, - keep_top_k=200, - normalized=False) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/multi_box_head_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/multi_box_head_cn.rst deleted file mode 100644 index a8fb7337f826d00f919a382c0377acbba01b1f5c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/multi_box_head_cn.rst +++ /dev/null @@ -1,112 +0,0 @@ -.. _cn_api_fluid_layers_multi_box_head: - -multi_box_head -------------------------------- - - -.. py:function:: paddle.fluid.layers.multi_box_head(inputs, image, base_size, num_classes, aspect_ratios, min_ratio=None, max_ratio=None, min_sizes=None, max_sizes=None, steps=None, step_w=None, step_h=None, offset=0.5, variance=[0.1, 0.1, 0.2, 0.2], flip=True, clip=False, kernel_size=1, pad=0, stride=1, name=None, min_max_aspect_ratios_order=False) - -:api_attr: 声明式编程模式(静态图) - - - -基于SSD(Single Shot MultiBox Detector)算法,在不同层输入特征上提取先验框、计算回归的坐标位置和分类的置信度,并合并到一起作为输出,具体参数解释和输出格式参考下面说明。更详细信息,请参阅SSD论文 `SSD:Single Shot MultiBox Detector `_ 的2.2节。 - -参数: - - **inputs** (list(Variable) | tuple(Variable)) - 输入特征的列表,仅支持格式为NCHW的4-D Tensor。 - - **image** (Variable) - 一般是网络输入的图像数据,仅支持NCHW格式。 - - **base_size** (int) - 输入图片的大小,当输入个数len(inputs) > 2,并且 ``min_size`` 和 ``max_size`` 为None时,通过 ``baze_size``, ``min_ratio`` 和 ``max_ratio`` 来计算出 ``min_size`` 和 ``max_size`` 。计算公式如下: - - .. code-block:: python - - min_sizes = [] - max_sizes = [] - step = int(math.floor(((max_ratio - min_ratio)) / (num_layer - 2))) - for ratio in six.moves.range(min_ratio, max_ratio + 1, step): - min_sizes.append(base_size * ratio / 100.) - max_sizes.append(base_size * (ratio + step) / 100.) - min_sizes = [base_size * .10] + min_sizes - max_sizes = [base_size * .20] + max_sizes - - - **num_classes** (int) - 类别数。 - - **aspect_ratios** (list(float) | tuple(float) | list(list(float)) | tuple(tuple(float)) - 候选框的宽高比, ``aspect_ratios`` 和 ``input`` 的个数必须相等。如果每个特征层提取先验框的 ``aspect_ratio`` 多余一个,写成嵌套的list,例如[[2., 3.]]。 - - **min_ratio** (int)- 先验框的长度和 ``base_size`` 的最小比率,注意,这里是百分比,假如比率为0.2,这里应该给20.0。默认值: None。 - - **max_ratio** (int)- 先验框的长度和 ``base_size`` 的最大比率,注意事项同 ``min_ratio`` 。默认值: None。 - - **min_sizes** (list(float) | tuple(float) | None)- 每层提取的先验框的最小长度,如果输入个数len(inputs)<= 2,则必须设置 ``min_sizes`` ,并且 ``min_sizes`` 的个数应等于len(inputs)。默认值:None。 - - **max_sizes** (list | tuple | None)- 每层提取的先验框的最大长度,如果len(inputs)<= 2,则必须设置 ``max_sizes`` ,并且 ``min_sizes`` 的长度应等于len(inputs)。默认值:None。 - - **steps** (list(float) | tuple(float)) - 相邻先验框的中心点步长 ,如果在水平和垂直方向上步长相同,则设置steps即可,否则分别通过step_w和step_h设置不同方向的步长。如果 ``steps``, ``ste_w`` 和 ``step_h`` 均为None,步长为输入图片的大小 ``base_size`` 和特征图大小的比例。默认值:None。 - - **step_w** (list(float)| tuple(float)) - 水平方向上先验框中心点步长。默认值:None。 - - **step_h** (list | tuple) - 垂直方向上先验框中心点步长。默认值:None。 - - **offset** (float) - 左上角先验框中心在水平和垂直方向上的偏移。默认值:0.5 - - **variance** (list | tuple) - 先验框的方差。默认值:[0.1,0.1,0.2,0.2]。 - - **flip** (bool) - 是否翻转宽高比。默认值:False。 - - **clip** (bool) - 是否剪切超出边界的框。默认值:False。 - - **kernel_size** (int) - 计算回归位置和分类置信度的卷积核的大小。默认值:1。 - - **pad** (int | list(int) | tuple(int)) - 计算回归位置和分类置信度的卷积核的填充。默认值:0。 - - **stride** (int | list | tuple) - 计算回归位置和分类置信度的卷积核的步长。默认值:1。 - - **name** (str) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **min_max_aspect_ratios_order** (bool) - 如果设置为True,则输出先验框的顺序为[min,max,aspect_ratios],这与Caffe一致。请注意,此顺序会影响卷积层后面的权重顺序,但不会影响最终检测结果。默认值:False。 - -返回: - - **mbox_loc(Variable)** - 预测框的回归位置。格式为[N,num_priors,4],其中 ``N`` 是batch size, ``num_priors`` 是总共提取的先验框的个数。 - - **mbox_conf(Variable)** - 预测框的分类信度。格式为[N,num_priors,C],其中 ``num_priors`` 同上,C是类别数。 - - **boxes(Variable)** - 提取的先验框。布局是[num_priors,4], ``num_priors`` 同上,常量4是坐标个数。 - - **variances(Variable)** - 提取的先验框方差。布局是[num_priors,4], ``num_priors`` 同上。 - -返回类型:list(Variable) | tuple(Variable) - -**代码示例1: 设置min_ratio和max_ratio** - -.. code-block:: python - - import paddle.fluid as fluid - - images = fluid.data(name='data', shape=[None, 3, 300, 300], dtype='float32') - conv1 = fluid.data(name='conv1', shape=[None, 512, 19, 19], dtype='float32') - conv2 = fluid.data(name='conv2', shape=[None, 1024, 10, 10], dtype='float32') - conv3 = fluid.data(name='conv3', shape=[None, 512, 5, 5], dtype='float32') - conv4 = fluid.data(name='conv4', shape=[None, 256, 3, 3], dtype='float32') - conv5 = fluid.data(name='conv5', shape=[None, 256, 2, 2], dtype='float32') - conv6 = fluid.data(name='conv6', shape=[None, 128, 1, 1], dtype='float32') - - mbox_locs, mbox_confs, box, var = fluid.layers.multi_box_head( - inputs=[conv1, conv2, conv3, conv4, conv5, conv6], - image=images, - num_classes=21, - min_ratio=20, - max_ratio=90, - aspect_ratios=[[2.], [2., 3.], [2., 3.], [2., 3.], [2.], [2.]], - base_size=300, - offset=0.5, - flip=True, - clip=True) - - -**代码示例2: 设置min_sizes和max_sizes** - -.. code-block:: python - - import paddle.fluid as fluid - - images = fluid.data(name='data', shape=[None, 3, 300, 300], dtype='float32') - conv1 = fluid.data(name='conv1', shape=[None, 512, 19, 19], dtype='float32') - conv2 = fluid.data(name='conv2', shape=[None, 1024, 10, 10], dtype='float32') - conv3 = fluid.data(name='conv3', shape=[None, 512, 5, 5], dtype='float32') - conv4 = fluid.data(name='conv4', shape=[None, 256, 3, 3], dtype='float32') - conv5 = fluid.data(name='conv5', shape=[None, 256, 2, 2], dtype='float32') - conv6 = fluid.data(name='conv6', shape=[None, 128, 1, 1], dtype='float32') - - mbox_locs, mbox_confs, box, var = fluid.layers.multi_box_head( - inputs=[conv1, conv2, conv3, conv4, conv5, conv6], - image=images, - num_classes=21, - min_sizes=[60.0, 105.0, 150.0, 195.0, 240.0, 285.0], - max_sizes=[[], 150.0, 195.0, 240.0, 285.0, 300.0], - aspect_ratios=[[2.], [2., 3.], [2., 3.], [2., 3.], [2.], [2.]], - base_size=300, - offset=0.5, - flip=True, - clip=True) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/multiclass_nms_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/multiclass_nms_cn.rst deleted file mode 100644 index 12e3c804d95d81742116abfbf8bc71090621db1c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/multiclass_nms_cn.rst +++ /dev/null @@ -1,85 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.multiclass_nms -:alias: paddle.nn.functional.multiclass_nms,paddle.nn.functional.extension.multiclass_nms -:old_api: paddle.fluid.layers.multiclass_nms - - - -**多分类NMS** - -该OP用于对边界框(bounding box)和评分(scores)执行多类非极大值抑制(NMS)。 - -在NMS中,如果提供 ``score_threshold`` 阈值,则此OP贪心地选择所有得分(scores)高于 ``score_threshold`` 的检测边界框(bounding box)的子集,如果nms_top_k大于-1,则选择最大的nms_top_k置信度分数。 接着,该OP依据 adaptive nms(基于 ``nms_threshold`` 和 ``nms_eta``),删除与已选择的框IOU(交并比)高于nms_threshold 的重叠框。 - -在NMS步骤后,如果keep_top_k大于-1,则每个图像最多保留keep_top_k个框(bounding box)。 - -计算示例: - .. code-block:: text - - 如果: - box1.data = (2.0, 3.0, 7.0, 5.0) 数据格式为 (xmin, ymin, xmax, ymax) - box1.scores = (0.7, 0.2, 0.4) 其中 (label0.score=0.7, label1.score=0.2, label2.cores=0.4) - box2.data = (3.0, 4.0, 8.0, 5.0) - box2.score = (0.3, 0.3, 0.1) - nms_threshold = 0.3 - background_label = 0 - score_threshold = 0 - 则: - iou = 4/11 > 0.3 - out.data = [[1, 0.3, 3.0, 4.0, 8.0, 5.0], - [2, 0.4, 2.0, 3.0, 7.0, 5.0]] - - 输出数据格式为 (label, confidence, xmin, ymin, xmax, ymax) - - - -参数: - - **bboxes** (Variable) – 支持两种类型的边界框(bounding box): - - 1. (Tensor)形为[N,M,4 或 8、16、24、32]的3-D张量,表示将预测M个边界框的预测位置, N是批大小(batch size)。当边界框(bounding box)大小等于4时,每个边界框有四个坐标值,布局为[xmin,ymin,xmax,ymax]。数据类型为float32或float64。 - 2. (LoDTensor)形状为[M,C,4] M是边界框的个数,C是类别个数。数据类型为float32或float64 - - - **scores** (Variable) – 支持两种类型的分数: - - 1. (Tensor)具有形状[N,C,M]的3-D张量表示预测的置信度。 N是批量大小 batch size,C是种类数目,M是边界框bounding box的数量。对于每个类别,存在对应于M个边界框的总M个分数。请注意,M等于bboxes的第二维。数据类型为float32或float64。 - 2. (LoDTensor)具有形状[M,C]的2-D LoDTensor。 M是bbox的数量,C是种类数目。在这种情况下,输入bboxes应该是形为[M,C,4]的第二种情况。数据类型为float32或float64。 - - - **background_label** (int) – 背景标签(类别)的索引,如果设置为 0 ,则忽略背景标签(类别)。如果设置为 -1 ,则考虑所有类别。默认值:0 - - **score_threshold** (float) – 过滤掉低置信度分数的边界框的阈值。如果没有提供,请考虑所有边界框。 - - **nms_top_k** (int) – 基于 score_threshold 的过滤检测后,根据置信度保留的最大检测次数。 - - **nms_threshold** (float) – 在NMS中用于剔除检测框IOU的阈值,默认值:0.3 。 - - **nms_eta** (float) – 在NMS中用于调整 nms_threshold 的参数,设为1时表示nms_threshold不变。默认值:1.0 。 - - **keep_top_k** (int) – NMS步骤后每个图像要保留的总bbox数。 -1表示在NMS步骤之后保留所有bbox。 - - **normalized** (bool) – 检测是否已经经过正则化。默认值:True 。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为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}) - -返回类型:Variable,数据类型与输入一致。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - 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) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/polygon_box_transform_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/polygon_box_transform_cn.rst deleted file mode 100644 index 06fa39efbdc758bc5e03dcf64e9554d2f627086b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/polygon_box_transform_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_layers_polygon_box_transform: - -polygon_box_transform -------------------------------- - -.. py:function:: paddle.fluid.layers.polygon_box_transform(input, name=None) - -:alias_main: paddle.nn.functional.polygon_box_transform -:alias: paddle.nn.functional.polygon_box_transform,paddle.nn.functional.extension.polygon_box_transform -:old_api: paddle.fluid.layers.polygon_box_transform - - - -**PolygonBoxTransform 算子** - -该op用于将偏移坐标改变为真实的坐标。 - -输入4-D Tensor是检测网络最终的几何输出。我们使用 2*n 个数来表示从 polygon_box 中的 n 个顶点(vertice)到像素位置的偏移。由于每个距离偏移包含两个数 :math:`(x_i, y_i)` ,所以几何输出通道数为 2*n。 - -参数: - - **input** (Variable) - 形状为 :math:`[batch\_size,geometry\_channels,height,width]` 的4-D Tensor,数据类型为float32或float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:polygon_box_transform输出的真实坐标,是一个 4-D Tensor。数据类型为float32或float64。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name='input', shape=[4, 10, 5, 5], - append_batch_size=False, dtype='float32') - out = fluid.layers.polygon_box_transform(input) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/prior_box_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/prior_box_cn.rst deleted file mode 100644 index 85383fbbe6d7f3a60d449c0db069967a12606785..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/prior_box_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_prior_box: - -prior_box -------------------------------- -.. py:function:: paddle.fluid.layers.prior_box(input,image,min_sizes=None,max_sizes=None,aspect_ratios=[1.0],variance=[0.1,0.1,0.2,0.2],flip=False,clip=False,steps=[0.0,0.0],offset=0.5,name=None,min_max_aspect_ratios_order=False) - -:alias_main: paddle.nn.functional.prior_box -:alias: paddle.nn.functional.prior_box,paddle.nn.functional.vision.prior_box -:old_api: paddle.fluid.layers.prior_box - - - -该OP为SSD(Single Shot MultiBox Detector)算法生成候选框。输入的每个位产生N个候选框,N由min_sizes,max_sizes和aspect_ratios的数目决定,候选框的尺寸在(min_size,max_size)之间,该尺寸根据aspect_ratios在序列中生成。 - -参数: - - **input** (Variable) - 形状为NCHW的4-DTensor,数据类型为float32或float64。 - - **image** (Variable) - PriorBoxOp的输入图像数据,形状为NCHW的4-D Tensor,数据类型为float32或float64。 - - **min_sizes** (list|tuple|float) - 生成的候选框的最小尺寸。 - - **max_sizes** (list|tuple|None) - 生成的候选框的最大尺寸。默认值为None - - **aspect_ratios** (list|tuple|float) - 生成的候选框的长宽比。默认值为[1.]。 - - **variance** (list|tuple) - 在候选框中解码的方差。默认值为[0.1,0.1,0.2,0.2]。 - - **flip** (bool) - 是否翻转。默认值为False。 - - **clip** (bool) - 是否裁剪。默认值为False。 - - **step** (list|tuple) - 候选框在width和height上的步长。如果step[0]等于0.0或者step[1]等于0.0,则自动计算候选框在宽度和高度上的步长。默认:[0.,0.] - - **offset** (float) - 候选框中心位移。默认:0.5 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - **min_max_aspect_ratios_order** (bool) - 若设为True,候选框的输出以[min, max, aspect_ratios]的顺序输出,和Caffe保持一致。请注意,该顺序会影响后面卷基层的权重顺序,但不影响最后的检测结果。默认:False。 - -返回:含有两个变量的元组,包括: - boxes: 候选框。形状为[H,W,num_priors,4]的4-D Tensor。其中,H是输入的高度,W是输入的宽度,num_priors是输入每位的总框数。 - variances: 候选框的方差,形状为[H,W,num_priors,4]的4-D Tensor。其中,H是输入的高度,W是输入的宽度,num_priors是输入每位的总框数。 - -返回类型:元组 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9]) - images = fluid.layers.data(name="images", shape=[3,9,12]) - box, var = fluid.layers.prior_box( - input=input, - image=images, - min_sizes=[100.], - flip=True, - clip=True) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/retinanet_detection_output_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/retinanet_detection_output_cn.rst deleted file mode 100644 index 426ea26b3a675bf121e2ff8e0c8495e715878f52..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/retinanet_detection_output_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_layers_retinanet_detection_output: - -retinanet_detection_output -------------------------------- - -.. py:function:: paddle.fluid.layers.retinanet_detection_output(bboxes, scores, anchors, im_info, score_threshold=0.05, nms_top_k=1000, keep_top_k=100, nms_threshold=0.3, nms_eta=1.0) - -:alias_main: paddle.nn.functional.retinanet_detection_output -:alias: paddle.nn.functional.retinanet_detection_output,paddle.nn.functional.vision.retinanet_detection_output -:old_api: paddle.fluid.layers.retinanet_detection_output - - - -在 `RetinaNet `_ 中,有多个 `FPN `_ 层会输出用于分类的预测值和位置回归的预测值,该OP通过执行以下步骤将这些预测值转换成最终的检测结果: - -1. 在每个FPN层上,先剔除分类预测值小于score_threshold的anchor,然后按分类预测值从大到小排序,选出排名前nms_top_k的anchor,并将这些anchor与其位置回归的预测值做解码操作得到检测框。 -2. 合并全部FPN层上的检测框,对这些检测框进行非极大值抑制操作(NMS)以获得最终的检测结果。 - - -参数: - - **bboxes** (List) – 由来自不同FPN层的Tensor组成的列表,表示全部anchor的位置回归预测值。列表中每个元素是一个维度为 :math:`[N, Mi, 4]` 的3-D Tensor,其中,第一维N表示批量训练时批量内的图片数量,第二维Mi表示每张图片第i个FPN层上的anchor数量,第三维4表示每个anchor有四个坐标值。数据类型为float32或float64。 - - **scores** (List) – 由来自不同FPN层的Tensor组成的列表,表示全部anchor的分类预测值。列表中每个元素是一个维度为 :math:`[N, Mi, C]` 的3-D Tensor,其中第一维N表示批量训练时批量内的图片数量,第二维Mi表示每张图片第i个FPN层上的anchor数量,第三维C表示类别数量( **不包括背景类** )。数据类型为float32或float64。 - - **anchors** (List) – 由来自不同FPN层的Tensor组成的列表,表示全部anchor的坐标值。列表中每个元素是一个维度为 :math:`[Mi, 4]` 的2-D Tensor,其中第一维Mi表示第i个FPN层上的anchor数量,第二维4表示每个anchor有四个坐标值([xmin, ymin, xmax, ymax])。数据类型为float32或float64。 - - **im_info** (Variable) – 维度为 :math:`[N, 3]` 的2-D Tensor,表示输入图片的尺寸信息。 其中,第一维N表示批量训练时各批量内的图片数量,第二维3表示各图片的尺寸信息,分别是网络输入尺寸的高和宽,以及原图缩放至网络输入大小时的缩放比例。数据类型为float32或float64。 - - **score_threshold** (float32) – 在NMS步骤之前,用于滤除每个FPN层的检测框的阈值,默认值为0.05。 - - **nms_top_k** (int32) – 在NMS步骤之前,保留每个FPN层的检测框的数量,默认值为1000。 - - **keep_top_k** (int32) – 在NMS步骤之后,每张图像要保留的检测框数量,默认值为100,若设为-1,则表示保留NMS步骤后剩下的全部检测框。 - - **nms_threshold** (float32) – NMS步骤中用于剔除检测框的Intersection-over-Union(IoU)阈值,默认为0.3。 - - **nms_eta** (float32) – NMS步骤中用于调整nms_threshold的参数。默认值为1.,表示nms_threshold的取值在NMS步骤中一直保持不变,即其设定值。若nms_eta小于1.,则表示当nms_threshold的取值大于0.5时,每保留一个检测框就调整一次nms_threshold的取值,即nms_threshold = nms_threshold * nms_eta,直到nms_threshold的取值小于等于0.5后结束调整。 -**注意:在模型输入尺寸特别小的情况,此时若用score_threshold滤除anchor,可能会导致没有任何检测框剩余。为避免这种情况出现,该OP不会对最高FPN层上的anchor做滤除。因此,要求bboxes、scores、anchors中最后一个元素是来自最高FPN层的Tensor** 。 - -返回:维度是 :math:`[No, 6]` 的2-D LoDTensor,表示批量内的检测结果。第一维No表示批量内的检测框的总数,第二维6表示每行有六个值:[label, score,xmin,ymin,xmax,ymax]。该LoDTensor的LoD中存放了每张图片的检测框数量,第i张图片的检测框数量为 :math:`LoD[i + 1] - LoD[i]` 。如果 :math:`LoD[i + 1] - LoD[i]` 为0,则第i个图像没有检测结果。 如果批量内的全部图像都没有检测结果,则LoD中所有元素被设置为0,LoDTensor被赋为空(None)。 - - -返回类型:变量(Variable),数据类型为float32或float64。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - bboxes_low = fluid.data( - name='bboxes_low', shape=[1, 44, 4], dtype='float32') - bboxes_high = fluid.data( - name='bboxes_high', shape=[1, 11, 4], dtype='float32') - scores_low = fluid.data( - name='scores_low', shape=[1, 44, 10], dtype='float32') - scores_high = fluid.data( - name='scores_high', shape=[1, 11, 10], dtype='float32') - anchors_low = fluid.data( - name='anchors_low', shape=[44, 4], dtype='float32') - anchors_high = fluid.data( - name='anchors_high', shape=[11, 4], dtype='float32') - im_info = fluid.data( - name="im_info", shape=[1, 3], dtype='float32') - nmsed_outs = fluid.layers.retinanet_detection_output( - bboxes=[bboxes_low, bboxes_high], - scores=[scores_low, scores_high], - anchors=[anchors_low, anchors_high], - im_info=im_info, - score_threshold=0.05, - nms_top_k=1000, - keep_top_k=100, - nms_threshold=0.45, - nms_eta=1.0) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/retinanet_target_assign_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/retinanet_target_assign_cn.rst deleted file mode 100644 index cd37a297b2b303429ee17ad9f2f2881245041ebe..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/retinanet_target_assign_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_retinanet_target_assign: - -retinanet_target_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.retinanet_target_assign(bbox_pred, cls_logits, anchor_box, anchor_var, gt_boxes, gt_labels, is_crowd, im_info, num_classes=1, positive_overlap=0.5, negative_overlap=0.4) - -:alias_main: paddle.nn.functional.retinanet_target_assign -:alias: paddle.nn.functional.retinanet_target_assign,paddle.nn.functional.vision.retinanet_target_assign -:old_api: paddle.fluid.layers.retinanet_target_assign - - - -该OP是从输入anchor中找出训练检测模型 `RetinaNet `_ 所需的正负样本,并为每个正负样本分配用于分类的目标值和位置回归的目标值,同时从全部anchor的类别预测值cls_logits、位置预测值bbox_pred中取出属于各正负样本的部分。 - -正负样本的查找准则如下: - - 若anchor与某个真值框之间的Intersection-over-Union(IoU)大于其他anchor与该真值框的IoU,则该anchor是正样本,且被分配给该真值框; - - 若anchor与某个真值框之间的IoU大于等于positive_overlap,则该anchor是正样本,且被分配给该真值框; - - 若anchor与某个真值框之间的IoU介于[0, negative_overlap),则该anchor是负样本; - - 不满足以上准则的anchor不参与模型训练。 - -在RetinaNet中,对于每个anchor,模型都会预测一个C维的向量用于分类,和一个4维的向量用于位置回归,因此各正负样本的分类目标值也是一个C维向量,各正样本的位置回归目标值也是一个4维向量。对于正样本而言,若其被分配的真值框的类别是i,则其分类目标值的第i-1维为1,其余维度为0;其位置回归的目标值由anchor和真值框之间位置差值计算得到。对于负样本而言,其分类目标值的所有维度都为0,因负样本不参与位置回归的训练,故负样本无位置回归的目标值。 - -分配结束后,从全部anchor的类别预测值cls_logits中取出属于各正负样本的部分,从针对全部anchor的位置预测值bbox_pred中取出属于各正样本的部分。 - - -参数: - - **bbox_pred** (Variable) – 维度为 :math:`[N, M, 4]` 的3-D Tensor,表示全部anchor的位置回归预测值。其中,第一维N表示批量训练时批量内的图片数量,第二维M表示每张图片的全部anchor的数量,第三维4表示每个anchor有四个坐标值。数据类型为float32或float64。 - - **cls_logits** (Variable) – 维度为 :math:`[N, M, C]` 的3-D Tensor,表示全部anchor的分类预测值。 其中,第一维N表示批量训练时批量内的图片数量,第二维M表示每张图片的全部anchor的数量,第三维C表示每个anchor需预测的类别数量( **注意:不包括背景** )。数据类型为float32或float64。 - - - **anchor_box** (Variable) – 维度为 :math:`[M, 4]` 的2-D Tensor,表示全部anchor的坐标值。其中,第一维M表示每张图片的全部anchor的数量,第二维4表示每个anchor有四个坐标值 :math:`[xmin, ymin, xmax, ymax]` ,:math:`[xmin, ymin]` 是anchor的左上顶部坐标,:math:`[xmax, ymax]` 是anchor的右下坐标。数据类型为float32或float64。anchor_box的生成请参考OP :ref:`cn_api_fluid_layers_anchor_generator`。 - - **anchor_var** (Variable) – 维度为 :math:`[M, 4]` 的2-D Tensor,表示在后续计算损失函数时anchor坐标值的缩放比例。其中,第一维M表示每张图片的全部anchor的数量,第二维4表示每个anchor有四个坐标缩放因子。数据类型为float32或float64。anchor_var的生成请参考OP :ref:`cn_api_fluid_layers_anchor_generator`。 - - **gt_boxes** (Variable) – 维度为 :math:`[G, 4]` 且LoD level必须为1的2-D LoDTensor,表示批量训练时批量内的真值框位置。其中,第一维G表示批量内真值框的总数,第二维表示每个真值框有四个坐标值。数据类型为float32或float64。 - - **gt_labels** (variable) – 维度为 :math:`[G, 1]` 且LoD level必须为1的2-D LoDTensor,表示批量训练时批量内的真值框类别,数值范围为 :math:`[1, C]` 。其中,第一维G表示批量内真值框的总数,第二维表示每个真值框只有1个类别。数据类型为int32。 - - **is_crowd** (Variable) – 维度为 :math:`[G]` 且LoD level必须为1的1-D LoDTensor,表示各真值框是否位于重叠区域,值为1表示重叠,则不参与训练。第一维G表示批量内真值框的总数。数据类型为int32。 - - **im_info** (Variable) – 维度为 :math:`[N, 3]` 的2-D Tensor,表示输入图片的尺寸信息。其中,第一维N表示批量训练时批量内的图片数量,第二维3表示各图片的尺寸信息,分别是网络输入尺寸的高和宽,以及原图缩放至网络输入尺寸的缩放比例。数据类型为float32或float64。 - - **num_classes** (int32) – 分类的类别数量,默认值为1。 - - **positive_overlap** (float32) – 判定anchor是一个正样本时anchor和真值框之间的最小IoU,默认值为0.5。 - - **negative_overlap** (float32) – 判定anchor是一个负样本时anchor和真值框之间的最大IoU,默认值为0.4。该参数的设定值应小于等于positive_overlap的设定值,若大于,则positive_overlap的取值为negative_overlap的设定值。 - - -返回: - - **predict_scores** (Variable) – 维度为 :math:`[F + B, C]` 的2-D Tensor,表示正负样本的分类预测值。其中,第一维F为批量内正样本的数量,B为批量内负样本的数量,第二维C为分类的类别数量。数据类型为float32或float64。 - - **predict_location** (Variable) — 维度为 :math:`[F, 4]` 的2-D Tensor,表示正样本的位置回归预测值。其中,第一维F为批量内正样本的数量,第二维4表示每个样本有4个坐标值。数据类型为float32或float64。 - - **target_label** (Variable) — 维度为 :math:`[F + B, 1]` 的2-D Tensor,表示正负样本的分类目标值。其中,第一维F为正样本的数量,B为负样本的数量,第二维1表示每个样本的真值类别只有1类。数据类型为int32。 - - **target_bbox** (Variable) — 维度为 :math:`[F, 4]` 的2-D Tensor,表示正样本的位置回归目标值。其中,第一维F为正样本的数量,第二维4表示每个样本有4个坐标值。数据类型为float32或float64。 - - **bbox_inside_weight** (Variable) — 维度为 :math:`[F, 4]` 的2-D Tensor,表示位置回归预测值中是否属于假正样本,若某个正样本为假,则bbox_inside_weight中对应维度的值为0,否则为1。第一维F为正样本的数量,第二维4表示每个样本有4个坐标值。数据类型为float32或float64。 - - **fg_num** (Variable) — 维度为 :math:`[N, 1]` 的2-D Tensor,表示正样本的数量。其中,第一维N表示批量内的图片数量。 **注意:由于正样本数量会用作后续损失函数的分母,为避免出现除以0的情况,该OP已将每张图片的正样本数量做加1操作** 。数据类型为int32。 - - -返回类型:元组(tuple),元组中的元素predict_scores,predict_location,target_label,target_bbox,bbox_inside_weight,fg_num都是Variable。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - bbox_pred = fluid.data(name='bbox_pred', shape=[1, 100, 4], - dtype='float32') - cls_logits = fluid.data(name='cls_logits', shape=[1, 100, 10], - dtype='float32') - anchor_box = fluid.data(name='anchor_box', shape=[100, 4], - dtype='float32') - anchor_var = fluid.data(name='anchor_var', shape=[100, 4], - dtype='float32') - gt_boxes = fluid.data(name='gt_boxes', shape=[10, 4], - dtype='float32') - gt_labels = fluid.data(name='gt_labels', shape=[10, 1], - dtype='int32') - is_crowd = fluid.data(name='is_crowd', shape=[1], - dtype='int32') - im_info = fluid.data(name='im_info', shape=[1, 3], - dtype='float32') - score_pred, loc_pred, score_target, loc_target, bbox_inside_weight, fg_num = \ - fluid.layers.retinanet_target_assign(bbox_pred, cls_logits, anchor_box, - anchor_var, gt_boxes, gt_labels, is_crowd, im_info, 10) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/roi_perspective_transform_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/roi_perspective_transform_cn.rst deleted file mode 100644 index 1c97a18e0b7897d2b0299bc33d70f94e508531d3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/roi_perspective_transform_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_roi_perspective_transform: - -roi_perspective_transform -------------------------------- - -.. py:function:: paddle.fluid.layers.roi_perspective_transform(input, rois, transformed_height, transformed_width, spatial_scale=1.0) - -:alias_main: paddle.nn.functional.roi_perspective_transform -:alias: paddle.nn.functional.roi_perspective_transform,paddle.nn.functional.vision.roi_perspective_transform -:old_api: paddle.fluid.layers.roi_perspective_transform - - - -该OP对RoI区域做透视变换,将不规则的RoI区域变成固定大小的矩形区域,透视变换是线性代数里面的一种基础变换。 - -参数: - - **input** (Variable) - 输入特征图,4-D Tensor,格式为NCHW。N是batch_size,C是输入通道数,H是特征图高度,W是特征图宽度。数据类型是float32 - - **rois** (Variable) - 感兴趣区域,2D-LoDTensor,形状是(num_rois,8),lod_level为1。其数据形式是[[x1,y1,x2,y2,x3,y3,x4,y4], ...],其中(x1,y1)是左上角坐标,(x2,y2)是右上角坐标,(x3,y3)是右下角坐标,(x4,y4)是左下角坐标。数据类型与 ``input`` 相同 - - **transformed_height** (int) - 输出的高度 - - **transformed_width** (int) – 输出的宽度 - - **spatial_scale** (float,可选) - 空间尺度因子,用于缩放ROI坐标,浮点数。默认值1.0 - -返回: 由三个变量构成的元组 (out, mask, transform_matrix) - - ``out`` : ``ROIPerspectiveTransformOp`` 的输出,4D-LoDTensor,形状是(num_rois,channels,transformed_height,transformed_width),lod_level为1 - - ``mask`` : ``ROIPerspectiveTransformOp`` 的掩码,4D-LoDTensor,形状是(num_rois,1,transformed_height,transformed_width),lod_level为1 - - ``transform_matrix`` : ``ROIPerspectiveTransformOp`` 的转换矩阵,2D-LoDTensor,形状是(num_rois,9),lod_level为1 - -返回类型: 元组 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.layers.data(name='x', shape=[256, 28, 28], dtype='float32') - rois = fluid.layers.data(name='rois', shape=[8], lod_level=1, dtype='float32') - out, mask, transform_matrix = fluid.layers.roi_perspective_transform(x, rois, 7, 7, 1.0) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/rpn_target_assign_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/rpn_target_assign_cn.rst deleted file mode 100644 index 3edc0ee06ede956fc25791c2c833ea6b473c2c9e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/rpn_target_assign_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_rpn_target_assign: - -rpn_target_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.rpn_target_assign(bbox_pred, cls_logits, anchor_box, anchor_var, gt_boxes, is_crowd, im_info, rpn_batch_size_per_im=256, rpn_straddle_thresh=0.0, rpn_fg_fraction=0.5, rpn_positive_overlap=0.7, rpn_negative_overlap=0.3, use_random=True) - -:alias_main: paddle.nn.functional.rpn_target_assign -:alias: paddle.nn.functional.rpn_target_assign,paddle.nn.functional.extension.rpn_target_assign -:old_api: paddle.fluid.layers.rpn_target_assign - - - -该OP用于为anchors分配分类标签和回归标签,以便用这些标签对RPN进行训练。 - -该OP将anchors分为两种类别,正和负。根据Faster-RCNN的paper,正类别anchor包括以下两种anchor: - -- 在与一个ground-truth boxes相交的所有anchor中,IoU最高的anchor -- 和任意一个ground-truth box的IoU超出了阈值 ``rpn_positive_overlap`` - -负类别anchor是和任何ground-truth boxes的IoU都低于阈值 ``rpn_negative_overlap`` 的anchor. - -正负anchors之外的anchors不会被选出来参与训练。 - -回归标签是ground-truth boxes和正类别anchor的偏移值。 - -参数: - - **bbox_pred** (Variable) - Shape为 ``[batch_size,M,4]`` 的3-D Tensor,表示M个边界框的预测位置。每个边界框有四个坐标值,即 ``[xmin,ymin,xmax,ymax]`` 。数据类型支持float32和float64。 - - **cls_logits** (Variable)- Shape为 ``[batch_size,M,1]`` 的3-D Tensor,表示预测的置信度。1是frontground和background的sigmoid,M是边界框的数量。数据类型支持float32和float64。 - - **anchor_box** (Variable) - Shape为 ``[M,4]`` 的2-D Tensor,它拥有M个框,每个框可表示为 ``[xmin,ymin,xmax,ymax]`` , ``[xmin,ymin]`` 是anchor框的左上部坐标,如果输入是图像特征图,则它们接近坐标系的原点。 ``[xmax,ymax]`` 是anchor框的右下部坐标。数据类型支持float32和float64。 - - **anchor_var** (Variable) - Shape为 ``[M,4]`` 的2-D Tensor,它拥有anchor的expand方差。数据类型支持float32和float64。 - - **gt_boxes** (Variable) - Shape为 ``[Ng,4]`` 的2-D LoDTensor, ``Ng`` 是一个batch内输入groundtruth boxes的总数。数据类型支持float32和float64。 - - **is_crowd** (Variable) –Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于标记boxes是否是crowd。数据类型支持int32。 - - **im_info** (Variable) - Shape为[N,3]的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和feature map相对于原始图像缩放的比例。数据类型支持int32。 - - **rpn_batch_size_per_im** (int,可选) - 整型数字。每个图像中RPN示例总数。数据类型支持int32。缺省值为256。 - - **rpn_straddle_thresh** (float,可选) - 浮点数字。超出图像外部 ``straddle_thresh`` 个像素的RPN anchors会被删除。数据类型支持float32。缺省值为0.0。 - - **rpn_fg_fraction** (float,可选) - 浮点数字。标记为foreground boxes的数量占batch内总体boxes的比例。 数据类型支持float32。缺省值为0.5。 - - **rpn_positive_overlap** (float,可选) - 浮点数字。和任意一个groundtruth box的 ``IoU`` 超出了阈值 ``rpn_positive_overlap`` 的box被判定为正类别。 数据类型支持float32。缺省值为0.7。 - - **rpn_negative_overlap** (float,可选) - 浮点数字。负类别anchor是和任何ground-truth boxes的IoU都低于阈值 ``rpn_negative_overlap`` 的anchor。 数据类型支持float32。缺省值为0.3。 - - **use_random** (bool,可选) – 布尔类型。是否使用随机采样来选择foreground boxes和background boxes。缺省值为True。 - -返回: 元组。格式为 ``(predicted_scores, predicted_location, target_label, target_bbox, bbox_inside_weight)`` - - **predicted_scores** (Varible) - RPN预测的类别结果。Shape为 ``[F + B,1]`` 的2D Tensor。 ``F`` 为foreground anchor的数量,B为background anchor的数量。数据类型与 ``bbox_pred`` 一致。 - - **predicted_location** (Variable) - RPN预测的位置结果。Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - - **target_label** (Variable) - Shape为 ``[F + B,1]`` 的2D Tensor。数据类型为int32。 - - **target_bbox** (Variable) - Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - - **Bbox_inside_weight** (Variable) - Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - -返回类型:元组 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - bbox_pred = fluid.layers.data(name='bbox_pred', shape=[100, 4], - append_batch_size=False, dtype='float32') - cls_logits = fluid.layers.data(name='cls_logits', shape=[100, 1], - append_batch_size=False, dtype='float32') - anchor_box = fluid.layers.data(name='anchor_box', shape=[20, 4], - append_batch_size=False, dtype='float32') - anchor_var = fluid.layers.data(name='anchor_var', shape=[20, 4], - append_batch_size=False, dtype='float32') - gt_boxes = fluid.layers.data(name='gt_boxes', shape=[10, 4], - append_batch_size=False, dtype='float32') - is_crowd = fluid.layers.data(name='is_crowd', shape=[1], - append_batch_size=False, dtype='float32') - im_info = fluid.layers.data(name='im_infoss', shape=[1, 3], - append_batch_size=False, dtype='float32') - loc_pred, score_pred, loc_target, score_target, bbox_inside_weight= - fluid.layers.rpn_target_assign(bbox_pred, cls_logits, - anchor_box, anchor_var, gt_boxes, is_crowd, im_info) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/sigmoid_focal_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/sigmoid_focal_loss_cn.rst deleted file mode 100644 index 2f47561a89a4560e0c39553205b4d7fa68c7a841..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/sigmoid_focal_loss_cn.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. _cn_api_fluid_layers_sigmoid_focal_loss: - -sigmoid_focal_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.sigmoid_focal_loss(x, label, fg_num, gamma=2.0, alpha=0.25) - -:alias_main: paddle.nn.functional.sigmoid_focal_loss -:alias: paddle.nn.functional.sigmoid_focal_loss,paddle.nn.functional.loss.sigmoid_focal_loss -:old_api: paddle.fluid.layers.sigmoid_focal_loss - - - -`Focal Loss `_ 被提出用于解决计算机视觉任务中前景-背景不平衡的问题。该OP先计算输入x中每个元素的sigmoid值,然后计算sigmoid值与类别目标值label之间的Focal Loss。 - -Focal Loss的计算过程如下: - -.. math:: - - \mathop{loss_{i,\,j}}\limits_{i\in\mathbb{[0,\,N-1]},\,j\in\mathbb{[0,\,C-1]}}=\left\{ - \begin{array}{rcl} - - \frac{1}{fg\_num} * \alpha * {(1 - \sigma(x_{i,\,j}))}^{\gamma} * \log(\sigma(x_{i,\,j})) & & {(j +1) = label_{i,\,0}}\\ - - \frac{1}{fg\_num} * (1 - \alpha) * {\sigma(x_{i,\,j})}^{ \gamma} * \log(1 - \sigma(x_{i,\,j})) & & {(j +1)!= label_{i,\,0}} - \end{array} \right. - -其中,已知: - -.. math:: - - \sigma(x_{i,\,j}) = \frac{1}{1 + \exp(-x_{i,\,j})} - - -参数: - - **x** (Variable) – 维度为 :math:`[N, C]` 的2-D Tensor,表示全部样本的分类预测值。其中,第一维N是批量内参与训练的样本数量,例如在目标检测中,样本为框级别,N为批量内所有图像的正负样本的数量总和;在图像分类中,样本为图像级别,N为批量内的图像数量总和。第二维:math:`C` 是类别数量( **不包括背景类** )。数据类型为float32或float64。 - - **label** (Variable) – 维度为 :math:`[N, 1]` 的2-D Tensor,表示全部样本的分类目标值。其中,第一维N是批量内参与训练的样本数量,第二维1表示每个样本只有一个类别目标值。正样本的目标类别值的取值范围是 :math:`[1, C]` , 负样本的目标类别值是0。数据类型为int32。 - - **fg_num** (Variable) – 维度为 :math:`[1]` 的1-D Tensor,表示批量内正样本的数量,需在进入此OP前获取正样本的数量。数据类型为int32。 - - **gamma** (int|float) – 用于平衡易分样本和难分样本的超参数, 默认值设置为2.0。 - - **alpha** (int|float) – 用于平衡正样本和负样本的超参数,默认值设置为0.25。 - - -返回: 输入x中每个元素的Focal loss,即维度为 :math:`[N, C]` 的2-D Tensor。 - -返回类型: 变量(Variable),数据类型为float32或float64。 - -**代码示例** - -.. code-block:: python - - - import numpy as np - import paddle.fluid as fluid - - num_classes = 10 # exclude background - image_width = 16 - image_height = 16 - batch_size = 32 - max_iter = 20 - - - def gen_train_data(): - x_data = np.random.uniform(0, 255, (batch_size, 3, image_height, - image_width)).astype('float64') - label_data = np.random.randint(0, num_classes, - (batch_size, 1)).astype('int32') - return {"x": x_data, "label": label_data} - - - def get_focal_loss(pred, label, fg_num, num_classes): - pred = fluid.layers.reshape(pred, [-1, num_classes]) - label = fluid.layers.reshape(label, [-1, 1]) - label.stop_gradient = True - loss = fluid.layers.sigmoid_focal_loss( - pred, label, fg_num, gamma=2.0, alpha=0.25) - loss = fluid.layers.reduce_sum(loss) - return loss - - - def build_model(mode='train'): - x = fluid.data(name="x", shape=[-1, 3, -1, -1], dtype='float64') - output = fluid.layers.pool2d(input=x, pool_type='avg', global_pooling=True) - output = fluid.layers.fc( - input=output, - size=num_classes, - # Notice: size is set to be the number of target classes (excluding backgorund) - # because sigmoid activation will be done in the sigmoid_focal_loss op. - act=None) - if mode == 'train': - label = fluid.data(name="label", shape=[-1, 1], dtype='int32') - # Obtain the fg_num needed by the sigmoid_focal_loss op: - # 0 in label represents background, >=1 in label represents foreground, - # find the elements in label which are greater or equal than 1, then - # computed the numbers of these elements. - data = fluid.layers.fill_constant(shape=[1], value=1, dtype='int32') - fg_label = fluid.layers.greater_equal(label, data) - fg_label = fluid.layers.cast(fg_label, dtype='int32') - fg_num = fluid.layers.reduce_sum(fg_label) - fg_num.stop_gradient = True - avg_loss = get_focal_loss(output, label, fg_num, num_classes) - return avg_loss - else: - # During evaluating or testing phase, - # output of the final fc layer should be connected to a sigmoid layer. - pred = fluid.layers.sigmoid(output) - return pred - - - loss = build_model('train') - moment_optimizer = fluid.optimizer.MomentumOptimizer( - learning_rate=0.001, momentum=0.9) - moment_optimizer.minimize(loss) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for i in range(max_iter): - outs = exe.run(feed=gen_train_data(), fetch_list=[loss.name]) - print(outs) diff --git a/doc/paddle/api/paddle/fluid/layers/detection/ssd_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/ssd_loss_cn.rst deleted file mode 100644 index da9949a0eea3405be4372eecb2e673e0ad0166d0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/ssd_loss_cn.rst +++ /dev/null @@ -1,101 +0,0 @@ -.. _cn_api_fluid_layers_ssd_loss: - -ssd_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.ssd_loss(location, confidence, gt_box, gt_label, prior_box, prior_box_var=None, background_label=0, overlap_threshold=0.5, neg_pos_ratio=3.0, neg_overlap=0.5, loc_loss_weight=1.0, conf_loss_weight=1.0, match_type='per_prediction', mining_type='max_negative', normalize=True, sample_size=None) - -:alias_main: paddle.nn.functional.ssd_loss -:alias: paddle.nn.functional.ssd_loss,paddle.nn.functional.loss.ssd_loss -:old_api: paddle.fluid.layers.ssd_loss - - - -该OP用于SSD物体检测算法的多窗口损失层 - -该层用于计算SSD的损失,给定位置偏移预测,置信度预测,候选框和真实框标签,以及难样本挖掘的类型。通过执行以下步骤,返回的损失是本地化损失(或回归损失)和置信度损失(或分类损失)的加权和: - -1、通过二分匹配算法查找匹配的边界框。 - - 1.1、计算真实框与先验框之间的IOU相似度。 - - 1.2、通过二分匹配算法计算匹配的边界框。 - -2、计算难分样本的置信度 - - 2.1、根据匹配的索引获取目标标签。 - - 2.2、计算置信度损失。 - -3、应用难样本挖掘算法来获取负样本索引并更新匹配的索引。 - -4、分配分类和回归目标 - - 4.1、根据生成的候选框bbox进行编码。 - - 4.2、分配回归目标。 - - 4.3、分配分类目标。 - -5、计算总体的物体损失。 - - 5.1计算置信度(confidence)损失。 - - 5.1计算回归(location)损失。 - - 5.3计算总体加权损失。 - -参数: - - **location** (Variable)- 位置预测,具有形状[N,Np,4]的3D-Tensor,N是batch大小,Np是每个实例的预测总数。 4是坐标的维数,布局是[xmin,ymin,xmax,ymax],xmin,ymin代表box左上坐标,xmax,ymax代表box右下坐标,数据类型为float32或float64。 - - **confidence** (Variable) - 置信度(分类)预测,具有形状[N,Np,C]的3D-Tensor,N是batch大小,Np是每个实例的预测总数,C是类别数量,数据类型为float32或float64。 - - **gt_box** (Variable)- 真实框(bbox),具有形状[Ng,4]的2D LoDTensor,Ng是mini-batch输入的真实框(bbox)的总数,4是坐标的维数,布局是[xmin,ymin,xmax,ymax],xmin,ymin代表box左上坐标,xmax,ymax代表box右下坐标,数据类型为float32或float64。 - - **gt_label** (Variable)- ground-truth标签, 具有形状[Ng,1]的2D LoDTensor,Ng是mini-batch输入的真实框(bbox)的总数,1表示类别号,数据类型为float32或float64。 - - **prior_box** (Variable)- 检测网络生成的候选框, 具有形状[Np,4]的2D-Tensor,Np是生成的候选框总数,4是坐标的维数,布局是[xmin,ymin,xmax,ymax],xmin,ymin代表box左上坐标,xmax,ymax代表box右下坐标,数据类型为float32或float64。。 - - **prior_box_var** (Variable)- 候选框的方差, 具有形状[Np,4]的2D张量,形状及数据类型同 ``prior_box`` 。 - - **background_label** (int)- background标签的索引,默认为0。 - - **overlap_threshold** (float)- 额外匹配的bbox阈值,当找到匹配的框,如果 ``match_type`` 为'per_prediction',使用 ``overlap_threshold`` 确定额外匹配的bbox。默认为0.5。 - - **neg_pos_ratio** (float)- 负框与正框的比率,仅在 ``mining_type`` 为'max_negative'时使用,默认为3.0。 - - **neg_overlap** (float)- 不匹配预测的负重叠上限。仅当 ``mining_type`` 为'max_negative'时使用,默认为0.5。 - - **loc_loss_weight** (float)- 回归损失的权重,默认为1.0。 - - **conf_loss_weight** (float)- 置信度损失的权重,默认为1.0。 - - **match_type** (str)- 训练期间匹配方法的类型应为'bipartite'或'per_prediction',默认为'per_prediction'。 - - **mining_type** (str)- 难样本挖掘类型,分为'hard_example'或'max_negative',目前只支持'max_negative'。 - - **normalize** (bool)- 是否通过输出位置的总数将SSD损失标准化,默认为True。 - - **sample_size** (int)- 负样本框的最大样本大小,仅在 ``mining_type`` 为'hard_example'时使用。 - -返回: Variable(Tensor) 定位损失和置信度损失的加权和, 具有形状[N * Np,1], N是batch大小,Np是每个实例的预测总数,数据类型为float32或float64。 - -抛出异常: ``ValueError`` - 如果 ``mining_type`` 是'hard_example',目前只支持 ``max_negative`` 的挖掘类型。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - pb = fluid.layers.data( - name='prior_box', - shape=[10, 4], - append_batch_size=False, - dtype='float32') - pbv = fluid.layers.data( - name='prior_box_var', - shape=[10, 4], - append_batch_size=False, - dtype='float32') - loc = fluid.layers.data(name='target_box', shape=[10, 4], dtype='float32') - scores = fluid.layers.data(name='scores', shape=[10, 21], dtype='float32') - gt_box = fluid.layers.data( - name='gt_box', shape=[4], lod_level=1, dtype='float32') - gt_label = fluid.layers.data( - name='gt_label', shape=[1], lod_level=1, dtype='float32') - loss = fluid.layers.ssd_loss(loc, scores, gt_box, gt_label, pb, pbv) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/target_assign_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/target_assign_cn.rst deleted file mode 100644 index 61bd9787dad47e8778d9259dd2d2c4dbbefeddd8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/target_assign_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_layers_target_assign: - -target_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.target_assign(input, matched_indices, negative_indices=None, mismatch_value=None, name=None) - -:alias_main: paddle.nn.functional.target_assign -:alias: paddle.nn.functional.target_assign,paddle.nn.functional.extension.target_assign -:old_api: paddle.fluid.layers.target_assign - - - -对于每个实例,根据 ``match_indices`` 和 ``negative_indices`` 位置索引, 给输入 ``out`` 和 ``out_weight`` 赋值。输入 ``input`` 和 ``negative_indices`` 均为2-D LoDTensor。假如 ``input`` 中每个实例的行偏移称作lod,该操作计算步骤如下: - -1.根据match_indices赋值: - -.. code-block:: text - - If id = match_indices[i][j] > 0, - - out[i][j][0 : K] = X[lod[i] + id][j % P][0 : K] - out_weight[i][j] = 1. - - Otherwise, - - out[j][j][0 : K] = {mismatch_value, mismatch_value, ...} - out_weight[i][j] = 0. - -2.如果提供neg_indices,则再次依据该输入赋值: - -neg_indices中的第i个实例的索引称作neg_indice,则对于第i个实例: - -.. code-block:: text - - for id in neg_indice: - out[i][id][0 : K] = {mismatch_value, mismatch_value, ...} - out_weight[i][id] = 1.0 - -参数: - - **input** (Variable) - 输入为3-D LoDTensor,为了方便在上述文档中解释,假如维度是[M,P,K]。 - - **matched_indices** (Variable) - 输入为2-D Tensor,数据类型为int32,表示在输入中匹配位置,具体计算如上,同样,为了方便解释,假如维度大小为[N,P],如果 ``matched_indices[i][j]`` 为-1,表示在第 ``i`` 个实例中第j列项没有任何匹配项,输出会设置成 ``mismatch_value`` 。 - - **negative_indices** (Variable,可选) - 维度为2-D LoDTensor,数据类型为int32。可以不设置,如果设置,会依据该位置索引再次给输出赋值,具体参考上述文档。 - - **mismatch_value** (float32,可选) - 未匹配的位置填充值。 - - **name** (str) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:返回一个元组(out,out_weight)。out是三维张量,维度为[N,P,K],N和P与 ``matched_indices`` 中的N和P一致,K和输入X中的K一致。 ``out_weight`` 的维度为[N,P,1]。 - -返回类型:tuple(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data( - name='x', - shape=[4, 20, 4], - dtype='float', - lod_level=1) - matched_id = fluid.data( - name='indices', - shape=[8, 20], - dtype='int32') - trg, trg_weight = fluid.layers.target_assign( - x, - matched_id, - mismatch_value=0) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/yolo_box_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/yolo_box_cn.rst deleted file mode 100644 index 5d1d7db4f14d31e5ad33eb6854c21740322a1088..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/yolo_box_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_layers_yolo_box: - -yolo_box -------------------------------- - -.. py:function:: paddle.fluid.layers.yolo_box(x, img_size, anchors, class_num, conf_thresh, downsample_ratio, clip_bbox=True,name=None) - -:alias_main: paddle.nn.functional.yolo_box -:alias: paddle.nn.functional.yolo_box,paddle.nn.functional.vision.yolo_box -:old_api: paddle.fluid.layers.yolo_box - - - - -该运算符基于YOLOv3网络的输出结果,生成YOLO检测框。 - -连接 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` -,则框的预测算法为: - -.. math:: - - 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` , :math:`c_x` 是当前网格的左上角顶点坐标。 :math:`p_w` , :math:`p_h` 由anchors指定。 - -每个anchor预测框的第五通道的逻辑回归值表示每个预测框的置信度得分,并且每个anchor预测框的最后class_num通道的逻辑回归值表示分类得分。 应忽略置信度低于conf_thresh的框。另外,框最终得分是置信度得分和分类得分的乘积。 - - -.. math:: - - score_{pred} = score_{conf} * score_{class} - - -参数: - - **x** (Variable) - YoloBox的输入张量是一个4-D张量,形状为[N,C,H,W]。第二维(C)存储每个anchor box位置坐标,每个anchor box的置信度分数和one hot key。通常,X应该是YOLOv3网络的输出。数据类型为float32或float64 - - **img_size** (Variable) - YoloBox的图像大小张量,这是一个形状为[N,2]的二维张量。该张量保持每个输入图像的高度和宽度,用于对输出图像按输入图像比例调整输出框的大小。数据类型为int32。 - - **anchors** (list | tuple) - anchor的宽度和高度,它将逐对解析 - - **class_num** (int) - 要预测的类数 - - **conf_thresh** (float) - 检测框的置信度得分阈值。置信度得分低于阈值的框应该被忽略 - - **downsample_ratio** (int) - 从网络输入到YoloBox操作输入的下采样率,因此应依次为第一个,第二个和第三个YoloBox运算设置该值为32,16,8 - - **clip_bbox** (bool) - 是否将输出的bbox裁剪到 :attr:`img_size` 范围内,默认为True。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - 1. 框的坐标,形为[N,M,4]的三维张量 - 2. 框的分类得分, 形为 [N,M,class_num]的三维张量 - -返回类型: 变量(Variable) - -抛出异常: - - TypeError - yolov_box的输入x必须是Variable - - TypeError - yolo框的anchors参数必须是list或tuple - - TypeError - yolo box的class_num参数必须是整数 - - TypeError - yolo框的conf_thresh参数必须是一个浮点数 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[255, 13, 13], dtype='float32') - img_size = fluid.layers.data(name='img_size',shape=[2],dtype='int64') - anchors = [10, 13, 16, 30, 33, 23] - boxes, scores = fluid.layers.yolo_box(x=x, img_size=img_size, class_num=80, anchors=anchors, - conf_thresh=0.01, downsample_ratio=32) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/detection/yolov3_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/detection/yolov3_loss_cn.rst deleted file mode 100644 index 020dd2cc7d0843b62213141a2033cb2dc3834e41..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/detection/yolov3_loss_cn.rst +++ /dev/null @@ -1,111 +0,0 @@ -.. _cn_api_fluid_layers_yolov3_loss: - -yolov3_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.yolov3_loss(x, gt_box, gt_label, anchors, anchor_mask, class_num, ignore_thresh, downsample_ratio, gt_score=None, use_label_smooth=True, name=None) - -:alias_main: paddle.nn.functional.yolov3_loss -:alias: paddle.nn.functional.yolov3_loss,paddle.nn.functional.vision.yolov3_loss -:old_api: paddle.fluid.layers.yolov3_loss - - - -该运算通过给定的预测结果和真实框计算yolov3损失。 - -yolov3 loss前的网络输出形状为[N,C,H,W],H和W应该相同,用来指定网格(grid)大小。每个网格点预测S个边界框(bounding boxes),S由每个尺度中 ``anchors`` 簇的个数指定。在第二维(表示通道的维度)中,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损失包括三个主要部分,框位置损失,目标性损失,分类损失。L1损失用于 -框坐标(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} - $$ - - -当 ``use_label_smooth`` 为 ``True`` 时,在计算分类损失时将平滑分类目标,将正样本的目标平滑到1.0-1.0 / class_num,并将负样本的目标平滑到1.0 / class_num。 - -``GTScore`` (如果存在)表示真实框的mixup得分,那么真实框所产生的所有损失需要乘上GTScore。 - - - -参数: - - **x** (Variable) – YOLOv3损失运算的输入张量,这是一个形状为[N,C,H,W]的四维Tensor。H和W应该相同,第二维(C)存储框的位置信息,以及每个anchor box的置信度得分和one-hot分类。数据类型为float32或float64。 - - **gt_box** (Variable) – 真实框,应该是[N,B,4]的形状。第三维用来承载x、y、w、h,其中 x, y是真实框的中心坐标,w, h是框的宽度和高度,且x、y、w、h将除以输入图片的尺寸,缩放到[0,1]区间内。 N是batch size,B是图像中所含有的的最多的box数目。数据类型为float32或float64。 - - **gt_label** (Variable) – 真实框的类id,应该形为[N,B]。数据类型为int32。 - - **anchors** (list|tuple) – 指定anchor框的宽度和高度,它们将逐对进行解析 - - **anchor_mask** (list|tuple) – 当前YOLOv3损失计算中使用anchor的mask索引 - - **class_num** (int) – 要预测的类别数 - - **ignore_thresh** (float) – 一定条件下忽略某框置信度损失的忽略阈值 - - **downsample_ratio** (int) – 网络输入到YOLOv3 loss输入的下采样率,因此第一,第二和第三个 loss 的下采样率应分别为32,16,8 - - **gt_score** (Variable) - 真实框的混合得分,形为[N,B]。 默认None。数据类型为float32或float64。 - - **use_label_smooth** (bool) - 是否使用平滑标签。 默认为True - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: yolov3损失的值,具有形状[N]的1-D张量。 - -返回类型: 变量(Variable),数据类型与input一致。 - -抛出异常: - - ``TypeError`` – yolov3_loss的输入x必须是Variable - - ``TypeError`` – 输入yolov3_loss的gtbox必须是Variable - - ``TypeError`` – 输入yolov3_loss的gtlabel必须是None或Variable - - ``TypeError`` – 输入yolov3_loss的gtscore必须是Variable - - ``TypeError`` – 输入yolov3_loss的anchors必须是list或tuple - - ``TypeError`` – 输入yolov3_loss的class_num必须是整数integer类型 - - ``TypeError`` – 输入yolov3_loss的ignore_thresh必须是一个浮点数float类型 - - ``TypeError`` – 输入yolov3_loss的use_label_smooth必须是bool型 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[255, 13, 13], dtype='float32') - gt_box = fluid.layers.data(name='gt_box', shape=[6, 4], dtype='float32') - gt_label = fluid.layers.data(name='gt_label', shape=[6], dtype='int32') - gt_score = fluid.layers.data(name='gt_score', shape=[6], dtype='float32') - 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, gt_box=gt_box, gt_label=gt_label, - gt_score=gt_score, anchors=anchors, - anchor_mask=anchor_mask, class_num=80, - ignore_thresh=0.7, downsample_ratio=32) - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/distributions/Categorical_cn.rst b/doc/paddle/api/paddle/fluid/layers/distributions/Categorical_cn.rst deleted file mode 100644 index 9265a666d8460b9b37679ae73f1e5a653e3576f3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/distributions/Categorical_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_Categorical: - -Categorical -------------------------------- - -.. py:class:: paddle.fluid.layers.Categorical(logits) - - - - -类别分布是一种离散概率分布,其随机变量可以取K个相互独立类别的其中一个。 - -概率质量函数(pmf)为: - -.. math:: - - pmf(k; p_i) =\prod_{i=1}^{k} p_i^{[x=i]} - -上面公式中: - - :math:`[x = i]` 表示:如果 :math:`x==i` ,则表达式取值为1,否则取值为0。 - - -参数: - - **logits** (list|numpy.ndarray|Variable) - 类别分布对应的logits。数据类型为float32。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle.fluid import layers - from paddle.fluid.layers import Categorical - - a_logits_npdata = np.array([-0.602,-0.602], dtype="float32") - a_logits_tensor = layers.create_tensor(dtype="float32") - layers.assign(a_logits_npdata, a_logits_tensor) - - b_logits_npdata = np.array([-0.102,-0.112], dtype="float32") - b_logits_tensor = layers.create_tensor(dtype="float32") - layers.assign(b_logits_npdata, b_logits_tensor) - - a = Categorical(a_logits_tensor) - b = Categorical(b_logits_tensor) - - a.entropy() - # [0.6931472] with shape: [1] - - b.entropy() - # [0.6931347] with shape: [1] - - a.kl_divergence(b) - # [1.2516975e-05] with shape: [1] - - -.. py:function:: kl_divergence(other) - -相对于另一个类别分布的KL散度 - -参数: - - **other** (Categorical) - 输入的另一个类别分布。数据类型为float32。 - -返回:相对于另一个类别分布的KL散度, 数据类型为float32 - -返回类型:Variable - -.. py:function:: entropy() - -信息熵 - -返回:类别分布的信息熵, 数据类型为float32 - -返回类型:Variable - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/distributions/MultivariateNormalDiag_cn.rst b/doc/paddle/api/paddle/fluid/layers/distributions/MultivariateNormalDiag_cn.rst deleted file mode 100644 index 63e1d1bb2492d6f56c6ccbd7d7ada4505087ec25..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/distributions/MultivariateNormalDiag_cn.rst +++ /dev/null @@ -1,94 +0,0 @@ -.. _cn_api_fluid_layers_MultivariateNormalDiag: - -MultivariateNormalDiag -------------------------------- - -.. py:class:: paddle.fluid.layers.MultivariateNormalDiag(loc, scale) - - - - -多元高斯分布 - -概率密度函数(pdf)为: - -.. math:: - - pdf(x; loc, scale) = \frac{e^{-\frac{||y||^2}{2}}}{Z} - - y = inv(scale) @ (x - loc) - - Z = (2\pi )^{0.5k} |det(scale)| - -上面公式中: - - :math:`inv` 表示: 对矩阵求逆 - - :math:`@` 表示:矩阵相乘 - - :math:`det` 表示:求行列式的值 - - -参数: - - **loc** (list|numpy.ndarray|Variable) - 形状为 :math:`[k]` 的多元高斯分布的均值列表。数据类型为float32。 - - **scale** (list|numpy.ndarray|Variable) - 形状为 :math:`[k, k]` 的多元高斯分布的对角协方差矩阵,且除对角元素外,其他元素取值均为0。数据类型为float32。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle.fluid import layers - from paddle.fluid.layers import MultivariateNormalDiag - - a_loc_npdata = np.array([0.3,0.5],dtype="float32") - a_loc_tensor = layers.create_tensor(dtype="float32") - layers.assign(a_loc_npdata, a_loc_tensor) - - - a_scale_npdata = np.array([[0.4,0],[0,0.5]],dtype="float32") - a_scale_tensor = layers.create_tensor(dtype="float32") - layers.assign(a_scale_npdata, a_scale_tensor) - - b_loc_npdata = np.array([0.2,0.4],dtype="float32") - b_loc_tensor = layers.create_tensor(dtype="float32") - layers.assign(b_loc_npdata, b_loc_tensor) - - b_scale_npdata = np.array([[0.3,0],[0,0.4]],dtype="float32") - b_scale_tensor = layers.create_tensor(dtype="float32") - layers.assign(b_scale_npdata, b_scale_tensor) - - a = MultivariateNormalDiag(a_loc_tensor, a_scale_tensor) - b = MultivariateNormalDiag(b_loc_tensor, b_scale_tensor) - - a.entropy() - # [2.033158] with shape: [1] - b.entropy() - # [1.7777451] with shaoe: [1] - - a.kl_divergence(b) - # [0.06542051] with shape: [1] - - -.. py:function:: kl_divergence(other) - -计算相对于另一个多元高斯分布的KL散度 - -参数: - - **other** (MultivariateNormalDiag) - 输入的另一个多元高斯分布。数据类型为float32。 - -返回:相对于另一个多元高斯分布的KL散度,数据类型为float32 - -返回类型:Variable - -.. py:function:: entropy() - -信息熵 - -返回:多元高斯分布的信息熵,数据类型为float32 - -返回类型:Variable - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/distributions/Normal_cn.rst b/doc/paddle/api/paddle/fluid/layers/distributions/Normal_cn.rst deleted file mode 100644 index ce50e67bd12563ee7c24b6ab4141acf0ccf0c303..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/distributions/Normal_cn.rst +++ /dev/null @@ -1,115 +0,0 @@ -.. _cn_api_fluid_layers_Normal: - -Normal -------------------------------- - -.. py:class:: paddle.fluid.layers.Normal(loc, scale) - - - - -正态分布 - -数学公式: - -.. math:: - - pdf(x; \mu, \sigma) = \frac{1}{Z}e^{\frac {-0.5 (x - \mu)^2} {\sigma^2} } - - Z = (2 \pi \sigma^2)^{0.5} - -上面的数学公式中: - -:math:`loc = \mu` : 平均值。 -:math:`scale = \sigma` : 标准差。 -:math:`Z`: 正态分布常量。 - -参数: - - **loc** (float|list|numpy.ndarray|Variable) - 正态分布平均值。数据类型为float32。 - - **scale** (float|list|numpy.ndarray|Variable) - 正态分布标准差。数据类型为float32。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle.fluid import layers - from paddle.fluid.layers import Normal - - # 定义参数为float的正态分布。 - dist = Normal(loc=0., scale=3.) - # 定义一组有两个数的正态分布。 - # 第一组为均值1,标准差11,第二组为均值2,标准差22。 - dist = Normal(loc=[1., 2.], scale=[11., 22.]) - # 得到3个样本, 返回一个 3 x 2 张量。 - dist.sample([3]) - - # 通过广播的方式,定义一个两个参数的正态分布。 - # 均值都是1,标准差不同。 - dist = Normal(loc=1., scale=[11., 22.]) - - # 一个完整的例子 - value_npdata = np.array([0.8], dtype="float32") - value_tensor = layers.create_tensor(dtype="float32") - layers.assign(value_npdata, value_tensor) - - normal_a = Normal([0.], [1.]) - normal_b = Normal([0.5], [2.]) - - sample = normal_a.sample([2]) - # 一个由定义好的正太分布随机生成的张量,维度为: [2, 1] - entropy = normal_a.entropy() - # [1.4189385] with shape: [1] - lp = normal_a.log_prob(value_tensor) - # [-1.2389386] with shape: [1] - kl = normal_a.kl_divergence(normal_b) - # [0.34939718] with shape: [1] - - -.. py:function:: sample(shape, seed=0) - -生成指定维度的样本 - -参数: - - **shape** (list) - 1维列表,指定生成样本的维度。数据类型为int32。 - - **seed** (int) - 长整型数。 - -返回:预先设计好维度的张量, 数据类型为float32 - -返回类型:Variable - -.. py:function:: entropy() - -信息熵 - -返回:正态分布的信息熵, 数据类型为float32 - -返回类型:Variable - -.. py:function:: log_prob(value) - -对数概率密度函数 - -参数: - - **value** (Variable) - 输入张量。数据类型为float32或float64。 - -返回:对数概率, 数据类型与value相同 - -返回类型:Variable - -.. py:function:: kl_divergence(other) - -两个正态分布之间的KL散度。 - -参数: - - **other** (Normal) - Normal的实例。 - -返回:两个正态分布之间的KL散度, 数据类型为float32 - -返回类型:Variable - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/distributions/Uniform_cn.rst b/doc/paddle/api/paddle/fluid/layers/distributions/Uniform_cn.rst deleted file mode 100644 index 59e1544b3751afacf4002cfa859a6827df1de187..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/distributions/Uniform_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_layers_Uniform: - -Uniform -------------------------------- - -.. py:class:: paddle.fluid.layers.Uniform(low, high) - - - - -均匀分布 - -概率密度函数(pdf)为: - -.. math:: - - pdf(x; a, b) = \frac{1}{Z}, a <=x < b - - Z = b - a - -上面的数学公式中: - -:math:`low = a` 。 -:math:`high = b` 。 -:math:`Z`: 正态分布常量。 - -参数low和high的维度必须能够支持广播。 - -参数: - - **low** (float|list|numpy.ndarray|Variable) - 均匀分布的下边界。数据类型为float32。 - - **high** (float|list|numpy.ndarray|Variable) - 均匀分布的上边界。数据类型为float32。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle.fluid import layers - from paddle.fluid.layers import Uniform - - # 定义参数为float的均匀分布 - u1 = Uniform(low=3.0, high=4.0) - # 定义参数为list的均匀分布 - u2 = Uniform(low=[1.0, 2.0], - high=[3.0, 4.0]) - # 通过广播的方式,定义一个均匀分布 - u3 = Uniform(low=[[1.0, 2.0], - [3.0, 4.0]], - high=[[1.5, 2.5], - [3.5, 4.5]]) - - # 通过广播的方式,定义一个均匀分布 - u4 = Uniform(low=3.0, high=[5.0, 6.0, 7.0]) - - # 一个完整的例子 - value_npdata = np.array([0.8], dtype="float32") - value_tensor = layers.create_tensor(dtype="float32") - layers.assign(value_npdata, value_tensor) - - uniform = Uniform([0.], [2.]) - - sample = uniform.sample([2]) - # 一个由定义好的均匀分布随机生成的张量,维度为: [2, 1] - entropy = uniform.entropy() - # [0.6931472] with shape: [1] - lp = uniform.log_prob(value_tensor) - # [-0.6931472] with shape: [1] - - -.. py:function:: sample(shape, seed=0) - -生成指定维度的样本 - -参数: - - **shape** (list) - 1维列表,指定生成样本的维度。数据类型为int32。 - - **seed** (int) - 长整型数。 - -返回:预先设计好维度的张量, 数据类型为float32 - -返回类型:Variable - -.. py:function:: entropy() - -信息熵 - -返回:均匀分布的信息熵, 数据类型为float32 - -返回类型:Variable - -.. py:function:: log_prob(value) - -对数概率密度函数 - -参数: - - **value** (Variable) - 输入张量。数据类型为float32或float64。 - -返回:对数概率, 数据类型与value相同 - -返回类型:Variable - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/double_buffer_cn.rst b/doc/paddle/api/paddle/fluid/layers/double_buffer_cn.rst deleted file mode 100644 index f9fe3b110ab2db024599bf4be1687a15f4c1006c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/double_buffer_cn.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. _cn_api_fluid_layers_double_buffer: - -double_buffer -------------------------------- - -.. py:function:: paddle.fluid.layers.double_buffer(reader, place=None, name=None) - - - - - -生成一个双缓冲队列Reader。Reader类有DecoratedReader和FileReader,其中DecoratedReader又可以细分成CustomReader和BufferedReader。这里是基于BufferedReader,数据将复制到具有双缓冲队列的位置(由place指定),如果 ``place=None`` 则将使用executor执行的位置。 - -参数: - - **reader** (Variable) – 需要wrap的reader变量Reader。 - - **place** (Place,可选) – 目标数据的位置,比如CPU,GPU,GPU需要指明是哪张卡。默认是executor执行样本的位置。 - - **name** (str,可选) – 变量的名字。该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_Name`,默认值为None。 - - - -返回:Variable(Reader)。双缓冲队列的reader。 - -返回类型:变量(Variable)。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - reader = fluid.layers.py_reader(capacity=64, - shapes=[(-1, 1, 28, 28), (-1, 1)], - dtypes=['float32', 'int64'], - use_double_buffer=False) - reader = fluid.layers.double_buffer(reader) - image, label = fluid.layers.read_file(reader) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/dynamic_decode_cn.rst b/doc/paddle/api/paddle/fluid/layers/dynamic_decode_cn.rst deleted file mode 100644 index 6c439a90a54b5df6be64e743aef1d311d3908f15..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/dynamic_decode_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_dynamic_decode: - -dynamic_decode -------------------------------- - - - -.. py:method:: dynamic_decode(decoder, inits=None, max_step_num=None, output_time_major=False, **kwargs): - -:api_attr: 声明式编程模式(静态图) - - - -该接口重复执行 :code:`decoder.step()` 直到 其返回的表示完成状态的Tensor中的值全部为True或解码步骤达到 :code:`max_step_num`。 - -:code:`decode.initialize()` 会在解码循环之前被调用一次。如果 :code:`decoder` 实现了 :code:`finalize` 方法,则 :code:`decoder.finalize()` 在解码循环后将被调用一次。 - -参数: - - **decoder** (Decoder) - 解码器的实例。 - - **inits** (object,可选) - 传递给 :code:`decoder.initialize` 的参数。默认为None。 - - **max_step_num** (int,可选) - 最大步数。如果未提供,解码直到解码过程完成( :code:`decode.step()` 返回的表示完成状态的Tensor中的值全部为True)。默认为None。 - - **output_time_major** (bool,可选) - 指明最终输出(此方法的第一个返回值)中包含的Tensor的数据布局。如果为False,其将使用batch优先的数据布局, 此时的形状为 :math:`[batch\_size,seq\_len,...]`。如果为True,其将使用time优先的数据布局,此时的形状为 :math:`[seq\_len,batch\_size,...]`。默认值为False。 - - **kwargs** - 其他命名关键字参数。这些参数将传递给 :code:`decoder.step`。 - -返回:一个二元组 :code:`(final_outputs,final_states)`, 其包含了最终的输出和状态,这两者都是Tensor或Tensor的嵌套结构。:code:`final_outputs` 具有与 :code:`decoder.output_dtype` 相同的结构和数据类型, 其中的每个tensor都是对所有解码时间步对应输出的堆叠。 这些tensor也可能会通过 :code:`decoder.finalize` 进行修改。:code:`final_states` 是最后时间步的状态,和 :code:`decoder.initialize` 返回的初始状态具有相同的结构,其中的tensor也具有相同的形状 和数据类型。 - -返回类型:tuple - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - from paddle.fluid.layers import GRUCell, BeamSearchDecoder, dynamic_decode - encoder_output = fluid.data(name="encoder_output", - shape=[-1, 32, 128], - dtype="float32") - trg_embeder = lambda x: fluid.embedding( - x, size=[10000, 128], param_attr=fluid.ParamAttr(name="trg_embedding")) - output_layer = lambda x: layers.fc(x, - size=10000, - num_flatten_dims=len(x.shape) - 1, - param_attr=fluid.ParamAttr(name= - "output_w"), - bias_attr=False) - decoder_cell = GRUCell(hidden_size=128) - decoder = BeamSearchDecoder(decoder_cell, - start_token=0, - end_token=1, - beam_size=4, - embedding_fn=trg_embeder, - output_fn=output_layer) - outputs = dynamic_decode( - decoder=decoder, inits=decoder_cell.get_initial_states(encoder_output)) diff --git a/doc/paddle/api/paddle/fluid/layers/dynamic_gru_cn.rst b/doc/paddle/api/paddle/fluid/layers/dynamic_gru_cn.rst deleted file mode 100644 index 995ac50067ac3dfbf2b0cbbcaaf8ba0a417f8c12..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/dynamic_gru_cn.rst +++ /dev/null @@ -1,91 +0,0 @@ -.. _cn_api_fluid_layers_dynamic_gru: - -dynamic_gru -------------------------------- - - -.. py:function:: paddle.fluid.layers.dynamic_gru(input, size, param_attr=None, bias_attr=None, is_reverse=False, gate_activation='sigmoid', candidate_activation='tanh', h_0=None, origin_mode=False) - -:api_attr: 声明式编程模式(静态图) - - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用StaticRNN(fluid.layers.** :ref:`cn_api_fluid_layers_StaticRNN` **)。** - -该OP用于在完整序列上逐个时间步的进行单层Gated Recurrent Unit(GRU)的计算,单个时间步内GRU的计算支持以下两种计算方式: - -如果origin_mode为True,则使用的运算公式来自论文 -`Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation `_ 。 - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = u_t \odot h_{t-1} + (1-u_t) \odot \tilde{h_t} - - -如果origin_mode为False,则使用的运算公式来自论文 -`Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling `_ 。 - -公式如下: - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = (1-u_t) \odot h_{t-1} + u_t \odot \tilde{h_t} - - -其中, :math:`x_t` 为当前时间步的输入,这个输入并非 ``input``,该OP不包含 :math:`W_{ux}x_{t}, W_{rx}x_{t}, W_{cx}x_{t}` 的计算, **注意** 要在该OP前使用大小为 ``size`` 的3倍的全连接层并将其输出作为 ``input``; -:math:`h_{t-1}` 为前一时间步的隐状态 ``hidden``; :math:`u_t` 、 :math:`r_t` 、 :math:`\tilde{h_t}` 和 :math:`h_t` 分别代表了GRU单元中update gate(更新门)、reset gate(重置门)、candidate hidden(候选隐状态)和隐状态输出; :math:`\odot` 为逐个元素相乘; -:math:`W_{uh}, b_u` 、 :math:`W_{rh}, b_r` 和 :math:`W_{ch}, b_c` 分别代表更新门、重置门和候选隐状态在计算时使用的权重矩阵和偏置。在实现上,三个权重矩阵合并为一个 :math:`[D, D \times 3]` 形状的Tensor存放,三个偏置拼接为一个 :math:`[1, D \times 3]` 形状的Tensor存放,其中 :math:`D` 为隐单元的数目;权重Tensor存放布局为: :math:`W_{uh}` 和 :math:`W_{rh}` 拼接为 :math:`[D, D \times 2]` 形状位于前半部分,:math:`W_{ch}` 以 :math:`[D, D]` 形状位于后半部分。 - - -参数: - - **input** (Variable) – LoD level为1的LoDTensor,表示经线性变换后的序列输入,形状为 :math:`[T, D \times 3]` ,其中 :math:`T` 表示mini-batch中所有序列长度之和, :math:`D` 为隐状态特征维度的大小。数据类型为float32或float64。 - - **size** (int) – 隐状态特征维度的大小 - - **param_attr** (ParamAttr,可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **is_reverse** (bool,可选) – 指明是否按照和输入相反的序列顺序计算,默认为False。 - - **gate_activation** (str,可选) – 公式中 :math:`act_g` 激活函数的类型。支持identity、sigmoid、tanh、relu四种激活函数类型,默认为sigmoid。 - - **candidate_activation** (str,可选) – 公式中 :math:`act_c` 激活函数的类型。支持identity、sigmoid、tanh、relu四种激活函数类型,默认为tanh。 - - **h_0** (Variable,可选) – 表示初始隐状态的Tensor,若未提供,则默认为0。其形状为 :math:`[N, D]` , 其中 :math:`N` 为输入mini-batch中序列的数目, :math:`D` 为隐状态特征维度的大小。数据类型与 ``input`` 相同。默认值为None。 - - **origin_mode** (bool,可选) – 指明要使用的GRU计算方式,两种计算方式具体差异见公式描述,默认值为False。 - -返回: 形状为 :math:`[T, D]` 、LoD level为1的LoDTensor,其中 :math:`T` 表示mini-batch中所有序列长度之和, :math:`D` 为隐状态特征维度的大小。表示经过GRU变换的输出特征序列,和 ``input`` 具有相同的LoD(序列长度)和数据类型。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - dict_dim, emb_dim = 128, 64 - data = fluid.data(name='sequence', - shape=[None], - dtype='int64', - lod_level=1) - emb = fluid.embedding(input=data, size=[dict_dim, emb_dim]) - hidden_dim = 512 - x = fluid.layers.fc(input=emb, size=hidden_dim * 3) - hidden = fluid.layers.dynamic_gru(input=x, size=hidden_dim) - - - - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/dynamic_lstm_cn.rst b/doc/paddle/api/paddle/fluid/layers/dynamic_lstm_cn.rst deleted file mode 100644 index 5c6bc406ba23f5d80dcf6586a9b32ead36019b72..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/dynamic_lstm_cn.rst +++ /dev/null @@ -1,100 +0,0 @@ -.. _cn_api_fluid_layers_dynamic_lstm: - -dynamic_lstm -------------------------------- - - -.. py:function:: paddle.fluid.layers.dynamic_lstm(input, size, h_0=None, c_0=None, param_attr=None, bias_attr=None, use_peepholes=True, is_reverse=False, gate_activation='sigmoid', cell_activation='tanh', candidate_activation='tanh', dtype='float32', name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP实现了 LSTM,即 Long-Short Term Memory(长短期记忆)运算 - `Hochreiter, S., & Schmidhuber, J. (1997) `_。 - -.. note:: - - 该OP仅支持 LoDTensor 作为输入,如果您需要处理的是Tensor,请使用 :ref:`cn_api_fluid_layers_lstm` 。 - - 在实现的时候为了提升效率,用户必须将LSTM的输入先进行线性映射,将维度为 [T, hidden_size] 的输入映射为 [T, 4 × hidden_size] 输入,然后再传给该OP。 - -该OP的默认实现方式为 diagonal/peephole 连接,参见 `Gers, F. A., & Schmidhuber, J. (2000) `_。 -如果需要禁用 peephole 连接方法,将 use_peepholes 设为 False 即可。 - -该OP对于序列中每一个时间步的计算公式如下: - -.. math:: - i_t=\sigma (W_{ix}x_{t}+W_{ih}h_{t-1}+W_{ic}c_{t-1}+b_i) -.. math:: - f_t=\sigma (W_{fx}x_{t}+W_{fh}h_{t-1}+W_{fc}c_{t-1}+b_f) -.. math:: - o_t=\sigma (W_{ox}x_{t}+W_{oh}h_{t-1}+W_{oc}c_{t-1}+b_o) -.. math:: - \widetilde{c_t}=act_g(W_{ct}x_{t}+W_{ch}h_{t-1}+b_{c}) -.. math:: - c_t=f_t\odot c_{t-1}+i_t\odot \widetilde{c_t} -.. math:: - h_t=o_t\odot act_h(c_t) - -公式中的概念信息如下: - - :math:`x_{t}` 表示时间步 :math:`t` 的输入 - - :math:`h_{t}` 表示时间步 :math:`t` 的 hidden 状态 - - :math:`h_{t-1}, c_{t-1}` 分别表示前一个时间步的 hidden 和 cell 状态 - - :math:`\widetilde{c_t}` 表示候选的 cell 状态 - - :math:`i_t` ,:math:`f_t` 和 :math:`o_t` 分别为 input gate,forget gate,output gate - - :math:`W` 表示 weight (例如, :math:`W_{ix}` 是在计算 input gate :math:`i_t` 时,对输入 :math:`x_{t}` 做线性变换的 weight) - - :math:`b` 表示 bias (例如, :math:`b_{i}` 是 input gate 的 bias) - - :math:`\sigma` 表示 gate 的非线性激活函数,默认为 sigmoid - - :math:`act_g, act_h` 分别表示 cell 输入和 cell 输出的非线性激活函数,默认为 tanh - - :math:`\odot` 表示矩阵的 Hadamard product,即对两个维度相同的矩阵,将相同位置的元素相乘,得到另一个维度相同的矩阵 - -参数: - - **input** ( :ref:`api_guide_Variable` ) 维度为 :math:`[T, 4*hidden\_size]` 的多维 LoDTensor(必须在传入该OP前对维度为 :math:`[T, hidden\_size]` 的输入经过线性变换得到),其中 T 为 batch 中所有样本的长度之和,hidden_size 为隐层大小,数据类型为 float32 或者 float64。 - - **size** (int) – 必须为 4*hidden_size。 - - **h_0** ( :ref:`api_guide_Variable` ,可选) 维度为 :math:`[batch\_size, hidden\_size]` 的多维 Tensor,其中 hidden_size 为隐层大小,数据类型为 float32 或者 float64。如果为 None,该OP会自动设置为全0的向量。默认值为None。 - - **c_0** ( :ref:`api_guide_Variable` ,可选) 维度为 :math:`[batch\_size, hidden\_size]` 的多维 Tensor,其中 hidden_size 为隐层大小,数据类型为 float32 或者 float64。如果为 None,该OP会自动设置为全0的向量;:math:`h_0, c_0` 如果要设置为None,必须同时为None。默认值为None。 - - **param_attr** (ParamAttr,可选) – 指定权重参数属性的对象。如果为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。如果用户需要设置此属性,维度必须等于 :math:`[hidden\_size, 4*hidden\_size]`。默认值为None。 - - **bias_attr** (ParamAttr,可选) – 指定偏置参数属性的对象。如果为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。如果用户需要设置此属性,如果 use_peepholes=true,维度需为 :math:`[1, 4*hidden\_size]`, use_peepholes=true,维度需为 :math:`[1, 7*hidden\_size]`。默认值为None。 - - **use_peepholes** (bool,可选) – 是否使用 peephole 连接。默认值为True。 - - **is_reverse** (bool,可选) – 是否将输入的数据根据根据样本长度进行逆序,同时会将输出进行逆序,用户拿到结果之后,不需要再逆序。默认值为False。 - - **gate_activation** (str,可选) – 应用于input gate,forget gate, output gate 的激活函数。默认值为sigmoid。 - - **cell_activation** (str,可选) – 用于cell输入的激活函数。默认值为tanh。 - - **candidate_activation** (str,可选) – 用于cell输出的激活函数。默认值为tanh。 - - **dtype** (str,可选) – 数据类型为 float32 或者 float64。默认值为 float32。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:经过lstm运算输出的 hidden 和 cell 的状态的tuple,包括 - -- hidden:LSTM hidden的输出结果,维度为 :math:`[T, hidden\_size]` 的LoDTensor,且LoD保持与输入一致,数据类型与input一致。 -- cell:LSTM cell的输出结果,维度为 :math:`[T, hidden\_size]` 的LoDTensor,且LoD保持与输入一致,数据类型与input一致。 - -返回类型: tuple( :ref:`api_guide_Variable` , :ref:`api_guide_Variable` ) - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - emb_dim = 256 - vocab_size = 10000 - hidden_dim = 512 - - data = fluid.layers.data(name='x', shape=[1], dtype='int32', lod_level=1) - emb = fluid.layers.embedding(input=data, size=[vocab_size, emb_dim], is_sparse=True) - - forward_proj = fluid.layers.fc(input=emb, size=hidden_dim * 4, bias_attr=False) - forward, cell = fluid.layers.dynamic_lstm(input=forward_proj, size=hidden_dim * 4, use_peepholes=False) - forward.shape # (-1, 512) - cell.shape # (-1, 512) - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/dynamic_lstmp_cn.rst b/doc/paddle/api/paddle/fluid/layers/dynamic_lstmp_cn.rst deleted file mode 100644 index 2306948c00f814e4cee1aa39e819646ab204a91e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/dynamic_lstmp_cn.rst +++ /dev/null @@ -1,128 +0,0 @@ -.. _cn_api_fluid_layers_dynamic_lstmp: - -dynamic_lstmp -------------------------------- - -.. py:function:: paddle.fluid.layers.dynamic_lstmp(input, size, proj_size, param_attr=None, bias_attr=None, use_peepholes=True, is_reverse=False, gate_activation='sigmoid', cell_activation='tanh', candidate_activation='tanh', proj_activation='tanh', dtype='float32', name=None, h_0=None, c_0=None, cell_clip=None, proj_clip=None) - -:api_attr: 声明式编程模式(静态图) - - - -.. note:: - 在实现的时候为了提升效率,用户必须将输入先进行线性映射,将维度为 [T, hidden_size] 的输入映射为 [T, 4×hidden_size] 输入,然后再传给该OP。 - -该OP实现了LSTMP(LSTM Projected)层。LSTMP层在LSTM层之后有一个单独的的线性映射层。 -- `Sak, H., Senior, A., & Beaufays, F. (2014) `_。 - -与标准的LSTM层相比,LSTMP多出来的线性映射层,用于从原始隐藏状态 :math:`h_t` 映射到较低维的状态 :math:`r_t`, -从而减少参数总数和计算复杂度,特别是输出单元相对较大的情况下。 - -该OP的默认实现方式为 diagonal/peephole 连接,参见 `Gers, F. A., & Schmidhuber, J. (2000) `_。 -如果需要禁用 peephole 连接方法,将 use_peepholes 设为 False 即可。 - -该OP对于序列中每一个时间步的计算公式如下: - -.. math:: - i_t = \sigma(W_{ix}x_{t} + W_{ir}r_{t-1} + W_{ic}c_{t-1} + b_i) -.. math:: - f_t = \sigma(W_{fx}x_{t} + W_{fr}r_{t-1} + W_{fc}c_{t-1} + b_f) -.. math:: - o_t = \sigma(W_{ox}x_{t} + W_{or}r_{t-1} + W_{oc}c_{t-1} + b_o) -.. math:: - \widetilde{c_t} = act_g(W_{cx}x_t + W_{cr}r_{t-1} + b_c) -.. math:: - c_t = f_t \odot c_{t-1} + i_t \odot \widetilde{c_t} -.. math:: - h_t = o_t \odot act_h(c_t) -.. math:: - r_t = \overline{act_h}(W_{rh}h_t) - - -公式中的概念信息如下: - - :math:`x_{t}` 表示时间步 :math:`t` 的输入 - - :math:`h_{t}` 表示时间步 :math:`t` 的 hidden 状态 - - :math:`r_{t}` : 隐藏状态循环的映射输出的状态 - - :math:`h_{t-1}, c_{t-1}, r_{t-1}` 分别表示前一个时间步的 hidden 状态,cell 状态和循环映射输出状态 - - :math:`\widetilde{c_t}` 表示候选的 cell 状态 - - :math:`i_t` ,:math:`f_t` 和 :math:`o_t` 分别为 input gate,forget gate,output gate - - :math:`W` 表示 weight (例如, :math:`W_{ix}` 是在计算 input gate :math:`i_t` 时,对输入 :math:`x_{t}` 做线性变换的 weight) - - :math:`b` 表示 bias (例如, :math:`b_{i}` 是 input gate 的 bias) - - :math:`\sigma` 表示 gate 的非线性激活函数,默认为 sigmoid - - :math:`act_g, act_h, \overline{act_h}` 分别表示 cell 输入 cell 输出和映射输出的非线性激活函数,默认为 tanh - - :math:`\odot` 表示矩阵的 Hadamard product,即对两个维度相同的矩阵,将相同位置的元素相乘,得到另一个维度相同的矩阵 - -参数: - - **input** ( :ref:`api_guide_Variable` ) 维度为 :math:`[T, 4*hidden\_size]` 的多维 LoDTensor(必须在传入该OP前对维度为 :math:`[T, hidden\_size]` 的输入经过线性变换得到),其中 T 为 batch 中所有样本的长度之和,hidden_size 为隐层大小,数据类型为 float32 或者 float64。 - - **size** (int) – 必须为 4 * hidden_size。 - - **proj_size** (int) - 投影映射输出的大小。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - 说明: - 1. 隐藏状态到隐藏状态(Hidden-hidden)权重 = :math:`\{ W_{cr},W_{ir},W_{fr},W_{or} \}`,维度为 [P, 4*hidden_size] ,P是投影大小 - - 2. 投影(Projection)权重 = :math:`\{ W_{rh} \}`,维度为 [D, P] - - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - 说明: - 1. use_peepholes = False - - Biases = { :math:`b_{c},b_{i},b_{f},b_{o}`} - - 维度为 [1, 4*hidden_size] - - 2. use_peepholes = True - - Biases = { :math:`b_{c},b_{i},b_{f},b_{o},W_{ic},W_{fc},W_{oc}`} - - 维度为 [1, 7*hidden_size] - - - **use_peepholes** (bool,可选) - 是否使用 peephole 连接。默认值为True。 - - **is_reverse** (bool,可选) - 是否计算反向LSTM,默认值为False。 - - **gate_activation** (str,可选) - 应用于input gate,forget gate, output gate 的激活函数。可选值包括 sigmoid,tanh,relu,identity。默认值为 sigmoid。 - - **cell_activation** (str,可选) - cell输出的激活函数。可选值包括 sigmoid,tanh,relu,identity。默认值为 tanh。 - - **candidate_activation** (str,可选) - 候选隐藏状态(candidate hidden state)的激活状态。可选值包括 sigmoid,tanh,relu,identity。默认值为 tanh。 - - **proj_activation** (str,可选) - 投影输出的激活函数。可选值包括 sigmoid,tanh,relu,identity。默认值为 tanh。 - - **dtype** (str,可选) - 数据类型。可选值包括 float32,float64。默认值为 float32。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **h_0** ( :ref:`api_guide_Variable` ,可选) 维度为 :math:`[batch\_size, hidden\_size]` 的多维 Tensor。如果为 None,该OP会自动设置为全0的向量。默认值为None。 - - **c_0** ( :ref:`api_guide_Variable` ,可选) 维度为 :math:`[batch\_size, hidden\_size]` 的多维 Tensor。如果为 None,该OP会自动设置为全0的向量;:math:`h_0, c_0` 如果要设置为None,必须同时为None。默认值为None。 - - **cell_clip** (float,可选) - 如果该参数不为None,则在单元输出激活之前,单元状态将被此值剪裁。默认值为None。 - - **proj_clip** (float,可选) - 如果 num_proj > 0 并且 proj_clip 不为None,那么将投影值沿元素方向剪切到[-proj_clip,proj_clip]内。默认值为None。 - -返回:经过lstmp运算输出的 hidden 的映射和 cell 状态的tuple,包括 - -- hidden:LSTM hidden的输出结果,维度为 :math:`[T, P]` 的LoDTensor,且LoD保持与输入一致,数据类型与input一致。 -- cell:LSTM cell的输出结果,维度为 :math:`[T, hidden\_size]` 的LoDTensor,且LoD保持与输入一致,数据类型与input一致。 - -返回类型: tuple( :ref:`api_guide_Variable` , :ref:`api_guide_Variable` ) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - dict_dim, emb_dim = 128, 64 - data = fluid.layers.data(name='sequence', shape=[1], - dtype='int32', lod_level=1) - emb = fluid.layers.embedding(input=data, size=[dict_dim, emb_dim]) - hidden_dim, proj_dim = 512, 256 - fc_out = fluid.layers.fc(input=emb, size=hidden_dim * 4, - act=None, bias_attr=None) - proj_out, cell = fluid.layers.dynamic_lstmp(input=fc_out, - size=hidden_dim * 4, - proj_size=proj_dim, - use_peepholes=False, - is_reverse=True, - cell_activation="tanh", - proj_activation="tanh") - proj_out.shape # (-1, 256) - cell.shape # (-1, 512) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/elementwise_mul_cn.rst b/doc/paddle/api/paddle/fluid/layers/elementwise_mul_cn.rst deleted file mode 100644 index 1e1c6c168fa453d90b7b356cfc9abb167e316ea2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/elementwise_mul_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_paddle_cn_elementwise_mul: - -elementwise_mul -------------------------------- -:doc_source: paddle.fluid.layers.elementwise_mul - - diff --git a/doc/paddle/api/paddle/fluid/layers/embedding_cn.rst b/doc/paddle/api/paddle/fluid/layers/embedding_cn.rst deleted file mode 100644 index b5ad3607114832a799d763d7d68b05a60d65a55d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/embedding_cn.rst +++ /dev/null @@ -1,103 +0,0 @@ -.. _cn_api_fluid_layers_embedding: - -embedding -------------------------------- - - -.. py:function:: paddle.fluid.layers.embedding(input, size, is_sparse=False, is_distributed=False, padding_idx=None, param_attr=None, dtype='float32') - -:api_attr: 声明式编程模式(静态图) - - - -嵌入层(Embedding Layer) - -**注意:此OP将在未来的版本中被移除!该OP要求输入Tensor shape的最后一维必须为1。推荐使用fluid.** :ref:`cn_api_fluid_embedding` 。 - -该OP根据input中的id信息从embedding矩阵中查询对应embedding信息,并会根据输入的size (vocab_size, emb_size)和dtype自动构造一个二维embedding矩阵。 - -要求input的最后一维必须等于1,输出的Tensor的shape是将输入Tensor shape的最后一维的1替换为emb_size。 - -注:input中的id必须满足 ``0 =< id < size[0]``,否则程序会抛异常退出。 - - -:: - - Case 1: - - input是Tensor, 且padding_idx = -1 - input.data = [[[1], [3]], [[2], [4]], [[4], [127]]] - input.shape = [3, 2, 1] - 若size = [128, 16] - 输出为Tensor: - out.shape = [3, 2, 16] - out.data = [[[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654]], - - [[0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365]], - - [[0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]]] # padding data - 输入的padding_idx小于0,则自动转换为padding_idx = -1 + 128 = 127, 对于输入id为127的词,进行padding处理。 - - Case 2: - - input是lod level 为1的LoDTensor, 且padding_idx = 0 - input.lod = [[2, 3]] - input.data = [[1], [3], [2], [4], [0]] - input.shape = [5, 1] - 若size = [128, 16] - 输出为LoDTensor: - out.lod = [[2, 3]] - out.shape = [5, 16] - out.data = [[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654], - [0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]] # padding data - 输入的padding_idx = 0,则对于输入id为0的词,进行padding处理。 - - -参数: - - **input** (Variable) - 存储id信息的Tensor或LoDTensor,数据类型必须为:int64,输入的shape最后一维须为1。input中的id必须满足 ``0 =< id < size[0]`` 。 - - **size** (tuple|list) - embedding矩阵的维度。必须包含两个元素,第一个元素为vocab_size(词表大小), 第二个为emb_size(embedding层维度)。 - - **is_sparse** (bool) - 是否使用稀疏的更新方式,这个参数只会影响反向的梯度更新的性能,sparse更新速度更快,推荐使用稀疏更新的方式。但某些optimizer不支持sparse更新,比如 :ref:`cn_api_fluid_optimizer_AdadeltaOptimizer` 、 :ref:`cn_api_fluid_optimizer_AdamaxOptimizer` 、 :ref:`cn_api_fluid_optimizer_DecayedAdagradOptimizer` 、 :ref:`cn_api_fluid_optimizer_FtrlOptimizer` 、 :ref:`cn_api_fluid_optimizer_LambOptimizer` 、:ref:`cn_api_fluid_optimizer_LarsMomentumOptimizer` ,此时is_sparse必须为False。默认为False。 - - **is_distributed** (bool) - 是否使用分布式的方式存储embedding矩阵,仅在多机分布式cpu训练中使用。默认为False。 - - **padding_idx** (int|long|None) - padding_idx需在区间[-vocab_size, vocab_size),否则不生效,padding_idx<0时,padding_idx会被改成vocab_size + padding_idx,input中等于padding_index的id对应的embedding信息会被设置为0,且这部分填充数据在训练时将不会被更新。如果为None,不作处理,默认为None。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。此外,可以通过 ``param_attr`` 参数加载用户自定义或预训练的词向量。只需将本地词向量转为numpy数据格式,且保证本地词向量的shape和embedding的 ``size`` 参数一致,然后使用 :ref:`cn_api_fluid_initializer_NumpyArrayInitializer` 进行初始化,即可实现加载自定义或预训练的词向量。详细使用方法见代码示例2。 - - **dtype** (str|core.VarDesc.VarType) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - -返回:input映射后得到的Embedding Tensor或LoDTensor,数据类型和dtype定义的类型一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name='sequence', shape=[1], dtype='int64', lod_level=1) - - # 示例 1 - emb_1 = fluid.layers.embedding(input=data, size=[128, 64]) - - # 示例 2: 加载用户自定义或预训练的词向量 - weight_data = np.random.random(size=(128, 100)) # numpy格式的词向量数据 - w_param_attrs = fluid.ParamAttr( - name="emb_weight", - learning_rate=0.5, - initializer=fluid.initializer.NumpyArrayInitializer(weight_data), - trainable=True) - emb_2 = fluid.layers.embedding(input=data, size=(128, 100), param_attr=w_param_attrs, dtype='float32') - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/equal_cn.rst b/doc/paddle/api/paddle/fluid/layers/equal_cn.rst deleted file mode 100644 index 9a66e76cedc7d3997fe8e6cbfefca91232f5734b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/equal_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_equal: - -equal -------------------------------- - -.. py:function:: paddle.fluid.layers.equal(x, y, cond=None, name=None) - - -该OP返回 :math:`x==y` 逐元素比较x和y是否相等,x和y的维度应该相同。 - -参数: - - **x** (Variable) - 输入Tensor,支持的数据类型包括 float32, float64,int32, int64。 - - **y** (Variable) - 输入Tensor,支持的数据类型包括 float32, float64, int32, int64。 - - **cond** (Variable,可选) – 如果为None,则创建一个Tensor来作为进行比较的输出结果,该Tensor的shape和数据类型和输入x一致;如果不为None,则将Tensor作为该OP的输出,数据类型和数据shape需要和输入x一致。默认值为None。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出结果的Tensor,输出Tensor的shape和输入一致,Tensor数据类型为bool。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - out_cond =fluid.data(name="input1", shape=[2], dtype='bool') - label = fluid.layers.assign(np.array([3, 3], dtype="int32")) - limit = fluid.layers.assign(np.array([3, 2], dtype="int32")) - label_cond = fluid.layers.assign(np.array([1, 2], dtype="int32")) - - out1 = fluid.layers.equal(x=label,y=limit) #out1=[True, False] - out2 = fluid.layers.equal(x=label_cond,y=limit, cond=out_cond) #out2=[False, True] out_cond=[False, True] - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/eye_cn.rst b/doc/paddle/api/paddle/fluid/layers/eye_cn.rst deleted file mode 100644 index b0fb8b5ecb68711e3d196c92beaa87f9bb6e10fc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/eye_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_eye: - -eye -------------------------------- - -.. py:function:: paddle.fluid.layers.eye(num_rows, num_columns=None, batch_shape=None, dtype='float32', name=None) - - -该OP用来构建二维Tensor,或一个批次的二维Tensor。 - -参数: - - **num_rows** (int) - 该批次二维Tensor的行数,数据类型为非负int32。 - - **num_columns** (int, 可选) - 该批次二维Tensor的列数,数据类型为非负int32。若为None,则默认等于num_rows。 - - **batch_shape** (list(int), 可选) - 如若提供,则返回Tensor的主批次维度将为batch_shape。 - - **dtype** (np.dtype|core.VarDesc.VarType|str,可选) - 返回Tensor的数据类型,可为int32,int64,float16,float32,float64,默认数据类型为float32。 - - **name** (str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: ``shape`` 为batch_shape + [num_rows, num_columns]的Tensor。 - - -抛出异常: - - ``TypeError``: - 如果 ``dtype`` 的类型不是float16, float32, float64, int32, int64其中之一。 - - ``TypeError``: - 如果 ``num_columns`` 不是非负整数或者 ``num_rows`` 不是非负整数。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.eye(3, dtype='int32') - # [[1, 0, 0] - # [0, 1, 0] - # [0, 0, 1]] - - data = fluid.layers.eye(2, 3, dtype='int32') - # [[1, 0, 0] - # [0, 1, 0]] - - data = fluid.layers.eye(2, batch_shape=[3]) - # Construct a batch of 3 identity tensors, each 2 x 2. - # data[i, :, :] is a 2 x 2 identity tensor, i = 0, 1, 2. - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/fc_cn.rst b/doc/paddle/api/paddle/fluid/layers/fc_cn.rst deleted file mode 100644 index 6613b2d8879ab55272add049cb8461999f52866c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/fc_cn.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _cn_api_fluid_layers_fc: - -fc -------------------------------- - - -.. py:function:: paddle.fluid.layers.fc(input, size, num_flatten_dims=1, param_attr=None, bias_attr=None, act=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - - -**全连接层** - -该OP将在神经网络中构建一个全连接层。其输入可以是一个Tensor(或LoDTensor)或多个Tensor(或LoDTensor)组成的list(详见参数说明),该OP会为每个输入的Tensor创建一个权重(weights)变量,即一个从每个输入单元到每个输出单元的全连接权重矩阵。FC层将每个输入Tensor和其对应的权重(weights)相乘得到shape为 :math:`[M, size]` 输出Tensor,其中 ``M`` 为batch_size大小。如果有多个输入Tensor,则多个shape为 :math:`[M, size]` 的Tensor计算结果会被累加起来,作为最终输出。如果 ``bias_attr`` 非空,则会创建一个偏置变量(bias variable),并把它累加到输出结果中。如果 ``act`` 非空,将会在输出结果上应用相应的激活函数。 - -当输入为单个Tensor(或LoDTensor): - -.. math:: - - \\Out = Act({XW + b})\\ - - - -当输入为多个Tensor(或LoDTensor)组成的list时: - -.. math:: - - \\Out=Act(\sum^{N-1}_{i=0}X_iW_i+b) \\ - - -上述等式中: - - :math:`N` :输入的数目,如果输入是Tensor列表,N等于len(input) - - :math:`X_i` :第i个输入的Tensor - - :math:`W_i` :对应第i个输入张量的第i个权重矩阵 - - :math:`b` :该层创建的bias参数 - - :math:`Act` :activation function(激活函数) - - :math:`Out` :输出Tensor - -:: - - Case 1: - 给定单个输入Tensor data_1, 且num_flatten_dims = 2: - data_1.data = [[[0.1, 0.2], - [0.3, 0.4]]] - data_1.shape = (1, 2, 2) # 1是batch_size - - out = fluid.layers.fc(input=data_1, size=1, num_flatten_dims=2) - - 则输出为: - out.data = [[0.83234344], [0.34936576]] - out.shape = (1, 2, 1) - - - Case 2: - 给定多个Tensor组成的list: - data_1.data = [[[0.1, 0.2], - [0.3, 0.4]]] - data_1.shape = (1, 2, 2) # 1 是 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) - - 则输出为: - out.data = [[0.18669507, 0.1893476]] - out.shape = (1, 2) - - -参数: - - **input** (Variable|list of Variable) – 维度为 :math:`[N_1, N_2, ..., N_k]` 的多维Tensor(或LoDTensor)或由多个Tensor(或LoDTensor)组成的list,输入Tensor的shape至少是2。数据类型为float32或float64。 - - **size** (int) – 全连接层输出单元的数目,即输出Tensor(或LoDTensor)特征维度。 - - **num_flatten_dims** (int) – 输入可以接受维度大于2的Tensor。在计算时,输入首先会被扁平化(flatten)为一个二维矩阵,之后再与权重(weights)相乘。参数 ``num_flatten_dims`` 决定了输入Tensor的flatten方式: 前 ``num_flatten_dims`` (包含边界,从1开始数) 个维度会被扁平化为二维矩阵的第一维 (即为矩阵的高), 剩下的 :math:`rank(X) - num\_flatten\_dims` 维被扁平化为二维矩阵的第二维 (即矩阵的宽)。 例如, 假设X是一个五维的Tensor,其shape为(2, 3, 4, 5, 6), 若 :math:`num\_flatten\_dims = 3` ,则扁平化的矩阵shape为: :math:`(2 x 3 x 4, 5 x 6) = (24, 30)` ,最终输出Tensor的shape为 :math:`(2, 3, 4, size)` 。默认为1。 - - **param_attr** (ParamAttr) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回:经过全连接层计算后的Tensor或LoDTensor,数据类型与input类型一致。 - -返回类型: Variable - -弹出异常:``ValueError`` - 如果输入Tensor(或LoDTensor)的维度小于2 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 当输入为单个张量时 - - data = fluid.layers.data(name="data", shape=[32, 32], dtype="float32") - fc = fluid.layers.fc(input=data, size=1000, act="tanh") - - # 当输入为多个张量时 - data_1 = fluid.layers.data(name="data_1", shape=[32, 32], dtype="float32") - data_2 = fluid.layers.data(name="data_2", shape=[24, 36], dtype="float32") - fc = fluid.layers.fc(input=[data_1, data_2], size=1000, act="tanh") - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/gather_cn.rst b/doc/paddle/api/paddle/fluid/layers/gather_cn.rst deleted file mode 100644 index 74bc1946571a82ba6582752992f80fd3d6587cf1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/gather_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_paddle_tensor_gather -gather -------------------------------- - -.. py:function:: paddle.tensor.gather(input, index, overwrite=True) - -:alias_main: paddle.gather -:alias: paddle.gather,paddle.tensor.gather,paddle.tensor.manipulation.gather -:update_api: paddle.fluid.layers.gather - - - -根据索引 index 获取输入(input)的最外层维度的条目,并将它们拼接在一起。 - -.. math:: - - Out=X[Index] - -**参数**: - - **input** (Variable) - 输入, 秩 ``rank >= 1`` , 支持的数据类型包括 int32、int64、float32、float64 和 uint8 (CPU)、float16(GPU) 。 - - **index** (Variable) - 索引,秩 ``rank = 1``, 数据类型为 int32 或 int64。 - - **overwrite** (bool) - 具有相同索引时在反向更新梯度的模式。如果为 ``True`` ,则使用覆盖模式更新相同索引的梯度;如果为 ``False`` ,则使用累积模式更新相同索引的梯度。默认值为 ``True`` 。 - -**返回**:和输入的秩相同的输出张量。 - -**返回类型**:Variable - -**代码示例**: - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - with fluid.dygraph.guard(): - input_1 = np.array([[1,2,3],[4,5,6],[7,8,9]]) - index_1 = np.array([0,1]) - input = fluid.dygraph.to_variable(input_1) - index = fluid.dygraph.to_variable(index_1) - output = paddle.fluid.layers.gather(input, index) - # expected output: [[1, 2, 3],[4, 5, 6]] diff --git a/doc/paddle/api/paddle/fluid/layers/gaussian_random_cn.rst b/doc/paddle/api/paddle/fluid/layers/gaussian_random_cn.rst deleted file mode 100644 index 059f19be02e3982a43bcec9a3ccbcd25e9bda5fd..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/gaussian_random_cn.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. _cn_api_fluid_layers_gaussian_random: - -gaussian_random -------------------------------- - -.. py:function:: paddle.fluid.layers.gaussian_random(shape, mean=0.0, std=1.0, seed=0, dtype='float32', name=None) - - - - -该OP返回数值符合高斯随机分布的Tensor,形状为 ``shape``,数据类型为 ``dtype``。 - -参数: - - **shape** (list|tuple|Tensor) - 生成的随机Tensor的形状。如果 ``shape`` 是list、tuple,则其中的元素可以是int,或者是形状为[1]且数据类型为int32、int64的Tensor。如果 ``shape`` 是Tensor,则是数据类型为int32、int64的1-D Tensor。 - - **mean** (float|int, 可选) - 输出Tensor的均值,支持的数据类型:float、int。默认值为0.0。 - - **std** (float|int, 可选) - 输出Tensor的标准差,支持的数据类型:float、int。默认值为1.0。 - - **seed** (int, 可选) - 随机数种子,默认值为 0。注:seed 设置为 0 表示使用系统的随机数种子。注意如果 seed 不为 0,则此算子每次将始终生成相同的随机数。 - - **dtype** (str|np.dtype|core.VarDesc.VarType, 可选) - 输出Tensor的数据类型,支持float32、float64。默认值为float32。 - - **name** (str, 可选) - 输出的名字。一般无需设置,默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: - Tensor:符合高斯随机分布的Tensor,形状为 ``shape``,数据类型为 ``dtype``。 - -抛出异常: - - ``TypeError`` - 如果 ``shape`` 的类型不是list、tuple、Tensor。 - - ``TypeError`` - 如果 ``dtype`` 不是float32、float64。 - -**代码示例**: - -.. code-block:: python - - # 静态图使用 - import numpy as np - from paddle import fluid - - x = fluid.layers.gaussian_random((2, 3), std=2., seed=10) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - exe.run(start) - x_np, = exe.run(main, feed={}, fetch_list=[x]) - - x_np - # array([[2.3060477, 2.676496 , 3.9911983], - # [0.9990833, 2.8675377, 2.2279181]], dtype=float32) - - -.. code-block:: python - - # 动态图使用 - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = fluid.layers.gaussian_random((2, 4), mean=2., dtype="float32", seed=10) - x_np = x.numpy() - x_np - # array([[2.3060477 , 2.676496 , 3.9911983 , 0.9990833 ], - # [2.8675377 , 2.2279181 , 0.79029655, 2.8447366 ]], dtype=float32) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/get_tensor_from_selected_rows_cn.rst b/doc/paddle/api/paddle/fluid/layers/get_tensor_from_selected_rows_cn.rst deleted file mode 100644 index 3a9b9268aa345959d50b69667659b77203777a7c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/get_tensor_from_selected_rows_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_layers_get_tensor_from_selected_rows: - -get_tensor_from_selected_rows -------------------------------- - -.. py:function:: paddle.fluid.layers.get_tensor_from_selected_rows(x, name=None) - - - - -该OP从SelectedRows类型的输入中获取向量数据,以LoDTensor的形式输出。 - - -:: - - 例如: - - 输入为SelectedRows类型: - x.rows = [0, 5, 5, 4, 19] - x.height = 20 - x.value = [[1, 1] [2, 2] [2, 2] [3, 3] [6, 6]] - - 输出为LoDTensor: - out.shape = [5, 2] - out.data = [[1, 1], - [2, 2], - [2, 2], - [3, 3], - [6, 6]] - - -参数: - - **x** (SelectedRows) - SelectedRows类型的输入,数据类型为float32,float64,int32或int64。 - - **name** (str) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 从SelectedRows中转化而来的LoDTensor,数据类型和输入一致。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - b = fluid.default_main_program().global_block() - input = b.create_var(name="X", dtype="float32", persistable=True, type=fluid.core.VarDesc.VarType.SELECTED_ROWS) - out = fluid.layers.get_tensor_from_selected_rows(input) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/greater_equal_cn.rst b/doc/paddle/api/paddle/fluid/layers/greater_equal_cn.rst deleted file mode 100644 index 7141718419cc55b0fdb4546dcd16bc89c92a2e35..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/greater_equal_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_greater_equal: - -greater_equal -------------------------------- - -.. py:function:: paddle.fluid.layers.greater_equal(x, y, cond=None, name=None) - -:alias_main: paddle.greater_equal -:alias: paddle.greater_equal,paddle.tensor.greater_equal,paddle.tensor.logic.greater_equal -:old_api: paddle.fluid.layers.greater_equal - - - -该OP逐元素地返回 :math:`x >= y` 的逻辑值,使用重载算子 `>=` 可以有相同的计算函数效果。 - - -参数: - - **x** (Variable) – 进行比较的第一个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **y** (Variable) – 进行比较的第二个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **cond** (Variable,可选) – 如果为None,则创建一个Tensor来作为进行比较的输出结果,该Tensor的shape,数据类型和输入x一致;如果不为None,则将Tensor作为该OP的输出,数据shape和数据类型需要和输入x一致。默认值为None。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出结果的Tensor,数据的shape和输入x一致。 - -返回类型:Variable,数据类型为bool类型。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - label = layers.assign(np.array([2, 2], dtype='int32')) - limit = layers.assign(np.array([2, 3], dtype='int32')) - out = fluid.layers.greater_equal(x=label, y=limit) #out=[True, False] - out_1 = label >= limit #out1=[True, False] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/greater_than_cn.rst b/doc/paddle/api/paddle/fluid/layers/greater_than_cn.rst deleted file mode 100644 index 3f208e21ad5433125b3c22fa76ee06968a7c8153..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/greater_than_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_fluid_layers_greater_than: - -greater_than -------------------------------- - -.. py:function:: paddle.fluid.layers.greater_than(x, y, cond=None, name=None) - -:alias_main: paddle.greater_than -:alias: paddle.greater_than,paddle.tensor.greater_than,paddle.tensor.logic.greater_than -:old_api: paddle.fluid.layers.greater_than - - - -该OP逐元素地返回 :math:`x > y` 的逻辑值,使用重载算子 `>` 可以有相同的计算函数效果。 - -参数: - - **x** (Variable) – 进行比较的第一个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **y** (Variable) – 进行比较的第二个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **cond** (Variable,可选) – 如果为None,则创建一个Tensor来作为进行比较的输出结果,该Tensor的shape和数据类型和输入x一致;如果不为None,则将Tensor作为该OP的输出,数据类型和数据shape需要和输入x一致。默认值为None。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出结果的Tensor,数据的shape和输入x一致。 - -返回类型:Variable,数据类型为bool类型。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - label = layers.assign(np.array([2, 3], dtype='int32')) - limit = layers.assign(np.array([3, 2], dtype='int32')) - out = fluid.layers.greater_than(x=label, y=limit) #out=[False, True] - out1 = label > limit #out1=[False, True] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/group_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/group_norm_cn.rst deleted file mode 100755 index 049a9e2f0055ca6ce3220c526f25f0abdd335c3d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/group_norm_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_group_norm: - -group_norm -------------------------------- - - -.. py:function:: paddle.fluid.layers.group_norm(input, groups, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, data_layout='NCHW', name=None) - -:api_attr: 声明式编程模式(静态图) - - - -参考论文: `Group Normalization `_ - -参数: - - **input** (Variable):输入为4-D Tensor,数据类型为float32或float64。 - - **groups** (int):从 channel 中分离出来的 group 的数目,数据类型为int32。 - - **epsilon** (float,可选):为防止方差除以零,增加一个很小的值。数据类型为float32。默认值:1e-05。 - - **param_attr** (ParamAttr|bool,可选) :指定权重参数属性的对象。若 ``param_attr`` 为bool类型,只支持为False,表示没有权重参数。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool,可选) : 指定偏置参数属性的对象。若 ``bias_attr`` 为bool类型,只支持为False,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str,可选):将激活应用于输出的 group normalizaiton。 - - **data_layout** (str,可选):指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - **name** (str,可选):具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:4-D Tensor,数据类型和格式与 `input` 一致。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` - 如果 ``data_layout`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``groups`` 小于1,或者 ``groups`` 大于输入的通道数。 - - ``ShapeError`` - 如果 ``param_attr`` (Scale) 或者 ``bias_attr`` (Bias) 不是 1-D Tensor。 - - ``ShapeError`` - 如果 ``param_attr`` (Scale) 或者 ``bias_attr`` (Bias) 的大小与输入的通道数不相等。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.data(name='data', shape=[None, 8, 32, 32], dtype='float32') - x = fluid.layers.group_norm(input=data, groups=4) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/gru_unit_cn.rst b/doc/paddle/api/paddle/fluid/layers/gru_unit_cn.rst deleted file mode 100644 index 679e5dfe42bb6c4a3baad252af83d88c3ff737a7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/gru_unit_cn.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. _cn_api_fluid_layers_gru_unit: - -gru_unit -------------------------------- - - -.. py:function:: paddle.fluid.layers.gru_unit(input, hidden, size, param_attr=None, bias_attr=None, activation='tanh', gate_activation='sigmoid', origin_mode=False) - -:api_attr: 声明式编程模式(静态图) - - - -Gated Recurrent Unit(GRU)循环神经网络计算单元。该OP用于完成单个时间步内GRU的计算,支持以下两种计算方式: - -如果origin_mode为True,则使用的运算公式来自论文 -`Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation `_ 。 - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = u_t \odot h_{t-1} + (1-u_t) \odot \tilde{h_t} - - -如果origin_mode为False,则使用的运算公式来自论文 -`Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling `_ 。 - -公式如下: - -.. math:: - u_t & = act_g(W_{ux}x_{t} + W_{uh}h_{t-1} + b_u)\\ - r_t & = act_g(W_{rx}x_{t} + W_{rh}h_{t-1} + b_r)\\ - \tilde{h_t} & = act_c(W_{cx}x_{t} + W_{ch}(r_t \odot h_{t-1}) + b_c)\\ - h_t & = (1-u_t) \odot h_{t-1} + u_t \odot \tilde{h_t} - - -其中, :math:`x_t` 为当前时间步的输入,这个输入并非 ``input``,该OP不包含 :math:`W_{ux}x_{t}, W_{rx}x_{t}, W_{cx}x_{t}` 的计算,**注意** 要在该OP前使用大小为GRU隐单元数目的3倍的全连接层并将其输出作为 ``input``; -:math:`h_{t-1}` 为前一时间步的隐状态 ``hidden``; :math:`u_t` 、 :math:`r_t` 、 :math:`\tilde{h_t}` 和 :math:`h_t` 分别代表了GRU单元中update gate(更新门)、reset gate(重置门)、candidate hidden(候选隐状态)和隐状态输出; :math:`\odot` 为逐个元素相乘; -:math:`W_{uh}, b_u` 、 :math:`W_{rh}, b_r` 和 :math:`W_{ch}, b_c` 分别代表更新门、重置门和候选隐状态在计算时使用的权重矩阵和偏置。在实现上,三个权重矩阵合并为一个 :math:`[D, D \times 3]` 形状的Tensor存放,三个偏置拼接为一个 :math:`[1, D \times 3]` 形状的Tensor存放,其中 :math:`D` 为隐单元的数目;权重Tensor存放布局为: :math:`W_{uh}` 和 :math:`W_{rh}` 拼接为 :math:`[D, D \times 2]` 形状位于前半部分,:math:`W_{ch}` 以 :math:`[D, D]` 形状位于后半部分。 - - -参数: - - **input** (Variable) – 表示经线性变换后当前时间步的输入,是形状为 :math:`[N, D \times 3]` 的二维Tensor,其中 :math:`N` 为batch_size, :math:`D` 为隐单元的数目。数据类型为float32或float64。 - - **hidden** (Variable) – 表示上一时间步产生的隐状态,是形状为 :math:`[N, D]` 的二维Tensor,其中 :math:`N` 为batch_size, :math:`D` 为隐单元的数目。数据类型与 ``input`` 相同。 - - **size** (integer) – 输入数据 ``input`` 特征维度的大小,需要是隐单元数目的3倍。 - - **param_attr** (ParamAttr,可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **activation** (string) – 公式中 :math:`act_c` 激活函数的类型。支持identity、sigmoid、tanh、relu四种激活函数类型,默认为tanh。 - - **gate_activation** (string) – 公式中 :math:`act_g` 激活函数的类型。支持identity、sigmoid、tanh、relu四种激活函数类型,默认为sigmoid。 - - **origin_mode** (bool) – 指明要使用的GRU计算方式,两种计算方式具体差异见公式描述,默认值为False。 - - -返回:Variable的三元组,包含三个与 ``input`` 相同数据类型的Tensor,分别表示下一时间步的隐状态( :math:`h_t` )、重置的前一时间步的隐状态( :math:`r_t \odot h_{t-1}` )和 :math:`h_t, r_t, \tilde{h_t}` 的拼接,形状分别为 :math:`[N, D]` 、 :math:`[N, D]` 和 :math:`[N, D \times 3]` 。通常只有下一时间步的隐状态( :math:`h_t` )作为GRU的输出和隐状态使用,其他内容只是中间计算结果。 - -返回类型: tuple - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - dict_dim, emb_dim = 128, 64 - data = fluid.data(name='step_data', shape=[None], dtype='int64') - emb = fluid.embedding(input=data, size=[dict_dim, emb_dim]) - hidden_dim = 512 - x = fluid.layers.fc(input=emb, size=hidden_dim * 3) - pre_hidden = fluid.data( - name='pre_hidden', shape=[None, hidden_dim], dtype='float32') - hidden = fluid.layers.gru_unit( - input=x, hidden=pre_hidden, size=hidden_dim * 3) - - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/hsigmoid_cn.rst b/doc/paddle/api/paddle/fluid/layers/hsigmoid_cn.rst deleted file mode 100644 index fa8a9704fe470bea9ceef5c53506ece75b80a44d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/hsigmoid_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_hsigmoid: - -hsigmoid -------------------------------- - - -.. py:function:: paddle.fluid.layers.hsigmoid(input, label, num_classes, param_attr=None, bias_attr=None, name=None, path_table=None, path_code=None, is_custom=False, is_sparse=False) - -:api_attr: 声明式编程模式(静态图) - - - -层次sigmoid(hierarchical sigmoid),该OP通过构建一个分类二叉树来降低计算复杂度,主要用于加速语言模型的训练过程。 - -该OP建立的二叉树中每个叶节点表示一个类别(单词),每个非叶子节点代表一个二类别分类器(sigmoid)。对于每个类别(单词),都有一个从根节点到它的唯一路径,hsigmoid累加这条路径上每个非叶子节点的损失得到总损失。 - -相较于传统softmax的计算复杂度 :math:`O(N)` ,hsigmoid可以将计算复杂度降至 :math:`O(logN)` ,其中 :math:`N` 表示类别总数(字典大小)。 - -若使用默认树结构,请参考 `Hierarchical Probabilistic Neural Network Language Model `_ 。 - -若使用自定义树结构,请将参数 ``is_custom`` 设置为True,并完成以下步骤(以语言模型为例): - -1. 使用自定义词典来建立二叉树,每个叶结点都应该是词典中的单词; - -2. 建立一个dict类型数据结构,用于存储 **单词id -> 该单词叶结点至根节点路径** 的映射,即路径表 ``path_table`` 参数; - -3. 建立一个dict类型数据结构,用于存储 **单词id -> 该单词叶结点至根节点路径的编码** 的映射,即路径编码 ``path_code`` 参数。 编码是指每次二分类的标签,1为真,0为假; - -4. 每个单词都已经有自己的路径和路径编码,当对于同一批输入进行操作时,可以同时传入一批路径和路径编码进行运算。 - -参数: - - **input** (Variable) - 输入Tensor。数据类型为float32或float64,形状为 ``[N, D]`` ,其中 ``N`` 为minibatch的大小,``D`` 为特征大小。 - - **label** (Variable) - 训练数据的标签。数据类型为int64,形状为 ``[N, 1]`` 。 - - **num_classes** (int) - 类别总数(字典大小)必须大于等于2。若使用默认树结构,即当 ``is_custom=False`` 时 ,必须设置该参数。若使用自定义树结构,即当 ``is_custom=True`` 时,它取值应为自定义树结构的非叶节点的个数,用于指定二分类的类别总数。 - - **param_attr** (ParamAttr,可选) - 该OP可学习参数的属性。可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 该OP将利用 ``param_attr`` 属性来创建ParamAttr实例。如果没有设置 ``param_attr`` 的初始化函数,那么参数将采用Xavier初始化。默认值为None。 - - **bias_attr** (ParamAttr, 可选) - 该OP的偏置参数的属性。可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 该OP将利用 ``bias_attr`` 属性来创建ParamAttr实例。如果没有设置 ``bias_attr`` 的初始化函数,参数初始化为0.0。默认值为None。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **path_table** (Variable,可选) – 存储每一批样本从类别(单词)到根节点的路径,按照从叶至根方向存储。 数据类型为int64,形状为 ``[N, L]`` ,其中L为路径长度。``path_table`` 和 ``path_code`` 应具有相同的形状, 对于每个样本i,path_table[i]为一个类似np.ndarray的结构,该数组内的每个元素都是其双亲结点权重矩阵的索引。默认值为None。 - - **path_code** (Variable,可选) – 存储每一批样本从类别(单词)到根节点的路径编码,按从叶至根方向存储。数据类型为int64,形状为 ``[N, L]``。默认值为None。 - - **is_custom** (bool,可选) – 是否使用用户自定义二叉树取代默认二叉树结构。如果设置为True,请务必设置 ``path_table`` , ``path_code`` , ``num_classes`` ,否则必须设置num_classes。默认值为False。 - - **is_sparse** (bool,可选) – 是否使用稀疏更新方式。如果设置为True,W的梯度和输入梯度将会变得稀疏。默认值为False。 - -返回: 层次sigmoid计算后的Tensor,形状为[N, 1],数据类型和 ``input`` 一致。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.fill_constant(shape=[4, 3], value=0.9, dtype='float32') - # x = [[0.9, 0.9, 0.9], [0.9, 0.9, 0.9], [0.9, 0.9, 0.9], [0.9, 0.9, 0.9]] - y = fluid.layers.fill_constant( - shape=[4, 1], value=1, dtype='int64') - # y = [[1], [1], [1], [1]] - out = fluid.layers.hsigmoid(input=x, label=y, num_classes=2, param_attr=fluid.initializer.Constant( - value=0.05), bias_attr=fluid.initializer.Constant(value=.0)) - # out = [[0.62792355], [0.62792355], [0.62792355], [0.62792355]] diff --git a/doc/paddle/api/paddle/fluid/layers/im2sequence_cn.rst b/doc/paddle/api/paddle/fluid/layers/im2sequence_cn.rst deleted file mode 100644 index 88ca3cead90ac752adb9b1326104c0db557c216d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/im2sequence_cn.rst +++ /dev/null @@ -1,97 +0,0 @@ -.. _cn_api_fluid_layers_im2sequence: - -im2sequence -------------------------------- - - -.. py:function:: paddle.fluid.layers.im2sequence(input, filter_size=1, stride=1, padding=0, input_image_size=None, out_stride=1, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP使用 `filter` 扫描输入的Tensor并将输入Tensor转换成序列,返回值的 `shape={input.batch_size * output_height * output_width, filter_size_height* filter_size_width * input.channels}` 。返回值的timestep的个数为 `output_height * output_width` , 每个timestep的维度是 `filter_size_height* filter_size_width * input.channels` 。其中 `output_height` 和 `output_width` 由以下式计算: - - -.. math:: - output\_height = 1 + \frac{padding\_up + padding\_down + input\_height - filter\_size\_height + stride\_height-1}{stride\_height} \\ - output\_width = 1 + \frac{padding\_left + padding\_right + input\_width - filter\_size\_width + stride\_width-1}{stride\_width} - -其中符号的意义如下所示。 - -参数: - - **input** (Variable)- 类型为float32的4-D Tensor,格式为 `[N, C, H, W]` 。公式中 `input_height` 和 `input_width` 分别代表输入的高和宽。 - - **filter_size** (int32 | List[int32]) - 滤波器大小。如果 `filter_size` 是一个List,它必须包含两个整数 `[filter_size_height, filter_size_width]` 。如果 `filter_size` 是一个int32, 则滤波器大小是 `[filter_size, filter_size]` , 默认值为1。 - - **stride** (int32 | List[int32]) - 步长大小。如果stride是一个List,它必须包含两个整数 `[stride_height,stride_width]` 。如果stride是一个int32, 则步长大小是 `[stride, stride]` , 默认值为1。 - - **padding** (int32 | List[int32]) - 填充大小。如果padding是一个List,它可以包含四个整数 `[padding_up, padding_left, padding_down, padding_right]` ,当包含两个整数 `[padding_height, padding_width]` 时,可展开为 `[padding_height, padding_width, padding_height, padding_width]` 。如果padding是一个int, 可展开为 `[padding, padding, padding, padding]` 。默认值为0。 - - **input_image_size** (Variable, 可选) - 2-D Tensor, 输入图像的实际大小, 它的维度为 `[batchsize,2]` 。当该参数不为None时,可用于batch inference。默认值为None. - - **out_stride** (int32 | List[int32]) - 输出步长。只有当input_image_size不为None时才有效。如果out_stride是List,它必须包含 `[out_stride_height, out_stride_width]` ,如果out_stride是int32, 则可展开为 `[out_stride, out_stride]` ,默认值为1。 - - **name** (str, 可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,缺省值为None。 - -返回: 数据类型为float32, `shape` 为 `{batch_size * output_height * output_width, filter_size_height * filter_size_width * input.channels}` 的 2-D LodTensor。 - -返回类型: Variable - -:: - - Given: - - x = [[[[ 6. 2. 1.] - [ 8. 3. 5.] - [ 0. 2. 6.]] - - [[ 2. 4. 4.] - [ 6. 3. 0.] - [ 6. 4. 7.]]] - - [[[ 6. 7. 1.] - [ 5. 7. 9.] - [ 2. 4. 8.]] - - [[ 1. 2. 1.] - [ 1. 3. 5.] - [ 9. 0. 8.]]]] - - x.dims = {2, 2, 3, 3} - - And: - - filter = [2, 2] - stride = [1, 1] - padding = [0, 0] - - Then: - - output.data = [[ 6. 2. 8. 3. 2. 4. 6. 3.] - [ 2. 1. 3. 5. 4. 4. 3. 0.] - [ 8. 3. 0. 2. 6. 3. 6. 4.] - [ 3. 5. 2. 6. 3. 0. 4. 7.] - [ 6. 7. 5. 7. 1. 2. 1. 3.] - [ 7. 1. 7. 9. 2. 1. 3. 5.] - [ 5. 7. 2. 4. 1. 3. 9. 0.] - [ 7. 9. 4. 8. 3. 5. 0. 8.]] - - output.dims = {8, 8} - - output.lod = [[4, 4]] - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name='data', shape=[3, 32, 32], - dtype='float32') - output = fluid.layers.im2sequence( - input=data, stride=[1, 1], filter_size=[2, 2]) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/inplace_abn_cn.rst b/doc/paddle/api/paddle/fluid/layers/inplace_abn_cn.rst deleted file mode 100755 index 11077c5b78fe34fb0387a9d2dcb7bfd3f73c20b0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/inplace_abn_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_inplace_abn: - -inplace_abn -------------------------------- - -**注意:该API仅支持【静态图】模式** - -.. py:function:: paddle.fluid.layers.inplace_abn(input, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, data_layout='NCHW', name=None, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False, act_alpha=1.0) - -就地批正则化化激活层(Inplace Activation Batch Normalization Layer) - -此层使用就地内存计算批处理正则化和激活来实现节省内存,有关批量正则化计算,请参见 ``fluid.layers.batch_norm`` ,有关就地激活批正则化化的计算,请参考 `In-Place Activated BatchNorm for Memory-Optimized Training of DNNs `_。 - -参数: - - **input** (Variable) - inplace_abn算子的输入特征,是一个Variable类型,输入维度可以是 2, 3, 4, 5。数据类型:flaot16, float32, float64。 - - **act** (string)- 激活函数类型,可以是leaky_realu、relu、prelu等。默认:None。 - - **is_test** (bool) - 指示它是否在测试阶段,非训练阶段使用训练过程中统计到的全局均值和全局方差。默认:False。 - - **momentum** (float|Variable)- 此值用于计算 moving_mean 和 moving_var,是一个float类型或者一个shape为[1],数据类型为float32的Variable类型。更新公式为: :math:`moving\_mean = moving\_mean * momentum + new\_mean * (1. - momentum)` , :math:`moving\_var = moving\_var * momentum + new\_var * (1. - momentum)` , 默认:0.9。 - - **epsilon** (float)- 加在分母上为了数值稳定的值。默认:1e-5。 - - **param_attr** (ParamAttr|None) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。inplace_abn算子默认的权重初始化是1.0。 - - **bias_attr** (ParamAttr|None)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。inplace_abn算子默认的偏置初始化是0.0。 - - **data_layout** (string) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **moving_mean_name** (string)- moving_mean的名称,存储全局均值。如果将其设置为None, ``inplace_abn`` 将随机命名全局均值;否则, ``inplace_abn`` 将命名全局均值为 ``moving_mean_name`` 。默认:None。 - - **moving_variance_name** (string)- moving_variance的名称,存储全局变量。如果将其设置为None, ``inplace_abn`` 将随机命名全局方差;否则, ``inplace_abn`` 将命名全局方差为 ``moving_variance_name`` 。默认:None。 - - **do_model_average_for_mean_and_var** (bool,默认False)- 是否为mean和variance做模型均值。 - - **use_global_stats** (bool) – 是否使用全局均值和方差。 在预测或测试模式下,将use_global_stats设置为true或将is_test设置为true,并且行为是等效的。 在训练模式中,当设置use_global_stats为True时,在训练期间也使用全局均值和方差。默认:False。 - - **act_alpha** (float) – 当 ``act`` 参数为None、leaky-relu、elu时,会使用就地批正则化激活算法,可通过此参数给定leaky-relu、elu的 ``alpha`` 值。默认:1.0。 - - -返回: 维度和输入相同的Tensor,在输入中运用批正则后的结果。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[3, 7, 3, 7], dtype='float32') - hidden1 = fluid.layers.fc(input=x, size=200, param_attr='fc1.w') - hidden2 = fluid.layers.inplace_abn(input=hidden1) - hidden3 = fluid.layers.inplace_abn(input=hidden2, act='leaky_relu', act_alpha=0.2) diff --git a/doc/paddle/api/paddle/fluid/layers/instance_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/instance_norm_cn.rst deleted file mode 100644 index a10ff93900023ad41c2b7e6461764f060eef3293..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/instance_norm_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_instance_norm: - -instance_norm -------------------------------- - - -.. py:function:: paddle.fluid.layers.instance_norm(input, epsilon=1e-05, param_attr=None, bias_attr=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - - -可用作卷积和全连接操作的实例正则化函数,根据每个样本的每个通道的均值和方差信息进行正则化。该层需要的数据格式如下: - -NCHW[batch,in_channels,in_height,in_width] - -更多详情请参考 : `Instance Normalization: The Missing Ingredient for Fast Stylization `_ - -``input`` 是mini-batch的输入。 - -.. math:: - \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mean of each channel in each sample in a batch \\ - \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// variance of each channel in each sample a batch \\ - \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ - y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift - - -参数: - - **input** (Variable) - instance_norm算子的输入特征,是一个Variable类型,输入的维度可以为 2, 3, 4, 5。数据类型:float32和float64。 - - **epsilon** (float,默认1e-05)-为了当前输入做标准化时得到稳定的结果而加在的分母上的扰动值。默认值为1e-5。 - - **param_attr** (ParamAttr|None) - instance_norm 权重参数的属性,可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 如果设为None,则默认的参数初始化为1.0。如果在ParamAttr指定了属性时, instance_norm创建相应属性的param_attr(权重)参数。默认:None。 - - **bias_attr** (ParamAttr|None) - instance_norm 偏置参数的属性,可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。如果设为None,默认的参数初始化为0.0。如果在ParamAttr指定了参数的属性时, instance_norm创建相应属性的bias_attr(偏置)参数。默认:None。 - - **name** (string,默认None)- 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量,在输入中运用instance normalization后的结果 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name='x', shape=[3, 7, 3, 7], dtype='float32', append_batch_size=False) - hidden1 = fluid.layers.fc(input=x, size=200) - param_attr = fluid.ParamAttr(name='instance_norm_w', initializer=fluid.initializer.Constant(value=1.0)) - bias_attr = fluid.ParamAttr(name='instance_norm_b', initializer=fluid.initializer.Constant(value=0.0)) - hidden2 = fluid.layers.instance_norm(input=hidden1, param_attr = param_attr, bias_attr = bias_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(3, 7, 3, 7)).astype('float32') - output = exe.run(feed={"x": np_x}, fetch_list = [hidden2]) - print(output) - diff --git a/doc/paddle/api/paddle/fluid/layers/io/create_py_reader_by_data_cn.rst b/doc/paddle/api/paddle/fluid/layers/io/create_py_reader_by_data_cn.rst deleted file mode 100644 index ed42dceaa52ef3be13ffc4d2d50d7458fb317584..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/io/create_py_reader_by_data_cn.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. _cn_api_fluid_layers_create_py_reader_by_data: - -create_py_reader_by_data -------------------------------- - - -.. py:function:: paddle.fluid.layers.create_py_reader_by_data(capacity,feed_list,name=None,use_double_buffer=True) - -:api_attr: 声明式编程模式(静态图) - - - -创建一个Python端提供数据的reader。该OP与 :ref:`cn_api_fluid_layers_py_reader` 类似,不同点在于它能够从feed变量列表读取数据。 - -参数: - - **capacity** (int) - ``py_reader`` 维护的队列缓冲区的容量大小。单位是batch数量。若reader读取速度较快,建议设置较大的 ``capacity`` 值。 - - **feed_list** (list(Variable)) - feed变量列表,这些变量一般由 :code:`fluid.data()` 创建。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **use_double_buffer** (bool,可选) - 是否使用双缓冲区,双缓冲区是为了预读下一个batch的数据、异步CPU -> GPU拷贝。默认值为True。 - -返回:能够从feed变量列表读取数据的reader,数据类型和feed变量列表中变量的数据类型相同。 - -返回类型:reader - -**代码示例:** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import paddle.dataset.mnist as mnist - - def network(img, label): - # 用户构建自定义网络,此处以一个简单的线性回归为例。 - predict = fluid.layers.fc(input=img, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=predict, label=label) - return fluid.layers.mean(loss) - - MEMORY_OPT = False - USE_CUDA = False - - image = fluid.data(name='image', shape=[None, 1, 28, 28], dtype='float32') - label = fluid.data(name='label', shape=[None, 1], dtype='int64') - reader = fluid.layers.create_py_reader_by_data(capacity=64, - feed_list=[image, label]) - reader.decorate_paddle_reader( - paddle.reader.shuffle(paddle.batch(mnist.train(), batch_size=5), buf_size=500)) - img, label = fluid.layers.read_file(reader) - loss = network(img, label) # 用户构建自定义网络并返回损失函数 - - place = fluid.CUDAPlace(0) if USE_CUDA else fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - build_strategy = fluid.BuildStrategy() - build_strategy.memory_optimize = True if MEMORY_OPT else False - exec_strategy = fluid.ExecutionStrategy() - compiled_prog = fluid.compiler.CompiledProgram( - fluid.default_main_program()).with_data_parallel( - loss_name=loss.name, - build_strategy=build_strategy, - exec_strategy=exec_strategy) - - for epoch_id in range(2): - reader.start() - try: - while True: - exe.run(compiled_prog, fetch_list=[loss.name]) - except fluid.core.EOFException: - reader.reset() diff --git a/doc/paddle/api/paddle/fluid/layers/io/data_cn.rst b/doc/paddle/api/paddle/fluid/layers/io/data_cn.rst deleted file mode 100644 index f250c9438581e2cddaebe4f72c8adb5c6821cdb9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/io/data_cn.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _cn_api_fluid_data: - -data -------------------------------- - - -.. py:function:: paddle.fluid.data(name, shape, dtype='float32', lod_level=0) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.data -:alias: paddle.nn.data,paddle.nn.input.data -:old_api: paddle.fluid.data - - - -该OP会在全局block中创建变量(Variable),该全局变量可被计算图中的算子(operator)访问。该变量可作为占位符用于数据输入。例如用执行器(Executor)feed数据进该变量 - -注意: - - 不推荐使用 ``paddle.fluid.layers.data`` ,其在之后的版本中会被删除。请使用这个 ``paddle.fluid.data`` 。 - - ``paddle.fluid.layers.data`` 在组网期间会设置创建的变量维度(shape)和数据类型(dtype),但不会检查输入数据的维度和数据类型是否符合要求。 ``paddle.fluid.data`` 会在运行过程中由Executor/ParallelExecutor检查输入数据的维度和数据类型。 - - 如果想输入变长输入,可以使用 ``paddle.fluid.data`` 时将变长维度设为-1,或者直接输入 ``paddle.fluid.layers.data`` 且PaddlePaddle会按具体输入的形状运行。 - - 本API创建的变量默认 ``stop_gradient`` 属性为true,这意味这反向梯度不会被传递过这个数据变量。如果用户想传递反向梯度,可以设置 ``var.stop_gradient = False`` 。 - -参数: - - **name** (str)- 被创建的变量的名字,具体用法请参见 :ref:`api_guide_Name` 。 - - **shape** (list|tuple)- 声明维度信息的list或tuple。 - - **dtype** (np.dtype|VarType|str,可选)- 数据类型,支持bool,float16,float32,float64,int8,int16,int32,int64,uint8。默认值为float32。 - - **lod_level** (int,可选)- LoDTensor变量的LoD level数,LoD level是PaddlePaddle的高级特性,一般任务中不会需要更改此默认值,关于LoD level的详细适用场景和用法请见 :ref:`cn_user_guide_lod_tensor` 。默认值为0。 - -返回:全局变量,可进行数据访问 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # Creates a variable with fixed size [3, 2, 1] - # User can only feed data of the same shape to x - x = fluid.data(name='x', shape=[3, 2, 1], dtype='float32') - - # Creates a variable with changable batch size -1. - # Users can feed data of any batch size into y, - # but size of each data sample has to be [2, 1] - y = fluid.data(name='y', shape=[-1, 2, 1], dtype='float32') - - z = x + y - - # In this example, we will feed x and y with np-ndarry "1" - # and fetch z, like implementing "1 + 1 = 2" in PaddlePaddle - feed_data = np.ones(shape=[3, 2, 1], dtype=np.float32) - - exe = fluid.Executor(fluid.CPUPlace()) - out = exe.run(fluid.default_main_program(), - feed={ - 'x': feed_data, - 'y': feed_data - }, - fetch_list=[z.name]) - - # np-ndarray of shape=[3, 2, 1], dtype=float32, whose elements are 2 - print(out) - - diff --git a/doc/paddle/api/paddle/fluid/layers/io/double_buffer_cn.rst b/doc/paddle/api/paddle/fluid/layers/io/double_buffer_cn.rst deleted file mode 100644 index f9fe3b110ab2db024599bf4be1687a15f4c1006c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/io/double_buffer_cn.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. _cn_api_fluid_layers_double_buffer: - -double_buffer -------------------------------- - -.. py:function:: paddle.fluid.layers.double_buffer(reader, place=None, name=None) - - - - - -生成一个双缓冲队列Reader。Reader类有DecoratedReader和FileReader,其中DecoratedReader又可以细分成CustomReader和BufferedReader。这里是基于BufferedReader,数据将复制到具有双缓冲队列的位置(由place指定),如果 ``place=None`` 则将使用executor执行的位置。 - -参数: - - **reader** (Variable) – 需要wrap的reader变量Reader。 - - **place** (Place,可选) – 目标数据的位置,比如CPU,GPU,GPU需要指明是哪张卡。默认是executor执行样本的位置。 - - **name** (str,可选) – 变量的名字。该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_Name`,默认值为None。 - - - -返回:Variable(Reader)。双缓冲队列的reader。 - -返回类型:变量(Variable)。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - reader = fluid.layers.py_reader(capacity=64, - shapes=[(-1, 1, 28, 28), (-1, 1)], - dtypes=['float32', 'int64'], - use_double_buffer=False) - reader = fluid.layers.double_buffer(reader) - image, label = fluid.layers.read_file(reader) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/io/py_reader_cn.rst b/doc/paddle/api/paddle/fluid/layers/io/py_reader_cn.rst deleted file mode 100644 index 2f8f6f631479e9220221535b4ead4d0e753ead35..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/io/py_reader_cn.rst +++ /dev/null @@ -1,153 +0,0 @@ -.. _cn_api_fluid_layers_py_reader: - -py_reader -------------------------------- - - -.. py:function:: paddle.fluid.layers.py_reader(capacity, shapes, dtypes, lod_levels=None, name=None, use_double_buffer=True) - -:api_attr: 声明式编程模式(静态图) - - - - -创建一个在Python端提供数据的reader - -该OP返回一个Reader Variable。该Reader提供了 ``decorate_paddle_reader()`` 和 ``decorate_tensor_provider()`` 来设置Python generator作为数据源,将数据源中的数据feed到Reader Variable。在c++端调用 ``Executor::Run()`` 时,来自generator的数据将被自动读取。与 ``DataFeeder.feed()`` 不同,数据读取进程和 ``Executor::Run()`` 进程可以使用 ``py_reader`` 并行运行。在每次数据传递开始时调用reader的 ``start()`` ,在传递结束和抛出 ``fluid.core.EOFException`` 异常后执行 ``reset()`` 。 - -注意: ``Program.clone()`` (含义详见 :ref:`cn_api_fluid_Program` )不能克隆 ``py_reader`` ,且 ``read_file`` ( ``read_file`` 含义详见 :ref:`cn_api_fluid_layers_read_file` )调用需在声明 ``py_reader`` 的program block内。 - -参数: - - **capacity** (int) – ``py_reader`` 维护的缓冲区的容量数据个数。 - - **shapes** (list|tuple) – 一个列表或元组,shapes[i]是代表第i个数据shape,因此shape[i]也是元组或列表。 - - **dtypes** (list|tuple) – 一个string的列表或元组。为 ``shapes`` 对应元素的数据类型,支持bool,float16,float32,float64,int8,int16,int32,int64,uint8。 - - **lod_levels** (list|tuple) – lod_level的整型列表或元组 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **use_double_buffer** (bool) – 是否使用双缓冲区,双缓冲区是为了预读下一个batch的数据、异步CPU -> GPU拷贝。默认值为True。 - -返回:reader,从reader中可以获取feed的数据,其dtype和feed的数据dtype相同。 - -返回类型:Variable - - - -**代码示例** - -1.py_reader 基本用法如下 - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import paddle.dataset.mnist as mnist - - def network(image, label): - # 用户自定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - reader = fluid.layers.py_reader(capacity=64, - shapes=[(-1,1, 28, 28), (-1,1)], - dtypes=['float32', 'int64']) - reader.decorate_paddle_reader( - paddle.reader.shuffle(paddle.batch(mnist.train(), batch_size=5), - buf_size=1000)) - - img, label = fluid.layers.read_file(reader) - loss = network(img, label) # 一些网络定义 - - fluid.Executor(fluid.CUDAPlace(0)).run(fluid.default_startup_program()) - exe = fluid.ParallelExecutor(use_cuda=True, loss_name=loss.name) - for epoch_id in range(10): - reader.start() - try: - while True: - exe.run(fetch_list=[loss.name]) - except fluid.core.EOFException: - reader.reset() - - fluid.io.save_inference_model(dirname='./model', - feeded_var_names=[img.name, label.name], - target_vars=[loss], - executor=fluid.Executor(fluid.CUDAPlace(0))) - - -2.训练和测试应使用不同的名称创建两个不同的py_reader,例如: - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import paddle.dataset.mnist as mnist - - def network(reader): - img, label = fluid.layers.read_file(reader) - # 用户自定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=img, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=predict, label=label) - return fluid.layers.mean(loss) - - # 新建 train_main_prog 和 train_startup_prog - train_main_prog = fluid.Program() - train_startup_prog = fluid.Program() - with fluid.program_guard(train_main_prog, train_startup_prog): - # 使用 fluid.unique_name.guard() 实现与test program的参数共享 - with fluid.unique_name.guard(): - train_reader = fluid.layers.py_reader(capacity=64, - shapes=[(-1, 1, 28, 28), (-1, 1)], - dtypes=['float32', 'int64'], - name='train_reader') - train_reader.decorate_paddle_reader( - paddle.reader.shuffle(paddle.batch(mnist.train(), - batch_size=5), - buf_size=500)) - train_loss = network(train_reader) # 一些网络定义 - adam = fluid.optimizer.Adam(learning_rate=0.01) - adam.minimize(train_loss) - - # Create test_main_prog and test_startup_prog - test_main_prog = fluid.Program() - test_startup_prog = fluid.Program() - with fluid.program_guard(test_main_prog, test_startup_prog): - # 使用 fluid.unique_name.guard() 实现与train program的参数共享 - with fluid.unique_name.guard(): - test_reader = fluid.layers.py_reader(capacity=32, - shapes=[(-1, 1, 28, 28), (-1, 1)], - dtypes=['float32', 'int64'], - name='test_reader') - test_reader.decorate_paddle_reader(paddle.batch(mnist.test(), 512)) - test_loss = network(test_reader) - - fluid.Executor(fluid.CUDAPlace(0)).run(train_startup_prog) - fluid.Executor(fluid.CUDAPlace(0)).run(test_startup_prog) - - train_exe = fluid.ParallelExecutor(use_cuda=True, - loss_name=train_loss.name, main_program=train_main_prog) - test_exe = fluid.ParallelExecutor(use_cuda=True, - loss_name=test_loss.name, main_program=test_main_prog) - for epoch_id in range(10): - train_reader.start() - try: - while True: - train_exe.run(fetch_list=[train_loss.name]) - except fluid.core.EOFException: - train_reader.reset() - - test_reader.start() - try: - while True: - test_exe.run(fetch_list=[test_loss.name]) - except fluid.core.EOFException: - test_reader.reset() - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/io/read_file_cn.rst b/doc/paddle/api/paddle/fluid/layers/io/read_file_cn.rst deleted file mode 100644 index c2ac46e1465712cec6c6c5d7645ce8d4f711cb9f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/io/read_file_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_read_file: - -read_file -------------------------------- - - -.. py:function:: paddle.fluid.layers.read_file(reader) - -:api_attr: 声明式编程模式(静态图) - - - -从给定的reader中读取数据 - -reader是一个Variable,它可以是由函数fluid.layers.py_reader()生成的reader,或者是由函数fluid.layers.double_buffer()生成的装饰Variable。 - -参数: - - **reader** (Variable)-待处理的reader - -返回:从reader中读取的数据元组,元组数据类型为Variable - -返回类型: tuple(元组) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - reader = fluid.layers.py_reader(capacity=64, - shapes=[(-1, 1, 28, 28), (-1, 1)], - dtypes=['float32', 'int64']) - image, label = fluid.layers.read_file(reader) - data_file = fluid.layers.double_buffer( - fluid.layers.batch(data_file, batch_size=64)) - input, label = fluid.layers.read_file(data_file) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/layer_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/layer_norm_cn.rst deleted file mode 100644 index 477b6e6ba82ebca08e62080ee79c7cb788fecbc0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/layer_norm_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_layer_norm: - -layer_norm -------------------------------- - - -.. py:function:: paddle.fluid.layers.layer_norm(input, scale=True, shift=True, begin_norm_axis=1, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP实现了层归一化层(Layer Normalization Layer),其可以应用于小批量输入数据。更多详情请参考:`Layer Normalization `_ - -计算公式如下 - -.. math:: - \\\mu=\frac{1}{H}\sum_{i=1}^{H}x_i\\ - - \\\sigma=\sqrt{\frac{1}{H}\sum_i^H{(x_i-\mu)^2} + \epsilon}\\ - - \\y=f(\frac{g}{\sigma}(x-\mu) + b)\\ - -- :math:`x` : 该层神经元的向量表示 -- :math:`H` : 层中隐藏神经元个数 -- :math:`\epsilon` : 添加较小的值到方差中以防止除零 -- :math:`g` : 可训练的比例参数 -- :math:`b` : 可训练的偏差参数 - -参数: - - **input** (Variable) - 维度为任意维度的多维 ``Tensor`` ,数据类型为float32或float64。 - - **scale** (bool, 可选) - 指明是否在归一化后学习自适应增益 ``g`` 。默认值:True。 - - **shift** (bool, 可选) - 指明是否在归一化后学习自适应偏差 ``b`` 。默认值:True。 - - **begin_norm_axis** (int, 可选) - 指明归一化将沿着 ``begin_norm_axis`` 到 ``rank(input)`` 的维度执行。默认值:1。 - - **epsilon** (float, 可选) - 指明在计算过程中是否添加较小的值到方差中以防止除零。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。。 - -返回:表示归一化结果的 ``Tensor`` ,数据类型和 ``input`` 一致,返回维度和 ``input`` 一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name='x', shape=[3, 32, 32], dtype='float32') - hidden1 = fluid.layers.layer_norm(input=x, begin_norm_axis=1) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(8, 3, 32, 32)).astype('float32') - output = exe.run(feed={"x": np_x}, fetch_list = [hidden1]) - print(output) - diff --git a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/cosine_decay_cn.rst b/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/cosine_decay_cn.rst deleted file mode 100644 index 9117c06dd61c6bef978cde326fd64075fdeb7657..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/cosine_decay_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_cosine_decay: - -cosine_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.cosine_decay(learning_rate, step_each_epoch, epochs) - -:alias_main: paddle.nn.functional.cosine_decay -:alias: paddle.nn.functional.cosine_decay,paddle.nn.functional.learning_rate.cosine_decay -:old_api: paddle.fluid.layers.cosine_decay - - - -使用 cosine decay 的衰减方式进行学习率调整。 - -在训练模型时,建议一边进行训练一边降低学习率。 通过使用此方法,学习速率将通过如下cosine衰减策略进行衰减: - -.. math:: - decayed\_lr = learning\_rate * 0.5 * (cos(epoch * math.pi / epochs) + 1) - - -参数: - - **learning_rate** (Variable | float) - 初始学习率。 - - **step_each_epoch** (int) - 一次迭代中的步数。 - - **epochs** - 总迭代次数。 - - - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - lr = fluid.layers.cosine_decay( learning_rate = base_lr, step_each_epoch=10000, epochs=120) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/exponential_decay_cn.rst b/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/exponential_decay_cn.rst deleted file mode 100644 index edda7f819c0ba67b216aa4c4426e3ebfa0df6ee5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/exponential_decay_cn.rst +++ /dev/null @@ -1,58 +0,0 @@ -.. _cn_api_fluid_layers_exponential_decay: - -exponential_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.exponential_decay(learning_rate,decay_steps,decay_rate,staircase=False) - -:alias_main: paddle.nn.functional.exponential_decay -:alias: paddle.nn.functional.exponential_decay,paddle.nn.functional.learning_rate.exponential_decay -:old_api: paddle.fluid.layers.exponential_decay - - - -在学习率上运用指数衰减。 - -训练模型时,在训练过程中降低学习率。每 ``decay_steps`` 步骤中以 ``decay_rate`` 衰减学习率。 - -学习率衰减计算方式如下。 - -.. code-block:: text - - if staircase == True: - decayed_learning_rate = learning_rate * decay_rate ^ floor(global_step / decay_steps) - else: - decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps) - -参数: - - **learning_rate** (Variable|float) - 初始学习率,类型可以为学习率变量(Variable)或float型常量。 - - **decay_steps** (int) - 学习率衰减步长,见以上衰减运算。 - - **decay_rate** (float) - 学习率衰减率。见以上衰减运算。 - - **staircase** (bool) - 若为True,按离散区间衰减学习率,即每 ``decay_steps`` 步学习率衰减 ``decay_rate`` 。若为False,则按以上衰减运算持续衰减。默认False。 - -返回:Variable(Tensor) 随step衰减的学习率变量,维度为 :math:`[1]` 的1-D Tensor。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.layers.exponential_decay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True)) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/inverse_time_decay_cn.rst b/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/inverse_time_decay_cn.rst deleted file mode 100644 index 1b7abf3fab067769c21faf730179f8fc88e32785..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/inverse_time_decay_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_fluid_layers_inverse_time_decay: - -inverse_time_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.inverse_time_decay(learning_rate, decay_steps, decay_rate, staircase=False) - -:alias_main: paddle.nn.functional.inverse_time_decay -:alias: paddle.nn.functional.inverse_time_decay,paddle.nn.functional.learning_rate.inverse_time_decay -:old_api: paddle.fluid.layers.inverse_time_decay - - - -在初始学习率上运用逆时衰减。 - -训练模型时,最好在训练过程中降低学习率。通过执行该函数,将对初始学习率运用逆时衰减函数。 - -逆时衰减计算方式如下。 - -.. code-block:: python - - if staircase == True: - decayed_learning_rate = learning_rate / (1 + decay_rate * floor(global_step / decay_step)) - else: - decayed_learning_rate = learning_rate / (1 + decay_rate * global_step / decay_step) - -参数: - - **learning_rate** (Variable|float) - 初始学习率,类型可以为学习率变量(Variable)或float型常量。 - - **decay_steps** (int) - 学习率衰减步长,见以上衰减运算。 - - **decay_rate** (float) - 学习率衰减率。见以上衰减运算。 - - **staircase** (bool) - 若为True,按离散区间衰减学习率,即每 ``decay_steps`` 步多衰减 ``decay_rate`` 倍。若为False,则按以上衰减运算持续衰减。默认False。 - -返回:Variable(Tensor) 随step衰减的学习率变量,维度为 :math:`[1]` 的1-D Tensor。 - -返回类型:变量(Variable) - -**示例代码:** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.layers.natural_exp_decay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True)) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/linear_lr_warmup_cn.rst b/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/linear_lr_warmup_cn.rst deleted file mode 100644 index c480c68d074b01191296b96e8ec8d506fbfa437f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/linear_lr_warmup_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_linear_lr_warmup: - -linear_lr_warmup -------------------------------- - -.. py:function:: paddle.fluid.layers.linear_lr_warmup(learning_rate, warmup_steps, start_lr, end_lr) - -:alias_main: paddle.nn.functional.linear_lr_warmup -:alias: paddle.nn.functional.linear_lr_warmup,paddle.nn.functional.learning_rate.linear_lr_warmup -:old_api: paddle.fluid.layers.linear_lr_warmup - - - - -该OP使用学习率优化策略-线性学习率热身(warm up)对学习率进行初步调整。在正常调整学习率之前,先逐步增大学习率,具体原理可参考: `Bag of Tricks for Image Classification with Convolutional Neural Networks `_ - -当训练步数(global_step)小于热身步数(warmup_steps)时,学习率lr按如下方式更新: - -.. code-block:: text - - linear_step = end_lr - start_lr - lr = start_lr + linear_step * (global_step / warmup_steps) - -其中start_lr为warm up起始学习率,end_lr为最终学习率; - -当训练步数(global_step)大于等于热身步数(warmup_steps)时,学习率lr为: - -.. code-block:: text - - lr = learning_rate - -其中learning_rate为热身之后的学习率。 - -参数: - - **learning_rate** (Variable|float) - 热身之后的学习率,它可以是数据类型为float32的1D-Tensor或单个浮点数。 - - **warmup_steps** (int) - 进行warm up过程的步数。 - - **start_lr** (float) - warm up的起始学习率。 - - **end_lr** (float) - warm up的最终学习率。 - -返回:进行热身衰减后的学习率,数据类型与learning_rate相同。 - -返回类型:Variable - - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - boundaries = [100, 200] - lr_steps = [0.1, 0.01, 0.001] - learning_rate = fluid.layers.piecewise_decay(boundaries, lr_steps) #case1, Tensor - #learning_rate = 0.1 #case2, float32 - warmup_steps = 50 - start_lr = 1. / 3. - end_lr = 0.1 - decayed_lr = fluid.layers.linear_lr_warmup(learning_rate, - warmup_steps, start_lr, end_lr) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - out, = exe.run(fetch_list=[decayed_lr.name]) - print(out) - # case1: [0.33333334] - # case2: [0.33333334] diff --git a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/natural_exp_decay_cn.rst b/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/natural_exp_decay_cn.rst deleted file mode 100644 index 8fc60de95cc71c793c0d3b825bf63817654fbacc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/natural_exp_decay_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_natural_exp_decay: - -natural_exp_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.natural_exp_decay(learning_rate, decay_steps, decay_rate, staircase=False) - -:alias_main: paddle.nn.functional.natural_exp_decay -:alias: paddle.nn.functional.natural_exp_decay,paddle.nn.functional.learning_rate.natural_exp_decay -:old_api: paddle.fluid.layers.natural_exp_decay - - - -将自然指数衰减运用到初始学习率上。 - -训练模型时,在训练过程中降低学习率。 自然指数衰减使用自然指数来计算衰减倍率,每 ``decay_steps`` 步衰减倍率的自然指数幂次项上增加 ``decay_rate`` 。 - -自然指数学习率衰减计算方式如下。 - -.. code-block:: python - - if not staircase: - decayed_learning_rate = learning_rate * exp(- decay_rate * (global_step / decay_steps)) - else: - decayed_learning_rate = learning_rate * exp(- decay_rate * floor(global_step / decay_steps)) - -参数: - - **learning_rate** (Variable|float) - 初始学习率,类型可以为学习率变量(Variable)或float型常量。 - - **decay_steps** (int) - 学习率衰减步长,见以上衰减运算。 - - **decay_rate** (float) - 学习率衰减率。见以上衰减运算。 - - **staircase** (bool) - 若为True,按离散区间衰减学习率,即每 ``decay_steps`` 步衰减倍率的自然指数幂次项上增加 ``decay_rate`` 。若为False,则按以上衰减运算持续衰减。默认False。 - -返回:Variable(Tensor) 随step衰减的学习率变量,维度为 :math:`[1]` 的1-D Tensor。 - -返回类型:变量(Variable) - -**示例代码:** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.layers.natural_exp_decay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True)) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/noam_decay_cn.rst b/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/noam_decay_cn.rst deleted file mode 100644 index 00a7ad2321b6864891b8cd1c8d04a32b39c30b5e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/noam_decay_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_noam_decay: - -noam_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.noam_decay(d_model, warmup_steps) - -:alias_main: paddle.nn.functional.noam_decay -:alias: paddle.nn.functional.noam_decay,paddle.nn.functional.learning_rate.noam_decay -:old_api: paddle.fluid.layers.noam_decay - - - -Noam衰减方法 - -noam衰减的numpy实现如下: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - # 设置超参数 - base_lr = 0.01 - d_model = 2 - current_steps = 20 - warmup_steps = 200 - # 计算 - lr_value = base_lr * np.power(d_model, -0.5) * np.min([ - np.power(current_steps, -0.5), - np.power(warmup_steps, -1.5) * current_steps]) - -请参照 `attention is all you need `_ - -参数: - - **d_model** (Variable|int) - 模型的输入、输出向量特征维度。类型可设置为标量Tensor,或int值。 - - **warmup_steps** (Variable|int) - 预热步数,类型可设置为标量Tensor,或int值。 - - **learning_rate** (Variable|float|int,可选) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的int类型。默认值为1.0。 - -返回:衰减的学习率 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - warmup_steps = 100 - learning_rate = 0.01 - lr = fluid.layers.learning_rate_scheduler.noam_decay( - 1/(warmup_steps *(learning_rate ** 2)), - warmup_steps, - learning_rate) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/piecewise_decay_cn.rst b/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/piecewise_decay_cn.rst deleted file mode 100644 index ecb2cd6274244631a6390f22a3c09aded78fef1a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/piecewise_decay_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_piecewise_decay: - -piecewise_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.piecewise_decay(boundaries,values) - -:alias_main: paddle.nn.functional.piecewise_decay -:alias: paddle.nn.functional.piecewise_decay,paddle.nn.functional.learning_rate.piecewise_decay -:old_api: paddle.fluid.layers.piecewise_decay - - - -对初始学习率进行分段衰减。 - -该算法可用如下代码描述。 - -.. code-block:: text - - boundaries = [10000, 20000] - values = [1.0, 0.5, 0.1] - if step < 10000: - learning_rate = 1.0 - elif 10000 <= step < 20000: - learning_rate = 0.5 - else: - learning_rate = 0.1 - -参数: - - **boundaries(list)** - 代表步数的数字 - - **values(list)** - 学习率的值,不同的步边界中的学习率值 - -返回:衰减的学习率 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - boundaries = [10000, 20000] - values = [1.0, 0.5, 0.1] - optimizer = fluid.optimizer.Momentum( - momentum=0.9, - learning_rate=fluid.layers.piecewise_decay(boundaries=boundaries, values=values), - regularization=fluid.regularizer.L2Decay(1e-4)) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/polynomial_decay_cn.rst b/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/polynomial_decay_cn.rst deleted file mode 100644 index e03443b0bd7d02177ef045393595f8d06dc4abf5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/learning_rate_scheduler/polynomial_decay_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_fluid_layers_polynomial_decay: - -polynomial_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.polynomial_decay(learning_rate,decay_steps,end_learning_rate=0.0001,power=1.0,cycle=False) - -:alias_main: paddle.nn.functional.polynomial_decay -:alias: paddle.nn.functional.polynomial_decay,paddle.nn.functional.learning_rate.polynomial_decay -:old_api: paddle.fluid.layers.polynomial_decay - - - -对初始学习率使用多项式衰减 - -.. code-block:: text - - if cycle: - decay_steps = decay_steps * ceil(global_step / decay_steps) - else: - global_step = min(global_step, decay_steps) - decayed_learning_rate = (learning_rate - end_learning_rate) * - (1 - global_step / decay_steps) ^ power + end_learning_rate - -参数: - - **learning_rate** (Variable|float) - 训练过程中的初始学习率,数据类型为float的常数或变量。 - - **decay_steps** (int) - 衰减步数 - - **end_learning_rate** (float) - 训练过程的最终学习率 - - **power** (float) - 多项式衰减系数 - - **cycle** (bool) - step 超出 decay_steps 后是否继续循环,默认为False - -返回:衰减的学习率 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - start_lr = 0.01 - total_step = 5000 - end_lr = 0 - lr = fluid.layers.polynomial_decay( - start_lr, total_step, end_lr, power=1) - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/less_equal_cn.rst b/doc/paddle/api/paddle/fluid/layers/less_equal_cn.rst deleted file mode 100644 index da8b1b83343ec06b21738177555c79855efbdb2f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/less_equal_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_fluid_layers_less_equal: - -less_equal -------------------------------- - -.. py:function:: paddle.fluid.layers.less_equal(x, y, cond=None, name=None) - -:alias_main: paddle.less_equal -:alias: paddle.less_equal,paddle.tensor.less_equal,paddle.tensor.logic.less_equal -:old_api: paddle.fluid.layers.less_equal - - - -该OP逐元素地返回 :math:`x <= y` 的逻辑值,使用重载算子 `<=` 可以有相同的计算函数效果。 - -参数: - - **x** (Variable) – 进行比较的第一个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **y** (Variable) – 进行比较的第二个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **cond** (Variable,可选) – 如果为None,则创建一个Tensor来作为进行比较的输出结果,该Tensor的shape和数据类型和输入x一致;如果不为None,则将Tensor作为该OP的输出,数据类型和数据shape需要和输入x一致。默认值为None。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出结果的Tensor,数据的shape和输入x一致。 - -返回类型:Variable,数据类型为bool类型。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - label = layers.assign(np.array([1, 3], dtype='int32')) - limit = layers.assign(np.array([1, 2], dtype='int32')) - out = fluid.layers.less_equal(x=label, y=limit) #out=[True, False] - out1 = label<= limit #out1=[True, False] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/less_than_cn.rst b/doc/paddle/api/paddle/fluid/layers/less_than_cn.rst deleted file mode 100644 index 6ad37577315a293779e5b1da1a9e449179c9b52f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/less_than_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_less_than: - -less_than -------------------------------- - -.. py:function:: paddle.fluid.layers.less_than(x, y, force_cpu=None, cond=None, name=None) - -:alias_main: paddle.less_than -:alias: paddle.less_than,paddle.tensor.less_than,paddle.tensor.logic.less_than -:old_api: paddle.fluid.layers.less_than - - - - -该OP逐元素地返回 :math:`x < y` 的逻辑值,使用重载算子 `<` 可以有相同的计算函数效果 - - -参数: - - **x** (Variable) - 进行比较的第一个输入,是一个多维的LoDTensor/Tensor,数据类型可以是float32,float64,int32,int64。 - - **y** (Variable) - 进行比较的第二个输入,是一个多维的LoDTensor/Tensor,数据类型可以是float32,float64,int32,int64。 - - **force_cpu** (bool) – 如果为True则强制将输出变量写入CPU内存中,否则将其写入目前所在的运算设备上。默认值为False。注意:该属性已弃用,其值始终是False。 - - **cond** (Variable,可选) – 指定算子输出结果的LoDTensor/Tensor,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回:输出结果的LoDTensor/Tensor,数据的shape和输入x一致。 - -返回类型: Variable,数据类型为bool。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # Graph Organizing - x = fluid.layers.data(name='x', shape=[2], dtype='float64') - y = fluid.layers.data(name='y', shape=[2], dtype='float64') - result = fluid.layers.less_than(x=x, y=y) - # The comment lists another available method. - # result = fluid.layers.fill_constant(shape=[2], dtype='float64', value=0) - # fluid.layers.less_than(x=x, y=y, cond=result) - - # Create an executor using CPU as example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - x_i = np.array([[1, 2], [3, 4]]).astype(np.float64) - y_i = np.array([[2, 2], [1, 3]]).astype(np.float64) - result_value, = exe.run(fluid.default_main_program(), feed={'x':x_i, 'y':y_i}, fetch_list=[result]) - print(result_value) # [[True, False], [False, False]] - diff --git a/doc/paddle/api/paddle/fluid/layers/linear_chain_crf_cn.rst b/doc/paddle/api/paddle/fluid/layers/linear_chain_crf_cn.rst deleted file mode 100755 index cf38de480033e68c8388e08990a991cf5792bfef..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/linear_chain_crf_cn.rst +++ /dev/null @@ -1,141 +0,0 @@ -.. _cn_api_fluid_layers_linear_chain_crf: - -linear_chain_crf -------------------------------- - - -.. py:function:: paddle.fluid.layers.linear_chain_crf(input, label, param_attr=None, length=None) - -:api_attr: 声明式编程模式(静态图) - - - -线性链条件随机场(Linear Chain CRF) - -条件随机场定义间接概率图,节点代表随机变量,边代表两个变量之间的依赖。CRF学习条件概率 :math:`P\left ( Y|X \right )` , :math:`X = \left ( x_{1},x_{2},...,x_{n} \right )` 是结构性输入,:math:`Y = \left ( y_{1},y_{2},...,y_{n} \right )` 为输入标签。 - -线性链条件随机场(Linear Chain CRF)是特殊的条件随机场(CRF),有利于序列标注任务。序列标注任务不为输入设定许多条件依赖。唯一的限制是输入和输出必须是线性序列。因此类似CRF的图是一个简单的链或者线,也就是线性链随机场(linear chain CRF)。 - -该操作符实现了线性链条件随机场(linear chain CRF)的前向——反向算法。详情请参照 http://www.cs.columbia.edu/~mcollins/fb.pdf 和 http://cseweb.ucsd.edu/~elkan/250Bwinter2012/loglinearCRFs.pdf。 - - -长度为L的序列s的概率定义如下: - -.. math:: - - P(s) = (1/Z) exp(a_{s_1} + b_{s_L} + sum_{l=1}^L x_{s_l} + sum_{l=2}^L w_{s_{l-1},s_l}) - - -其中Z是归一化值,所有可能序列的P(s)之和为1,x是线性链条件随机场(linear chain CRF)的发射(emission)特征权重。 - -线性链条件随机场最终输出每个batch训练样本的条件概率的对数 - - - 1.这里 :math:`x` 代表Emission - - 2.Transition的第一维度值,代表起始权重,这里用 :math:`a` 表示 - - 3.Transition的下一维值,代表末尾权重,这里用 :math:`b` 表示 - - 4.Transition剩下的值,代表转移权重,这里用 :math:`w` 表示 - - 5.Label用 :math:`s` 表示 - - - - -**注意:** - - 1.条件随机场(CRF)的特征函数由发射特征(emission feature)和转移特征(transition feature)组成。发射特征(emission feature)权重在调用函数前计算,而不在函数里计算。 - - 2.由于该函数对所有可能序列的进行全局正则化,发射特征(emission feature)权重应是未缩放的。因此如果该函数带有发射特征(emission feature),并且发射特征是任意非线性激活函数的输出,则请勿调用该函数。 - - 3.Emission的第二维度必须和标记数字(tag number)相同。 - -参数: - - **input** (LoDTensor|Tensor) - 数据类型为float32, float64的Tensor或者LoDTensor。线性链条件随机场的发射矩阵emission。输入为LoDTensor时,是一个shape为[N*D]的2-D LoDTensor,N是每一个batch中batch对应的长度数想加的总数,D是维度。当输入为Tensor时,应该是一个shape为[N x S x D]的Tensor,N是batch_size,S为序列的最大长度,D是维度。 - - **label** (Tensor|LoDTensor) - 数据类型为int64类型Tensor或者LoDTensor。该值为标签值。输入为LoDTensor时[N x 1],N是mini-batch的总数;输入为Tensor时,[N x S],N为batch数量,S为序列的最大长度。 - - **Length** (Tensor) - 数据类型为int64类型的Tensor。 shape为[M x 1]的Tensor,M为mini_batch中序列的数量。 - - **param_attr** (ParamAttr) - 可学习参数的属性,为transition矩阵。详见代码示例。 - -返回: - Emission的指数形式。shape与Emission相同。这是前向计算中的中间计算结果,在反向计算中还会复用。 - - Transition的指数形式。shape为[(D+2)*D]的二维张量。这是前向计算中的中间计算结果,在反向计算中还会复用。 - - 条件概率的对数形式。每个batch训练样本的条件概率的对数。这是一个shape为[S*1]的二维张量,S是mini-batch的序列数。注:S等于mini-batch的序列数。输出不再是LoDTensor。 - -返回类型: - Emission的指数形式。Variable(Tensor|LoDTensor):数据类型为float32, float64的Tensor或者LoDTensor。 - - Transition的指数形式。Variable(Tensor|LoDTensor):数据类型为float32, float64的Tensor或者LoDTensor。 - - 条件概率的对数形式。Variable(Tensor):数据类型为float32, float64的Tensor。 - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - input_data = fluid.layers.data(name='input_data', shape=[10], dtype='float32', lod_level=1) - label = fluid.layers.data(name='label', shape=[1], dtype='int', lod_level=1) - emission= fluid.layers.fc(input=input_data, size=10, act="tanh") - crf_cost = fluid.layers.linear_chain_crf( - input=emission, - label=label, - param_attr=fluid.ParamAttr( - name='crfw', - learning_rate=0.01)) - use_cuda = False - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(startup_program) - #using LoDTensor, define network - a = fluid.create_lod_tensor(np.random.rand(12,10).astype('float32'), [[3,3,4,2]], place) - b = fluid.create_lod_tensor(np.array([[1],[1],[2],[3],[1],[1],[1],[3],[1],[1],[1],[1]]),[[3,3,4,2]] , place) - feed1 = {'input_data':a,'label':b} - loss= exe.run(train_program,feed=feed1, fetch_list=[crf_cost]) - print(loss) - - #using padding, define network - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - input_data2 = fluid.layers.data(name='input_data2', shape=[10,10], dtype='float32') - label2 = fluid.layers.data(name='label2', shape=[10,1], dtype='int') - label_length = fluid.layers.data(name='length', shape=[1], dtype='int') - emission2= fluid.layers.fc(input=input_data2, size=10, act="tanh", num_flatten_dims=2) - crf_cost2 = fluid.layers.linear_chain_crf( - input=emission2, - label=label2, - length=label_length, - param_attr=fluid.ParamAttr( - name='crfw', - learning_rate=0.01)) - - use_cuda = False - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(startup_program) - - #define input data - cc=np.random.rand(4,10,10).astype('float32') - dd=np.random.rand(4,10,1).astype('int64') - ll=np.array([[3,3,4,2]]) - feed2 = {'input_data2':cc,'label2':dd,'length':ll} - - loss2= exe.run(train_program,feed=feed2, fetch_list=[crf_cost2]) - print(loss2) - """ - output: - [array([[ 7.8902354], - [ 7.3602567], - [ 10.004011], - [ 5.86721 ]], dtype=float32)] - """ \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/layers/locality_aware_nms_cn.rst b/doc/paddle/api/paddle/fluid/layers/locality_aware_nms_cn.rst deleted file mode 100644 index f85aead2e4ef836512851fac9e34df172dea3550..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/locality_aware_nms_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_locality_aware_nms: - -locality_aware_nms -------------------------------- - -.. py:function:: paddle.fluid.layers.locality_aware_nms(bboxes, scores, score_threshold, nms_top_k, keep_top_k, nms_threshold=0.3, normalized=True, nms_eta=1.0, background_label=-1, name=None) - - - - -**局部感知NMS** - -`局部感知NMS `_ 用于对边界框(bounding box)和评分(scores)执行局部感知非极大值抑制(LANMS)。 - -首先,根据边界框之间的IOU(交并比),对边界框和评分进行融合。 - -在NMS中,如果提供 ``score_threshold`` 阈值,则此OP贪心地选择所有得分(scores)高于 ``score_threshold`` 的检测边界框(bounding box)的子集,如果nms_top_k大于-1,则选择最大的nms_top_k置信度分数。 接着,该OP依据 adaptive nms(基于 ``nms_threshold`` 和 ``nms_eta``),删除与已选择的框IOU(交并比)高于nms_threshold 的重叠框。 - -在NMS步骤后,如果keep_top_k大于-1,则每个图像最多保留keep_top_k个框(bounding box)。 - - - -参数: - - **bboxes** (Variable) – 支持两种类型的边界框(bounding box): - - 1. (Tensor)形为[N,M,4 或 8、16、24、32]的3-D张量,表示将预测M个边界框的预测位置, N是批大小(batch size)。当边界框(bounding box)大小等于4时,每个边界框有四个坐标值,布局为 :math:`[xmin, ymin, xmax, ymax]` 。数据类型为float32或float64。 - - - **scores** (Variable) – 支持两种类型的分数: - - 1. (Tensor)具有形状 :math:`[N, C, M]` 的3-D张量表示预测的置信度。 N是批量大小 batch size,C是种类数目,M是边界框bounding box的数量。目前仅支持单个类别,所以输入维度应为 :math:`[N, 1, M]` 。请注意,M等于bboxes的第二维。数据类型为float32或float64。 - - - **background_label** (int) – 背景标签(类别)的索引,如果设置为 0 ,则忽略背景标签(类别)。如果设置为 -1 ,则考虑所有类别。默认值:-1 - - **score_threshold** (float) – 过滤掉低置信度分数的边界框的阈值。如果没有提供,请考虑所有边界框。 - - **nms_top_k** (int) – 基于 score_threshold 的过滤检测后,根据置信度保留的最大检测次数。 - - **nms_threshold** (float) – 在LANMS中用于融合检测框和剔除检测框IOU的阈值,默认值:0.3 。 - - **nms_eta** (float) – 在NMS中用于调整 nms_threshold 的参数,设为1时表示nms_threshold不变。默认值:1.0 。 - - **keep_top_k** (int) – NMS步骤后每个图像要保留的总bbox数。 -1表示在NMS步骤之后保留所有bbox。 - - **normalized** (bool) – 检测是否已经经过正则化。默认值:True 。 - - **name** (str|None) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为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}) - -返回类型:Variable,数据类型与输入一致。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - boxes = fluid.data(name='bboxes', shape=[None, 81, 8], - dtype='float32') - scores = fluid.data(name='scores', shape=[None, 1, 81], - dtype='float32') - out = fluid.layers.locality_aware_nms(bboxes=boxes, - scores=scores, - score_threshold=0.5, - nms_top_k=400, - nms_threshold=0.3, - keep_top_k=200, - normalized=False) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/lod_append_cn.rst b/doc/paddle/api/paddle/fluid/layers/lod_append_cn.rst deleted file mode 100644 index 2c7f754233a198fdcdc39d4fcb453ad56c1a81d6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/lod_append_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_layers_lod_append: - -lod_append -------------------------------- - -.. py:function:: paddle.fluid.layers.lod_append(x, level) - - - - -给 ``x`` 的LoD添加 ``level`` 。 - -简单示例: - -.. code-block:: python - - give a 1-level LodTensor x: - x.lod = [[2, 3, 1]] - x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - x.dims = [6, 1] - - level:[1, 1, 1, 1, 1, 1] - - Then we get a 2-level LodTensor: - x.lod = [[2, 3, 1], [1, 1, 1, 1, 1, 1] - x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - x.dims = [6, 1] - -参数: - - **x** (Variable)-输入变量,可以是LoDTensor或tensor。 - - **level** (list|tuple|Variable)-预添加到x的LoD里的LoD level。 - -返回:一个有着新的LoD level的输出变量 - -返回类型:Variable - -Raise: ``ValueError`` - 如果y为None或者level不可迭代。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[6, 10], lod_level=1) - out = fluid.layers.lod_append(x, [1,1,1,1,1,1]) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/lod_reset_cn.rst b/doc/paddle/api/paddle/fluid/layers/lod_reset_cn.rst deleted file mode 100644 index fbb090b26751d1a372911a7d35cf4425a2048e76..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/lod_reset_cn.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. _cn_api_fluid_layers_lod_reset: - -lod_reset -------------------------------- - -.. py:function:: paddle.fluid.layers.lod_reset(x, y=None, target_lod=None) - - - - -根据给定的参数 ``y`` 或 ``target_lod`` ,重设输入 ``x`` (LoDTensor) 的 LoD 信息。 - -参数: - - **x** (Variable) : 输入变量,类型为 Tensor 或者 LoDTensor。 - - **y** (Variable|None) : 当 ``y`` 非空时,输出 LoDTensor 的 LoD 信息将与 ``y`` 的 LoD 一致。 - - **target_lod** (list|tuple|None) : 一级 LoD,当 ``y`` 为空时,输出 LoDTensor 的 LoD 信息将与 ``target_lod`` 一致。 - -返回: - - Variable (LoDTensor),重设了 LoD 信息的 LoDTensor。 - -返回类型: - - Variable (LoDTensor)。 - -抛出异常: - - ``TypeError`` : 当 ``y`` 和 ``target_lod`` 二者均为空时抛出此异常。 - -:: - - * 例 1: - - x: 包含一级 LoD 信息的 LoDTensor - x.lod = [[ 2, 3, 1 ]] - x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - x.dims = [6, 1] - - y: None - - target_lod: [4, 2] - - Output: 包含一级 LoD 信息的 LoDTensor - out.lod = [[4, 2]] - out.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - out.dims = [6, 1] - - * 例 2: - - x: 包含一级 LoD 信息的 LoDTensor - x.lod = [[2, 3, 1]] - x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - x.dims = [6, 1] - - y: 普通 Tensor,不含 LoD 信息 - y.data = [[2, 4]] - y.dims = [1, 3] - - target_lod: 当 y 不为空时,此参数不起作用 - - Output: 包含一级 LoD 信息的 LoDTensor - out.lod = [[2, 4]] - out.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - out.dims = [6, 1] - - * 例 3: - - x: 包含一级 LoD 信息的 LoDTensor - x.lod = [[2, 3, 1]] - x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - x.dims = [6, 1] - - y: 包含二级 LoD 信息的 LoDTensor - y.lod = [[2, 2], [2, 2, 1, 1]] - y.data = [[1.1], [2.1], [3.1], [4.1], [5.1], [6.1]] - y.dims = [6, 1] - - target_lod: 当 y 不为空时,此参数不起作用 - - Output: 包含二级 LoD 信息的 LoDTensor - out.lod = [[2, 2], [2, 2, 1, 1]] - out.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - out.dims = [6, 1] - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - x = fluid.layers.data(name='x', shape=[6]) - y = fluid.layers.data(name='y', shape=[6], lod_level=2) - output = fluid.layers.lod_reset(x=x, y=y) - - # Create an executor using CPU as an example - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - # Execute - x_tensor = fluid.core.LoDTensor() - x_tensor.set(numpy.ones([6]).astype(numpy.float32), place) - y_ndarray = numpy.ones([6]).astype(numpy.float32) - y_lod = [[2, 2], [2, 2, 1, 1]] - y_tensor = fluid.create_lod_tensor(y_ndarray, y_lod, place) - - res, = exe.run(fluid.default_main_program(), - feed={'x':x_tensor, 'y':y_tensor}, - fetch_list=[output], - return_numpy=False) - print(res) - # Output Value: - # lod: [[0, 2, 4], [0, 2, 4, 5, 6]] - # dim: 6 - # layout: NCHW - # dtype: float - # data: [1 1 1 1 1 1] diff --git a/doc/paddle/api/paddle/fluid/layers/loss/bpr_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/bpr_loss_cn.rst deleted file mode 100644 index 06195e5198988de8eb5cbdaf2460ea20bc3482bb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/bpr_loss_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_bpr_loss: - -bpr_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.bpr_loss(input, label, name=None) - -:alias_main: paddle.nn.functional.bpr_loss -:alias: paddle.nn.functional.bpr_loss,paddle.nn.functional.loss.bpr_loss -:old_api: paddle.fluid.layers.bpr_loss - - - - -贝叶斯个性化排序损失函数(Bayesian Personalized Ranking Loss Operator ) - -该OP属于pairwise类型的损失函数。损失值由下式计算而得: - -.. math:: - - Y[i] = 1/(N[i] - 1) * \sum_j{\log(\sigma(X[i, Label[i]]-X[i, j]))} - -其中: - - :math:`X` :输入值,一个形为[T x D]的2-D Tensor, 此处为logit值。 - - :math:`N[i]` : 在时间步i的正例和负例的总和。 - - :math:`Label[i]` :在时间步i的正例下标。 - - :math:`\sigma` :激活函数。 - - :math:`Y` :输出值,一个形为[T x 1]的2-D Tensor。 - - -更多细节请参考 `Session Based Recommendations with Recurrent Neural Networks` - -参数: - - **input** (Variable) - 形为[T x D] , Tensor类型时T为batch大小,LoDTensor类型时T为mini-batch的总时间步。D 为正例加负例的个数。该输入为logits而非概率。数据类型是float32或float64。 - - **label** (Variable) - 形为[T x 1],表示input中正例的下标,数据类型为int64。。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 形为[T x 1]的2D张量,数据类型同input相同,表示bpr损失值。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - neg_size = 3 - # label=[0] - label = fluid.layers.data( - name="label", shape=[1], dtype="int64") - # predict = [0.1, 0.2, 0.3, 0.4] - predict = fluid.layers.data( - name="predict", shape=[neg_size + 1], dtype="float32") - # bpr_Loss : label [0] 表示predict中下标0表示正例,即为0.1, 负例有3个为0.2,0.3,0.4 - cost = fluid.layers.bpr_loss(input=predict, label=label) - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/center_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/center_loss_cn.rst deleted file mode 100644 index 82be3da0d52e96c7f9a3d97f1943691513ab4450..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/center_loss_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_center_loss: - -center_loss -------------------------------- - - -.. py:function:: paddle.fluid.layers.center_loss(input, label, num_classes, alpha, param_attr, update_center=True) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.functional.center_loss -:alias: paddle.nn.functional.center_loss,paddle.nn.functional.loss.center_loss -:old_api: paddle.fluid.layers.center_loss - - - -该OP接收一个来自于最后一个隐藏层的输出和目标标签作为输入,返回损失值。为每一个类别提供一个类别中心,计算mini-batch中每个样本与对应类别中心的距离的平均值作为center loss。 - -对于输入,\(X\)和标签\(Y\),计算公式为: - - .. math:: - - out = \frac{1}{2}(X - Y)^2 - - - -参数: - - - **input** (Variable) - 输入形状为[N x M]的2维张量,数据类型为float32,float64。 - - **label** (Variable) - 输入的标签,一个形状为为[N x 1]的2维张量,N表示batch size,数据类型为int32。 - - **num_class** (int32) - 输入类别的数量。 - - **alpha** (float32|float64|Variable) - 学习率。数据类型为float32或者float64。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **update_center** (bool) - 是否更新类别中心的参数。 - -返回:形状为[N x 1]的2维Tensor|LoDTensor。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - input = fluid.layers.data(name='x',shape=[20,30],dtype='float32') - label = fluid.layers.data(name='y',shape=[20,1],dtype='int64') - num_classes = 1000 - alpha = 0.01 - param_attr = fluid.initializer.Xavier(uniform=False) - center_loss=fluid.layers.center_loss(input=input, - label=label, - num_classes=1000, - alpha=alpha, - param_attr=fluid.initializer.Xavier(uniform=False), - update_center=True) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/cross_entropy_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/cross_entropy_cn.rst deleted file mode 100644 index be571e656a7ee8cdfbd68af0038fa31a0a7fafc5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/cross_entropy_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_cross_entropy: - -cross_entropy -------------------------------- - -.. py:function:: paddle.fluid.layers.cross_entropy(input, label, soft_label=False, ignore_index=-100) - -:alias_main: paddle.nn.functional.cross_entropy -:alias: paddle.nn.functional.cross_entropy,paddle.nn.functional.loss.cross_entropy -:old_api: paddle.fluid.layers.cross_entropy - - - -该OP计算输入input和标签label间的交叉熵,可用于计算硬标签或软标签的交叉熵。 - -1. 硬标签交叉熵算法:若soft_label = False, :math:`label[i_1, i_2, ..., i_k]` 表示每个样本的硬标签值: - - .. math:: - \\output[i_1, i_2, ..., i_k]=-log(input[i_1, i_2, ..., i_k, j]), label[i_1, i_2, ..., i_k] = j, j != ignore\_index\\ - -2. 软标签交叉熵算法:若soft_label = True, :math:`label[i_1, i_2, ..., i_k, j]` 表明每个样本对应类别j的软标签值: - - .. math:: - \\output[i_1, i_2, ..., i_k]= -\sum_{j}label[i_1,i_2,...,i_k,j]*log(input[i_1, i_2, ..., i_k,j])\\ - -参数: - - **input** (Variable) – 维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - - **label** (Variable) – 输入input对应的标签值。若soft_label=False,要求label维度为 :math:`[N_1, N_2, ..., N_k]` 或 :math:`[N_1, N_2, ..., N_k, 1]` ,数据类型为int64,且值必须大于等于0且小于D;若soft_label=True,要求label的维度、数据类型与input相同,且每个样本各软标签的总和为1。 - - **soft_label** (bool) – 指明label是否为软标签。默认为False,表示label为硬标签;若soft_label=True则表示软标签。 - - **ignore_index** (int) – 指定一个忽略的标签值,此标签值不参与计算,负值表示无需忽略任何标签值。仅在soft_label=False时有效。 默认值为-100。 - -返回: 表示交叉熵结果的Tensor,数据类型与input相同。若soft_label=False,则返回值维度与label维度相同;若soft_label=True,则返回值维度为 :math:`[N_1, N_2, ..., N_k, 1]` 。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - class_num = 7 - x = fluid.layers.data(name='x', shape=[3, 10], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - predict = fluid.layers.fc(input=x, size=class_num, act='softmax') - cost = fluid.layers.cross_entropy(input=predict, label=label) diff --git a/doc/paddle/api/paddle/fluid/layers/loss/edit_distance_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/edit_distance_cn.rst deleted file mode 100644 index 5d35868e1336614c624f5565429537bb6698e146..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/edit_distance_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_edit_distance: - - -edit_distance -------------------------------- - -.. py:function:: paddle.fluid.layers.edit_distance(input,label,normalized=True,ignored_tokens=None, input_length=None, label_length=None) - -:alias_main: paddle.nn.functional.edit_distance -:alias: paddle.nn.functional.edit_distance,paddle.nn.functional.loss.edit_distance -:old_api: paddle.fluid.layers.edit_distance - - - -该OP计算一批给定字符串及其参照字符串间的编辑距离。编辑距离也称Levenshtein距离,通过计算从一个字符串变成另一个字符串所需的最少操作步骤来衡量两个字符串的相异度。这里的操作包括插入、删除和替换。 - -比如给定假设字符串A=“kitten”和参照字符串B=“sitting”,从A变换成B编辑距离为3,至少需要两次替换和一次插入: - -“kitten”->“sitten”->“sittn”->“sitting” - -输入为LoDTensor/Tensor,包含假设字符串(带有表示批尺寸的总数)和分离信息(具体为LoD信息或者 ``input_length`` )。并且批尺寸大小的参照字符串和输入LoDTensor的顺序保持一致。 - -输出包含批尺寸大小的结果,代表一对字符串中每个字符串的编辑距离。如果Attr(normalized)为真,编辑距离则处以参照字符串的长度。 - -参数: - - **input** (Variable) - 假设字符串的索引,rank为2的Tensor或LoDTensor,数据类型为int64。 - - **label** (Variable) - 参照字符串的索引,rank为2的Tensor或LoDTensor,数据类型为int64。 - - **normalized** (bool)-表示是否用参照字符串的长度进行归一化,默认值为True。 - - **ignored_tokens** (list)-计算编辑距离前需要移除的token,默认值为None。 - - **name** (None|str) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_name` ,默认值为None。 - -返回:包含有形为[batch_size,1]的编辑距离和形为[ ]的序列数元组。 - -返回类型:元组 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # 使用 LoDTensor - x_lod = fluid.layers.data(name='x_lod', shape=[1], dtype='int64', lod_level=1) - y_lod = fluid.layers.data(name='y_lod', shape=[1], dtype='int64', lod_level=1) - distance_lod, seq_num_lod = fluid.layers.edit_distance(input=x_lod, label=y_lod) - - # 使用 Tensor - x_seq_len = 5 - y_seq_len = 6 - x_pad = fluid.layers.data(name='x_pad', shape=[x_seq_len], dtype='int64') - y_pad = fluid.layers.data(name='y_pad', shape=[y_seq_len], dtype='int64') - x_len = fluid.layers.data(name='x_len', shape=[], dtype='int64') - y_len = fluid.layers.data(name='y_len', shape=[], dtype='int64') - distance_pad, seq_num_pad = fluid.layers.edit_distance( - input=x_pad, label=y_pad, input_length=x_len, label_length=y_len) diff --git a/doc/paddle/api/paddle/fluid/layers/loss/hsigmoid_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/hsigmoid_cn.rst deleted file mode 100644 index fa8a9704fe470bea9ceef5c53506ece75b80a44d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/hsigmoid_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_hsigmoid: - -hsigmoid -------------------------------- - - -.. py:function:: paddle.fluid.layers.hsigmoid(input, label, num_classes, param_attr=None, bias_attr=None, name=None, path_table=None, path_code=None, is_custom=False, is_sparse=False) - -:api_attr: 声明式编程模式(静态图) - - - -层次sigmoid(hierarchical sigmoid),该OP通过构建一个分类二叉树来降低计算复杂度,主要用于加速语言模型的训练过程。 - -该OP建立的二叉树中每个叶节点表示一个类别(单词),每个非叶子节点代表一个二类别分类器(sigmoid)。对于每个类别(单词),都有一个从根节点到它的唯一路径,hsigmoid累加这条路径上每个非叶子节点的损失得到总损失。 - -相较于传统softmax的计算复杂度 :math:`O(N)` ,hsigmoid可以将计算复杂度降至 :math:`O(logN)` ,其中 :math:`N` 表示类别总数(字典大小)。 - -若使用默认树结构,请参考 `Hierarchical Probabilistic Neural Network Language Model `_ 。 - -若使用自定义树结构,请将参数 ``is_custom`` 设置为True,并完成以下步骤(以语言模型为例): - -1. 使用自定义词典来建立二叉树,每个叶结点都应该是词典中的单词; - -2. 建立一个dict类型数据结构,用于存储 **单词id -> 该单词叶结点至根节点路径** 的映射,即路径表 ``path_table`` 参数; - -3. 建立一个dict类型数据结构,用于存储 **单词id -> 该单词叶结点至根节点路径的编码** 的映射,即路径编码 ``path_code`` 参数。 编码是指每次二分类的标签,1为真,0为假; - -4. 每个单词都已经有自己的路径和路径编码,当对于同一批输入进行操作时,可以同时传入一批路径和路径编码进行运算。 - -参数: - - **input** (Variable) - 输入Tensor。数据类型为float32或float64,形状为 ``[N, D]`` ,其中 ``N`` 为minibatch的大小,``D`` 为特征大小。 - - **label** (Variable) - 训练数据的标签。数据类型为int64,形状为 ``[N, 1]`` 。 - - **num_classes** (int) - 类别总数(字典大小)必须大于等于2。若使用默认树结构,即当 ``is_custom=False`` 时 ,必须设置该参数。若使用自定义树结构,即当 ``is_custom=True`` 时,它取值应为自定义树结构的非叶节点的个数,用于指定二分类的类别总数。 - - **param_attr** (ParamAttr,可选) - 该OP可学习参数的属性。可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 该OP将利用 ``param_attr`` 属性来创建ParamAttr实例。如果没有设置 ``param_attr`` 的初始化函数,那么参数将采用Xavier初始化。默认值为None。 - - **bias_attr** (ParamAttr, 可选) - 该OP的偏置参数的属性。可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 该OP将利用 ``bias_attr`` 属性来创建ParamAttr实例。如果没有设置 ``bias_attr`` 的初始化函数,参数初始化为0.0。默认值为None。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **path_table** (Variable,可选) – 存储每一批样本从类别(单词)到根节点的路径,按照从叶至根方向存储。 数据类型为int64,形状为 ``[N, L]`` ,其中L为路径长度。``path_table`` 和 ``path_code`` 应具有相同的形状, 对于每个样本i,path_table[i]为一个类似np.ndarray的结构,该数组内的每个元素都是其双亲结点权重矩阵的索引。默认值为None。 - - **path_code** (Variable,可选) – 存储每一批样本从类别(单词)到根节点的路径编码,按从叶至根方向存储。数据类型为int64,形状为 ``[N, L]``。默认值为None。 - - **is_custom** (bool,可选) – 是否使用用户自定义二叉树取代默认二叉树结构。如果设置为True,请务必设置 ``path_table`` , ``path_code`` , ``num_classes`` ,否则必须设置num_classes。默认值为False。 - - **is_sparse** (bool,可选) – 是否使用稀疏更新方式。如果设置为True,W的梯度和输入梯度将会变得稀疏。默认值为False。 - -返回: 层次sigmoid计算后的Tensor,形状为[N, 1],数据类型和 ``input`` 一致。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.fill_constant(shape=[4, 3], value=0.9, dtype='float32') - # x = [[0.9, 0.9, 0.9], [0.9, 0.9, 0.9], [0.9, 0.9, 0.9], [0.9, 0.9, 0.9]] - y = fluid.layers.fill_constant( - shape=[4, 1], value=1, dtype='int64') - # y = [[1], [1], [1], [1]] - out = fluid.layers.hsigmoid(input=x, label=y, num_classes=2, param_attr=fluid.initializer.Constant( - value=0.05), bias_attr=fluid.initializer.Constant(value=.0)) - # out = [[0.62792355], [0.62792355], [0.62792355], [0.62792355]] diff --git a/doc/paddle/api/paddle/fluid/layers/loss/huber_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/huber_loss_cn.rst deleted file mode 100644 index 753e38949351d8d6001d3e6df6799a8c27fa68bf..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/huber_loss_cn.rst +++ /dev/null @@ -1,58 +0,0 @@ -.. _cn_api_fluid_layers_huber_loss: - -huber_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.huber_loss(input, label, delta) - -:alias_main: paddle.nn.functional.huber_loss -:alias: paddle.nn.functional.huber_loss,paddle.nn.functional.loss.huber_loss -:old_api: paddle.fluid.layers.huber_loss - - - - -该OP计算输入(input)与标签(label)之间的Huber损失。Huber损失是常用的回归损失之一,相较于平方误差损失,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] 或[batch_size]的Tensor。数据类型为float32或float64。 - - **label** (Variable) - 输入的真实标签,维度为[batch_size, 1] 或[batch_size]的Tensor。数据类型为float32或float64。 - - **delta** (float) - Huber损失的阈值参数,用于控制Huber损失对线性误差或平方误差的侧重。数据类型为float32。 - -返回: 计算出的Huber损失,数据维度和数据类型与label相同的Tensor。 - -返回类型: Variable - - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - DATATYPE='float32' - input_data = np.array([[1.],[2.],[3.],[4.]]).astype(DATATYPE) - label_data = np.array([[3.],[3.],[4.],[4.]]).astype(DATATYPE) - - x = fluid.layers.data(name='input', shape=[1], dtype=DATATYPE) - y = fluid.layers.data(name='label', shape=[1], dtype=DATATYPE) - loss = fluid.layers.huber_loss(input=x, label=y, delta=1.0) - - place = fluid.CPUPlace() - #place = fluid.CUDAPlace(0) - exe = fluid.Executor(place) - HuberLoss, = exe.run(feed={'input':input_data ,'label':label_data}, fetch_list=[loss.name]) - print(HuberLoss) #[[1.5], [0.5], [0.5], [0. ]], dtype=float32 diff --git a/doc/paddle/api/paddle/fluid/layers/loss/kldiv_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/kldiv_loss_cn.rst deleted file mode 100644 index 8fc92afbd9748fe5499eb8e8aa0e9add97d24d8b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/kldiv_loss_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_layers_kldiv_loss: - -kldiv_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.kldiv_loss(x, target, reduction='mean', name=None) - -:alias_main: paddle.nn.functional.kldiv_loss -:alias: paddle.nn.functional.kldiv_loss,paddle.nn.functional.loss.kldiv_loss -:old_api: paddle.fluid.layers.kldiv_loss - - - -该OP计算输入(X)和输入(Target)之间的Kullback-Leibler散度损失。注意其中输入(X)应为对数概率值,输入(Target)应为概率值。 - -kL发散损失计算如下: - -.. math:: - - l(x, y) = y * (log(y) - x) - -:math:`x` 为输入(X),:math:`y` 输入(Target)。 - -当 ``reduction`` 为 ``none`` 时,输出损失与输入(x)形状相同,各点的损失单独计算,不会对结果做reduction 。 - -当 ``reduction`` 为 ``mean`` 时,输出损失为[1]的形状,输出为所有损失的平均值。 - -当 ``reduction`` 为 ``sum`` 时,输出损失为[1]的形状,输出为所有损失的总和。 - -当 ``reduction`` 为 ``batchmean`` 时,输出损失为[N]的形状,N为批大小,输出为所有损失的总和除以批量大小。 - -参数: - - **x** (Variable) - KL散度损失算子的输入张量。维度为[N, \*]的多维Tensor,其中N是批大小,\*表示任何数量的附加维度,数据类型为float32或float64。 - - **target** (Variable) - KL散度损失算子的张量。与输入 ``x`` 的维度和数据类型一致的多维Tensor。 - - **reduction** (Variable)-要应用于输出的reduction类型,可用类型为‘none’ | ‘batchmean’ | ‘mean’ | ‘sum’,‘none’表示无reduction,‘batchmean’ 表示输出的总和除以批大小,‘mean’ 表示所有输出的平均值,‘sum’表示输出的总和。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:Variable(Tensor) KL散度损失。 - -返回类型:变量(Variable),数据类型与输入 ``x`` 一致。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - # 'batchmean' reduction, loss shape 为[N] - x = fluid.data(name='x', shape=[None,4,2,2], dtype='float32') # shape=[-1, 4, 2, 2] - target = fluid.layers.data(name='target', shape=[4,2,2], dtype='float32') - loss = fluid.layers.kldiv_loss(x=x, target=target, reduction='batchmean') # shape=[-1] - - # 'mean' reduction, loss shape 为[1] - x = fluid.data(name='x', shape=[None,4,2,2], dtype='float32') # shape=[-1, 4, 2, 2] - target = fluid.layers.data(name='target', shape=[4,2,2], dtype='float32') - loss = fluid.layers.kldiv_loss(x=x, target=target, reduction='mean') # shape=[1] - - # 'sum' reduction, loss shape 为[1] - x = fluid.data(name='x', shape=[None,4,2,2], dtype='float32') # shape=[-1, 4, 2, 2] - target = fluid.layers.data(name='target', shape=[4,2,2], dtype='float32') - loss = fluid.layers.kldiv_loss(x=x, target=target, reduction='sum') # shape=[1] - - # 'none' reduction, loss shape 与X相同 - x = fluid.data(name='x', shape=[None,4,2,2], dtype='float32') # shape=[-1, 4, 2, 2] - target = fluid.layers.data(name='target', shape=[4,2,2], dtype='float32') - loss = fluid.layers.kldiv_loss(x=x, target=target, reduction='none') # shape=[-1, 4, 2, 2] - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/margin_rank_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/margin_rank_loss_cn.rst deleted file mode 100644 index 0412f85fc6f91c9534d485ab7ac7584d74e80251..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/margin_rank_loss_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_margin_rank_loss: - -margin_rank_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.margin_rank_loss(label, left, right, margin=0.1, name=None) - -:alias_main: paddle.nn.functional.margin_rank_loss -:alias: paddle.nn.functional.margin_rank_loss,paddle.nn.functional.loss.margin_rank_loss -:old_api: paddle.fluid.layers.margin_rank_loss - - - -margin rank loss(间隔排序损失)层。在排序问题中,它可以比较来自排序网络的输入 ``left`` 和输入 ``right`` 的得分。 - -可用如下等式定义: - -.. math:: - rank\_loss = max(0, -label * (left - right) + margin) - - -参数: - - **label** (Variable) – 表示输入 ``left`` 的真实排序是否高于输入 ``right`` , 数据类型为 float32。 - - **left** (Variable) – 输入 ``left`` 的排序得分, 数据类型为 float32 。 - - **right** (Variable) – 输入 ``right`` 的排序得分, 数据类型为 float32。 - - **margin** (float) – 指定的间隔。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 排序损失 - -返回类型: Variable - -抛出异常: - - ``ValueError`` - ``label`` , ``left`` , ``right`` 有一者不为Variable类型时,抛出此异常 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - label = fluid.layers.data(name="label", shape=[-1, 1], dtype="float32") - left = fluid.layers.data(name="left", shape=[-1, 1], dtype="float32") - right = fluid.layers.data(name="right", shape=[-1, 1], dtype="float32") - out = fluid.layers.margin_rank_loss(label, left, right) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/mse_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/mse_loss_cn.rst deleted file mode 100644 index 59678570f9e91da8e2ad46212955ea0802f8a462..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/mse_loss_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_fluid_layers_mse_loss: - -mse_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.mse_loss(input,label) - -:alias_main: paddle.nn.functional.mse_loss -:alias: paddle.nn.functional.mse_loss,paddle.nn.functional.loss.mse_loss -:old_api: paddle.fluid.layers.mse_loss - - - -该OP用于计算预测值和目标值的均方差误差。 - -对于预测值input和目标值label,公式为: - -.. math:: - - Out = MEAN((input-label)^{2}) - -参数: - - **input** (Variable) - 预测值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - - **label** (Variable) - 目标值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - -返回:预测值和目标值的均方差 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - y = fluid.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.data(name='y_predict', shape=[1], dtype='float32') - cost = fluid.layers.mse_loss(input=y_predict, label=y) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/nce_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/nce_cn.rst deleted file mode 100644 index ef4532b84619f8444cd7a01c6821f7eb26c2739b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/nce_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_nce: - -nce -------------------------------- - - -.. py:function:: paddle.fluid.layers.nce(input, label, num_total_classes, sample_weight=None, param_attr=None, bias_attr=None, num_neg_samples=None, name=None, sampler='uniform', custom_dist=None, seed=0, is_sparse=False) - -:api_attr: 声明式编程模式(静态图) - - - -计算并返回噪音对比估计损失值( noise-contrastive estimation training loss)。 -请参考 `Noise-contrastive estimation: A new estimation principle for unnormalized statistical models -`_ -该层默认使用均匀分布进行抽样。 - -参数: - - **input** (Variable) - 输入变量, 2-D 张量,形状为 [batch_size, dim],数据类型为 float32 或者 float64。 - - **label** (Variable) - 标签,2-D 张量,形状为 [batch_size, num_true_class],数据类型为 int64。 - - **num_total_classes** (int) - 所有样本中的类别的总数。 - - **sample_weight** (Variable,可选) - 存储每个样本权重,shape 为 [batch_size, 1] 存储每个样本的权重。每个样本的默认权重为1.0。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) : 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **num_neg_samples** (int) - 负样例的数量,默认值是10。 - - **name** (str,可选) - 该layer的名称,具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **sampler** (str,可选) – 采样器,用于从负类别中进行取样。可以是 ``uniform``, ``log_uniform`` 或 ``custom_dist`` , 默认 ``uniform`` 。 - - **custom_dist** (nd.array, 可选) – 第0维的长度为 ``num_total_classes`` 。 如果采样器类别为 ``custom_dist`` ,则使用此参数。custom_dist[i] 是第i个类别被取样的概率。默认为 None - - **seed** (int,可选) – 采样器使用的seed。默认为0 - - **is_sparse** (bool,可选) – 标志位,指明是否使用稀疏更新, 为 ``True`` 时 :math:`weight@GRAD` 和 :math:`bias@GRAD` 的类型会变为 SelectedRows。默认为 ``False`` 。 - -返回: nce loss,数据类型与 **input** 相同 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - window_size = 5 - words = [] - for i in range(window_size): - words.append(fluid.data( - name='word_{0}'.format(i), shape=[-1, 1], dtype='int64')) - - dict_size = 10000 - label_word = int(window_size / 2) + 1 - - embs = [] - for i in range(window_size): - if i == label_word: - continue - - emb = fluid.layers.embedding(input=words[i], size=[dict_size, 32], - param_attr='embed', is_sparse=True) - embs.append(emb) - - embs = fluid.layers.concat(input=embs, axis=1) - loss = fluid.layers.nce(input=embs, label=words[label_word], - num_total_classes=dict_size, param_attr='nce.w_0', - bias_attr='nce.b_0') - - #or use custom distribution - dist = np.array([0.05,0.5,0.1,0.3,0.05]) - loss = fluid.layers.nce(input=embs, label=words[label_word], - num_total_classes=5, param_attr='nce.w_1', - bias_attr='nce.b_1', - num_neg_samples=3, - sampler="custom_dist", - custom_dist=dist) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/npair_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/npair_loss_cn.rst deleted file mode 100644 index 2b6c681656b6c7d452fcdf1999d52dd2c2cdcad1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/npair_loss_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_npair_loss: - -npair_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.npair_loss(anchor, positive, labels, l2_reg=0.002) - -:alias_main: paddle.nn.functional.npair_loss -:alias: paddle.nn.functional.npair_loss,paddle.nn.functional.loss.npair_loss -:old_api: paddle.fluid.layers.npair_loss - - - -**Npair Loss Layer** - -参考阅读 `Improved Deep Metric Learning with Multi class N pair Loss Objective `_ - -NPair损失需要成对的数据。NPair损失分为两部分:第一部分是对嵌入向量进行L2正则化;第二部分是每一对数据的相似性矩阵的每一行和映射到ont-hot之后的标签的交叉熵损失的和。 - -参数: - - **anchor** (Variable) - 锚点图像的嵌入Tensor,形状为[batch_size, embedding_dims]的2-D Tensor。数据类型:float32和float64。 - - **positive** (Variable) - 正例图像的嵌入Tensor,形状为[batch_size, embedding_dims]的2-D Tensor。数据类型:float32和float64。 - - **labels** (Variable) - 标签向量,形状为[batch_size]的1-DTensor。数据类型:float32、float64和int64。 - - **l2_reg** (float) - 嵌入向量的L2正则化系数,默认:0.002。 - -返回: Tensor。经过npair loss计算之后的结果,是一个值。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - anchor = fluid.layers.data( - name = 'anchor', shape = [18, 6], dtype = 'float32', append_batch_size=False) - positive = fluid.layers.data( - name = 'positive', shape = [18, 6], dtype = 'float32', append_batch_size=False) - labels = fluid.layers.data( - name = 'labels', shape = [18], dtype = 'float32', append_batch_size=False) - - res = fluid.layers.npair_loss(anchor, positive, labels, l2_reg = 0.002) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - a = np.random.rand(18, 6).astype("float32") - p = np.random.rand(18, 6).astype("float32") - l = np.random.rand(18).astype("float32") - output = exe.run(feed={"anchor": a, "positive": p, "labels": l}, fetch_list=[res]) - print(output) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/rank_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/rank_loss_cn.rst deleted file mode 100644 index 3f6f5b2a83df84fa477006499891176be909b1bf..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/rank_loss_cn.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. _cn_api_fluid_layers_rank_loss: - -rank_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.rank_loss(label, left, right, name=None) - -:alias_main: paddle.nn.functional.rank_loss -:alias: paddle.nn.functional.rank_loss,paddle.nn.functional.loss.rank_loss -:old_api: paddle.fluid.layers.rank_loss - - - -该OP实现了RankNet模型中的排序损失层。RankNet是一种文档对(pairwise)排序模型,训练样本由一对文档(假设用A、B来表示)组成。标签(假设用P来表示)表示A的排名是否高于B。更多详情请参考:`RankNet `_ - -排序损失层有三个输入: :math:`o_i` 、 :math:`o_j` 和 :math:`\tilde{P_{ij}}` ,输入分别表示RankNet模型对文档A、B的输出得分和标签P的值;排序损失层的输入是批输入数据(批大小大于等于1);标签P的取值可以为: {0, 1} 或 {0, 0.5, 1} ,其中,0.5表示输入文档对排序相同。输入数据的排序损失 :math:`C_{i,j}` 计算过程如下: - -.. math:: - - C_{i,j} &= -\tilde{P_{ij}} * o_{i,j} + \log(1 + e^{o_{i,j}}) - - o_{i,j} &= o_i - o_j - - \tilde{P_{i,j}} &= \left \{0, 0.5, 1 \right \} \ or \ \left \{0, 1 \right \} - -参数: - - **label** (Variable):维度为 :math:`[batch,1]` 的2-D ``Tensor`` ,数据类型为float32。其中batch表示批数据的大小。表示A的排名是否高于B。 - - **left** (Variable):维度为 :math:`[batch,1]` 的2-D ``Tensor`` ,数据类型为float32。其中batch表示批数据的大小。表示RankNet对文档A的输出得分。 - - **right** (Variable):维度为 :math:`[batch,1]` 的2-D ``Tensor`` ,数据类型为float32。其中batch表示批数据的大小。表示RankNet对文档B的输出得分。 - - **name** (str, 可选):具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:表示排序损失层输出值的 ``Tensor`` ,数据类型为float32,返回值维度为 :math:`[batch,1]` 。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` - 输入 ``label`` , ``left`` ,和 ``right`` 至少有一个不是 ``Variable`` 类型。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - label = fluid.layers.data(name="label", shape=[-1, 1], dtype="float32") - left = fluid.layers.data(name="left", shape=[-1, 1], dtype="float32") - right = fluid.layers.data(name="right", shape=[-1, 1], dtype="float32") - out = fluid.layers.rank_loss(label, left, right) - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/sampled_softmax_with_cross_entropy_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/sampled_softmax_with_cross_entropy_cn.rst deleted file mode 100644 index 82ca1725079152ea0b411e64ccde808984d8a5a9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/sampled_softmax_with_cross_entropy_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_layers_sampled_softmax_with_cross_entropy: - -sampled_softmax_with_cross_entropy ----------------------------------------------- - -.. py:function:: paddle.fluid.layers.sampled_softmax_with_cross_entropy(logits, label, num_samples, num_true=1, remove_accidental_hits=True, use_customized_samples=False, customized_samples=None, customized_probabilities=None, seed=0) - -:alias_main: paddle.nn.functional.sampled_softmax_with_cross_entropy -:alias: paddle.nn.functional.sampled_softmax_with_cross_entropy,paddle.nn.functional.loss.sampled_softmax_with_cross_entropy -:old_api: paddle.fluid.layers.sampled_softmax_with_cross_entropy - - - -**Sampled Softmax With Cross Entropy Operator** - -对于较大的输出类,采样的交叉熵损失Softmax被广泛地用作输出层。该运算符为所有示例采样若干个样本,并计算每行采样张量的SoftMax标准化值,然后计算交叉熵损失。 - -由于此运算符在内部对逻辑执行SoftMax,因此它需要未分级的逻辑。此运算符不应与SoftMax运算符的输出一起使用,因为这样会产生不正确的结果。 - -对于T真标签(T>=1)的示例,我们假设每个真标签的概率为1/T。对于每个样本,使用对数均匀分布生成S个样本。真正的标签与这些样本连接起来,形成每个示例的T+S样本。因此,假设逻辑的形状是[N x K],样本的形状是[N x(T+S)]。对于每个取样标签,计算出一个概率,对应于[Jean et al., 2014]( `http://arxiv.org/abs/1412.2007 `_ )中的Q(y|x)。 - -根据采样标签对逻辑进行采样。如果remove_accidental_hits为“真”,如果sample[i, j] 意外匹配“真”标签,则相应的sampled_logits[i, j]减去1e20,使其SoftMax结果接近零。然后用logQ(y|x)减去采样的逻辑,这些采样的逻辑和重新索引的标签被用来计算具有交叉熵的SoftMax。 - -参数: - - **logits** (Variable)- 非比例对数概率,是一个二维张量,形状为[N x K]。N是批大小,K是类别号。 - - **label** (Variable)- 基本事实,是一个二维张量。label是一个张量,其形状为[N x T],其中T是每个示例的真实标签数。 - - **num_samples** (int)- 每个示例的数目num_samples应该小于类的数目。 - - **num_true** (int)- 每个训练实例的目标类别总数。 - - **remove_accidental_hits** (bool)- 指示采样时是否删除意外命中的标签。如果为真,如果一个sample[i,j]意外地碰到了真标签,那么相应的sampled_logits[i,j]将被减去1e20,使其SoftMax结果接近零。默认值为True。 - - **use_customized_samples** (bool)- 是否使用自定义样本和可能性对logits进行抽样。 - - **customized_samples** (Variable)- 用户定义的示例,它是一个具有形状[N, T + S]的二维张量。S是num_samples,T是每个示例的真标签数。 - - **customized_probabilities** (Variable)- 用户定义的样本概率,与customized_samples形状相同的二维张量。 - - **seed** (int)- 用于生成随机数的随机种子,在采样过程中使用。默认值为0。 - -返回:交叉熵损失,是一个二维张量,形状为[N x 1]。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - input = fluid.layers.data(name='data', shape=[256], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - fc = fluid.layers.fc(input=input, size=100) - out = fluid.layers.sampled_softmax_with_cross_entropy( - logits=fc, label=label, num_samples=25) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/sigmoid_cross_entropy_with_logits_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/sigmoid_cross_entropy_with_logits_cn.rst deleted file mode 100644 index 18506b0f583475bad23de7f9b3c1e805ca9ada16..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/sigmoid_cross_entropy_with_logits_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_layers_sigmoid_cross_entropy_with_logits: - -sigmoid_cross_entropy_with_logits -------------------------------- - -.. py:function:: paddle.fluid.layers.sigmoid_cross_entropy_with_logits(x, label, ignore_index=-100, name=None, normalize=False) - -:alias_main: paddle.nn.functional.sigmoid_cross_entropy_with_logits -:alias: paddle.nn.functional.sigmoid_cross_entropy_with_logits,paddle.nn.functional.loss.sigmoid_cross_entropy_with_logits -:old_api: paddle.fluid.layers.sigmoid_cross_entropy_with_logits - - - -在每个类别独立的分类任务中,该OP可以计算按元素的概率误差。可以将其视为预测数据点的标签,其中标签不是互斥的。例如,一篇新闻文章可以同时关于政治,科技,体育或者同时不包含这些内容。 - -logistic loss可通过下式计算: - -.. math:: - loss = -Labels * log(sigma(X)) - (1 - Labels) * log(1 - sigma(X)) - -已知: - -.. math:: - sigma(X) = \frac{1}{1 + exp(-X)} - -代入上方计算logistic loss公式中: - -.. math:: - loss = X - X * Labels + log(1 + exp(-X)) - -为了计算稳定性,防止 :math:`exp(-X)` 溢出,当 :math:`X<0` 时,loss将采用以下公式计算: - -.. math:: - loss = max(X, 0) - X * Labels + log(1 + exp(-|X|)) - -输入 ``X`` 和 ``label`` 都可以携带LoD信息。然而输出仅采用输入 ``X`` 的LoD。 - - - -参数: - - **x** (Variable) - (Tensor, 默认 Tensor),形为 N x D 的二维张量,N为batch大小,D为类别数目。该输入是一个由先前运算得出的logit组成的张量。logit是未标准化(unscaled)的log概率, 公式为 :math:`log(\frac{p}{1-p})`, 数据类型为float32或float64。 - - **label** (Variable) - (Tensor, 默认 Tensor) 具有和 ``X`` 相同数据类型,相同形状的二维张量。该输入张量代表了每个logit的可能标签。 - - **ignore_index** (int) - (int,默认kIgnoreIndex)指定被忽略的目标值,它不会影响输入梯度。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **normalize** (bool) - 如果为true,则将输出除以除去ignore_index对应目标外的目标数,默认为False。 - -返回: Variable(Tensor, 默认Tensor), 形为 N x D 的二维张量,其值代表了按元素的logistic loss,数据类型为float32或float64。 - -返回类型:变量(Variable) - - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data( - name='data', shape=[10], dtype='float32') - label = fluid.layers.data( - name='data', shape=[10], dtype='float32') - loss = fluid.layers.sigmoid_cross_entropy_with_logits( - x=input, - label=label, - ignore_index=-1, - normalize=True) # or False - # loss = fluid.layers.reduce_sum(loss) # loss之和 - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/softmax_with_cross_entropy_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/softmax_with_cross_entropy_cn.rst deleted file mode 100644 index 9b3539fac66fb03c84eead625c1096dce81af80c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/softmax_with_cross_entropy_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_softmax_with_cross_entropy: - -softmax_with_cross_entropy -------------------------------- - -.. py:function:: paddle.fluid.layers.softmax_with_cross_entropy(logits, label, soft_label=False, ignore_index=-100, numeric_stable_mode=True, return_softmax=False, axis=-1) - -:alias_main: paddle.nn.functional.softmax_with_cross_entropy -:alias: paddle.nn.functional.softmax_with_cross_entropy,paddle.nn.functional.loss.softmax_with_cross_entropy -:old_api: paddle.fluid.layers.softmax_with_cross_entropy - - - -该OP实现了softmax交叉熵损失函数。该函数会将softmax操作、交叉熵损失函数的计算过程进行合并,从而提供了数值上更稳定的梯度值。 - -因为该运算对 ``logits`` 的 ``axis`` 维执行softmax运算,所以它需要未缩放的 ``logits`` 。该运算不应该对softmax运算的输出进行操作,否则会产生错误的结果。 - -当 ``soft_label`` 为 ``False`` 时, ``label`` 除了 ``axis`` 维度上的形状为1,其余维度和 ``logits`` 一致,表示一批数据中的每一个样本仅可分类到一个类别。 - -涉及到的等式如下: - -1. 硬标签(每个样本仅可分到一个类别) - -.. math:: - loss_j = -\text{logits}_{label_j} +\log\left(\sum_{i=0}^{K}\exp(\text{logits}_i)\right), j = 1,..., K - -2. 软标签(每个样本以一定的概率被分配至多个类别中,概率和为1) - -.. math:: - loss_j = -\sum_{i=0}^{K}\text{label}_i\left(\text{logits}_i - \log\left(\sum_{i=0}^{K}\exp(\text{logits}_i)\right)\right), j = 1,...,K - -3. 如果 ``numeric_stable_mode`` 为 ``True`` ,softmax结果首先经由下式计算得出,然后使用softmax结果和 ``label`` 计算交叉熵损失。 - -.. math:: - max_j &= \max_{i=0}^{K}{\text{logits}_i} \\ - log\_max\_sum_j &= \log\sum_{i=0}^{K}\exp(logits_i - max_j)\\ - softmax_j &= \exp(logits_j - max_j - {log\_max\_sum}_j) - -参数: - - **logits** (Variable) - 维度为任意维的多维 ``Tensor`` ,数据类型为float32或float64。表示未缩放的输入。 - - **label** (Variable) - 如果 ``soft_label`` 为True, ``label`` 是一个和 ``logits`` 维度相同的的 ``Tensor`` 。如果 ``soft_label`` 为False, ``label`` 是一个在axis维度上大小为1,其它维度上与 ``logits`` 维度相同的 ``Tensor`` 。 - - **soft_label** (bool, 可选) - 指明是否将输入标签当作软标签。默认值:False。 - - **ignore_index** (int, 可选) - 指明要无视的目标值,使其不对输入梯度有贡献。仅在 ``soft_label`` 为False时有效,默认值:kIgnoreIndex(-100)。 - - **numeric_stable_mode** (bool, 可选) – 指明是否使用一个具有更佳数学稳定性的算法。仅在 ``soft_label`` 为 False的GPU模式下生效。若 ``soft_label`` 为 True或者执行设备为CPU,算法一直具有数学稳定性。注意使用稳定算法时速度可能会变慢。默认值:True。 - - **return_softmax** (bool, 可选) – 指明是否在返回交叉熵计算结果的同时返回softmax结果。默认值:False。 - - **axis** (int, 可选) – 执行softmax计算的维度索引。其范围为 :math:`[-1,rank-1]` ,其中 ``rank`` 是输入 ``logits`` 的秩。默认值:-1。 - -返回: - - 如果 ``return_softmax`` 为 False,则返回交叉熵损失结果的 ``Tensor`` ,数据类型和 ``logits`` 一致,除了 ``axis`` 维度上的形状为1,其余维度和 ``logits`` 一致。 - - 如果 ``return_softmax`` 为 True,则返回交叉熵损失结果的 ``Tensor`` 和softmax结果的 ``Tensor`` 组成的元组。其中交叉熵损失结果的数据类型和 ``logits`` 一致,除了 ``axis`` 维度上的形状为1,其余维度上交叉熵损失结果和 ``logits`` 一致;softmax结果的数据类型和 ``logits`` 一致,维度和 ``logits`` 一致。 - -返回类型:变量或者两个变量组成的元组 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name='data', shape=[128], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - fc = fluid.layers.fc(input=data, size=100) - out = fluid.layers.softmax_with_cross_entropy(logits=fc, label=label) - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/square_error_cost_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/square_error_cost_cn.rst deleted file mode 100644 index 8fbec73a269091f9d671e11d1f182a98140272ed..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/square_error_cost_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_fluid_layers_square_error_cost: - -square_error_cost -------------------------------- - -.. py:function:: paddle.fluid.layers.square_error_cost(input,label) - -:alias_main: paddle.nn.functional.square_error_cost -:alias: paddle.nn.functional.square_error_cost,paddle.nn.functional.loss.square_error_cost -:old_api: paddle.fluid.layers.square_error_cost - - - -该OP用于计算预测值和目标值的方差估计。 - -对于预测值input和目标值label,公式为: - -.. math:: - - Out = (input-label)^{2} - -参数: - - **input** (Variable) - 预测值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - - **label** (Variable) - 目标值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - -返回:预测值和目标值的方差 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.data(name='y_predict', shape=[1], dtype='float32') - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/teacher_student_sigmoid_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/teacher_student_sigmoid_loss_cn.rst deleted file mode 100644 index 84d1000cf3ee645af81f4f1588043c349fe30d0a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/teacher_student_sigmoid_loss_cn.rst +++ /dev/null @@ -1,54 +0,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) - -:alias_main: paddle.nn.functional.teacher_student_sigmoid_loss -:alias: paddle.nn.functional.teacher_student_sigmoid_loss,paddle.nn.functional.loss.teacher_student_sigmoid_loss -:old_api: paddle.fluid.layers.teacher_student_sigmoid_loss - - - -**Teacher Student Log Loss Layer(教师--学生对数损失层)** - -定制化需求,用于student萃取teacher的值。此图层接受输入预测和目标标签,并返回teacher_student损失。 -z表示是否点击,z'表示teacher q值。label取值范围{-2,-1,[0, 2]} -teacher q值不存在时,点击时label为-1,否则为-2。 -teacher q值存在时,点击时label为z',否则为1 + z'。 - -.. math:: - - loss = max(x, 0) - x * z + log(1 + exp(-abs(x))) + max(x, 0) - x * z' + log(1 + exp(-abs(x))) - -其中: - - :math:`x` :预测输入值。 - - :math:`z` :是否点击。 - - :math:`z'` :teacher q值。 - - -参数: - - **input** (Variable) – 形状为[N x 1]的2-d Tensor,其中N是批大小batch size。 该输入是由前一个运算计算而得的概率,数据类型为float32或者float64。 - - **label** (Variable) – 具有形状[N x 1]的2-d Tensor的真实值,其中N是批大小batch_size,数据类型为float32或者float64。 - - **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 Tensor,teacher_student_sigmoid_loss。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - batch_size = 64 - label = fluid.layers.data( - name="label", shape=[batch_size, 1], dtype="int64", append_batch_size=False) - similarity = fluid.layers.data( - name="similarity", shape=[batch_size, 1], dtype="float32", append_batch_size=False) - cost = fluid.layers.teacher_student_sigmoid_loss(input=similarity, label=label) - - diff --git a/doc/paddle/api/paddle/fluid/layers/loss/warpctc_cn.rst b/doc/paddle/api/paddle/fluid/layers/loss/warpctc_cn.rst deleted file mode 100644 index dbb4c4ca829330844170359127680fe870ac618c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/loss/warpctc_cn.rst +++ /dev/null @@ -1,98 +0,0 @@ -.. _cn_api_fluid_layers_warpctc: - -warpctc -------------------------------- - -.. py:function:: paddle.fluid.layers.warpctc(input, label, blank=0, norm_by_times=False, input_length=None, label_length=None) - -:alias_main: paddle.nn.functional.warpctc -:alias: paddle.nn.functional.warpctc,paddle.nn.functional.extension.warpctc -:old_api: paddle.fluid.layers.warpctc - - - -该OP用于计算 `CTC loss `_ 。该OP的底层调用了第三方 `baidu-research::warp-ctc `_ 的实现。 - -参数: - - **input** (Variable) - 可以是3-D Tensor或2-D LoDTensor。当输入类型是3-D Tensor时,则表示输入是经过padding的定长序列,其 shape 必须是 ``[seq_length, batch_size, num_classes + 1]`` 。当输入类型是2-D LoDTensor时,则表示输入为变长序列,其shape必须为 ``[Lp,num_classes+1]`` , ``Lp`` 是所有输入序列长度之和。以上 shape 中的 ``num_classes`` 是实际类别数,不包括空白标签。该输入不需要经过 softmax 操作,因为该OP的内部对 ``input`` 做了 softmax 操作。数据类型仅支持float32。 - - **label** (Variable) - 可以是3-D Tensor或2-D LoDTensor,需要跟 ``input`` 保持一致。当输入类型为3-D Tensor时,表示输入是经过 padding 的定长序列,其 shape 为 ``[batch_size, label_length]`` ,其中, ``label_length`` 是最长的 label 序列的长度。当输入类型是2-D LoDTensor时,则表示输入为变长序列,其shape必须为 ``[Lp, 1]`` , 其中 ``Lp`` 是所有 label 序列的长度和。 ``label`` 中的数值为字符ID。数据类型支持int32。 - - **blank** (int,可选) - 空格标记的ID,其取值范围为 ``[0,num_classes+1)`` 。数据类型支持int32。缺省值为0。 - - **norm_by_times** (bool,可选) - 是否根据序列长度对梯度进行正则化。数据类型支持 bool 。缺省值为False。 - - **input_length** (Variable) - 必须是1-D Tensor。仅在输入为定长序列时使用,表示输入数据中每个序列的长度,shape为 ``[batch_size]`` 。数据类型支持int64。默认为None。 - - **label_length** (Variable) - 必须是1-D Tensor。仅在label为定长序列时使用,表示 label 中每个序列的长度,shape为 ``[batch_size]`` 。数据类型支持int64。默认为None。 - -返回:Shape为[batch_size,1]的2-D Tensor,表示每一个序列的CTC loss。数据类型与 ``input`` 一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - # using LoDTensor - import paddle.fluid as fluid - import numpy as np - - # lengths of logit sequences - seq_lens = [2,6] - # lengths of label sequences - label_lens = [2,3] - # class num - class_num = 5 - - logits = fluid.data(name='logits',shape=[None, class_num+1], - dtype='float32',lod_level=1) - label = fluid.data(name='label', shape=[None, 1], - dtype='int32', lod_level=1) - cost = fluid.layers.warpctc(input=logits, label=label) - place = fluid.CPUPlace() - x = fluid.create_lod_tensor( - np.random.rand(np.sum(seq_lens), class_num+1).astype("float32"), - [seq_lens], place) - y = fluid.create_lod_tensor( - np.random.randint(0, class_num, [np.sum(label_lens), 1]).astype("int32"), - [label_lens], place) - exe = fluid.Executor(place) - output= exe.run(fluid.default_main_program(), - feed={"logits": x,"label": y}, - fetch_list=[cost.name]) - print(output) - -.. code-block:: python - - # using Tensor - import paddle.fluid as fluid - import numpy as np - - # length of the longest logit sequence - max_seq_length = 5 - # length of the longest label sequence - max_label_length = 3 - # number of logit sequences - batch_size = 16 - # class num - class_num = 5 - logits = fluid.data(name='logits', - shape=[max_seq_length, batch_size, class_num+1], - dtype='float32') - logits_length = fluid.data(name='logits_length', shape=[None], - dtype='int64') - label = fluid.data(name='label', shape=[batch_size, max_label_length], - dtype='int32') - label_length = fluid.data(name='labels_length', shape=[None], - dtype='int64') - cost = fluid.layers.warpctc(input=logits, label=label, - input_length=logits_length, - label_length=label_length) - place = fluid.CPUPlace() - x = np.random.rand(max_seq_length, batch_size, class_num+1).astype("float32") - y = np.random.randint(0, class_num, [batch_size, max_label_length]).astype("int32") - exe = fluid.Executor(place) - output= exe.run(fluid.default_main_program(), - feed={"logits": x, - "label": y, - "logits_length": np.array([max_seq_length]*batch_size).astype("int64"), - "labels_length": np.array([max_label_length]*batch_size).astype("int64")}, - fetch_list=[cost.name]) - print(output) - diff --git a/doc/paddle/api/paddle/fluid/layers/lstm_cn.rst b/doc/paddle/api/paddle/fluid/layers/lstm_cn.rst deleted file mode 100644 index f42882efaf70c2827f07bc1bbd4f14f0e4710589..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/lstm_cn.rst +++ /dev/null @@ -1,104 +0,0 @@ -.. _cn_api_fluid_layers_lstm: - -lstm -------------------------------- - - -.. py:function:: paddle.fluid.layers.lstm(input, init_h, init_c, max_len, hidden_size, num_layers, dropout_prob=0.0, is_bidirec=False, is_test=False, name=None, default_initializer=None, seed=-1) - -:api_attr: 声明式编程模式(静态图) - - - -.. note:: - 该OP仅支持 GPU 设备运行 - -该OP实现了 LSTM,即 Long-Short Term Memory(长短期记忆)运算 - `Hochreiter, S., & Schmidhuber, J. (1997) `_。 - -该OP的实现不包括 diagonal/peephole 连接,参见 `Gers, F. A., & Schmidhuber, J. (2000) `_。 -如果需要使用 peephole 连接方法,请使用 :ref:`cn_api_fluid_layers_dynamic_lstm` 。 - -该OP对于序列中每一个时间步的计算公式如下: - -.. math:: - i_t = \sigma(W_{ix}x_{t} + W_{ih}h_{t-1} + b_{x_i} + b_{h_i}) -.. math:: - f_t = \sigma(W_{fx}x_{t} + W_{fh}h_{t-1} + b_{x_f} + b_{h_f}) -.. math:: - o_t = \sigma(W_{ox}x_{t} + W_{oh}h_{t-1} + b_{x_o} + b_{h_o}) -.. math:: - \widetilde{c_t} = tanh(W_{cx}x_t + W_{ch}h_{t-1} + b{x_c} + b_{h_c}) -.. math:: - c_t = f_t \odot c_{t-1} + i_t \odot \widetilde{c_t} -.. math:: - h_t = o_t \odot tanh(c_t) - -公式中的概念信息如下: - - :math:`x_{t}` 表示时间步 :math:`t` 的输入 - - :math:`h_{t}` 表示时间步 :math:`t` 的 hidden 状态 - - :math:`h_{t-1}, c_{t-1}` 分别表示前一个时间步的 hidden 和 cell 状态 - - :math:`\widetilde{c_t}` 表示候选的 cell 状态 - - :math:`i_t` ,:math:`f_t` 和 :math:`o_t` 分别为 input gate,forget gate,output gate - - :math:`W` 表示 weight (例如, :math:`W_{ix}` 是在计算 input gate :math:`i_t` 时,对输入 :math:`x_{t}` 做线性变换的 weight) - - :math:`b` 表示 bias (例如, :math:`b_{i}` 是 input gate 的 bias) - - :math:`\sigma` 表示 gate 的非线性激活函数,默认为 sigmoid - - :math:`\odot` 表示矩阵的 Hadamard product,即对两个维度相同的矩阵,将相同位置的元素相乘,得到另一个维度相同的矩阵 - -参数: - - **input** ( :ref:`api_guide_Variable` ) - LSTM的输入张量,维度为 :math:`[batch\_size, seq\_len, input\_dim]` 的 3-D Tensor,其中 seq_len 为序列的长度, input_dim 为序列词嵌入的维度。数据类型为 float32 或者 float64。 - - **init_h** ( :ref:`api_guide_Variable` ) – LSTM的初始 hidden 状态,维度为 :math:`[num\_layers, batch\_size, hidden\_size]` 的 3-D Tensor,其中 num_layers 是LSTM的总层数,hidden_size 是隐层维度。 如果is_bidirec = True, 维度应该为 :math:`[num\_layers*2, batch\_size, hidden\_size]` 。数据类型为 float32 或者 float64。 - - **init_c** ( :ref:`api_guide_Variable` ) - LSTM的初始 cell 状态。维度为 :math:`[num\_layers, batch\_size, hidden\_size]` 的 3-D Tensor,其中 num_layers 是LSTM的总层数,hidden_size 是隐层维度。 如果is_bidirec = True, 维度应该为 :math:`[num\_layers*2, batch\_size, hidden\_size]` 。数据类型为 float32 或者 float64。 - - **max_len** (int) – LSTM的最大长度。输入张量的第一个 input_dim 不能大于 max_len。 - - **hidden_size** (int) - LSTM hidden 状态的维度。 - - **num_layers** (int) – LSTM的总层数。例如,该参数设置为2,则会堆叠两个LSTM,其第一个LSTM的输出会作为第二个LSTM的输入。 - - **dropout_prob** (float,可选) – dropout比例,dropout 只在 rnn 层之间工作,而不是在时间步骤之间。dropout 不作用于最后的 rnn 层的 rnn 输出中。默认值为 0.0。 - - **is_bidirec** (bool,可选) – 是否是双向的LSTM。默认值为 False。 - - **is_test** (bool,可选) – 是否在测试阶段。默认值为 False。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **default_initializer** (Initializer,可选) – 用于初始化权重的初始化器,如果为None,将进行默认初始化。默认值为 None。 - - **seed** (int,可选) – LSTM中dropout的seed,如果是-1,dropout将使用随机seed。默认值为 1。 - -返回: 经过lstm运算输出的三个Tensor的tuple,包括 - -- rnn_out:LSTM hidden的输出结果的Tensor,数据类型与input一致,维度为 :math:`[batch\_size, seq\_len, hidden\_size]` 。如果 ``is_bidirec`` 设置为True,则维度为 :math:`[batch\_size, seq\_len, hidden\_size*2]` -- last_h:LSTM最后一步的hidden状态的Tensor,数据类型与input一致,维度为 :math:`[num\_layers, batch\_size, hidden\_size]` 。如果 ``is_bidirec`` 设置为True,则维度为 :math:`[num\_layers*2, batch\_size, hidden\_size]` -- last_c:LSTM最后一步的cell状态的Tensor,数据类型与input一致,维度为 :math:`[num\_layers, batch\_size, hidden\_size]` 。如果 ``is_bidirec`` 设置为True,则维度为 :math:`[num\_layers*2, batch\_size, hidden\_size]` - -返回类型: tuple( :ref:`api_guide_Variable` , :ref:`api_guide_Variable` , :ref:`api_guide_Variable` ) - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - emb_dim = 256 - vocab_size = 10000 - data = fluid.layers.data(name='x', shape=[-1, 100, 1], - dtype='int64') - emb = fluid.layers.embedding(input=data, size=[vocab_size, emb_dim], is_sparse=True) - batch_size = 20 - max_len = 100 - dropout_prob = 0.2 - hidden_size = 150 - num_layers = 1 - init_h = layers.fill_constant( [num_layers, batch_size, hidden_size], 'float32', 0.0 ) - init_c = layers.fill_constant( [num_layers, batch_size, hidden_size], 'float32', 0.0 ) - - rnn_out, last_h, last_c = layers.lstm(emb, init_h, init_c, max_len, hidden_size, num_layers, dropout_prob=dropout_prob) - rnn_out.shape # (-1, 100, 150) - last_h.shape # (1, 20, 150) - last_c.shape # (1, 20, 150) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/lstm_unit_cn.rst b/doc/paddle/api/paddle/fluid/layers/lstm_unit_cn.rst deleted file mode 100644 index 7e33fb3b748456950cbc55ac3fef511965bd82cb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/lstm_unit_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_layers_lstm_unit: - -lstm_unit -------------------------------- - - -.. py:function:: paddle.fluid.layers.lstm_unit(x_t, hidden_t_prev, cell_t_prev, forget_bias=0.0, param_attr=None, bias_attr=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - - -Long-Short Term Memory(LSTM)循环神经网络计算单元。该OP用于完成单个时间步内LSTM的计算,基于论文 `RECURRENT NEURAL NETWORK REGULARIZATION `_ 中的描述实现, - -并在forget gate(遗忘门)中增加了 ``forget_bias`` 来控制遗忘力度,公式如下: - -.. math:: - - i_{t} &= \sigma \left ( W_{x_{i}}x_{t}+W_{h_{i}}h_{t-1}+b_{i} \right ) \\ - f_{t} &= \sigma \left ( W_{x_{f}}x_{t}+W_{h_{f}}h_{t-1}+b_{f}+forget\_bias \right ) \\ - c_{t} &= f_{t}c_{t-1}+i_{t}tanh\left ( W_{x_{c}}x_{t} +W_{h_{c}}h_{t-1}+b_{c}\right ) \\ - o_{t} &= \sigma \left ( W_{x_{o}}x_{t}+W_{h_{o}}h_{t-1}+b_{o} \right ) \\ - h_{t} &= o_{t}tanh \left ( c_{t} \right ) - -其中, :math:`x_{t}` 对应 ``x_t``, 表示当前时间步的输入; :math:`h_{t-1}` 和 :math:`c_{t-1}` 对应 ``hidden_t_prev`` 和 ``cell_t_prev``,表示上一时间步的hidden和cell输出; -:math:`i_{t}, f_{t}, c_{t}, o_{t}, h_{t}` 分别为input gate(输入门)、forget gate(遗忘门)、cell、output gate(输出门)和hidden的计算。 - - -参数: - - **x_t** (Variable) - 表示当前时间步的输入的Tensor,形状为 :math:`[N, M]` ,其中 :math:`N` 为batch_size, :math:`M` 为输入的特征维度大小。数据类型为float32或float64。 - - **hidden_t_prev** (Variable) - 表示前一时间步hidden输出的Tensor,形状为 :math:`[N, D]`,其中 :math:`N` 为batch_size, :math:`D` 为LSTM中隐单元的数目。数据类型与 ``x_t`` 相同。 - - **cell_t_prev** (Variable) - 表示前一时间步cell输出的Tensor,和 ``hidden_t_prev`` 具有相同形状和数据类型。 - - **forget_bias** (float,可选) - 额外添加在遗忘门中的偏置项(参见公式)。默认值为0。 - - **param_attr** (ParamAttr,可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:Variable的二元组,包含了两个形状和数据类型均与 ``hidden_t_prev`` 相同的Tensor,分别表示hiddel和cell输出,即公式中的 :math:`h_{t}` 和 :math:`c_{t}` 。 - -返回类型:tuple - -抛出异常: - - :code:`ValueError`: ``x_t`` 的阶不为2 - - :code:`ValueError`: ``hidden_t_prev`` 的阶不为2 - - :code:`ValueError`: ``cell_t_prev`` 的阶不为2 - - :code:`ValueError`: ``x_t`` 、``hidden_t_prev`` 和 ``cell_t_prev`` 的第一维大小必须相同 - - :code:`ValueError`: ``hidden_t_prev`` 和 ``cell_t_prev`` 的第二维大小必须相同 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - dict_dim, emb_dim, hidden_dim = 128, 64, 512 - data = fluid.data(name='step_data', shape=[None], dtype='int64') - x = fluid.embedding(input=data, size=[dict_dim, emb_dim]) - pre_hidden = fluid.data( - name='pre_hidden', shape=[None, hidden_dim], dtype='float32') - pre_cell = fluid.data( - name='pre_cell', shape=[None, hidden_dim], dtype='float32') - hidden = fluid.layers.lstm_unit( - x_t=x, - hidden_t_prev=pre_hidden, - cell_t_prev=pre_cell) - diff --git a/doc/paddle/api/paddle/fluid/layers/matmul_cn.rst b/doc/paddle/api/paddle/fluid/layers/matmul_cn.rst deleted file mode 100644 index 8514a410c290fe9de6004751329d2439772bcd99..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/matmul_cn.rst +++ /dev/null @@ -1,104 +0,0 @@ -.. _cn_api_fluid_layers_matmul: - -matmul -------------------------------- - -.. py:function:: paddle.fluid.layers.matmul(x, y, transpose_x=False, transpose_y=False, alpha=1.0, name=None) - - - - -输入 ``x`` 和输入 ``y`` 矩阵相乘。 - -两个输入的形状可为任意维度,但当任一输入维度大于3时,两个输入的维度必须相等。 -实际的操作取决于 ``x`` 、 ``y`` 的维度和 ``transpose_x`` 、 ``transpose_y`` 的布尔值。具体如下: - -- 如果 ``transpose`` 为真,则对应 Tensor 的后两维会转置。假定 ``x`` 是一个 shape=[D] 的一维 Tensor,则 ``x`` 非转置形状为 [1, D],转置形状为 [D, 1]。转置之后的输入形状需满足矩阵乘法要求,即 `x_width` 与 `y_height` 相等。 - -- 转置后,输入的两个 Tensor 维度将为 2-D 或 n-D,将根据下列规则矩阵相乘: - - 如果两个矩阵都是 2-D,则同普通矩阵一样进行矩阵相乘。 - - 如果任意一个矩阵是 n-D,则将其视为带 batch 的二维矩阵乘法。 - -- 如果原始 Tensor x 或 y 的秩为 1 且未转置,则矩阵相乘后的前置或附加维度 1 将移除。 - -参数: - - **x** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **y** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **transpose_x** (bool) : 相乘前是否转置 x。 - - **transpose_y** (bool) : 相乘前是否转置 y。 - - **alpha** (float) : 输出比例,默认为 1.0。 - - **name** (str|None) : 该层名称(可选),如果设置为空,则自动为该层命名。 - -返回: - - Variable (Tensor / LoDTensor),矩阵相乘后的结果。 - -返回类型: - - Variable(变量)。 - -:: - - * 例 1: - - x: [B, ..., M, K], y: [B, ..., K, N] - out: [B, ..., M, N] - - * 例 2: - - x: [B, M, K], y: [B, K, N] - out: [B, M, N] - - * 例 3: - - x: [B, M, K], y: [K, N] - out: [B, M, N] - - * 例 4: - - x: [M, K], y: [K, N] - out: [M, N] - - * 例 5: - - x: [B, M, K], y: [K] - out: [B, M] - - * 例 6: - - x: [K], y: [K] - out: [1] - - * 例 7: - - x: [M], y: [N] - out: [M, N] - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - x = fluid.layers.data(name='x', shape=[2, 3], dtype='float32') - y = fluid.layers.data(name='y', shape=[3, 2], dtype='float32') - output = fluid.layers.matmul(x, y, True, True) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - input_x = numpy.ones([2, 3]).astype(numpy.float32) - input_y = numpy.ones([3, 2]).astype(numpy.float32) - res, = exe.run(fluid.default_main_program(), - feed={'x':input_x, 'y':input_y}, - fetch_list=[output]) - print(res) - ''' - Output Value: - [[2. 2. 2.] - [2. 2. 2.] - [2. 2. 2.]] - ''' diff --git a/doc/paddle/api/paddle/fluid/layers/matrix_nms_cn.rst b/doc/paddle/api/paddle/fluid/layers/matrix_nms_cn.rst deleted file mode 100644 index f0c8af1e6cb09f7137d40bd4899395a3cb6e4e41..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/matrix_nms_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_matrix_nms: - -matrix_nms -------------------------------- - - -.. py:function:: paddle.fluid.layers.matrix_nms(bboxes, scores, score_threshold, post_threshold, nms_top_k, keep_top_k, use_gaussian=False, gaussian_sigma=2., background_label=0, normalized=True, return_index=False, name=None) - -:alias_main: paddle.nn.functional.matrix_nms -:alias: paddle.nn.functional.matrix_nms,paddle.nn.functional.extension.matrix_nms -:old_api: paddle.fluid.layers.matrix_nms - - - -**Matrix NMS** - -该OP使用Matrix NMS算法对边界框(bounding box)和评分(scores)执行多类非极大值抑制(NMS)。 - -如果提供 ``score_threshold`` 阈值且 ``nms_top_k`` 大于-1,则选择置信度分数最大的k个框。 然后按照Matrix NMS算法对分数进行衰减。经过抑制后,如果 ``keep_top_k`` 大于-1, 则每张图片最终保留 ``keep_top_k`` 个检测框。 - -在NMS步骤后,如果keep_top_k大于-1,则每个图像最多保留keep_top_k个框(bounding box)。 - - -参数: - - **bboxes** (Variable) - 形为[N,M,4]的3-D张量,表示将预测M个边界框的预测位置, N是批大小(batch size)。当边界框(bounding box)大小等于4时,每个边界框有四个坐标值,布局为[xmin,ymin,xmax,ymax]。数据类型为float32或float64。 - - **scores** (Variable) – 形为[N,C,M]的3-D张量,表示预测的置信度。 N是批大小(batch size),C是种类数目,M是边界框bounding box的数量。对于每个类别,存在对应于M个边界框的总M个分数。请注意,M等于bboxes的第二维。数据类型为float32或float64。 - - **score_threshold** (float) – 过滤掉低置信度分数的边界框的阈值。 - - **post_threshold** (float) – 经过NMS衰减后,过滤掉低置信度分数的边界框的阈值。 - - **nms_top_k** (int) – 基于 score_threshold 的过滤检测后,根据置信度保留的最大检测次数。 - - **keep_top_k** (int) – 经过NMS抑制后, 最终保留的最大检测次数。如果设置为 -1 ,则则保留全部。 - - **use_gaussian** (bool) – 是否使用高斯函数衰减。默认值:False 。 - - **gaussian_sigma** (float) – 高斯函数的Sigma值,默认值:2.0 。 - - **background_label** (int) – 背景标签(类别)的索引,如果设置为 0 ,则忽略背景标签(类别)。如果设置为 -1 ,则考虑所有类别。默认值:0 - - **normalized** (bool) – 检测是否已经经过正则化。默认值:True 。 - - **return_index** (bool) – 是否同时返回保留检测框的序号。默认值:False 。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - **Out** (Variable) - 形为[No,6]的2-D LoDTensor,表示检测结果。每行有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}) - - **Index** (Variable) - 形为[No,1]的2-D LoDTensor,表示检测结果在整个批次中的序号。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - boxes = fluid.data(name='bboxes', shape=[None,81, 4], - dtype='float32', lod_level=1) - scores = fluid.data(name='scores', shape=[None,81], - dtype='float32', lod_level=1) - out = fluid.layers.matrix_nms(bboxes=boxes, - scores=scores, - background_label=0, - score_threshold=0.5, - post_threshold=0.1, - nms_top_k=400, - keep_top_k=200, - normalized=False) diff --git a/doc/paddle/api/paddle/fluid/layers/mean_iou_cn.rst b/doc/paddle/api/paddle/fluid/layers/mean_iou_cn.rst deleted file mode 100644 index 254c9d9e5a4200741675d7c926085526bda5862f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/mean_iou_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_mean_iou: - -mean_iou -------------------------------- - -.. py:function:: paddle.fluid.layers.mean_iou(input, label, num_classes) - - - - -该OP计算均值IOU, 均值IOU(Mean Intersection-Over-Union)是语义图像分割中的常用的评价指标之一,它首先计算每个类的IOU,然后计算类之间的平均值。IOU定义如下: - -.. math:: - - IOU = \frac{true\_positive}{true\_positive+false\_positive+false\_negative} - -先得到类别的预测结果,然后从中计算均值-IOU。 - -参数: - - **input** (Variable) - 分割类别预测结果,类型为int32或int64的多维Tensor。 - - **label** (Variable) - 真实label,类型为int32或int64的多维Tensor,它的shape与input相同。 - - **num_classes** (int32) - 类别数目。 - -返回: - - **mean_iou** (Variable) - 类型为float32的1-D Tensor,shape为[1], 均值IOU的计算结果。 - - **out_wrong** (Variable) - 类型为int32的1-D Tensor,shape为[num_classes],代表每个类别中错误的个数。 - - **out_correct** (Variable) - 类型为int32的1-D Tensor,shape为[num_classes],代表每个类别中正确的个数。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - iou_shape = [32, 32] - num_classes = 5 - predict = fluid.layers.data(name='predict', shape=iou_shape, dtype='int64') - label = fluid.layers.data(name='label', shape=iou_shape, dtype='int64') - mean_iou, out_wrong, out_correct = fluid.layers.mean_iou(predict, label, num_classes) - - diff --git a/doc/paddle/api/paddle/fluid/layers/merge_selected_rows_cn.rst b/doc/paddle/api/paddle/fluid/layers/merge_selected_rows_cn.rst deleted file mode 100644 index d44783ca46c84322e25a4d16a767663ccad95d25..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/merge_selected_rows_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_layers_merge_selected_rows: - -merge_selected_rows -------------------------------- - -.. py:function:: paddle.fluid.layers.merge_selected_rows(x, name=None) - - - - -累加合并 `SelectedRows `_ ( ``x`` ) 中的重复行,并对行值由小到大重新排序。 - -参数: - - x (Variable) : 类型为 SelectedRows,选中行允许重复。 - - name (basestring|None) : 输出变量名称。 - -返回: - - 含有 SelectedRows 的 Variable,选中行不重复。 - -返回类型: - - Variable(变量)。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - place = fluid.CPUPlace() - block = fluid.default_main_program().global_block() - - var = block.create_var(name="X2", - dtype="float32", - persistable=True, - type=fluid.core.VarDesc.VarType.SELECTED_ROWS) - y = fluid.layers.merge_selected_rows(var) - z = fluid.layers.get_tensor_from_selected_rows(y) - - x_rows = [0, 2, 2, 4, 19] - row_numel = 2 - np_array = numpy.ones((len(x_rows), row_numel)).astype("float32") - - x = fluid.global_scope().var("X2").get_selected_rows() - x.set_rows(x_rows) - x.set_height(20) - x_tensor = x.get_tensor() - x_tensor.set(np_array, place) - - exe = fluid.Executor(place=place) - result = exe.run(fluid.default_main_program(), fetch_list=[z]) - - print("x_rows: ", x_rows) - print("np_array: ", np_array) - print("result: ", result) - ''' - Output Values: - ('x_rows: ', [0, 2, 2, 4, 19]) - ('np_array: ', array([[1., 1.], - [1., 1.], - [1., 1.], - [1., 1.], - [1., 1.]], dtype=float32)) - ('result: ', [array([[1., 1.], - [2., 2.], - [1., 1.], - [1., 1.]], dtype=float32)]) - ''' diff --git a/doc/paddle/api/paddle/fluid/layers/metric_op/accuracy_cn.rst b/doc/paddle/api/paddle/fluid/layers/metric_op/accuracy_cn.rst deleted file mode 100755 index 15c3d9efcb115065c8b41034ecc0d4703ffb1730..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/metric_op/accuracy_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_accuracy: - -accuracy -------------------------------- - -.. py:function:: paddle.fluid.layers.accuracy(input, label, k=1, correct=None, total=None) - - - - -accuracy layer。 参考 https://en.wikipedia.org/wiki/Precision_and_recall - -使用输入和标签计算准确率。 如果正确的标签在topk个预测值里,则计算结果加1。注意:输出正确率的类型由input类型决定,input和lable的类型可以不一样。 - -参数: - - **input** (Tensor|LoDTensor)-数据类型为float32,float64。输入为网络的预测值。shape为 ``[sample_number, class_dim]`` 。 - - **label** (Tensor|LoDTensor)-数据类型为int64,int32。输入为数据集的标签。shape为 ``[sample_number, 1]`` 。 - - **k** (int64|int32) - 取每个类别中k个预测值用于计算。 - - **correct** (int64|int32)-正确预测值的个数。 - - **total** (int64|int32)-总共的预测值。 - -返回: 计算出来的正确率。 - -返回类型: Variable(Tensor),数据类型为float32的Tensor - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name="input", shape=[-1, 32, 32], dtype="float32") - label = fluid.layers.data(name="label", shape=[-1,1], dtype="int") - fc_out = fluid.layers.fc(input=data, size=10) - predict = fluid.layers.softmax(input=fc_out) - result = fluid.layers.accuracy(input=predict, label=label, k=5) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - exe.run(fluid.default_startup_program()) - x = np.random.rand(3, 32, 32).astype("float32") - y = np.array([[1],[0],[1]]) - output= exe.run(feed={"input": x,"label": y}, - fetch_list=[result[0]]) - print(output) - - """ - Output: - [array([0.6666667], dtype=float32)] - """ diff --git a/doc/paddle/api/paddle/fluid/layers/metric_op/auc_cn.rst b/doc/paddle/api/paddle/fluid/layers/metric_op/auc_cn.rst deleted file mode 100755 index e915875f5d306abdf7ebf51cc65a2cbdf66ca5de..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/metric_op/auc_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_fluid_layers_auc: - -auc -------------------------------- - -.. py:function:: paddle.fluid.layers.auc(input, label, curve='ROC', num_thresholds=200, topk=1, slide_steps=1) - - - - -**Area Under the Curve(AUC) Layer** - -该层根据前向输出和标签计算AUC,在二分类(binary classification)估计中广泛使用。 - -注:如果输入标注包含一种值,只有0或1两种情况,数据类型则强制转换成布尔值。相关定义可以在这里: https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve 找到 - -有两种可能的曲线: - -1. ROC:受试者工作特征曲线 - -2. PR:准确率召回率曲线 - -参数: - - **input** (Tensor|LoDTensor) - 数据类型为float32,float64。浮点二维变量,值的范围为[0,1]。每一行降序排列。该输入为网络预测值的输入。 - - **label** (Tensor|LoDTensor) - 数据类型为int32,int64。二维整型变量,为训练数据的标签。 - - **curve** (str) - 曲线类型,可以为 ``ROC`` 或 ``PR``,默认 ``ROC``。 - - **num_thresholds** (int) - 将roc曲线离散化时使用的临界值数。默认200。 - - **topk** (int) - 取topk的输出值用于计算。 - - **slide_steps** (int) - 当计算batch auc时,不仅用当前步也用于先前步。slide_steps=1,表示用当前步;slide_steps = 3表示用当前步和前两步;slide_steps = 0,则用所有步。 - -返回:代表当前AUC的一个元组。 -返回的元组为auc_out, batch_auc_out, [batch_stat_pos, batch_stat_neg, stat_pos, stat_neg]。 -auc_out为准确率的结果。 -batch_auc_out为batch准确率的结果。 -batch_stat_pos为batch计算时label=1的统计值 -batch_stat_neg为batch计算时label=0的统计值 -stat_pos计算时label=1的统计值 -stat_neg为计算时label=0的统计值 - -返回类型: Variable(Tensor),数据类型为float32或float64的Tensor。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name="input", shape=[-1, 32,32], dtype="float32") - label = fluid.layers.data(name="label", shape=[1], dtype="int") - fc_out = fluid.layers.fc(input=data, size=2) - predict = fluid.layers.softmax(input=fc_out) - result=fluid.layers.auc(input=predict, label=label) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - exe.run(fluid.default_startup_program()) - x = np.random.rand(3,32,32).astype("float32") - y = np.array([1,0,1]) - output= exe.run(feed={"input": x,"label": y}, - fetch_list=[result[0]]) - print(output) - """ - output: - [array([0.5])] - """ - - diff --git a/doc/paddle/api/paddle/fluid/layers/mul_cn.rst b/doc/paddle/api/paddle/fluid/layers/mul_cn.rst deleted file mode 100644 index 6e5fea3571adf9ca98948b6bbb38c44cfd44ad9d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/mul_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_tensor_argmax: - -mul -------------------------------- - -.. py:function:: paddle.mul(x, y, x_num_col_dims=1, y_num_col_dims=1, out=None, name=None) - -:alias_main: paddle.mul -:alias: paddle.mul,paddle.tensor.mul,paddle.tensor.math.mul -:update_api: paddle.fluid.layers.mul - - - - -mul算子 -此运算是用于对输入x和y执行矩阵乘法。 -公式是: - -.. math:: - out = x * y - -输入x和y都可以携带LoD(详细程度)信息。但输出仅与输入x共享LoD信息。 - -参数: - - **x** (Variable) - 乘法运算的第一个输入张量Tensor/LoDTensor。 - - **y** (Variable) - 乘法运算的第二个输入张量Tensor/LoDTensor。 - - **x_num_col_dims** (int,可选) - 默认值1, 可以将具有两个以上维度的张量作为输入。如果输入x是具有多于两个维度的张量,则输入x将先展平为二维矩阵。展平规则是:前 ``num_col_dims`` 将被展平成最终矩阵的第一个维度(矩阵的高度),其余的 rank(x) - num_col_dims 维度被展平成最终矩阵的第二个维度(矩阵的宽度)。结果是展平矩阵的高度等于x的前 ``x_num_col_dims`` 维数的乘积,展平矩阵的宽度等于x的最后一个 rank(x)- ``num_col_dims`` 个剩余维度的维数的乘积。例如,假设x是一个5-D张量,形状为(2,3,4,5,6),并且 ``x_num_col_dims`` 的值为3。 则扁平化后的张量具有的形即为(2x3x4,5x6)=(24,30)。 - - **y_num_col_dims** (int,可选) - 默认值1, 可以将具有两个以上维度的张量作为输入。如果输入y是具有多于两个维度的张量,则y将首先展平为二维矩阵。 ``y_num_col_dims`` 属性确定y的展平方式。有关更多详细信息,请参阅 ``x_num_col_dims`` 的注释。 - - **out** (Variable, 可选) - 默认值None,如果out不为空,则矩阵乘法运算结果存储在out变量中。 - - **name** (str,可选) - 默认值None,输出的名称。该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_name`。当out和name同时不为空时,结果输出变量名与out保持一致。 - -返回:Variable(Tensor)乘法运算输出张量。 - -返回类型:变量(Variable)。 - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - dataX = fluid.data(name="dataX", shape=[2, 5], dtype="float32") - dataY = fluid.data(name="dataY", shape=[5, 3], dtype="float32") - - res = fluid.data(name="output", shape=[2, 3], dtype="float32") - output = paddle.mul(dataX, dataY, - x_num_col_dims = 1, - y_num_col_dims = 1, - out=res) - - diff --git a/doc/paddle/api/paddle/fluid/layers/multi_box_head_cn.rst b/doc/paddle/api/paddle/fluid/layers/multi_box_head_cn.rst deleted file mode 100644 index a8fb7337f826d00f919a382c0377acbba01b1f5c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/multi_box_head_cn.rst +++ /dev/null @@ -1,112 +0,0 @@ -.. _cn_api_fluid_layers_multi_box_head: - -multi_box_head -------------------------------- - - -.. py:function:: paddle.fluid.layers.multi_box_head(inputs, image, base_size, num_classes, aspect_ratios, min_ratio=None, max_ratio=None, min_sizes=None, max_sizes=None, steps=None, step_w=None, step_h=None, offset=0.5, variance=[0.1, 0.1, 0.2, 0.2], flip=True, clip=False, kernel_size=1, pad=0, stride=1, name=None, min_max_aspect_ratios_order=False) - -:api_attr: 声明式编程模式(静态图) - - - -基于SSD(Single Shot MultiBox Detector)算法,在不同层输入特征上提取先验框、计算回归的坐标位置和分类的置信度,并合并到一起作为输出,具体参数解释和输出格式参考下面说明。更详细信息,请参阅SSD论文 `SSD:Single Shot MultiBox Detector `_ 的2.2节。 - -参数: - - **inputs** (list(Variable) | tuple(Variable)) - 输入特征的列表,仅支持格式为NCHW的4-D Tensor。 - - **image** (Variable) - 一般是网络输入的图像数据,仅支持NCHW格式。 - - **base_size** (int) - 输入图片的大小,当输入个数len(inputs) > 2,并且 ``min_size`` 和 ``max_size`` 为None时,通过 ``baze_size``, ``min_ratio`` 和 ``max_ratio`` 来计算出 ``min_size`` 和 ``max_size`` 。计算公式如下: - - .. code-block:: python - - min_sizes = [] - max_sizes = [] - step = int(math.floor(((max_ratio - min_ratio)) / (num_layer - 2))) - for ratio in six.moves.range(min_ratio, max_ratio + 1, step): - min_sizes.append(base_size * ratio / 100.) - max_sizes.append(base_size * (ratio + step) / 100.) - min_sizes = [base_size * .10] + min_sizes - max_sizes = [base_size * .20] + max_sizes - - - **num_classes** (int) - 类别数。 - - **aspect_ratios** (list(float) | tuple(float) | list(list(float)) | tuple(tuple(float)) - 候选框的宽高比, ``aspect_ratios`` 和 ``input`` 的个数必须相等。如果每个特征层提取先验框的 ``aspect_ratio`` 多余一个,写成嵌套的list,例如[[2., 3.]]。 - - **min_ratio** (int)- 先验框的长度和 ``base_size`` 的最小比率,注意,这里是百分比,假如比率为0.2,这里应该给20.0。默认值: None。 - - **max_ratio** (int)- 先验框的长度和 ``base_size`` 的最大比率,注意事项同 ``min_ratio`` 。默认值: None。 - - **min_sizes** (list(float) | tuple(float) | None)- 每层提取的先验框的最小长度,如果输入个数len(inputs)<= 2,则必须设置 ``min_sizes`` ,并且 ``min_sizes`` 的个数应等于len(inputs)。默认值:None。 - - **max_sizes** (list | tuple | None)- 每层提取的先验框的最大长度,如果len(inputs)<= 2,则必须设置 ``max_sizes`` ,并且 ``min_sizes`` 的长度应等于len(inputs)。默认值:None。 - - **steps** (list(float) | tuple(float)) - 相邻先验框的中心点步长 ,如果在水平和垂直方向上步长相同,则设置steps即可,否则分别通过step_w和step_h设置不同方向的步长。如果 ``steps``, ``ste_w`` 和 ``step_h`` 均为None,步长为输入图片的大小 ``base_size`` 和特征图大小的比例。默认值:None。 - - **step_w** (list(float)| tuple(float)) - 水平方向上先验框中心点步长。默认值:None。 - - **step_h** (list | tuple) - 垂直方向上先验框中心点步长。默认值:None。 - - **offset** (float) - 左上角先验框中心在水平和垂直方向上的偏移。默认值:0.5 - - **variance** (list | tuple) - 先验框的方差。默认值:[0.1,0.1,0.2,0.2]。 - - **flip** (bool) - 是否翻转宽高比。默认值:False。 - - **clip** (bool) - 是否剪切超出边界的框。默认值:False。 - - **kernel_size** (int) - 计算回归位置和分类置信度的卷积核的大小。默认值:1。 - - **pad** (int | list(int) | tuple(int)) - 计算回归位置和分类置信度的卷积核的填充。默认值:0。 - - **stride** (int | list | tuple) - 计算回归位置和分类置信度的卷积核的步长。默认值:1。 - - **name** (str) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **min_max_aspect_ratios_order** (bool) - 如果设置为True,则输出先验框的顺序为[min,max,aspect_ratios],这与Caffe一致。请注意,此顺序会影响卷积层后面的权重顺序,但不会影响最终检测结果。默认值:False。 - -返回: - - **mbox_loc(Variable)** - 预测框的回归位置。格式为[N,num_priors,4],其中 ``N`` 是batch size, ``num_priors`` 是总共提取的先验框的个数。 - - **mbox_conf(Variable)** - 预测框的分类信度。格式为[N,num_priors,C],其中 ``num_priors`` 同上,C是类别数。 - - **boxes(Variable)** - 提取的先验框。布局是[num_priors,4], ``num_priors`` 同上,常量4是坐标个数。 - - **variances(Variable)** - 提取的先验框方差。布局是[num_priors,4], ``num_priors`` 同上。 - -返回类型:list(Variable) | tuple(Variable) - -**代码示例1: 设置min_ratio和max_ratio** - -.. code-block:: python - - import paddle.fluid as fluid - - images = fluid.data(name='data', shape=[None, 3, 300, 300], dtype='float32') - conv1 = fluid.data(name='conv1', shape=[None, 512, 19, 19], dtype='float32') - conv2 = fluid.data(name='conv2', shape=[None, 1024, 10, 10], dtype='float32') - conv3 = fluid.data(name='conv3', shape=[None, 512, 5, 5], dtype='float32') - conv4 = fluid.data(name='conv4', shape=[None, 256, 3, 3], dtype='float32') - conv5 = fluid.data(name='conv5', shape=[None, 256, 2, 2], dtype='float32') - conv6 = fluid.data(name='conv6', shape=[None, 128, 1, 1], dtype='float32') - - mbox_locs, mbox_confs, box, var = fluid.layers.multi_box_head( - inputs=[conv1, conv2, conv3, conv4, conv5, conv6], - image=images, - num_classes=21, - min_ratio=20, - max_ratio=90, - aspect_ratios=[[2.], [2., 3.], [2., 3.], [2., 3.], [2.], [2.]], - base_size=300, - offset=0.5, - flip=True, - clip=True) - - -**代码示例2: 设置min_sizes和max_sizes** - -.. code-block:: python - - import paddle.fluid as fluid - - images = fluid.data(name='data', shape=[None, 3, 300, 300], dtype='float32') - conv1 = fluid.data(name='conv1', shape=[None, 512, 19, 19], dtype='float32') - conv2 = fluid.data(name='conv2', shape=[None, 1024, 10, 10], dtype='float32') - conv3 = fluid.data(name='conv3', shape=[None, 512, 5, 5], dtype='float32') - conv4 = fluid.data(name='conv4', shape=[None, 256, 3, 3], dtype='float32') - conv5 = fluid.data(name='conv5', shape=[None, 256, 2, 2], dtype='float32') - conv6 = fluid.data(name='conv6', shape=[None, 128, 1, 1], dtype='float32') - - mbox_locs, mbox_confs, box, var = fluid.layers.multi_box_head( - inputs=[conv1, conv2, conv3, conv4, conv5, conv6], - image=images, - num_classes=21, - min_sizes=[60.0, 105.0, 150.0, 195.0, 240.0, 285.0], - max_sizes=[[], 150.0, 195.0, 240.0, 285.0, 300.0], - aspect_ratios=[[2.], [2., 3.], [2., 3.], [2., 3.], [2.], [2.]], - base_size=300, - offset=0.5, - flip=True, - clip=True) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nce_cn.rst b/doc/paddle/api/paddle/fluid/layers/nce_cn.rst deleted file mode 100644 index ef4532b84619f8444cd7a01c6821f7eb26c2739b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nce_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_nce: - -nce -------------------------------- - - -.. py:function:: paddle.fluid.layers.nce(input, label, num_total_classes, sample_weight=None, param_attr=None, bias_attr=None, num_neg_samples=None, name=None, sampler='uniform', custom_dist=None, seed=0, is_sparse=False) - -:api_attr: 声明式编程模式(静态图) - - - -计算并返回噪音对比估计损失值( noise-contrastive estimation training loss)。 -请参考 `Noise-contrastive estimation: A new estimation principle for unnormalized statistical models -`_ -该层默认使用均匀分布进行抽样。 - -参数: - - **input** (Variable) - 输入变量, 2-D 张量,形状为 [batch_size, dim],数据类型为 float32 或者 float64。 - - **label** (Variable) - 标签,2-D 张量,形状为 [batch_size, num_true_class],数据类型为 int64。 - - **num_total_classes** (int) - 所有样本中的类别的总数。 - - **sample_weight** (Variable,可选) - 存储每个样本权重,shape 为 [batch_size, 1] 存储每个样本的权重。每个样本的默认权重为1.0。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) : 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **num_neg_samples** (int) - 负样例的数量,默认值是10。 - - **name** (str,可选) - 该layer的名称,具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **sampler** (str,可选) – 采样器,用于从负类别中进行取样。可以是 ``uniform``, ``log_uniform`` 或 ``custom_dist`` , 默认 ``uniform`` 。 - - **custom_dist** (nd.array, 可选) – 第0维的长度为 ``num_total_classes`` 。 如果采样器类别为 ``custom_dist`` ,则使用此参数。custom_dist[i] 是第i个类别被取样的概率。默认为 None - - **seed** (int,可选) – 采样器使用的seed。默认为0 - - **is_sparse** (bool,可选) – 标志位,指明是否使用稀疏更新, 为 ``True`` 时 :math:`weight@GRAD` 和 :math:`bias@GRAD` 的类型会变为 SelectedRows。默认为 ``False`` 。 - -返回: nce loss,数据类型与 **input** 相同 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - window_size = 5 - words = [] - for i in range(window_size): - words.append(fluid.data( - name='word_{0}'.format(i), shape=[-1, 1], dtype='int64')) - - dict_size = 10000 - label_word = int(window_size / 2) + 1 - - embs = [] - for i in range(window_size): - if i == label_word: - continue - - emb = fluid.layers.embedding(input=words[i], size=[dict_size, 32], - param_attr='embed', is_sparse=True) - embs.append(emb) - - embs = fluid.layers.concat(input=embs, axis=1) - loss = fluid.layers.nce(input=embs, label=words[label_word], - num_total_classes=dict_size, param_attr='nce.w_0', - bias_attr='nce.b_0') - - #or use custom distribution - dist = np.array([0.05,0.5,0.1,0.3,0.05]) - loss = fluid.layers.nce(input=embs, label=words[label_word], - num_total_classes=5, param_attr='nce.w_1', - bias_attr='nce.b_1', - num_neg_samples=3, - sampler="custom_dist", - custom_dist=dist) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/adaptive_pool2d_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/adaptive_pool2d_cn.rst deleted file mode 100644 index c2a5026955e2e2c1e5484ec1799ced2851921a88..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/adaptive_pool2d_cn.rst +++ /dev/null @@ -1,98 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.adaptive_pool2d -:alias: paddle.nn.functional.adaptive_pool2d,paddle.nn.functional.pooling.adaptive_pool2d -:old_api: paddle.fluid.layers.adaptive_pool2d - - - -该OP使用上述输入参数的池化配置,为二维空间自适应池化操作,根据 ``input`` , 池化类型 ``pool_type`` , 池化核大小 ``pool_size`` 这些参数得到输出。 - -输入X和输出Out是NCHW格式,N为批大小,C是通道数,H是特征高度,W是特征宽度。参数 ``pool_size`` 含有两个整型元素, 分别代表高度和宽度上的参数。输出Out的H和W维由 ``pool_size`` 决定,即输出shape为 :math:`\left ( N,C,pool_size[0],pool_size[1] \right )` - - -对于平均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) - 池化操作的输入张量,维度为 :math:`[N, C, H, W]` 的4-D Tensor。 输入张量的格式为NCHW,其中N是batch大小,C是通道数,H是特征的高度,W是特征的宽度,数据类型为float32或float64。 - - **pool_size** (int|list|tuple) - 池化核大小。 如果池化核大小是元组或列表,则它必须包含两个整数(pool_size_Height,pool_size_Width。若为一个整数,则表示H和W维度上均为该值。 - - **pool_type** (string)- 池化类型,可输入“max”代表max-pooling,或者“avg”代表average-pooling。 - - **require_index** (bool) - 如果为False,则输出中带有最大池化点所在的索引。 如果pool_type为avg,该项不可被设置为True, 默认False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - - -返回: Variable(Tensor) 自适应池化结果张量 - -返回类型:变量(Variable),数据类型与 ``input`` 一致 - - -抛出异常: - - - ``ValueError`` – ``pool_type`` 不是 ‘max’ 或 ‘avg’ - - ``ValueError`` – 当 ``pool_type`` 是 ‘avg’ 时,错误地设置 ‘require_index’ 为true . - - ``ValueError`` – ``pool_size`` 应为一个长度为2的列表或元组 - -.. code-block:: python - - # average adaptive pool2d - # 假设输入形为[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]) - # - import paddle.fluid as fluid - data = fluid.data(name='data', shape=[None, 3, 32, 32], dtype='float32') - pool_out = fluid.layers.adaptive_pool2d( - input=data, - pool_size=[3, 3], - pool_type='avg') - - # max adaptive pool2d - # 假设输入形为[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] = max(input[:, :, hstart: hend, wstart: wend]) - # - import paddle.fluid as fluid - data = fluid.data(name='data', shape=[None, 3, 32, 32], dtype='float32') - pool_out = fluid.layers.adaptive_pool2d( - input=data, - pool_size=[3, 3], - pool_type='max') - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/adaptive_pool3d_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/adaptive_pool3d_cn.rst deleted file mode 100644 index ec7c4d13210b745f6dba3bd307ab1587558c2535..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/adaptive_pool3d_cn.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.adaptive_pool3d -:alias: paddle.nn.functional.adaptive_pool3d,paddle.nn.functional.pooling.adaptive_pool3d -:old_api: paddle.fluid.layers.adaptive_pool3d - - - -该OP使用上述输入参数的池化配置,为二维空间自适应池化操作,根据 ``input`` , 池化类型 ``pool_type`` , 池化核大小 ``pool_size`` 这些参数得到输出。 - -输入X和输出Out是NCDHW格式,N为批大小,D是特征深度,C是通道数,H是特征高度,W是特征宽度。参数 ``pool_size`` 含有两个整型元素, 分别代表深度,高度和宽度上的参数。输出Out的D, H和W维由 ``pool_size`` 决定,即输出shape为 :math:`\left ( N,C,pool_size[0],pool_size[1],pool_size[2] \right )` - - -对于平均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) - 池化操作的输入张量,维度为 :math:`[N, C, D, H, W]` 的5-D Tensor。 输入张量的格式为NCDHW,其中N是batch大小,C是通道数,D为特征的深度,H是特征的高度,W是特征的宽度,数据类型为float32或float64。 - - **pool_size** (int|list|tuple) - 池化核大小。 如果池化核大小是元组或列表,则它必须包含三个整数(Depth, Height, Width)。若为一个整数,则表示D, H和W维度上均为该值。 - - **pool_type** (string)- 池化类型,可输入“max”代表max-pooling,或者“avg”代表average-pooling。 - - **require_index** (bool) - 如果为True,则输出中带有最大池化点所在的索引。 如果pool_type为avg,该项不可被设置为True, 默认False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - - -返回: Variable(Tensor) 自适应池化结果张量 - -返回类型:变量(Variable),数据类型与 ``input`` 一致 - - -抛出异常: - - - ``ValueError`` – ``pool_type`` 不是 ‘max’ 或 ‘avg’ - - ``ValueError`` – 当 ``pool_type`` 是 ‘avg’ 时,错误地设置 ‘require_index’ 为true . - - ``ValueError`` – ``pool_size`` 应为一个长度为3的列表或元组 - -.. code-block:: python - - # average adaptive pool2d - # 假设输入形为[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]) - # - - import paddle.fluid as fluid - - data = fluid.data(name='data', shape=[None, 3, 32, 32, 32], dtype='float32') - pool_out = fluid.layers.adaptive_pool3d( - input=data, - pool_size=[3, 3, 3], - pool_type='avg') - - # max adaptive pool2d - # 假设输入形为[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]) - # - - import paddle.fluid as fluid - - data = fluid.data(name='data', shape=[None, 3, 32, 32, 32], dtype='float32') - pool_out = fluid.layers.adaptive_pool3d( - input=data, - pool_size=[3, 3, 3], - pool_type='max') - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/add_position_encoding_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/add_position_encoding_cn.rst deleted file mode 100644 index abba3377ba359ac496848262f1fe29705ea504b0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/add_position_encoding_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_add_position_encoding: - -add_position_encoding -------------------------------- - -.. py:function:: paddle.fluid.layers.add_position_encoding(input, alpha, beta, name=None) - -:alias_main: paddle.nn.functional.add_position_encoding -:alias: paddle.nn.functional.add_position_encoding,paddle.nn.functional.extension.add_position_encoding -:old_api: paddle.fluid.layers.add_position_encoding - - - -该OP将输入inpu中每个位置(序列中的位置)的特征与对应的位置编码加权求和,位置编码可参考论文: `Attention Is All You Need `_ - -输出的计算公式如下: - -.. math:: - - PE(pos, 2i) &= \sin{(pos / 10000^{2i / P})}\\ - PE(pos, 2i + 1) &= \cos{(pos / 10000^{2i / P})}\\ - Out(:, pos, i) &= \alpha * input(:, pos, i) + \beta * PE(pos, i) - -其中: - - PE(pos, 2i): pos位置对应的编码中偶数特征位上的值 - - PE(pos, 2i + 1): pos位置对应的编码中奇数特征位上的值 - -参数: - - **input** (Variable) – Tensor或LoD level为1的LoDTensor。Tensor时,其形状为 :math:`[N, M, P]` ,其中 :math:`N` 表示batch size, :math:`M` 表示序列长度, :math:`P` 为特征维度大小;LoDTensor时,其形状为 :math:`[N, P]` ,其中 :math:`N` 表示所有序列长度之和, :math:`P` 为特征维度大小。数据类型为float32或float64。 - - **alpha** (float) – 加权求和时输入input的权重系数 - - **beta** (float) – 加权求和时位置编码的权重系数 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: 加上位置编码后的Tensor或LoDTensor,和输入(input)具有相同数据类型和形状及LoD信息。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - tensor = fluid.data( - name='tensor', - shape=[None, 64, 512], - dtype='float32') - position_tensor = fluid.layers.add_position_encoding( - input=tensor, alpha=1.0, beta=1.0) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/affine_channel_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/affine_channel_cn.rst deleted file mode 100644 index c810d489a98304681ab230606d87b13bfed49ca4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/affine_channel_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_affine_channel: - -affine_channel -------------------------------- - -.. py:function:: paddle.fluid.layers.affine_channel(x, scale=None, bias=None, data_layout='NCHW', name=None,act=None) - -:alias_main: paddle.nn.functional.affine_channel -:alias: paddle.nn.functional.affine_channel,paddle.nn.functional.vision.affine_channel -:old_api: paddle.fluid.layers.affine_channel - - - -对输入的每个 channel 应用单独的仿射变换。用于将空间批量归一化替换为其等价的固定变换。 - -输入也可以是二维张量,并在第二维应用仿射变换。 - -参数: - - **x** (Variable): 特征图输入可以是一个具有NCHW格式或NHWC格式的的4-D张量。它也可以是二维张量,此时该算法应用于第二维度的仿射变换。数据类型为float32或float64。 - - **scale** (Variable): 维度为(C)的一维输入,第C个元素为输入的第C通道仿射变换的尺度因子。数据类型为float32或float64。 - - **bias** (Variable): 维度为(C)的一维输入,第C个元素是输入的第C个通道的仿射变换的偏置。数据类型为float32或float64。 - - **data_layout** (str,可选): 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。如果输入是一个2D张量,可以忽略该参数,默认值为"NCHW"。 - - **name** (str,可选): 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **act** (str,可选): 应用于该层输出的激活函数,默认值为None。 - -返回:与x具有相同维度和数据布局的张量, 数据类型与x相同 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name='data', shape=[3, 32, 32], - dtype='float32') - input_scale = fluid.layers.create_parameter(shape=[3], - dtype="float32") - input_bias = fluid.layers.create_parameter(shape=[3], - dtype="float32") - out = fluid.layers.affine_channel(data,scale=input_scale, - bias=input_bias) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/affine_grid_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/affine_grid_cn.rst deleted file mode 100644 index 287116d9f5f6845eb0f874a78c329ca49676b14d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/affine_grid_cn.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _cn_api_fluid_layers_affine_grid: - -affine_grid -------------------------------- - -.. py:function:: paddle.fluid.layers.affine_grid(theta, out_shape, name=None) - -:alias_main: paddle.nn.functional.affine_grid -:alias: paddle.nn.functional.affine_grid,paddle.nn.functional.vision.affine_grid -:old_api: paddle.fluid.layers.affine_grid - - - -该OP用于生成仿射变换前后的feature maps的坐标映射关系。在视觉应用中,根据该OP得到的映射关系,将输入feature map的像素点变换到对应的坐标,就得到了经过仿射变换的feature map。 - -参数: - - **theta** (Variable) - Shape为 ``[batch_size, 2, 3]`` 的Tensor,表示batch_size个 ``2X3`` 的变换矩阵。数据类型支持float32,float64。 - - **out_shape** (Variable | list | tuple) - 类型可以是1-D Tensor、list或tuple。用于表示在仿射变换中的输出的shape,其格式 ``[N, C, H, W]`` ,分别为输出feature map的batch size、channel数量、高和宽。数据类型支持int32。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:api_guide_Name ,默认值为None。 - -返回: Variable。Shape为 ``[N, H, W, 2]`` 的4-D Tensor,表示仿射变换前后的坐标的映射关系。其中,N、H、W分别为仿射变换中输出feature map的batch size、高和宽。 数据类型与 ``theta`` 一致。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - theta = fluid.layers.data(name="x", shape=[2, 3], dtype="float32") - out_shape = fluid.layers.data(name="y", shape=[-1], dtype="float32") - data = fluid.layers.affine_grid(theta, out_shape) - # or - data = fluid.layers.affine_grid(theta, [5, 3, 28, 28]) diff --git a/doc/paddle/api/paddle/fluid/layers/nn/autoincreased_step_counter_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/autoincreased_step_counter_cn.rst deleted file mode 100644 index 821b793f511e943ec53e253c1df108ac60286fea..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/autoincreased_step_counter_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_autoincreased_step_counter: - -autoincreased_step_counter -------------------------------- - - -.. py:function:: paddle.fluid.layers.autoincreased_step_counter(counter_name=None, begin=1, step=1) - -:api_attr: 声明式编程模式(静态图) - - - -创建一个自增变量,每个迭代累加一次,默认首次返回值为 1,默认累加步长为 1。 - -参数: - - **counter_name** (str, 可选) - 该计数器的名称,默认为 ``@STEP_COUNTER@`` 。 - - **begin** (int) - 该计数器返回的第一个值。 - - **step** (int) - 累加步长。 - -返回:累加结果,数据类型为 int64 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - global_step = fluid.layers.autoincreased_step_counter( - counter_name='@LR_DECAY_COUNTER@', begin=0, step=1) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/batch_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/batch_norm_cn.rst deleted file mode 100644 index 95fa58257d7180f8a16176aa7b754f0b20124507..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/batch_norm_cn.rst +++ /dev/null @@ -1,111 +0,0 @@ -.. _cn_api_fluid_layers_batch_norm: - -batch_norm -------------------------------- - - -.. py:function:: paddle.fluid.layers.batch_norm(input, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, data_layout='NCHW', in_place=False, name=None, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False) - -:api_attr: 声明式编程模式(静态图) - - - -批正则化层(Batch Normalization Layer) - -可用作卷积和全连接操作的批正则化函数,根据当前批次数据按通道计算的均值和方差进行正则化。该层需要的数据格式如下: - -1.NHWC[batch,in_height,in_width,in_channels] -2.NCHW[batch,in_channels,in_height,in_width] - -更多详情请参考 : `Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift `_ - -``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 - - moving\_mean = moving\_mean * momentum + mini\_batch\_mean * (1. - momentum) \\ - moving\_variance = moving\_variance * momentum + mini\_batch\_var * (1. - momentum) - -moving_mean和moving_var是训练过程中统计得到的全局均值和方差,在预测或者评估中使用。 -`is_test` 参数只能用于测试或者评估阶段,如果想在训练阶段使用预训练模型的全局均值和方差的话,可以设置 `use_global_stats=True`. - -当use_global_stats = True时, :math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 不是一个minibatch的统计数据。 它们是全局(或运行)统计数据(moving_mean和moving_variance),通常来自预先训练好的模型。训练和测试(或预测)具有相同的行为: - -.. math:: - - \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\ - \sigma_{\beta}^{2} + \epsilon}} \\ - y_i &\gets \gamma \hat{x_i} + \beta - - - -参数: - - **input** (Variable) - batch_norm算子的输入特征,是一个Variable类型,输入维度可以是 2, 3, 4, 5。数据类型:flaot16, float32, float64。 - - **act** (string)- 激活函数类型,可以是leaky_realu、relu、prelu等。默认:None。 - - **is_test** (bool) - 指示它是否在测试阶段,非训练阶段使用训练过程中统计到的全局均值和全局方差。默认:False。 - - **momentum** (float|Variable)- 此值用于计算 moving_mean 和 moving_var,是一个float类型或者一个shape为[1],数据类型为float32的Variable类型。更新公式为: :math:`moving\_mean = moving\_mean * momentum + new\_mean * (1. - momentum)` , :math:`moving\_var = moving\_var * momentum + new\_var * (1. - momentum)` , 默认:0.9。 - - **epsilon** (float)- 加在分母上为了数值稳定的值。默认:1e-5。 - - **param_attr** (ParamAttr|None) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。batch_norm算子默认的权重初始化是1.0。 - - **bias_attr** (ParamAttr|None)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。batch_norm算子默认的偏置初始化是0.0。 - - **data_layout** (string) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - **in_place** (bool)- batch_norm的输出复用输入的tensor,可以节省显存。默认:False。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **moving_mean_name** (string)- moving_mean的名称,存储全局均值。如果将其设置为None, ``batch_norm`` 将随机命名全局均值;否则, ``batch_norm`` 将命名全局均值为 ``moving_mean_name`` 。默认:None。 - - **moving_variance_name** (string)- moving_variance的名称,存储全局变量。如果将其设置为None, ``batch_norm`` 将随机命名全局方差;否则, ``batch_norm`` 将命名全局方差为 ``moving_variance_name`` 。默认:None。 - - **do_model_average_for_mean_and_var** (bool,默认False)- 是否为mean和variance做模型均值。 - - **use_global_stats** (bool) – 是否使用全局均值和方差。 在预测或测试模式下,将use_global_stats设置为true或将is_test设置为true,并且行为是等效的。 在训练模式中,当设置use_global_stats为True时,在训练期间也使用全局均值和方差。默认:False。 - -返回: 维度和输入相同的Tensor,在输入中运用批正则后的结果。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name='x', shape=[3, 7, 3, 7], dtype='float32', append_batch_size=False) - hidden1 = fluid.layers.fc(input=x, size=200) - param_attr = fluid.ParamAttr(name='batch_norm_w', initializer=fluid.initializer.Constant(value=1.0)) - bias_attr = fluid.ParamAttr(name='batch_norm_b', initializer=fluid.initializer.Constant(value=0.0)) - hidden2 = fluid.layers.batch_norm(input=hidden1, param_attr = param_attr, bias_attr = bias_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(3, 7, 3, 7)).astype('float32') - output = exe.run(feed={"x": np_x}, fetch_list = [hidden2]) - print(output) - -.. code-block:: python - - # batch_norm with momentum as Variable - import paddle.fluid as fluid - import paddle.fluid.layers.learning_rate_scheduler as lr_scheduler - - def get_decay_momentum(momentum_init, decay_steps, decay_rate): - global_step = lr_scheduler._decay_step_counter() - momentum = fluid.layers.create_global_var( - shape=[1], - value=float(momentum_init), - dtype='float32', - # set persistable for save checkpoints and resume - persistable=True, - name="momentum") - div_res = global_step / decay_steps - decayed_momentum = momentum_init * (decay_rate**div_res) - fluid.layers.assign(decayed_momentum, momentum) - - return momentum - - x = fluid.data(name='x', shape=[3, 7, 3, 7], dtype='float32') - hidden1 = fluid.layers.fc(input=x, size=200, param_attr='fc1.w') - momentum = get_decay_momentum(0.9, 1e5, 0.9) - hidden2 = fluid.layers.batch_norm(input=hidden1, momentum=momentum) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/bilinear_tensor_product_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/bilinear_tensor_product_cn.rst deleted file mode 100644 index d65e2abdc70a6a109b69ae474ed64f49167ff37e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/bilinear_tensor_product_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_bilinear_tensor_product: - -bilinear_tensor_product -------------------------------- - - -.. py:function:: paddle.fluid.layers.bilinear_tensor_product(x, y, size, act=None, name=None, param_attr=None, bias_attr=None) - -:api_attr: 声明式编程模式(静态图) - - - -该层对两个输入执行双线性张量积。 - -例如: - -.. math:: - out_{i} = x * W_{i} * {y^\mathrm{T}}, i=0,1,...,size-1 - -在这个公式中: - - :math:`x`: 第一个输入,包含 :math:`M` 个元素,形状为 [batch_size, M]。 - - :math:`y`: 第二个输入,包含 :math:`N` 个元素,形状为 [batch_size, N]。 - - :math:`W_{i}`: 第 :math:`i` 个被学习的权重,形状是 [M, N]。 - - :math:`out_{i}`: 输出的第 :math:`i` 个元素,形状是 [batch_size, size]。 - - :math:`y^\mathrm{T}`: :math:`y_{2}` 的转置。 - -参数: - - **x** (Variable): 2-D 输入张量,形状为 [batch_size, M], 数据类型为 float32 或 float64。 - - **y** (Variable): 2-D 输入张量,形状为 [batch_size, N],数据类型与 **x** 一致。 - - **size** (int): 此层的维度。 - - **act** (str, 可选): 应用到该层输出的激活函数。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为 None。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为 None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr,可选) : 指定偏置参数属性的对象。默认值为 None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - -返回: 一个形为 [batch_size, size] 的 2-D 张量。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - layer1 = fluid.layers.data("t1", shape=[-1, 5], dtype="float32") - layer2 = fluid.layers.data("t2", shape=[-1, 4], dtype="float32") - tensor = fluid.layers.bilinear_tensor_product(x=layer1, y=layer2, size=1000) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/brelu_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/brelu_cn.rst deleted file mode 100644 index 0931ad4cea3cfd17ae8476e450762ed7b359c2c9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/brelu_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_brelu: - -brelu -------------------------------- - -.. py:function:: paddle.fluid.layers.brelu(x, t_min=0.0, t_max=24.0, name=None) - -:alias_main: paddle.nn.functional.brelu -:alias: paddle.nn.functional.brelu,paddle.nn.functional.activation.brelu -:old_api: paddle.fluid.layers.brelu - - - - -BReLU 激活函数 - -.. math:: out=min(max(x,t\_min),t\_max) - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型为float32,float64。 - - **t_min** (float, 可选) - BRelu的最小值,默认值为0.0。 - - **t_max** (float, 可选) - BRelu的最大值,默认值为24.0。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为None。 - -返回: 输出为Tensor,与 ``x`` 维度相同、数据类型相同。 - -返回类型: Variable - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - input_brelu = np.array([[-1,6],[1,15.6]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(input_brelu) - y = fluid.layers.brelu(x, t_min=1.0, t_max=10.0) - print(y.numpy()) - #[[ 1. 6.] - #[ 1. 10.]] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/chunk_eval_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/chunk_eval_cn.rst deleted file mode 100644 index c264a071ab03ca4a53279da3906db671e499b1d2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/chunk_eval_cn.rst +++ /dev/null @@ -1,109 +0,0 @@ -.. _cn_api_fluid_layers_chunk_eval: - -chunk_eval -------------------------------- - -.. py:function:: paddle.fluid.layers.chunk_eval(input, label, chunk_scheme, num_chunk_types, excluded_chunk_types=None, sqe_length=None) - - - - -该OP计算语块识别(chunk detection)的准确率、召回率和F1值,常用于命名实体识别(NER,语块识别的一种)等序列标注任务中。 - -语块识别的基础请参考 `Chunking with Support Vector Machines `_ - -该OP支持IOB,IOE,IOBES和IO(plain)的标注方式。以下是这些标注方式在命名实体识别示例中的使用: - -:: - - - ====== ====== ====== ===== == ============ ===== ===== ===== == ========= - Li Ming works at Agricultural Bank of China in Beijing. - ====== ====== ====== ===== == ============ ===== ===== ===== == ========= - IO I-PER I-PER O O I-ORG I-ORG I-ORG I-ORG O I-LOC - IOB B-PER I-PER O O B-ORG I-ORG I-ORG I-ORG O B-LOC - IOE I-PER E-PER O O I-ORG I-ORG I-ORG E-ORG O E-LOC - IOBES B-PER E-PER O O I-ORG I-ORG I-ORG E-ORG O S-LOC - ====== ====== ====== ===== == ============ ===== ===== ===== == ========= - -例中有PER(人名),ORG(机构名)和LOC(地名)三种语块类型(命名实体类型)。可以看到,一个完整的标签包括标注类型(tag type)和语块类型(chunk type),形式为 ``标注类型-语块类型(tag type-chunk type)`` 。 - -由于该OP在计算实现上使用的是标签id而非标签字符串,为使其能正确运行,标签id要能够转换为相应的标注类型(tag type)和语块类型(chunk type)。该OP使用了下面的方式完成映射转换: - -:: - - - tag_type = label % num_tag_type - chunk_type = label / num_tag_type - -其中num_tag_type是标注方式中的标签类型(tag type)数,各标注方式的tag type取值如下: - -:: - - - Scheme Begin Inside End Single - plain 0 - - - - IOB 0 1 - - - IOE - 0 1 - - IOBES 0 1 2 3 - -据此,在上面的NER例子中,若标注方式是IOB,语块类型包括ORG、PER和LOC三种,则所有标签及其对应id如下: - -:: - - - B-ORG 0 - I-ORG 1 - B-PER 2 - I-PER 3 - B-LOC 4 - I-LOC 5 - O 6 - -从标签id可以正确的得到其对应的标注类型(tag type)和语块类型(chunk type)。 - -参数: - - **input** (Variable) - 表示网络预测的标签,为Tensor或LoD level为1的LoDTensor。Tensor时,其形状为 :math:`[N, M, 1]` ,其中 :math:`N` 表示batch size, :math:`M` 表示序列长度;LoDTensor时,其形状为 :math:`[N, 1]` 或 :math:`[N]` ,其中 :math:`N` 表示所有序列长度之和。数据类型为int64。 - - **label** (Variable) - 表示真实标签(ground-truth)的Tensor或LoDTensor,和 ``input`` 具有相同形状、LoD和数据类型。 - - **chunk_scheme** (str) - 标注方式,必须是IOB,IOE,IOBES或者plain中的一种。 - - **num_chunk_types** (int) - 表示标签中的语块类型数。 - - **excluded_chunk_types** (list,可选) - 表示不计入统计的语块类型,需要为语块类型(int表示)的列表。默认值为空的list。 - - **seq_length** (Variable,可选) - 当输入 ``input`` 和 ``label`` 是Tensor而非LoDTensor时,用来指示输入中每个序列长度的1-D Tensor。数据类型为int64。可以为空,默认为None。 - -返回:Variable的元组。元组中包含准确率、召回率、F1值,以及识别出的语块数目、标签中的语块数目、正确识别的语块数目。每个均是单个元素的Tensor,准确率、召回率、F1值的数据类型为float32,其他的数据类型为int64。 - -返回类型:tuple - -**代码示例**: - -.. code-block:: python: - - import paddle.fluid as fluid - - dict_size = 10000 - label_dict_len = 7 - sequence = fluid.data( - name='id', shape=[None, 1], lod_level=1, dtype='int64') - embedding = fluid.embedding( - input=sequence, size=[dict_size, 512]) - hidden = fluid.layers.fc(input=embedding, size=512) - label = fluid.data( - name='label', shape=[None, 1], lod_level=1, dtype='int64') - crf = fluid.layers.linear_chain_crf( - input=hidden, label=label, param_attr=fluid.ParamAttr(name="crfw")) - crf_decode = fluid.layers.crf_decoding( - input=hidden, param_attr=fluid.ParamAttr(name="crfw")) - fluid.layers.chunk_eval( - input=crf_decode, - label=label, - chunk_scheme="IOB", - num_chunk_types=int((label_dict_len - 1) / 2)) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/clip_by_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/clip_by_norm_cn.rst deleted file mode 100644 index af3467b58d02d54d02dcac5a792c03f3a5db8405..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/clip_by_norm_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_clip_by_norm: - -clip_by_norm -------------------------------- - -.. py:function:: paddle.fluid.layers.clip_by_norm(x, max_norm, name=None) - -:alias_main: paddle.nn.clip_by_norm -:alias: paddle.nn.clip_by_norm,paddle.nn.clip.clip_by_norm -:old_api: paddle.fluid.layers.clip_by_norm - - - -ClipByNorm算子 - -此算子将输入 ``X`` 的L2范数限制在 ``max_norm`` 内。如果 ``X`` 的L2范数小于或等于 ``max_norm`` ,则输出(Out)将与 ``X`` 相同。如果X的L2范数大于 ``max_norm`` ,则 ``X`` 将被线性缩放,使得输出(Out)的L2范数等于 ``max_norm`` ,如下面的公式所示: - -.. math:: - Out = \frac{max\_norm * X}{norm(X)} - -其中, :math:`norm(X)` 代表 ``x`` 的L2范数。 - - -参数: - - **x** (Variable)- 多维Tensor或LoDTensor,数据类型为float32。clip_by_norm运算的输入,维数必须在[1,9]之间。 - - **max_norm** (float32)- 最大范数值。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 -返回: 表示为输出Tensor或LoDTensor,数据类型为float32。和输入(X)具有相同的形状. - - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.data( - name='data', shape=[None, 1], dtype='float32') - reward = fluid.layers.clip_by_norm(x=input, max_norm=1.0) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/clip_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/clip_cn.rst deleted file mode 100644 index 071fe323ffdf8de41a454669e3b23e2f7f976a4b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/clip_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_clip: - -clip -------------------------------- - -.. py:function:: paddle.fluid.layers.clip(x, min, max, name=None) - -:alias_main: paddle.nn.clip -:alias: paddle.nn.clip,paddle.nn.clip.clip -:old_api: paddle.fluid.layers.clip - - - -该OP对输入Tensor每个元素的数值进行裁剪,使得输出Tensor元素的数值被限制在区间[min, max]内。具体的计算公式为如下。 - -.. math:: - - Out = MIN(MAX(x,min),max) - - - -参数: - - **x** (Variable)- 多维Tensor,数据类型为float32 - - **min** (float)- 最小值,输入Tensor中小于该值的元素由min代替。 - - **max** (float)- 最大值,输入Tensor中大于该值的元素由max替换。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 对元素的数值进行裁剪之后的Tesnor,与输入x具有相同的shape和数据类型 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data( - name='data', shape=[1], dtype='float32') - reward = fluid.layers.clip(x=input, min=-1.0, max=1.0) - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/continuous_value_model_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/continuous_value_model_cn.rst deleted file mode 100644 index bdc610b1739df00f4d04f96ee501cfff7e107a94..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/continuous_value_model_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_continuous_value_model: - -continuous_value_model -------------------------------- - -.. py:function:: paddle.fluid.layers.continuous_value_model(input, cvm, use_cvm=True) - -:alias_main: paddle.nn.functional.continuous_value_model -:alias: paddle.nn.functional.continuous_value_model,paddle.nn.functional.extension.continuous_value_model -:old_api: paddle.fluid.layers.continuous_value_model - - - -**注意:该OP仅支持在CPU运行。** - -该OP在CTR项目中,用于去除或处理 ``input`` 中的展示和点击值。 - -输入 ``input`` 是一个含展示(show)和点击(click)的词向量,其形状为 :math:`[N, D]` (N为batch大小,D为 `2 + 嵌入维度` ),show和click占据词向量D的前两维。如果 ``use_cvm=True`` ,它会计算 :math:`log(show)` 和 :math:`log(click)` ,输出的形状为 :math:`[N, D]` 。如果 ``use_cvm=False`` ,它会从输入 ``input`` 中移除show和click,输出的形状为 :math:`[N, D - 2]` 。 ``cvm`` 为show和click信息,维度为 :math:`[N, 2]` 。 - -参数: - - **input** (Variable) - cvm操作的输入张量。维度为 :math:`[N, D]` 的2-D LoDTensor。 N为batch大小, D为 `2 + 嵌入维度` , `lod level = 1` 。 - - **cvm** (Variable) - cvm操作的展示和点击张量。维度为 :math:`[N, 2]` 的2-D Tensor。 N为batch大小,2为展示和点击值。 - - **use_cvm** (bool) - 是否使用展示和点击信息。如果使用,输出维度和输入相等,对 ``input`` 中的展示和点击值取log;如果不使用,输出维度为输入减2(移除展示和点击值)。 - -返回:Variable(LoDTensor)变量, :math:`[N, M]` 的2-D LoDTensor。如果 ``use_cvm=True`` ,M等于输入的维度D,否则M等于 `D - 2` 。 - -返回类型:变量(Variable),数据类型与 ``input`` 一致。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[-1, 1], lod_level=1, append_batch_size=False, dtype="int64") - label = fluid.layers.data(name="label", shape=[-1, 1], append_batch_size=False, dtype="int64") - embed = fluid.layers.embedding( - input=input, - size=[100, 11], - dtype='float32') - label_shape = fluid.layers.shape(label) - ones = fluid.layers.fill_constant(shape=[label_shape[0], 1], dtype="int64", value=1) - show_clk = fluid.layers.cast(fluid.layers.concat([ones, label], axis=1), dtype='float32') - show_clk.stop_gradient = True - input_with_cvm = fluid.layers.continuous_value_model(embed, show_clk, True) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/conv2d_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/conv2d_cn.rst deleted file mode 100644 index 4ae868dfea111869eaa664cc4ca7a763c86651c3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/conv2d_cn.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _cn_api_fluid_layers_conv2d: - -conv2d -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv2d(input, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format="NCHW") - -:api_attr: 声明式编程模式(静态图) - - - -该OP是二维卷积层(convolution2D layer),根据输入、滤波器、步长(stride)、填充(padding)、膨胀比例(dilations)一组参数计算输出特征层大小。输入和输出是NCHW或NHWC格式,其中N是批尺寸,C是通道数,H是特征高度,W是特征宽度。滤波器是MCHW格式,M是输出图像通道数,C是输入图像通道数,H是滤波器高度,W是滤波器宽度。如果组数(groups)大于1,C等于输入图像通道数除以组数的结果。详情请参考UFLDL's : `卷积 `_ 。如果bias_attr不为False,卷积计算会添加偏置项。如果指定了激活函数类型,相应的激活函数会作用在最终结果上。 - -对每个输入X,有等式: - -.. math:: - - Out = \sigma \left ( W * X + b \right ) - -其中: - - :math:`X` :输入值,NCHW或NHWC格式的4-D Tensor - - :math:`W` :滤波器值,MCHW格式的4-D Tensor - - :math:`*` :卷积操作 - - :math:`b` :偏置值,2-D Tensor,形状为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值,NCHW或NHWC格式的4-D Tensor, 和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入形状::math:`(N,C_{in},H_{in},W_{in})` - - 滤波器形状: :math:`(C_{out},C_{in},H_{f},W_{f})` - -- 输出: - - 输出形状: :math:`(N,C_{out},H_{out},W_{out})` - -其中 - -.. math:: - - H_{out} &= \frac{\left ( H_{in} + padding\_height\_top + padding\_height\_bottom-\left ( dilation[0]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - W_{out} &= \frac{\left ( W_{in} + padding\_width\_left + padding\_width\_right -\left ( dilation[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - -如果 ``padding`` = "SAME": - -.. math:: - H_{out} = \frac{(H_{in} + stride[0] - 1)}{stride[0]} - -.. math:: - W_{out} = \frac{(W_{in} + stride[1] - 1)}{stride[1]} - -如果 ``padding`` = "VALID": - -.. math:: - H_{out} = \frac{\left ( H_{in} -\left ( dilation[0]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - W_{out} = \frac{\left ( W_{in} -\left ( dilation[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - -参数: - - **input** (Variable) - 形状为 :math:`[N, C, H, W]` 或 :math:`[N, H, W, C]` 的4-D Tensor,N是批尺寸,C是通道数,H是特征高度,W是特征宽度,数据类型为float16, float32或float64。 - - **num_filters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - - **filter_size** (int|list|tuple) - 滤波器大小。如果它是一个列表或元组,则必须包含两个整数值:(filter_size_height,filter_size_width)。若为一个整数,filter_size_height = filter_size_width = filter_size。 - - **stride** (int|list|tuple,可选) - 步长大小。滤波器和输入进行卷积计算时滑动的步长。如果它是一个列表或元组,则必须包含两个整型数:(stride_height,stride_width)。若为一个整数,stride_height = stride_width = stride。默认值:1。 - - **padding** (int|list|tuple|str,可选) - 填充大小。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含4个二元组:当 ``data_format`` 为"NCHW"时为 [[0,0], [0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NHWC"时为[[0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含4个整数值:[padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含2个整数值:[padding_height, padding_width],此时padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_height = padding_width = padding。默认值:0。 - - **dilation** (int|list|tuple,可选) - 膨胀比例大小。空洞卷积时会使用该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息。如果膨胀比例为列表或元组,则必须包含两个整型数:(dilation_height,dilation_width)。若为一个整数,dilation_height = dilation_width = dilation。默认值:1。 - - **groups** (int,可选) - 二维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=n,输入和滤波器分别根据通道数量平均分为n组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算,……,第n组滤波器和第n组输入进行卷积计算。默认值:1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool,可选)- 指定偏置参数属性的对象。若 ``bias_attr`` 为bool类型,只支持为False,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool,可选)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **act** (str,可选) - 激活函数类型, 如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` 。如果设为None,则未添加激活函数。默认值:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值:None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:4-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回卷积计算的结果,如果指定激活层,则返回卷积和激活计算之后的最终结果。 - -返回类型:Variable。 - -抛出异常: - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``input`` 的通道数未被明确定义。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有4个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果输入不是4-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - - ``ShapeError`` - 如果输出的通道数不能被 ``groups`` 整除。 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv2d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv2d(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/conv2d_transpose_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/conv2d_transpose_cn.rst deleted file mode 100644 index 3223f07188db98723157b6d8a53336dd9291653a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/conv2d_transpose_cn.rst +++ /dev/null @@ -1,120 +0,0 @@ -.. _cn_api_fluid_layers_conv2d_transpose: - -conv2d_transpose -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv2d_transpose(input, num_filters, output_size=None, filter_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format='NCHW') - -:api_attr: 声明式编程模式(静态图) - - - -二维转置卷积层(Convlution2D transpose layer) - -该层根据输入(input)、滤波器(filter)和卷积核膨胀比例(dilations)、步长(stride)、填充(padding)来计算输出特征层大小或者通过output_size指定输出特征层大小。输入(Input)和输出(Output)为NCHW或NHWC格式,其中N为批尺寸,C为通道数(channel),H为特征层高度,W为特征层宽度。滤波器是MCHW格式,M是输出图像通道数,C是输入图像通道数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入图像通道数除以组数的结果。转置卷积的计算过程相当于卷积的反向计算。转置卷积又被称为反卷积(但其实并不是真正的反卷积)。欲了解转置卷积层细节,请参考下面的说明和 参考文献_ 。如果参数bias_attr不为False, 转置卷积计算会添加偏置项。如果act不为None,则转置卷积计算之后添加相应的激活函数。 - -.. _参考文献: https://arxiv.org/pdf/1603.07285.pdf - - -输入 :math:`X` 和输出 :math:`Out` 函数关系如下: - -.. math:: - Out=\sigma (W*X+b)\\ - -其中: - - :math:`X` : 输入,具有NCHW或NHWC格式的4-D Tensor - - :math:`W` : 滤波器,具有NCHW格式的4-D Tensor - - :math:`*` : 卷积计算(注意:转置卷积本质上的计算还是卷积) - - :math:`b` : 偏置(bias),2-D Tensor,形状为 ``[M,1]`` - - :math:`σ` : 激活函数 - - :math:`Out` : 输出值,NCHW或NHWC格式的4-D Tensor, 和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入Tensor的形状: :math:`(N,C_{in}, H_{in}, W_{in})` - - 滤波器的形状 : :math:`(C_{in}, C_{out}, H_f, W_f)` - -- 输出: - - 输出Tensor的形状 : :math:`(N,C_{out}, H_{out}, W_{out})` - -其中 - -.. math:: - - & H'_{out} = (H_{in}-1)*strides[0] - pad\_height\_top - pad\_height\_bottom + dilations[0]*(H_f-1)+1\\ - & W'_{out} = (W_{in}-1)*strides[1]- pad\_width\_left - pad\_width\_right + dilations[1]*(W_f-1)+1 \\ - & H_{out}\in[H'_{out},H'_{out} + strides[0])\\ - & W_{out}\in[W'_{out},W'_{out} + strides[1])\\ - -如果 ``padding`` = "SAME": - -.. math:: - & H'_{out} = \frac{(H_{in} + stride[0] - 1)}{stride[0]}\\ - & W'_{out} = \frac{(W_{in} + stride[1] - 1)}{stride[1]}\\ - -如果 ``padding`` = "VALID": - -.. math:: - & H'_{out} = (H_{in}-1)*strides[0] + dilations[0]*(H_f-1)+1\\ - & W'_{out} = (W_{in}-1)*strides[1] + dilations[1]*(W_f-1)+1 \\ - -注意: - -如果output_size为None,则 :math:`H_{out}` = :math:`H^\prime_{out}` , :math:`W_{out}` = :math:`W^\prime_{out}` ;否则,指定的output_size_height(输出特征层的高) :math:`H_{out}` 应当介于 :math:`H^\prime_{out}` 和 :math:`H^\prime_{out} + strides[0]` 之间(不包含 :math:`H^\prime_{out} + strides[0]` ), 并且指定的output_size_width(输出特征层的宽) :math:`W_{out}` 应当介于 :math:`W^\prime_{out}` 和 :math:`W^\prime_{out} + strides[1]` 之间(不包含 :math:`W^\prime_{out} + strides[1]` )。 - -由于转置卷积可以当成是卷积的反向计算,而根据卷积的输入输出计算公式来说,不同大小的输入特征层可能对应着相同大小的输出特征层,所以对应到转置卷积来说,固定大小的输入特征层对应的输出特征层大小并不唯一。 - -如果指定了output_size, ``conv2d_transpose`` 可以自动计算滤波器的大小。 - -参数: - - **input** (Variable)- 形状为 :math:`[N, C, H, W]` 或 :math:`[N, H, W, C]` 的4-D Tensor,N是批尺寸,C是通道数,H是特征高度,W是特征宽度。数据类型:float32或float64。 - - **num_filters** (int) - 滤波器(卷积核)的个数,与输出图片的通道数相同。 - - **output_size** (int|tuple,可选) - 输出图片的大小。如果output_size是一个元组,则必须包含两个整型数,(output_size_height,output_size_width)。如果output_size=None,则内部会使用filter_size、padding和stride来计算output_size。如果output_size和filter_size是同时指定的,那么它们应满足上面的公式。默认:None。output_size和filter_size不能同时为None。 - - **filter_size** (int|tuple,可选) - 滤波器大小。如果filter_size是一个元组,则必须包含两个整型数,(filter_size_height, filter_size_width)。否则,filter_size_height = filter_size_width = filter_size。如果filter_size=None,则必须指定output_size, ``conv2d_transpose`` 内部会根据output_size、padding和stride计算出滤波器大小。默认:None。output_size和filter_size不能同时为None。 - - **padding** (int|list|tuple|str,可选) - 填充padding大小。padding参数在输入特征层每边添加 ``dilation * (kernel_size - 1) - padding`` 个0。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含4个二元组:当 ``data_format`` 为"NCHW"时为 [[0,0], [0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NHWC"时为[[0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含4个整数值:[padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含2个整数值:[padding_height, padding_width],此时padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_height = padding_width = padding。默认值:0。 - - **stride** (int|tuple,可选) - 步长stride大小。滤波器和输入进行卷积计算时滑动的步长。如果stride是一个元组,则必须包含两个整型数,形式为(stride_height,stride_width)。否则,stride_height = stride_width = stride。默认:stride = 1。 - - **dilation** (int|tuple,可选) - 膨胀比例(dilation)大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 `_ 较好理解。如果膨胀比例dilation是一个元组,那么元组必须包含两个整型数,形式为(dilation_height, dilation_width)。否则,dilation_height = dilation_width = dilation。默认:dilation= 1。 - - **groups** (int,可选) - 二维转置卷积层的组数。从Alex Krizhevsky的CNN Deep论文中的群卷积中受到启发,当group=2时,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认:group = 1。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv2d_transpose算子默认的权重初始化是Xavier。 - - **bias_attr** (ParamAttr|False,可选)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv2d_transpose算子默认的偏置初始化是0.0。 - - **use_cudnn** (bool,可选) - 是否使用cudnn内核,只有已安装cudnn库时才有效。默认:True。 - - **act** (str,可选) - 激活函数类型,如果设置为None,则不使用激活函数。默认:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:4-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回转置卷积计算的结果,如果指定激活层,则返回转置卷积和激活计算之后的最终结果。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` : 如果输入的shape、filter_size、stride、padding和groups不匹配,抛出ValueError - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有4个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ValueError`` - 如果 ``output_size`` 和 ``filter_size`` 同时为None。 - - ``ShapeError`` - 如果输入不是4-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv2d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv2d_transpose(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/conv3d_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/conv3d_cn.rst deleted file mode 100644 index 7468274e7a27a5ce3984d4fb1e0d13daa2237b05..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/conv3d_cn.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. _cn_api_fluid_layers_conv3d: - -conv3d -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv3d(input, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format="NCDHW") - -:api_attr: 声明式编程模式(静态图) - - - -该OP是三维卷积层(convolution3D layer),根据输入、滤波器、步长(stride)、填充(padding)、膨胀比例(dilations)一组参数计算得到输出特征层大小。输入和输出是NCDHW或NDWHC格式,其中N是批尺寸,C是通道数,D是特征层深度,H是特征层高度,W是特征层宽度。三维卷积(Convlution3D)和二维卷积(Convlution2D)相似,但多了一维深度信息(depth)。如果bias_attr不为False,卷积计算会添加偏置项。如果指定了激活函数类型,相应的激活函数会作用在最终结果上。 - -对每个输入X,有等式: - -.. math:: - - Out = \sigma \left ( W * X + b \right ) - -其中: - - :math:`X` :输入值,NCDHW或NDHWC格式的5-D Tensor - - :math:`W` :滤波器值,MCDHW格式的5-D Tensor - - :math:`*` :卷积操作 - - :math:`b` :偏置值,2-D Tensor,形为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值, NCDHW或NDHWC格式的5-D Tensor,和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入形状: :math:`(N, C_{in}, D_{in}, H_{in}, W_{in})` - - 滤波器形状: :math:`(C_{out}, C_{in}, D_f, H_f, W_f)` - -- 输出: - - 输出形状: :math:`(N, C_{out}, D_{out}, H_{out}, W_{out})` - -其中 - -.. math:: - - D_{out} &= \frac{\left ( D_{in} + padding\_depth\_front + padding\_depth\_back-\left ( dilation[0]*\left ( D_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - H_{out} &= \frac{\left ( H_{in} + padding\_height\_top + padding\_height\_bottom-\left ( dilation[1]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - - W_{out} &= \frac{\left ( W_{in} + padding\_width\_left + padding\_width\_right -\left ( dilation[2]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[2]}+1 - -如果 ``padding`` = "SAME": - -.. math:: - D_{out} = \frac{(D_{in} + stride[0] - 1)}{stride[0]} - - H_{out} = \frac{(H_{in} + stride[1] - 1)}{stride[1]} - - W_{out} = \frac{(W_{in} + stride[2] - 1)}{stride[2]} - -如果 ``padding`` = "VALID": - -.. math:: - D_{out} = \frac{\left ( D_{in} -\left ( dilation[0]*\left ( D_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - H_{out} = \frac{\left ( H_{in} -\left ( dilation[1]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - - W_{out} = \frac{\left ( W_{in} -\left ( dilation[2]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[2]}+1 - -参数: - - **input** (Variable) - 形状为 :math:`[N, C, D, H, W]` 或 :math:`[N, D, H, W, C]` 的5-D Tensor,N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度,数据类型为float16, float32或float64。 - - **num_fliters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - - **filter_size** (int|list|tuple) - 滤波器大小。如果它是一个列表或元组,则必须包含三个整数值:(filter_size_depth, filter_size_height,filter_size_width)。若为一个整数,则filter_size_depth = filter_size_height = filter_size_width = filter_size。 - - **stride** (int|list|tuple,可选) - 步长大小。滤波器和输入进行卷积计算时滑动的步长。如果它是一个列表或元组,则必须包含三个整型数:(stride_depth, stride_height, stride_width)。若为一个整数,stride_depth = stride_height = stride_width = stride。默认值:1。 - - **padding** (int|list|tuple|str,可选) - 填充大小。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含5个二元组:当 ``data_format`` 为"NCDHW"时为 [[0,0], [0,0], [padding_depth_front, padding_depth_back], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NDHWC"时为[[0,0], [padding_depth_front, padding_depth_back], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含6个整数值:[padding_depth_front, padding_depth_back, padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含3个整数值:[padding_depth, padding_height, padding_width],此时 padding_depth_front = padding_depth_back = padding_depth, padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_depth = padding_height = padding_width = padding。默认值:0。 - - **dilation** (int|list|tuple,可选) - 膨胀比例大小。空洞卷积时会使用该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息。如果膨胀比例为列表或元组,则必须包含三个整型数:(dilation_depth, dilation_height,dilation_width)。若为一个整数,dilation_depth = dilation_height = dilation_width = dilation。默认值:1。 - - **groups** (int,可选) - 三维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=n,输入和滤波器分别根据通道数量平均分为n组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算,……,第n组滤波器和第n组输入进行卷积计算。默认值:1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool,可选)- 指定偏置参数属性的对象。若 ``bias_attr`` 为bool类型,只支持为False,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool,可选)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **act** (str,可选) - 激活函数类型, 如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` 。如果设为None,则未添加激活函数。默认值:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值:None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCDHW"和"NDHWC"。N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度。默认值:"NCDHW"。 - -返回:5-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回卷积计算的结果,如果指定激活层,则返回卷积和激活计算之后的最终结果。 - -返回类型:Variable。 - -抛出异常: - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCDHW"也不是"NDHWC"。 - - ``ValueError`` - 如果 ``input`` 的通道数未被明确定义。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有5个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果输入不是5-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - - ``ShapeError`` - 如果输出的通道数不能被 ``groups`` 整除。 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 12, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv3d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv3d(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 12, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/conv3d_transpose_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/conv3d_transpose_cn.rst deleted file mode 100644 index 0331df5d6a4fab39a78c68190b0b1066ec5681a9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/conv3d_transpose_cn.rst +++ /dev/null @@ -1,124 +0,0 @@ -.. _cn_api_fluid_layers_conv3d_transpose: - -conv3d_transpose -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv3d_transpose(input, num_filters, output_size=None, filter_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format='NCDHW') - -:api_attr: 声明式编程模式(静态图) - - - -三维转置卷积层(Convlution3D transpose layer) - -该层根据输入(input)、滤波器(filter)和卷积核膨胀比例(dilations)、步长(stride)、填充(padding)来计算输出特征层大小或者通过output_size指定输出特征层大小。输入(Input)和输出(Output)为NCDHW或者NDHWC格式。其中N为批尺寸,C为通道数(channel),D为特征深度,H为特征层高度,W为特征层宽度。转置卷积的计算过程相当于卷积的反向计算。转置卷积又被称为反卷积(但其实并不是真正的反卷积)。欲了解卷积转置层细节,请参考下面的说明和 参考文献_ 。如果参数bias_attr不为False, 转置卷积计算会添加偏置项。如果act不为None,则转置卷积计算之后添加相应的激活函数。 - -.. _参考文献: http://www.matthewzeiler.com/wp-content/uploads/2017/07/cvpr2010.pdf - -输入 :math:`X` 和输出 :math:`Out` 函数关系如下: - -.. math:: - \\Out=\sigma (W*X+b)\\ - -其中: - - :math:`X` : 输入,具有NCDHW或NDHWC格式的5-D Tensor - - :math:`W` : 滤波器,具有NCDHW格式的5-D Tensor - - :math:`*` : 卷积操作(注意:转置卷积本质上的计算还是卷积) - - :math:`b` : 偏置(bias),2-D Tensor,形状为 ``[M,1]`` - - :math:`σ` : 激活函数 - - :math:`Out` : 输出值,NCDHW或NDHWC格式的5-D Tensor,和 ``X`` 的形状可能不同 - -**示例** - -输入: - - 输入的shape::math:`(N,C_{in}, D_{in}, H_{in}, W_{in})` - - 滤波器的shape::math:`(C_{in}, C_{out}, D_f, H_f, W_f)` - - - -输出: - - 输出的shape::math:`(N,C_{out}, D_{out}, H_{out}, W_{out})` - - -其中: - -.. math:: - - & D'_{out}=(D_{in}-1)*strides[0] - pad\_depth\_front - pad\_depth\_back + dilations[0]*(D_f-1)+1\\ - & H'_{out}=(H_{in}-1)*strides[1] - pad\_height\_top - pad\_height\_bottom + dilations[1]*(H_f-1)+1\\ - & W'_{out}=(W_{in}-1)*strides[2] - pad\_width\_left - pad\_width\_right + dilations[2]*(W_f-1)+1\\ - & D_{out}\in[D'_{out},D'_{out} + strides[0])\\ - & H_{out}\in[H'_{out},H'_{out} + strides[1])\\ - & W_{out}\in[W'_{out},W'_{out} + strides[2])\\ - -如果 ``padding`` = "SAME": - -.. math:: - D'_{out} = \frac{(D_{in} + stride[0] - 1)}{stride[0]}\\ - H'_{out} = \frac{(H_{in} + stride[1] - 1)}{stride[1]}\\ - W'_{out} = \frac{(W_{in} + stride[2] - 1)}{stride[2]}\\ - -如果 ``padding`` = "VALID": - -.. math:: - D'_{out}=(D_{in}-1)*strides[0] + dilations[0]*(D_f-1)+1\\ - H'_{out}=(H_{in}-1)*strides[1] + dilations[1]*(H_f-1)+1\\ - W'_{out}=(W_{in}-1)*strides[2] + dilations[2]*(W_f-1)+1\\ - -注意: - -如果output_size为None,则 :math:`D_{out}` = :math:`D^\prime_{out}` , :math:`H_{out}` = :math:`H^\prime_{out}` , :math:`W_{out}` = :math:`W^\prime_{out}` ;否则,指定的output_size_depth(输出特征层的深度) :math:`D_{out}` 应当介于 :math:`D^\prime_{out}` 和 :math:`D^\prime_{out} + strides[0]` 之间(不包含 :math:`D^\prime_{out} + strides[0]` ),指定的output_size_height(输出特征层的高) :math:`H_{out}` 应当介于 :math:`H^\prime_{out}` 和 :math:`H^\prime_{out} + strides[1]` 之间(不包含 :math:`H^\prime_{out} + strides[1]` ), 并且指定的output_size_width(输出特征层的宽) :math:`W_{out}` 应当介于 :math:`W^\prime_{out}` 和 :math:`W^\prime_{out} + strides[2]` 之间(不包含 :math:`W^\prime_{out} + strides[2]` )。 - -由于转置卷积可以当成是卷积的反向计算,而根据卷积的输入输出计算公式来说,不同大小的输入特征层可能对应着相同大小的输出特征层,所以对应到转置卷积来说,固定大小的输入特征层对应的输出特征层大小并不唯一。 - -如果指定了output_size, ``conv3d_transpose`` 可以自动计算滤波器的大小。 - -参数: - - **input** (Variable)- 形状为 :math:`[N, C, D, H, W]` 或 :math:`[N, D, H, W, C]` 的5-D Tensor,N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度,数据类型:float32或float64。 - - **num_filters** (int) - 滤波器(卷积核)的个数,与输出的图片的通道数相同。 - - **output_size** (int|tuple,可选) - 输出图片的大小。如果output_size是一个元组,则必须包含三个整型数,(output_size_depth,output_size_height,output_size_width)。如果output_size=None,则内部会使用filter_size、padding和stride来计算output_size。如果output_size和filter_size是同时指定的,那么它们应满足上面的公式。默认:None。output_size和filter_size不能同时为None。 - - **filter_size** (int|tuple,可选) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_depth,filter_size_height, filter_size_width)。否则,filter_size_depth = filter_size_height = filter_size_width = filter_size。如果filter_size=None,则必须指定output_size, ``conv2d_transpose`` 内部会根据output_size、padding和stride计算出滤波器大小。默认:None。output_size和filter_size不能同时为None。 - - **padding** (int|list|tuple|str,可选) - 填充padding大小。padding参数在输入特征层每边添加 ``dilation * (kernel_size - 1) - padding`` 个0。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含5个二元组:当 ``data_format`` 为"NCDHW"时为 [[0,0], [0,0], [pad_depth_front, pad_depth_back], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right]],当 ``data_format`` 为"NDHWC"时为[[0,0], [pad_depth_front, pad_depth_back], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right], [0,0]];(2)包含6个整数值:[pad_depth_front, pad_depth_back, pad_height_top, pad_height_bottom, pad_width_left, pad_width_right];(3)包含3个整数值:[pad_depth, pad_height, pad_width],此时 pad_depth_front = pad_depth_back = pad_depth, pad_height_top = pad_height_bottom = pad_height, pad_width_left = pad_width_right = pad_width。若为一个整数,pad_depth = pad_height = pad_width = padding。默认值:0。 - - **stride** (int|tuple,可选) - 步长stride大小。滤波器和输入进行卷积计算时滑动的步长。如果stride是一个元组,那么元组的形式为(stride_depth,stride_height,stride_width)。否则,stride_depth = stride_height = stride_width = stride。默认:stride = 1。 - - **dilation** (int|tuple,可选) - 膨胀比例dilation大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 `_ 较好理解。如果膨胀比例dilation是一个元组,那么元组的形式为(dilation_depth,dilation_height, dilation_width)。否则,dilation_depth = dilation_height = dilation_width = dilation。默认:dilation= 1。 - - **groups** (int,可选) - 三维转置卷积层的组数。从Alex Krizhevsky的CNN Deep论文中的群卷积中受到启发,当group=2时,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认:group = 1。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv3d_transpose算子默认的权重初始化是Xavier。 - - **bias_attr** (ParamAttr|False,可选)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv3d_transpose算子默认的偏置初始化是0.0。 - - **use_cudnn** (bool,可选) - 是否使用cudnn内核,只有已安装cudnn库时才有效。默认:True。 - - **act** (str,可选) - 激活函数类型,如果设置为None,则不使用激活函数。默认:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCDHW"和"NDHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCDHW"。 - -返回:5-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回转置卷积计算的结果,如果指定激活层,则返回转置卷积和激活计算之后的最终结果。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` - 如果输入的shape、filter_size、stride、padding和groups不匹配。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCDHW"也不是"NDHWC"。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有5个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ValueError`` - 如果 ``output_size`` 和 ``filter_size`` 同时为None。 - - ``ShapeError`` - 如果输入不是5-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 12, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv3d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv3d_transpose(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 12, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) diff --git a/doc/paddle/api/paddle/fluid/layers/nn/cos_sim_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/cos_sim_cn.rst deleted file mode 100644 index bee83df05f929eb2808de57958d66198e8531d05..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/cos_sim_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_cos_sim: - -cos_sim -------------------------------- - -.. py:function:: paddle.fluid.layers.cos_sim(X, Y) - - - - -余弦相似度算子(Cosine Similarity Operator) - -.. math:: - - Out = \frac{X^{T}*Y}{\sqrt{X^{T}*X}*\sqrt{Y^{T}*Y}} - -输入X和Y必须具有相同的shape。但是有一个例外:如果输入Y的第一维为1(不同于输入X的第一维度),在计算它们的余弦相似度之前,Y的第一维度会自动进行广播(broadcast),以便于匹配输入X的shape。 - -输入X和Y可以都携带或者都不携带LoD(Level of Detail)信息。但输出和输入X的LoD信息保持一致。 - -参数: - - **X** (Variable) - cos_sim操作函数的第一个输入,维度为 ``[N_1, N_2, ..., N_k]`` 的多维LoDTensor, 维度不能小于2。数据类型:float32。 - - **Y** (Variable) - cos_sim操作函数的第二个输入,维度为 ``[N_1 或者 1, N_2, ..., N_k]`` 的多维Tensor。数据类型:float32。 - -返回:LoDTensor。输出两个输入的余弦相似度。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name='x', shape=[3, 7], dtype='float32', append_batch_size=False) - y = fluid.layers.data(name='y', shape=[1, 7], dtype='float32', append_batch_size=False) - out = fluid.layers.cos_sim(x, y) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(3, 7)).astype('float32') - np_y = np.random.random(size=(1, 7)).astype('float32') - output = exe.run(feed={"x": np_x, "y": np_y}, fetch_list = [out]) - print(output) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/crf_decoding_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/crf_decoding_cn.rst deleted file mode 100644 index ea5fd7eb1e56351474a5a72181b8e58e1929811d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/crf_decoding_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_crf_decoding: - -crf_decoding -------------------------------- - - -.. py:function:: paddle.fluid.layers.crf_decoding(input, param_attr, label=None, length=None) - -:api_attr: 声明式编程模式(静态图) - - - - - -该层读取由 :ref:`cn_api_fluid_layers_linear_chain_crf` 学习的 emission feature weights(发射状态特征的权重)和 transition feature weights (转移特征的权重) 进行解码。 -本层实现了 Viterbi 算法,可以动态地寻找隐藏状态最可能的序列,该序列也被称为 Viterbi 路径(Viterbi path),从而得到观察标签 (tags) 序列。 - -这个层运算的结果会随着输入 ``Label`` 的有无而改变: - - 1. ``Label`` 非 None 的情况,在实际训练中时常发生。此时本层会协同 :ref:`cn_api_fluid_layers_chunk_eval` 工作。在 LoDTensor 模式下,本层会返回一行形为 [N X 1] 的向量,在 padding 模式下,返回形状则为 [B x S],其中值为 0 的部分代表该 label 不适合作为对应结点的标注,值为1的部分则反之。此类型的输出可以直接作为 :ref:`cn_api_fluid_layers_chunk_eval` 算子的输入; - - 2. 当没有 ``Label`` 时,该函数会执行标准解码过程; - -(没有 ``Label`` 时)该运算返回一个形状为 [N X 1] 或 [B x S] 的向量,此处的形状取决于输入是 LoDTensor 还是普通 Tensor,其中元素取值范围为 0 ~ 最大标注个数-1,分别为预测出的标注(tag)所在的索引。 - -参数: - - **input** (Variable) — 一个形为 [N x D] 的 LoDTensor,其中 N 是mini-batch的大小,D是标注(tag) 的总数; 或者形为 [B x S x D] 的普通 Tensor,B 是批次大小,S 是序列最大长度,D 是标注的总数。 该输入是 :ref:`cn_api_fluid_layers_linear_chain_crf`` 的 unscaled emission weight matrix (未标准化的发射权重矩阵)。数据类型为 float32 或者 float64。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **label** (Variable,可选) — 形为 [N x 1] 的正确标注(ground truth)(LoDTensor 模式),或者形状为 [B x S]。 有关该参数的更多信息,请详见上述描述。数据类型为 int64。 - - **length** (Variable,可选) — 形状为 [B x 1], 表示输入序列的真实长度。该输入非 None,表示该层工作在 padding 模式下,即 ``input`` 和 ``label`` 都是带 padding 的普通 Tensor。数据类型为 int64。 - -返回:解码结果具体内容根据 ``Label`` 参数是否提供而定,请参照上面的介绍来详细了解。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - images = fluid.layers.data(name='pixel', shape=[784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int32') - hidden = fluid.layers.fc(input=images, size=2) - crf = fluid.layers.linear_chain_crf(input=hidden, label=label, - param_attr=fluid.ParamAttr(name="crfw")) - crf_decode = fluid.layers.crf_decoding(input=hidden, - param_attr=fluid.ParamAttr(name="crfw")) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/crop_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/crop_cn.rst deleted file mode 100644 index 18d375f06d5e4277e93995db4de71a3006cbf0fb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/crop_cn.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. _cn_api_fluid_layers_crop: - -crop -------------------------------- - -.. py:function:: paddle.fluid.layers.crop(x, shape=None, offsets=None, name=None) - - - - -该OP根据偏移量(offsets)和形状(shape),裁剪输入张量。 - -**注意:** 此OP已被弃用,它将在以后的版本中被删除,请使用 :ref:`cn_api_fluid_layers_crop_tensor` 替代 - -**样例**: - -:: - - * Case 1: - Given - X = [[0, 1, 2, 0, 0] - [0, 3, 4, 0, 0] - [0, 0, 0, 0, 0]], - and - shape = [2, 2], - offsets = [0, 1], - output is: - Out = [[1, 2], - [3, 4]]. - * Case 2: - Given - X = [[0, 1, 2, 5, 0] - [0, 3, 4, 6, 0] - [0, 0, 0, 0, 0]], - and shape is tensor - shape = [[0, 0, 0] - [0, 0, 0]] - and - offsets = [0, 1], - - output is: - Out = [[1, 2, 5], - [3, 4, 6]]. - - -参数: - - **x** (Variable): 多维Tensor,数据类型为float32 - - **shape** (Variable|list/tuple of integers) - 指定输出Tensor的形状,它可以是一个Tensor/整数列表/整数元组。如果是Tensor,它的秩必须与x相同,它的形状指定了输出Tensor的形状,它的元素的数值在这里不起作用,该方式适用于每次迭代时候需要改变输出形状的情况。如果是整数列表/元组,则其长度必须与x的秩相同 - - **offsets** (Variable|list/tuple of integers|None,可选) - 指定每个维度上的裁剪的偏移量,它可以是一个Tensor,或者一个整数列表/整数元组。如果是一个Tensor,它的秩必须与x相同,这种方法适用于每次迭代的偏移量(offset)都可能改变的情况。如果是一个整数列表/元组,则长度必须与x的秩相同,如果offsets=None,则每个维度的偏移量为0。默认值为None - - **name** (str|None,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 经过形状裁剪之后的Tensor,与输入x具有相同的数据类型 - -返回类型: Variable - -抛出异常: 如果形状不是列表、元组或Variable,抛出ValueError - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - # case 1 - # 输入x的形状为[-1, 3, 5], - # 参数shape = y是个Variable,形状是[-1, 2, 2],输出Tensor将具有和y一样的形状 - # y的具体数值不起作用,起作用的只有它的形状 - # 经过下面的crop操作之后输出张量的形状是: [-1, 2, 2] - x = fluid.layers.data(name="x", shape=[3, 5], dtype="float32") - y = fluid.layers.data(name="y", shape=[2, 2], dtype="float32") - crop = fluid.layers.crop(x, shape=y) - ## 或者 case 2 - # 输入z的形状为: [-1, 3, 5], shape为整数列表[-1, 2, 3] - # 则经过下面的crop操作之后输出张量的形状为:[-1, 2, 3] - z = fluid.layers.data(name="z", shape=[3, 5], dtype="float32") - crop = fluid.layers.crop(z, shape=[-1, 2, 3]) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/crop_tensor_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/crop_tensor_cn.rst deleted file mode 100644 index 79b2de8fcc0259615cb1f5eadc6ee2da4b71359d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/crop_tensor_cn.rst +++ /dev/null @@ -1,110 +0,0 @@ -.. _cn_api_fluid_layers_crop_tensor: - -crop_tensor -------------------------------- - -.. py:function:: paddle.fluid.layers.crop_tensor(x, shape=None, offsets=None, name=None) - -:alias_main: paddle.crop_tensor -:alias: paddle.crop_tensor,paddle.tensor.crop_tensor,paddle.tensor.creation.crop_tensor -:old_api: paddle.fluid.layers.crop_tensor - - - -根据偏移量(offsets)和形状(shape),裁剪输入(x)Tensor。 - -**示例**: - -:: - - * 示例1(输入为2-D Tensor): - - 输入: - X.shape = [3, 5] - X.data = [[0, 1, 2, 0, 0], - [0, 3, 4, 0, 0], - [0, 0, 0, 0, 0]] - - 参数: - shape = [2, 2] - offsets = [0, 1] - - 输出: - Out.shape = [2, 2] - Out.data = [[1, 2], - [3, 4]] - - * 示例2(输入为3-D Tensor): - - 输入: - - X.shape = [2, 3, 4] - X.data = [[[0, 1, 2, 3], - [0, 5, 6, 7], - [0, 0, 0, 0]], - [[0, 3, 4, 5], - [0, 6, 7, 8], - [0, 0, 0, 0]]] - - 参数: - shape = [2, 2, -1] - offsets = [0, 0, 1] - - 输出: - Out.shape = [2, 2, 3] - Out.data = [[[1, 2, 3], - [5, 6, 7]], - [[3, 4, 5], - [6, 7, 8]]] - -参数: - - **x** (Variable): 1-D到6-D Tensor,数据类型为float32、float64、int32或者int64。 - - **shape** (list|tuple|Variable) - 输出Tensor的形状,数据类型为int32。如果是列表或元组,则其长度必须与x的维度大小相同,如果是Variable,则其应该是1-D Tensor。当它是列表时,每一个元素可以是整数或者形状为[1]的Tensor。含有Variable的方式适用于每次迭代时需要改变输出形状的情况。 - - **offsets** (list|tuple|Variable,可选) - 每个维度上裁剪的偏移量,数据类型为int32。如果是列表或元组,则其长度必须与x的维度大小相同,如果是Variable,则其应是1-D Tensor。当它是列表时,每一个元素可以是整数或者形状为[1]的Variable。含有Variable的方式适用于每次迭代的偏移量(offset)都可能改变的情况。默认值:None,每个维度的偏移量为0。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 裁剪后的Tensor,数据类型与输入(x)相同。 - -返回类型: Variable - -抛出异常: - - :code:`TypeError` - x 的数据类型应该是float32、float64、int32或者int64。 - - :code:`TypeError` - shape 应该是列表、元组或Variable。 - - :code:`TypeError` - shape 的数据类型应该是int32。 - - :code:`TypeError` - offsets 应该是列表、元组、Variable或None。 - - :code:`TypeError` - offsets 的数据类型应该是int32。 - - :code:`TypeError` - offsets 的元素应该大于等于0。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data(name="x", shape=[None, 3, 5], dtype="float32") - # x.shape = [-1, 3, 5], where -1 indicates batch size, and it will get the exact value in runtime. - - # shape is a 1-D Tensor - crop_shape = fluid.data(name="crop_shape", shape=[3], dtype="int32") - crop0 = fluid.layers.crop_tensor(x, shape=crop_shape) - # crop0.shape = [-1, -1, -1], it means crop0.shape[0] = x.shape[0] in runtime. - - # or shape is a list in which each element is a constant - crop1 = fluid.layers.crop_tensor(x, shape=[-1, -1, 3], offsets=[0, 1, 0]) - # crop1.shape = [-1, 2, 3] - - # or shape is a list in which each element is a constant or Tensor - y = fluid.data(name="y", shape=[3, 8, 8], dtype="float32") - dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32") - crop2 = fluid.layers.crop_tensor(y, shape=[3, dim1, 4]) - # crop2.shape = [3, -1, 4] - - # offsets is a 1-D Tensor - crop_offsets = fluid.data(name="crop_offsets", shape=[3], dtype="int32") - crop3 = fluid.layers.crop_tensor(x, shape=[-1, 2, 3], offsets=crop_offsets) - # crop3.shape = [-1, 2, 3] - - # offsets is a list in which each element is a constant or Tensor - offsets_var = fluid.data(name="offset", shape=[1], dtype="int32") - crop4 = fluid.layers.crop_tensor(x, shape=[-1, 2, 3], offsets=[0, 1, offsets_var]) - # crop4.shape = [-1, 2, 3] - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/ctc_greedy_decoder_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/ctc_greedy_decoder_cn.rst deleted file mode 100644 index c2d8f67ca85f49c121c2a6530b4ad7bcb1632328..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/ctc_greedy_decoder_cn.rst +++ /dev/null @@ -1,105 +0,0 @@ -.. _cn_api_fluid_layers_ctc_greedy_decoder: - -ctc_greedy_decoder -------------------------------- - -.. py:function:: paddle.fluid.layers.ctc_greedy_decoder(input, blank, name=None) - - - - - -该OP用于贪婪策略解码序列,步骤如下: - 1. 获取输入中的每一行的最大值索引,也就是numpy.argmax(input, axis=0)。 - 2. 对于step1结果中的每个序列,合并两个空格之间的重复部分并删除所有空格。 - -该API支持两种输入,LoDTensor和Tensor输入,不同输入的代码样例如下: - -**样例**: - -:: - - # for lod tensor input - 已知: - - input.data = [[0.6, 0.1, 0.3, 0.1], - [0.3, 0.2, 0.4, 0.1], - [0.1, 0.5, 0.1, 0.3], - [0.5, 0.1, 0.3, 0.1], - - [0.5, 0.1, 0.3, 0.1], - [0.2, 0.2, 0.2, 0.4], - [0.2, 0.2, 0.1, 0.5], - [0.5, 0.1, 0.3, 0.1]] - - input.lod = [[4, 4]] - - 计算过程: - - 1. 将argmax的运算结果应用于输入的第一个序列,即 input.data[0:4] 。 - 则得出的结果为[[0], [2], [1], [0]] - 2. 合并重复的索引值部分,删除空格,即为0的值。 - 则第一个输入序列对应的输出为:[[2], [1]] - - 最后 - - output.data = [[2], - [1], - [3]] - - output.lod = [[2, 1]] - - # for tensor input - input.data = [[[0.6, 0.1, 0.3, 0.1], - [0.3, 0.2, 0.4, 0.1], - [0.1, 0.5, 0.1, 0.3], - [0.5, 0.1, 0.3, 0.1]], - - [[0.5, 0.1, 0.3, 0.1], - [0.2, 0.2, 0.2, 0.4], - [0.2, 0.2, 0.1, 0.5], - [0.5, 0.1, 0.3, 0.1]]] - - input_length.data = [[4], [4]] - input.shape = [2, 4, 4] - - step1: Apply argmax to first input sequence which is input.data[0:4]. Then we get: - [[0], [2], [1], [0]], for input.data[4:8] is [[0], [3], [3], [0]], shape is [2,4,1] - step2: Change the argmax result to use padding mode, then argmax result is - [[0, 2, 1, 0], [0, 3, 3, 0]], shape is [2, 4], lod is [], input_length is [[4], [4]] - step3: Apply ctc_align to padding argmax result, padding_value is 0 - - Finally: - output.data = [[2, 1, 0, 0], - [3, 0, 0, 0]] - output_length.data = [[2], [1]] - - -参数: - - **input** (Variable) — 变长序列的概率, 在输入为LoDTensor情况下,它是具有LoD信息的二维LoDTensor。 形状为[Lp,num_classes +1],其中Lp是所有输入序列的长度之和,num_classes是真实的类数。 在输入为Tensor情况下,它是带有填充的3-D张量,其形状为[batch_size,N,num_classes +1]。 (不包括空白标签)。 数据类型可以是float32或float64。 - - **blank** (int) — Connectionist Temporal Classification (CTC) loss空白标签索引, 其数值属于半开区间[0,num_classes + 1) - - **name** (str) — (str|None,可选) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None - -返回:对于输入为LoDTensor的情况,返回CTC贪婪解码器的结果,即2-D LoDTensor,形状为[Lp,1],数据类型为int64。 “ Lp”是所有输出序列长度的总和。 如果结果中的所有序列均为空,则结果LoDTensor将为[-1],其中LoD为[[]]。对于输入为Tensor的情况,返回一个元组,(output, output_length), 其中,output是一个形状为 [batch_size, N],类型为int64的Tensor。output_length是一个形状为[batch_size, 1],类型为int64的Tensor,表示Tensor输入下,每个输出序列的长度。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - # for lod mode - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[None, 8], dtype='float32', lod_level=1) - cost = fluid.layers.ctc_greedy_decoder(input=x, blank=0) - # for padding mode - x_pad = fluid.data(name='x_pad', shape=[10, 4, 8], dtype='float32') - x_pad_len = fluid.data(name='x_pad_len', shape=[10, 1], dtype='int64') - out, out_len = fluid.layers.ctc_greedy_decoder(input=x_pad, blank=0, - input_length=x_pad_len) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/data_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/data_norm_cn.rst deleted file mode 100644 index 4954dfa22a7c67baa441c7a209ab7df87d8cc4d8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/data_norm_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _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, name=None, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False) - -:api_attr: 声明式编程模式(静态图) - - - -**数据正则化层** - -可用作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** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - **in_place** (bool,默认值False) - 使data_norm的输入和输出复用同一块内存。 - - **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进行模型平均。 - - **slot_dim** (int, 默认值为-1) - 一个slot的embedding维度,slot用来表征一类特征的集合,在pslib模式下,通常我们通过slot区分特征id,并从参数服务器(pslib)中提取它们的embedding。embedding的第一维是历史上这个embedding展示的次数。如果本op的输入是由这样的embedding连接而来,那么当这个特征id是新的或空的,则正则化结果可能不实际。为了避免这种情况,我们添加了slot_dim来定位并判断这一维是否为零。如果是的话,我们选择跳过正则化。 - - **summary_decay_rate** (float, 默认值为0.9999999) - 更新summary信息时的衰减率。 - - **sync_stats** (bool, 默认值False) - 在多GPU卡的场景下可以使用,用来同步多卡间的summary信息。 - - **enable_scale_and_shift** (bool, 默认值False) - 在分布式全局正则化后是否做像batchnorm一样做scale&shift的操作。 - -返回: 张量变量,是对输入数据进行正则化后的结果。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - hidden1 = fluid.layers.data(name="hidden1", shape=[200]) - hidden2 = fluid.layers.data_norm(name="hidden2", input=hidden1) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/deformable_conv_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/deformable_conv_cn.rst deleted file mode 100644 index a74315d5ad7fbcc54bef8869c7ebd11433450b2d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/deformable_conv_cn.rst +++ /dev/null @@ -1,102 +0,0 @@ -.. _cn_api_fluid_layers_deformable_conv: - -deformable_conv -------------------------------- - - -.. py:function:: paddle.fluid.layers.deformable_conv(input, offset, mask, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, deformable_groups=None, im2col_step=None, param_attr=None, bias_attr=None, modulated=True, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**可变形卷积算子** - -deformable_conv op对输入4-D Tensor计算2-D可变形卷积。给定输入Tensor x,输出Tensor y,可变形卷积运算如下所示: - -可形变卷积v2: - - :math:`y(p) = \sum_{k=1}^{K}{w_k * x(p + p_k + \Delta p_k) * \Delta m_k}` - -可形变卷积v1: - - :math:`y(p) = \sum_{k=1}^{K}{w_k * x(p + p_k + \Delta p_k)}` - -其中 :math:`\Delta p_k` 和 :math:`\Delta m_k` 分别为第k个位置的可学习偏移和调制标量。在deformable_conv_v1中 :math:`\Delta m_k` 为1. - -具体细节可以参考论文:`<> `_ 和 `<> `_ 。 - -**示例** - -输入: - input 形状: :math:`(N, C_{in}, H_{in}, W_{in})` - - 卷积核形状: :math:`(C_{out}, C_{in}, H_f, W_f)` - - offset 形状: :math:`(N, 2 * deformable\_groups * H_f * H_w, H_{in}, W_{in})` - - mask 形状: :math:`(N, deformable\_groups * H_f * H_w, H_{in}, W_{in})` - -输出: - 输出形状: :math:`(N, C_{out}, H_{out}, W_{out})` - -其中 - -.. math:: - - H_{out}&= \frac{(H_{in} + 2 * paddings[0] - (dilations[0] * (H_f - 1) + 1))}{strides[0]} + 1 - - W_{out}&= \frac{(W_{in} + 2 * paddings[1] - (dilations[1] * (W_f - 1) + 1))}{strides[1]} + 1 - - -参数: - - **input** (Variable) - 形状为 :math:`[N, C, H, W]` 的输入Tensor,数据类型为float32或float64。 - - **offset** (Variable) – 可变形卷积层的输入坐标偏移,数据类型为float32或float64。 - - **mask** (Variable, 可选) – 可变形卷积层的输入掩码,当使用可变形卷积算子v1时,请将mask设置为None, 数据类型为float32或float64。 - - **num_filters** (int) – 卷积核数,与输出Tensor通道数相同。 - - **filter_size** (int|tuple) – 卷积核大小。如果filter_size为元组,则必须包含两个整数(filter_size_H, filter_size_W)。若数据类型为int,卷积核形状为(filter_size, filter_size)。 - - **stride** (int|tuple) – 步长大小。如果stride为元组,则必须包含两个整数(stride_H, stride_W)。否则stride_H = stride_W = stride。默认值为1。 - - **padding** (int|tuple) – padding大小。如果padding为元组,则必须包含两个整数(padding_H, padding_W)。否则padding_H = padding_W = padding。默认值为0。 - - **dilation** (int|tuple) – dilation大小。如果dilation为元组,则必须包含两个整数(dilation_H, dilation_W)。否则dilation_H = dilation_W = dilation。默认值为1。 - - **groups** (int) – 卷积组数。依据Alex Krizhevsky的Deep CNN论文中的分组卷积,有:当group=2时,前一半卷积核只和前一半输入通道有关,而后一半卷积核只和后一半输入通道有关。缺省值为1。 - - **deformable_groups** (int) – 可变形卷积组数。默认值为1。 - - **im2col_step** (int) – 每个im2col计算的最大图像数。总batch大小应可以被该值整除或小于该值。如果您面临内存问题,可以尝试在此处使用一个较小的值。默认值为64。 - - **param_attr** (ParamAttr,可选) – 可变形卷积的可学习权重的属性。如果将其设置为None或某种ParamAttr,可变形卷积将创建ParamAttr作为param_attr。如果没有设置此param_attr的Initializer,该参数将被Normal(0.0, std)初始化,且其中的std为 :math:`(\frac{2.0 }{filter\_elem\_num})^{0.5}` 。默认值为None。 - - **bias_attr** (ParamAttr|bool,可选) – 可变形卷积层的偏置的参数属性。如果设为False,则输出单元不会加偏置。如果设为None或者某种ParamAttr,conv2d会创建ParamAttr作为bias_attr。如果不设置bias_attr的Initializer,偏置会被初始化为0。默认值为None。 - - **modulated** (bool)- 确定使用v1和v2中的哪个版本,如果为True,则选择使用v2。默认值为True。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:可变形卷积输出的4-D Tensor,数据类型为float32或float64。 - -返回类型:Variable - -抛出异常:ValueError – 如果input, filter_size, stride, padding和groups的大小不匹配。 - -**代码示例** - -.. code-block:: python - - #deformable conv v2: - - import paddle.fluid as fluid - C_in, H_in, W_in = 3, 32, 32 - filter_size, deformable_groups = 3, 1 - data = fluid.layers.data(name='data', shape=[C_in, H_in, W_in], dtype='float32') - offset = fluid.layers.data(name='offset', shape=[2*deformable_groups*filter_size**2, H_in, W_in], dtype='float32') - mask = fluid.layers.data(name='mask', shape=[deformable_groups*filter_size**2, H_in, W_in], dtype='float32') - out = fluid.layers.deformable_conv(input=data, offset=offset, mask=mask, - num_filters=2, filter_size=filter_size, padding=1, modulated=True) - - #deformable conv v1: - - import paddle.fluid as fluid - C_in, H_in, W_in = 3, 32, 32 - filter_size, deformable_groups = 3, 1 - data = fluid.layers.data(name='data', shape=[C_in, H_in, W_in], dtype='float32') - offset = fluid.layers.data(name='offset', shape=[2*deformable_groups*filter_size**2, H_in, W_in], dtype='float32') - out = fluid.layers.deformable_conv(input=data, offset=offset, mask=None, - num_filters=2, filter_size=filter_size, padding=1, modulated=False) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/deformable_roi_pooling_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/deformable_roi_pooling_cn.rst deleted file mode 100644 index bcccb58ca3fd10fd79903184f59362b936e63804..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/deformable_roi_pooling_cn.rst +++ /dev/null @@ -1,102 +0,0 @@ -.. _cn_api_fluid_layers_deformable_roi_pooling: - -deformable_roi_pooling -------------------------------- - -.. py:function:: paddle.fluid.layers.deformable_roi_pooling(input, rois, trans, no_trans=False, spatial_scale=1.0, group_size=[1, 1], pooled_height=1, pooled_width=1, part_size=None, sample_per_part=1, trans_std=0.1, position_sensitive=False, name=None) - -:alias_main: paddle.nn.functional.deformable_roi_pooling -:alias: paddle.nn.functional.deformable_roi_pooling,paddle.nn.functional.vision.deformable_roi_pooling -:old_api: paddle.fluid.layers.deformable_roi_pooling - - - -可变形感兴趣区域(ROI)池化层 - -该OP对输入进行了可形变的感兴趣区域(ROI)池化操作。如同 `可形变卷积网络 `_ 描述的一样,它将为每个bin中的像素获取一个偏移量,以便于在合适的位置进行池化。在完成可变形感兴趣区域(ROI)池化操作之后,批量数将变为候选框的数量。 - -可变形感兴趣区域(ROI)池化包含三个步骤: - -1、将获取的候选区域按照设定的池化宽度和池化高度划分成相同大小的区域。 - -2、将得到的位置偏移量添加到候选区域的像素来得到新的位置,并且通过双线性插值去获取那些偏移之后位置不为整数的像素的值。 - -3、在每一个bin中去均匀采样一些像素点,获取其中的均值去作为我们的输出。 - - -参数: - - **input** (Variable) - 可变形感兴趣区域(ROI)池化层的输入,输入为数据类型为float32的Tensor。输入张量的形状为[N,C,H,W]。其中N是批量大小,C是输入通道的数量,H是特征的高度,W是特征的宽度。 - - **rois** (Variable)- 将池化的ROIs(感兴趣区域),应为一个形状为(num_rois,4)的2-D LoDTensor,且lod level为1。其中值为[[x1,y1,x2,y2],...],(x1,y1)为左上角坐标,(x2, y2)为右下角坐标。 - - **trans** (Variable)- 池化时ROIs上的特征偏移,输入为数据类型为float32的Tensor。格式为[N,C,H,W],其中N是ROIs的数量,C是通道的数量,指示x和y方向上的偏移距离,H是池化的高度,W是池化的宽度。 - - **no_trans** (bool)- 确定roi池化阶段是否加入偏移以获取新的输出。其中值为bool变量,取True或False。如果为True,则表示不加入偏移。默认为False。 - - **spatial_scale** (float) - 输入特征图的高度(或宽度)与原始图像高度(或宽度)的比率,其中数值的类型为float32,并且等于卷积图层中总步长的倒数,默认为1.0。 - - **group_size** (list|tuple)- 输入通道划分成的组数,输入为list 或者 tuple,其中数值类型为int32(例如,输入通道的数量是k1 * k2 * (C + 1),其中k1和k2是组宽度和高度,C + 1是输出通道的数量。如(4,6)中4是组的高度,6是组的宽度)。默认为[1,1]。 - - **pooled_height** (int)- 池化后输出的高度, 值的类型为int32,默认值:1。 - - **pooled_width** (int)- 池化后输出的宽度, 值的类型为int32, 默认值:1。 - - **part_size** (list|tuple)- 偏移的高度和宽度,如(4,6)代表高度为4、宽度为6,常规是高度和宽度等于pooled_height和pooled_width。默认为None,此时默认值为[pooled_height,pooled_width]。 - - **sample_per_part** (int)- 每个bin中的样本数量,设置值越大,采样结果越精细,但是更加消耗性能。默认为1。 - - **trans_std** (float)- 偏移系数,控制偏移量的大小,默认为0.1。 - - **position_sensitive** (bool)- 是否选择可变形位置敏感型感兴趣区域(PSROI)池化模式,数值类型为bool型。如果为False,输入维度和输出维度相等。如果为True,输入维度等于输出维度乘以pooled_width和pooled_height。默认为False。 - - **name** (str)- 此层的名称,默认为None。 - -返回: 可变形感兴趣区域(ROI)池化的输出,如果position_sensitive为False,输出维度和输出维度相等。如果position_sensitive为True,输出维度等于输入维度除以pooled_width和pooled_height。 - - -返回类型: Variable, 数据类型为float32. - -**代码示例** - -.. code-block:: python - - #position_sensitive=False - - import paddle.fluid as fluid - input = fluid.data(name="input", - shape=[2, 192, 64, 64], - dtype='float32') - rois = fluid.data(name="rois", - shape=[-1, 4], - dtype='float32', - lod_level=1) - trans = fluid.data(name="trans", - shape=[2, 384, 64, 64], - dtype='float32') - x = fluid.layers.deformable_roi_pooling(input=input, - rois=rois, - trans=trans, - no_trans=False, - spatial_scale=1.0, - group_size=(1, 1), - pooled_height=8, - pooled_width=8, - part_size=(8, 8), - sample_per_part=4, - trans_std=0.1, - position_sensitive=False) - - #position_sensitive=True - - import paddle.fluid as fluid - input = fluid.data(name="input", - shape=[2, 192, 64, 64], - dtype='float32') - rois = fluid.data(name="rois", - shape=[-1, 4], - dtype='float32', - lod_level=1) - trans = fluid.data(name="trans", - shape=[2, 384, 64, 64], - dtype='float32') - x = fluid.layers.deformable_roi_pooling(input=input, - rois=rois, - trans=trans, - no_trans=False, - spatial_scale=1.0, - group_size=(1, 1), - pooled_height=8, - pooled_width=8, - part_size=(8, 8), - sample_per_part=4, - trans_std=0.1, - position_sensitive=True) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/dice_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/dice_loss_cn.rst deleted file mode 100644 index af63877e359bf830d35985556e6e94e215adba75..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/dice_loss_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_dice_loss: - -dice_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.dice_loss(input, label, epsilon=1e-05) - -:alias_main: paddle.nn.functional.dice_loss -:alias: paddle.nn.functional.dice_loss,paddle.nn.functional.loss.dice_loss -:old_api: paddle.fluid.layers.dice_loss - - - -该OP用来比较预测结果跟标签之间的相似度,通常用于二值图像分割,即标签为二值,也可以做多标签的分割。 - -dice_loss定义为: - -.. math:: - dice\_loss &= 1- \frac{2 * intersection\_area}{total\_rea}\\ - &= \frac{(total\_area−intersection\_area)−intersection\_area}{total\_area}\\ - &= \frac{union\_area−intersection\_area}{total\_area} - -参数: - - **input** (Variable) - 分类的预测概率,秩大于等于2的多维Tensor,维度为 :math:`[N_1, N_2, ..., N_k, D]` 。第一个维度的大小是batch_size,最后一维的大小D是类别数目。数据类型是float32或者float64 - - **label** (Variable)- 正确的标注数据(groud truth),与输入 ``input`` 的秩相同的Tensor,维度为 :math:`[N_1, N_2, ..., N_k, 1]` 。第一个维度的大小是batch_size,最后一个维度的大小是1。数据类型为int32或者int64 - - **epsilon** (float,可选) - 将会加到分子和分母上的数,浮点型的数值。如果输入和标签都为空,则确保dice为1。默认值:0.00001 - -返回: 按上述公式计算出来的损失函数的结果所表示的Tensor,shape为[batch_size, 1],数据类型与 ``input`` 相同 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='data', shape = [3, 224, 224, 2], dtype='float32') - label = fluid.layers.data(name='label', shape=[3, 224, 224, 1], dtype='float32') - predictions = fluid.layers.softmax(x) - loss = fluid.layers.dice_loss(input=predictions, label=label) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/dropout_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/dropout_cn.rst deleted file mode 100644 index 8c748ec91af6395405bb46a43b3e94b59ebfa153..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/dropout_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_dropout: - -dropout -------------------------------- - -.. py:function:: paddle.fluid.layers.dropout(x,dropout_prob,is_test=False,seed=None,name=None,dropout_implementation='downgrade_in_infer') - -:alias_main: paddle.nn.functional.dropout -:alias: paddle.nn.functional.dropout,paddle.nn.functional.common.dropout -:old_api: paddle.fluid.layers.dropout - - - -dropout操作 - -丢弃或者保持x的每个元素独立。Dropout是一种正则化手段,通过在训练过程中阻止神经元节点间的相关性来减少过拟合。根据给定的丢弃概率,dropout操作符按丢弃概率随机将一些神经元输出设置为0,其他的仍保持不变。 - -dropout op可以从Program中删除,提高执行效率。 - -参数: - - **x** (Variable) - 输入,多维Tensor。数据类型:float32和float64。 - - **dropout_prob** (float32) - 输入单元的丢弃概率,即输入单元设置为0的概率。 - - **is_test** (bool) - 标记是否是测试阶段。默认:False。 - - **seed** (int) - 整型数据,用于创建随机种子。如果该参数设为None,则使用随机种子。注:如果给定一个整型种子,始终丢弃相同的输出单元。训练过程中勿用固定不变的种子。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **dropout_implementation** (str) - 丢弃单元的方式,有两种'downgrade_in_infer'和'upscale_in_train'两种选择,默认:'downgrade_in_infer'。具体作用可以参考一下描述。 - - 1. downgrade_in_infer(default), 在预测时减小输出结果 - - - train: out = input * mask - - - inference: out = input * (1.0 - dropout_prob) - - (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``dropout_prob`` ) - - 2. upscale_in_train, 增加训练时的结果 - - - train: out = input * mask / ( 1.0 - dropout_prob ) - - - inference: out = input - - (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``dropout_prob`` ) - -dropout操作符可以从程序中移除,使程序变得高效。 - -返回:Tensor。经过丢弃部分数据之后的结果,与输入X形状相同的张量。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name="x", shape=[32, 32], dtype="float32") - droped = fluid.layers.dropout(x, dropout_prob=0.5) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(32, 32)).astype('float32') - output = exe.run(feed={"x": np_x}, fetch_list = [droped]) - print(output) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_add_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/elementwise_add_cn.rst deleted file mode 100644 index 7414eae16ca524e5388de7a09c2e104aa0174570..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_add_cn.rst +++ /dev/null @@ -1,121 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_add: - -elementwise_add -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_add(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_add -:alias: paddle.elementwise_add,paddle.tensor.elementwise_add,paddle.tensor.math.elementwise_add -:old_api: paddle.fluid.layers.elementwise_add - - - -该OP是逐元素相加算子,输入 ``x`` 与输入 ``y`` 逐元素相加,并将各个位置的输出元素保存到返回结果中。 - -等式为: - -.. math:: - Out = X + Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_add(x, y) - # z = x + y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [3., 8., 6.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_add(x, y, axis=1) - # z = x + y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - # z = x + y - z = fluid.layers.elementwise_add(x, y, axis=3) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_div_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/elementwise_div_cn.rst deleted file mode 100644 index d4d12f36b20d39247345933090f2c8b2215b14df..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_div_cn.rst +++ /dev/null @@ -1,121 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_div: - -elementwise_div -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_div(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_div -:alias: paddle.elementwise_div,paddle.tensor.elementwise_div,paddle.tensor.math.elementwise_div -:old_api: paddle.fluid.layers.elementwise_div - - - -该OP是逐元素相除算子,输入 ``x`` 与输入 ``y`` 逐元素相除,并将各个位置的输出元素保存到返回结果中。 - -等式是: - -.. math:: - Out = X / Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_div(x, y) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [2., 0.6, 2.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_div(x, y, axis=1) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - z = fluid.layers.elementwise_div(x, y, axis=3) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_floordiv_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/elementwise_floordiv_cn.rst deleted file mode 100644 index bd19626b6dc05d5e7f59571960eb2366ce4dd389..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_floordiv_cn.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_floordiv: - -elementwise_floordiv -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_floordiv(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_floordiv -:alias: paddle.elementwise_floordiv,paddle.tensor.elementwise_floordiv,paddle.tensor.math.elementwise_floordiv -:old_api: paddle.fluid.layers.elementwise_floordiv - - - -该OP是逐元素整除算子,输入 ``x`` 与输入 ``y`` 逐元素整除,并将各个位置的输出元素保存到返回结果中。 - -等式为: - -.. math:: - Out = X // Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。如果为None则不添加激活函数。默认值为None。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - - x = fluid.data(name="x", shape=[3], dtype='int64') - y = fluid.data(name="y", shape=[3], dtype='int64') - z = fluid.layers.elementwise_floordiv(x, y) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), fetch_list=[z.name]) - print(z_value) #[2,0,2] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]), - "y": np.random.randint(1, 5, size=[3, 4]) - } - - x = fluid.data(name="x", shape=[2,3,4,5], dtype='int64') - y = fluid.data(name="y", shape=[3,4], dtype='int64') - z = fluid.layers.elementwise_floordiv(x, y, axis=1) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]), - "y": np.random.randint(1, 5, size=[5]) - } - - x = fluid.data(name="x", shape=[2,3,4,5], dtype='int64') - y = fluid.data(name="y", shape=[5], dtype='int64') - z = fluid.layers.elementwise_floordiv(x, y, axis=3) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_max_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/elementwise_max_cn.rst deleted file mode 100644 index b36097fbc71d17711142628ac985e35bdd415f00..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_max_cn.rst +++ /dev/null @@ -1,109 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_max: - -elementwise_max -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_max(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_max -:alias: paddle.elementwise_max,paddle.tensor.elementwise_max,paddle.tensor.math.elementwise_max -:old_api: paddle.fluid.layers.elementwise_max - - -该OP逐元素对比输入的两个多维Tensor,并且把各个位置更大的元素保存到返回结果中。 - -等式是: - -.. math:: - Out = max(X, Y) - -- :math:`X` :多维Tensor。 -- :math:`Y` :多维Tensor。 - -此运算算子有两种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 的 ``shape`` 匹配 :math:`X` 的 ``shape``,其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis = rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维Tensor。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64`` 。 - - **y** (Variable)- 多维Tensor。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64`` 。 - - **axis** (int32, 可选)- Y的维度对应到X维度上时的索引。默认值为 -1。 - - **act** (string, 可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (string, 可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: 维度和数据类型与 ``x`` 相同的多维Tensor。 - -返回类型: 多维Tensor。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_max(x, y) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - - print(z_value) #[2, 5, 4] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def gen_data(): - return { - "x": np.ones((2, 3, 4, 5)).astype('float32'), - "y": np.zeros((3, 4)).astype('float32') - } - - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_max(x, y, axis=1) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - - print(z_value)#[[[[1., 1., 1., 1., 1.] .... [1., 1., 1., 1., 1.]]]] - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_min_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/elementwise_min_cn.rst deleted file mode 100644 index 22669884e0343785de9263c9c5769ee24fce4bdf..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_min_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_min: - -elementwise_min -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_min(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_min -:alias: paddle.elementwise_min,paddle.tensor.elementwise_min,paddle.tensor.math.elementwise_min -:old_api: paddle.fluid.layers.elementwise_min - - -该OP逐元素对比输入的两个多维Tensor,并且把各个位置更小的元素保存到返回结果中。 - -等式是: - -.. math:: - Out = min(X, Y) - -- :math:`X` :多维Tensor。 -- :math:`Y` :多维Tensor。 - -此运算算子有两种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 的 ``shape`` 匹配 :math:`X` 的 ``shape``,其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis = rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维Tensor。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64`` 。 - - **y** (Variable)- 多维Tensor。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64`` 。 - - **axis** (int32, 可选)- Y的维度对应到X维度上时的索引。默认值为 -1。 - - **act** (string, 可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (string, 可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: 维度和数据类型与 ``x`` 相同的多维Tensor。 - -返回类型: 多维Tensor。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_min(x, y) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - - print(z_value) #[1, 3, 2] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def gen_data(): - return { - "x": np.ones((2, 3, 4, 5)).astype('float32'), - "y": np.zeros((3, 4)).astype('float32') - } - - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_min(x, y, axis=1) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - - print(z_value)#[[[[0., 0., 0., 0., 0.] .... [0., 0., 0., 0., 0.]]]] - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_mod_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/elementwise_mod_cn.rst deleted file mode 100644 index 5e53e8379be388a068554986709826b6db7b0cc1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_mod_cn.rst +++ /dev/null @@ -1,117 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_mod: - -elementwise_mod -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_mod(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_mod -:alias: paddle.elementwise_mod,paddle.tensor.elementwise_mod,paddle.tensor.math.elementwise_mod -:old_api: paddle.fluid.layers.elementwise_mod - - - -该OP是逐元素取模算子,输入 ``x`` 与输入 ``y`` 逐元素取模,并将各个位置的输出元素保存到返回结果中。 - -等式为: - -.. math:: - Out = X \% Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。如果为None则不添加激活函数。默认值为None。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - - x = fluid.data(name="x", shape=[3], dtype='int64') - y = fluid.data(name="y", shape=[3], dtype='int64') - z = fluid.layers.elementwise_mod(x, y) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), fetch_list=[z.name]) - print(z_value) #[0,3,0] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]), - "y": np.random.randint(1, 5, size=[3, 4]) - } - - x = fluid.data(name="x", shape=[2,3,4,5], dtype='int64') - y = fluid.data(name="y", shape=[3,4], dtype='int64') - z = fluid.layers.elementwise_mod(x, y, axis=1) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]), - "y": np.random.randint(1, 5, size=[5]) - } - - x = fluid.data(name="x", shape=[2,3,4,5], dtype='int64') - y = fluid.data(name="y", shape=[5], dtype='int64') - z = fluid.layers.elementwise_mod(x, y, axis=3) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_mul_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/elementwise_mul_cn.rst deleted file mode 100644 index 1e1c6c168fa453d90b7b356cfc9abb167e316ea2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_mul_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_paddle_cn_elementwise_mul: - -elementwise_mul -------------------------------- -:doc_source: paddle.fluid.layers.elementwise_mul - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_pow_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/elementwise_pow_cn.rst deleted file mode 100644 index 6f08b313a4a95d7ba76aef597fc07a43fcbbe884..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_pow_cn.rst +++ /dev/null @@ -1,84 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_pow: - -elementwise_pow -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_pow(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_pow -:alias: paddle.elementwise_pow,paddle.tensor.elementwise_pow,paddle.tensor.math.elementwise_pow -:old_api: paddle.fluid.layers.elementwise_pow - - -该OP逐元素对输入Tensor进行幂操作。 - -等式是: - -.. math:: - Out = X ^ Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :多维Tensor。 - -此运算算子有两种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 的 ``shape`` 匹配 :math:`X` 的 ``shape``,其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis = rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维Tensor。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64`` 。 - - **y** (Variable)- 多维Tensor。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64`` 。 - - **axis** (int32, 可选)- Y的维度对应到X维度上时的索引。默认值为 -1。 - - **act** (string, 可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (string, 可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: 维度和数据类型与 ``x`` 相同的多维Tensor。 - -返回类型: 多维Tensor。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_pow(x, y) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - - print(z_value) #[2, 243, 16] - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_sub_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/elementwise_sub_cn.rst deleted file mode 100644 index c5886ad2e0fa696aad8ae192ec8a0925aa6f1e6b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/elementwise_sub_cn.rst +++ /dev/null @@ -1,122 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_sub: - -elementwise_sub -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_sub(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_sub -:alias: paddle.elementwise_sub,paddle.tensor.elementwise_sub,paddle.tensor.math.elementwise_sub -:old_api: paddle.fluid.layers.elementwise_sub - - - -该OP是逐元素相减算子,输入 ``x`` 与输入 ``y`` 逐元素相减,并将各个位置的输出元素保存到返回结果中。 - -等式是: - -.. math:: - Out = X - Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_sub(x, y) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [1., -2., 2.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_sub(x, y, axis=1) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - z = fluid.layers.elementwise_sub(x, y, axis=3) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/elu_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/elu_cn.rst deleted file mode 100644 index 6d527ce9359d4b2561e7018b72e79839d158d8c2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/elu_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_elu: - -elu -------------------------------- - -.. py:function:: paddle.fluid.layers.elu(x, alpha=1.0, name=None) - -:alias_main: paddle.nn.functional.elu -:alias: paddle.nn.functional.elu,paddle.nn.functional.activation.elu -:old_api: paddle.fluid.layers.elu - - - -ELU激活层(ELU Activation Operator) - -根据 https://arxiv.org/abs/1511.07289 对输入Tensor中每个元素应用以下计算。 - -.. math:: - \\out=max(0,x)+min(0,α∗(e^{x}−1))\\ - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型为float32或float64。 - - **alpha** (float, 可选) - ELU的alpha值,默认值为1.0。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为None。 - -返回: 输出为Tensor,与 ``x`` 维度相同、数据类型相同。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - input_elu = np.array([[-1,6],[1,15.6]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(input_elu) - y = fluid.layers.elu(x, alpha=0.2) - print(y.numpy()) - # [[-0.12642411 6. ] - # [ 1. 15.6 ]] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/embedding_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/embedding_cn.rst deleted file mode 100644 index b5ad3607114832a799d763d7d68b05a60d65a55d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/embedding_cn.rst +++ /dev/null @@ -1,103 +0,0 @@ -.. _cn_api_fluid_layers_embedding: - -embedding -------------------------------- - - -.. py:function:: paddle.fluid.layers.embedding(input, size, is_sparse=False, is_distributed=False, padding_idx=None, param_attr=None, dtype='float32') - -:api_attr: 声明式编程模式(静态图) - - - -嵌入层(Embedding Layer) - -**注意:此OP将在未来的版本中被移除!该OP要求输入Tensor shape的最后一维必须为1。推荐使用fluid.** :ref:`cn_api_fluid_embedding` 。 - -该OP根据input中的id信息从embedding矩阵中查询对应embedding信息,并会根据输入的size (vocab_size, emb_size)和dtype自动构造一个二维embedding矩阵。 - -要求input的最后一维必须等于1,输出的Tensor的shape是将输入Tensor shape的最后一维的1替换为emb_size。 - -注:input中的id必须满足 ``0 =< id < size[0]``,否则程序会抛异常退出。 - - -:: - - Case 1: - - input是Tensor, 且padding_idx = -1 - input.data = [[[1], [3]], [[2], [4]], [[4], [127]]] - input.shape = [3, 2, 1] - 若size = [128, 16] - 输出为Tensor: - out.shape = [3, 2, 16] - out.data = [[[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654]], - - [[0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365]], - - [[0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]]] # padding data - 输入的padding_idx小于0,则自动转换为padding_idx = -1 + 128 = 127, 对于输入id为127的词,进行padding处理。 - - Case 2: - - input是lod level 为1的LoDTensor, 且padding_idx = 0 - input.lod = [[2, 3]] - input.data = [[1], [3], [2], [4], [0]] - input.shape = [5, 1] - 若size = [128, 16] - 输出为LoDTensor: - out.lod = [[2, 3]] - out.shape = [5, 16] - out.data = [[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654], - [0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]] # padding data - 输入的padding_idx = 0,则对于输入id为0的词,进行padding处理。 - - -参数: - - **input** (Variable) - 存储id信息的Tensor或LoDTensor,数据类型必须为:int64,输入的shape最后一维须为1。input中的id必须满足 ``0 =< id < size[0]`` 。 - - **size** (tuple|list) - embedding矩阵的维度。必须包含两个元素,第一个元素为vocab_size(词表大小), 第二个为emb_size(embedding层维度)。 - - **is_sparse** (bool) - 是否使用稀疏的更新方式,这个参数只会影响反向的梯度更新的性能,sparse更新速度更快,推荐使用稀疏更新的方式。但某些optimizer不支持sparse更新,比如 :ref:`cn_api_fluid_optimizer_AdadeltaOptimizer` 、 :ref:`cn_api_fluid_optimizer_AdamaxOptimizer` 、 :ref:`cn_api_fluid_optimizer_DecayedAdagradOptimizer` 、 :ref:`cn_api_fluid_optimizer_FtrlOptimizer` 、 :ref:`cn_api_fluid_optimizer_LambOptimizer` 、:ref:`cn_api_fluid_optimizer_LarsMomentumOptimizer` ,此时is_sparse必须为False。默认为False。 - - **is_distributed** (bool) - 是否使用分布式的方式存储embedding矩阵,仅在多机分布式cpu训练中使用。默认为False。 - - **padding_idx** (int|long|None) - padding_idx需在区间[-vocab_size, vocab_size),否则不生效,padding_idx<0时,padding_idx会被改成vocab_size + padding_idx,input中等于padding_index的id对应的embedding信息会被设置为0,且这部分填充数据在训练时将不会被更新。如果为None,不作处理,默认为None。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。此外,可以通过 ``param_attr`` 参数加载用户自定义或预训练的词向量。只需将本地词向量转为numpy数据格式,且保证本地词向量的shape和embedding的 ``size`` 参数一致,然后使用 :ref:`cn_api_fluid_initializer_NumpyArrayInitializer` 进行初始化,即可实现加载自定义或预训练的词向量。详细使用方法见代码示例2。 - - **dtype** (str|core.VarDesc.VarType) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - -返回:input映射后得到的Embedding Tensor或LoDTensor,数据类型和dtype定义的类型一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name='sequence', shape=[1], dtype='int64', lod_level=1) - - # 示例 1 - emb_1 = fluid.layers.embedding(input=data, size=[128, 64]) - - # 示例 2: 加载用户自定义或预训练的词向量 - weight_data = np.random.random(size=(128, 100)) # numpy格式的词向量数据 - w_param_attrs = fluid.ParamAttr( - name="emb_weight", - learning_rate=0.5, - initializer=fluid.initializer.NumpyArrayInitializer(weight_data), - trainable=True) - emb_2 = fluid.layers.embedding(input=data, size=(128, 100), param_attr=w_param_attrs, dtype='float32') - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/expand_as_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/expand_as_cn.rst deleted file mode 100644 index 3781c7c9343c5dc73c05f778814b9ca8b4b4bb50..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/expand_as_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_layers_expand_as: - -expand_as -------------------------------- - -.. py:function:: paddle.fluid.layers.expand_as(x, target_tensor, name=None) - -:alias_main: paddle.expand_as -:alias: paddle.expand_as,paddle.tensor.expand_as,paddle.tensor.manipulation.expand_as -:old_api: paddle.fluid.layers.expand_as - - - -该OP会根据输入的variable ``target_tensor`` 对输入 ``x`` 的各维度进行广播。通过 ``target_tensor``的维度来为 ``x`` 的每个维度设置广播的次数,使得x 的维度与target_tensor的维度相同。 ``x`` 的秩应小于等于6。注意, ``target_tensor`` 的秩必须与 ``x`` 的秩相同。 -注意:``target_tensor`` 对应的每一维必须能整除输入x中对应的维度,否则会报错。比如,target_tensor的维度为[2,6,2],x为[2,3,1],则整除后为[1,2,2],x广播后维度为[2,6,2]。如果target_tensor的维度为[2,5,2],第二维5不能整除x的第二维3,则会报错。 - -以下是一个示例: - -:: - - 输入(x) 是一个形状为[2, 3, 1]的 3-D Tensor : - - [ - [[1], [2], [3]], - [[4], [5], [6]] - ] - - target_tensor的维度 : [2, 6, 2] - - 输出(out) 是一个形状为[2, 6, 2]的 3-D Tensor: - - [ - [[1, 1], [2, 2], [3, 3], [1, 1], [2, 2], [3, 3]], - [[4, 4], [5, 5], [6, 6], [4, 4], [5, 5], [6, 6]] - ] - - - -参数: - - **x** (Variable)- 维度最高为6的多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32`` 或 ``bool``。 - - **target_tensor** (list|tuple|Variable)- 数据类型为 ``float32``,``float64``,``int32`` 或 ``bool`` 。可为Tensor或者LODTensor。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:维度与输入 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``x`` 相同。返回值的每个维度的大小等于``target_tensor`` 对应的维度的大小。 - -返回类型:``Variable`` 。 - -抛出异常: - - :code:`ValueError`:``target_tensor`` 对应的每一维必须能整除输入x中对应的维度,否则会报错。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.data(name="data", shape=[-1,10], dtype='float64') - target_tensor = fluid.data(name="target_tensor", shape=[-1,20], dtype='float64') - result = fluid.layers.expand_as(x=data, target_tensor=target_tensor) - use_cuda = False - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(3,10) - y = np.random.rand(3,20) - output= exe.run(feed={"data":x,"target_tensor":y},fetch_list=[result.name]) - print(output[0].shape) - #(3,20) \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/layers/nn/expand_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/expand_cn.rst deleted file mode 100644 index 6bd61b1587e60420df20942a8da8c6382a1eef59..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/expand_cn.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _cn_api_fluid_layers_expand: - -expand -------------------------------- - -.. py:function:: paddle.fluid.layers.expand(x, expand_times, name=None) - -:alias_main: paddle.expand -:alias: paddle.expand,paddle.tensor.expand,paddle.tensor.manipulation.expand -:old_api: paddle.fluid.layers.expand - - - -该OP会根据参数 ``expand_times`` 对输入 ``x`` 的各维度进行复制。通过参数 ``expand_times`` 来为 ``x`` 的每个维度设置复制次数。 ``x`` 的秩应小于等于6。注意, ``expand_times`` 的大小必须与 ``x`` 的秩相同。以下是一个用例: - -:: - - 输入(x) 是一个形状为[2, 3, 1]的 3-D Tensor : - - [ - [[1], [2], [3]], - [[4], [5], [6]] - ] - - 属性(expand_times): [1, 2, 2] - - 输出(out) 是一个形状为[2, 6, 2]的 3-D Tensor: - - [ - [[1, 1], [2, 2], [3, 3], [1, 1], [2, 2], [3, 3]], - [[4, 4], [5, 5], [6, 6], [4, 4], [5, 5], [6, 6]] - ] - -参数: - - **x** (Variable)- 维度最高为6的多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32`` 或 ``bool``。 - - **expand_times** (list|tuple|Variable)- 数据类型是 ``int32`` 。如果 ``expand_times`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``expand_times`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示 ``x`` 每一个维度被复制的次数。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:维度与输入 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``x`` 相同。返回值的每个维度的大小等于 ``x`` 的相应维度的大小乘以 ``expand_times`` 给出的相应值。 - -返回类型:``Variable`` 。 - -抛出异常: - - :code:`TypeError`:``expand_times`` 的类型应该是 list、tuple 或 Variable。 - - :code:`ValueError`:``expand_times`` 中的元素不能是负值。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # example 1: - data_1 = fluid.layers.fill_constant(shape=[2, 3, 1], dtype='int32', value=0) - expanded_1 = fluid.layers.expand(data_1, expand_times=[1, 2, 2]) - # the shape of expanded_1 is [2, 6, 2]. - - # example 2: - data_2 = fluid.layers.fill_constant(shape=[12, 14], dtype="int32", value=3) - expand_times = fluid.layers.fill_constant(shape=[2], dtype="int32", value=4) - expanded_2 = fluid.layers.expand(data_2, expand_times=expand_times) - # the shape of expanded_2 is [48, 56]. - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/fc_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/fc_cn.rst deleted file mode 100644 index 6613b2d8879ab55272add049cb8461999f52866c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/fc_cn.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _cn_api_fluid_layers_fc: - -fc -------------------------------- - - -.. py:function:: paddle.fluid.layers.fc(input, size, num_flatten_dims=1, param_attr=None, bias_attr=None, act=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - - -**全连接层** - -该OP将在神经网络中构建一个全连接层。其输入可以是一个Tensor(或LoDTensor)或多个Tensor(或LoDTensor)组成的list(详见参数说明),该OP会为每个输入的Tensor创建一个权重(weights)变量,即一个从每个输入单元到每个输出单元的全连接权重矩阵。FC层将每个输入Tensor和其对应的权重(weights)相乘得到shape为 :math:`[M, size]` 输出Tensor,其中 ``M`` 为batch_size大小。如果有多个输入Tensor,则多个shape为 :math:`[M, size]` 的Tensor计算结果会被累加起来,作为最终输出。如果 ``bias_attr`` 非空,则会创建一个偏置变量(bias variable),并把它累加到输出结果中。如果 ``act`` 非空,将会在输出结果上应用相应的激活函数。 - -当输入为单个Tensor(或LoDTensor): - -.. math:: - - \\Out = Act({XW + b})\\ - - - -当输入为多个Tensor(或LoDTensor)组成的list时: - -.. math:: - - \\Out=Act(\sum^{N-1}_{i=0}X_iW_i+b) \\ - - -上述等式中: - - :math:`N` :输入的数目,如果输入是Tensor列表,N等于len(input) - - :math:`X_i` :第i个输入的Tensor - - :math:`W_i` :对应第i个输入张量的第i个权重矩阵 - - :math:`b` :该层创建的bias参数 - - :math:`Act` :activation function(激活函数) - - :math:`Out` :输出Tensor - -:: - - Case 1: - 给定单个输入Tensor data_1, 且num_flatten_dims = 2: - data_1.data = [[[0.1, 0.2], - [0.3, 0.4]]] - data_1.shape = (1, 2, 2) # 1是batch_size - - out = fluid.layers.fc(input=data_1, size=1, num_flatten_dims=2) - - 则输出为: - out.data = [[0.83234344], [0.34936576]] - out.shape = (1, 2, 1) - - - Case 2: - 给定多个Tensor组成的list: - data_1.data = [[[0.1, 0.2], - [0.3, 0.4]]] - data_1.shape = (1, 2, 2) # 1 是 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) - - 则输出为: - out.data = [[0.18669507, 0.1893476]] - out.shape = (1, 2) - - -参数: - - **input** (Variable|list of Variable) – 维度为 :math:`[N_1, N_2, ..., N_k]` 的多维Tensor(或LoDTensor)或由多个Tensor(或LoDTensor)组成的list,输入Tensor的shape至少是2。数据类型为float32或float64。 - - **size** (int) – 全连接层输出单元的数目,即输出Tensor(或LoDTensor)特征维度。 - - **num_flatten_dims** (int) – 输入可以接受维度大于2的Tensor。在计算时,输入首先会被扁平化(flatten)为一个二维矩阵,之后再与权重(weights)相乘。参数 ``num_flatten_dims`` 决定了输入Tensor的flatten方式: 前 ``num_flatten_dims`` (包含边界,从1开始数) 个维度会被扁平化为二维矩阵的第一维 (即为矩阵的高), 剩下的 :math:`rank(X) - num\_flatten\_dims` 维被扁平化为二维矩阵的第二维 (即矩阵的宽)。 例如, 假设X是一个五维的Tensor,其shape为(2, 3, 4, 5, 6), 若 :math:`num\_flatten\_dims = 3` ,则扁平化的矩阵shape为: :math:`(2 x 3 x 4, 5 x 6) = (24, 30)` ,最终输出Tensor的shape为 :math:`(2, 3, 4, size)` 。默认为1。 - - **param_attr** (ParamAttr) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回:经过全连接层计算后的Tensor或LoDTensor,数据类型与input类型一致。 - -返回类型: Variable - -弹出异常:``ValueError`` - 如果输入Tensor(或LoDTensor)的维度小于2 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 当输入为单个张量时 - - data = fluid.layers.data(name="data", shape=[32, 32], dtype="float32") - fc = fluid.layers.fc(input=data, size=1000, act="tanh") - - # 当输入为多个张量时 - data_1 = fluid.layers.data(name="data_1", shape=[32, 32], dtype="float32") - data_2 = fluid.layers.data(name="data_2", shape=[24, 36], dtype="float32") - fc = fluid.layers.fc(input=[data_1, data_2], size=1000, act="tanh") - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/filter_by_instag_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/filter_by_instag_cn.rst deleted file mode 100644 index 212eef72dc7a6b3dc1506270feabc78fcf29c2f1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/filter_by_instag_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_filter_by_instag: - -filter_by_instag -------------------------------- - -.. py:function:: paddle.fluid.layers.filter_by_instag(ins, ins_tag, filter_tag, is_lod) - -:alias_main: paddle.nn.functional.filter_by_instag -:alias: paddle.nn.functional.filter_by_instag,paddle.nn.functional.extension.filter_by_instag -:old_api: paddle.fluid.layers.filter_by_instag - - - -此函数通过instag来过滤ins batch,大量属于同样的tags的样本,我们可以指定我们想要的一些tags,属于这些tags的样本将会被保留在输出中,其余的将会移除。比如,一个batch有4个样本,每个样本都有自己的tag表。 - -Ins | Ins_Tag | - -|:—–:|:——:| - -| 0 | 0, 1 | - -| 1 | 1, 3 | - -| 2 | 0, 3 | - -| 3 | 2, 6 | - -Lod为[1,1,1,1],filter tags为[1],从上面的定义中,带有标签[1]的样本将会通过filter,所以,样本0和1将会通过并且出现在输出中。准确来说,如果 ``is_lod`` 为false,它是一个等于值全为1的lod_tensor的普通的tensor,和上面的例子很相似。 - -参数: - - **ins** (Variable) - 输入变量(LoDTensor),通常为2D向量,第一个维度可以有lod info,也可以没有。 - - **ins_tag** (Variable) - 输入变量(LoDTensor),通常为1维列表,通过lod info来分割。 - - **filter_tag** (Variable) - 输入变量(1D Tensor/List),通常为持有tags的列表。 - - **is_lod** (Bool) – 指定样本是否为lod tensor的布尔值。 - - **out_val_if_empty** (Int64) - 如果batch内样本被全部过滤,输出会被指定成这个值。 - -返回:过滤之后的样本(LoDTensor)和 损失权重(Tensor)。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid.layers as layers - ins = layers.data(name='Ins', shape=[-1,32], lod_level=0, dtype='float64') - ins_tag = layers.data(name='Ins_tag', shape=[-1,16], lod_level=0, dtype='int64') - filter_tag = layers.data(name='Filter_tag', shape=[-1,16], dtype='int64') - out, loss_weight = layers.filter_by_instag(ins, ins_tag, filter_tag, True) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/flatten_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/flatten_cn.rst deleted file mode 100644 index 3e314f655a8cf5b597daeac8507732a9c571d130..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/flatten_cn.rst +++ /dev/null @@ -1,62 +0,0 @@ -.. _cn_api_fluid_layers_flatten: - -flatten -------------------------------- - -.. py:function:: paddle.fluid.layers.flatten(x, axis=1, name=None) - -:alias_main: paddle.flatten -:alias: paddle.flatten,paddle.tensor.flatten,paddle.tensor.manipulation.flatten -:old_api: paddle.fluid.layers.flatten - - - -flatten op将输入的多维Tensor展平成2-D Tensor矩阵 - -例如: - -.. code-block:: text - - Case 1: - - 给定 - X.shape = (3, 100, 100, 4) - 且 - axis = 2 - 得到: - Out.shape = (3 * 100, 4 * 100) - - Case 2: - - 给定 - X.shape = (3, 100, 100, 4) - 且 - axis = 0 - 得到: - Out.shape = (1, 3 * 100 * 100 * 4) - -参数: - - **x** (Variable) - 一个维度数>=axis 的多维Tensor, 数据类型可以为float32,float64,int8,int32或int64。 - - **axis** (int) - flatten展开的分割轴,[0, axis) 轴数据被flatten到输出矩阵的0轴,[axis, R)数据被flatten到输出矩阵的1轴,其中R是输入张量的总维度数。axis的值必须在[0,R]范围内。当 axis=0 时,若输入Tensor的维度为 :math:`[d_0, d_1,… d_n]` ,则输出张量的Tensor维度为 :math:`[1,d_0 * d_1 *… d_n]` ,默认值为1。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 一个 2-D Tensor,它包含输入Tensor的数据,但维度发生变化。输入的[0, axis)维将沿axis展平到输出Tensor的0维度,剩余的输入维数展平到输出的1维度。数据类型与输入x相同。 - -返回类型: Variable - -抛出异常: - - ValueError: 如果 x 不是一个Variable - - ValueError: 如果axis的范围不在 [0, rank(x)] 范围内 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name="x", shape=[4, 4, 3], append_batch_size=False, dtype="float32") - # x shape is [4, 4, 3] - out = fluid.layers.flatten(x=x, axis=2) - # out shape is [16, 3] - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/fsp_matrix_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/fsp_matrix_cn.rst deleted file mode 100644 index 97937d7c8225b6be736eb2616a7a220ab35f4b7a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/fsp_matrix_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_fsp_matrix: - -fsp_matrix -------------------------------- - -.. py:function:: paddle.fluid.layers.fsp_matrix(x, y) - -:alias_main: paddle.nn.functional.fsp_matrix -:alias: paddle.nn.functional.fsp_matrix,paddle.nn.functional.vision.fsp_matrix -:old_api: paddle.fluid.layers.fsp_matrix - - - -**FSP matrix op** - -fsp_matrix op用于计算两个4-D Tensor特征图的求解过程(FSP)矩阵。假设特征图x的形状为 :math:`[x\_channel,h,w]` ,特征图y的形状为 :math:`[y\_channel,h,w]` ,fsp_matrix op分两步得到x和y的fsp矩阵: - -1.将x reshape到形状为 :math:`[x\_channel,h*w]` 的矩阵,将y reshape到形状为 :math:`[h*w,y\_channel]` 的矩阵。 - -2.对x和y做矩阵乘法得到形状为 :math:`[x\_channel,y\_channel]` 的fsp矩阵。 - -输出是一个batch的fsp矩阵。 - -参数: - - **x** (Variable): 一个形状为 :math:`[batch\_size, x\_channel, height, width]` 的 4-D 特征图Tensor, 数据类型为float32或float64。 - - **y** (Variable):一个形状为 :math:`[batch\_size, y\_channel, height, width]` 的 4-D 特征图Tensor, 数据类型为float32或float64。y_channel可以与输入(x)的x_channel不同,而其他维度必须与输入(x)相同。 - -返回:一个形状为 :math:`[batch\_size, x\_channel, y\_channel]` 的fsp矩阵, 是一个 3-D Tensor,数据类型与输入数据类型一致。其中,x_channel是输入x的通道数,y_channel是输入y的通道数。数据类型为float32或float64。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name='data', shape=[3, 32, 32]) - feature_map_0 = fluid.layers.conv2d(data, num_filters=2, - filter_size=3) - feature_map_1 = fluid.layers.conv2d(feature_map_0, num_filters=2, - filter_size=1) - loss = fluid.layers.fsp_matrix(feature_map_0, feature_map_1) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/gather_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/gather_cn.rst deleted file mode 100644 index 74bc1946571a82ba6582752992f80fd3d6587cf1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/gather_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_paddle_tensor_gather -gather -------------------------------- - -.. py:function:: paddle.tensor.gather(input, index, overwrite=True) - -:alias_main: paddle.gather -:alias: paddle.gather,paddle.tensor.gather,paddle.tensor.manipulation.gather -:update_api: paddle.fluid.layers.gather - - - -根据索引 index 获取输入(input)的最外层维度的条目,并将它们拼接在一起。 - -.. math:: - - Out=X[Index] - -**参数**: - - **input** (Variable) - 输入, 秩 ``rank >= 1`` , 支持的数据类型包括 int32、int64、float32、float64 和 uint8 (CPU)、float16(GPU) 。 - - **index** (Variable) - 索引,秩 ``rank = 1``, 数据类型为 int32 或 int64。 - - **overwrite** (bool) - 具有相同索引时在反向更新梯度的模式。如果为 ``True`` ,则使用覆盖模式更新相同索引的梯度;如果为 ``False`` ,则使用累积模式更新相同索引的梯度。默认值为 ``True`` 。 - -**返回**:和输入的秩相同的输出张量。 - -**返回类型**:Variable - -**代码示例**: - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - with fluid.dygraph.guard(): - input_1 = np.array([[1,2,3],[4,5,6],[7,8,9]]) - index_1 = np.array([0,1]) - input = fluid.dygraph.to_variable(input_1) - index = fluid.dygraph.to_variable(index_1) - output = paddle.fluid.layers.gather(input, index) - # expected output: [[1, 2, 3],[4, 5, 6]] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/gather_nd_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/gather_nd_cn.rst deleted file mode 100644 index 6c810ad73aa1edff045883f98cd80ffcb2365762..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/gather_nd_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_gather_nd: - -gather_nd -------------------------------- - -.. py:function:: paddle.fluid.layers.gather_nd(input, index, name=None) - -:alias_main: paddle.gather_nd -:alias: paddle.gather_nd,paddle.tensor.gather_nd,paddle.tensor.manipulation.gather_nd -:old_api: paddle.fluid.layers.gather_nd - - - -该OP是 :code:`gather` 的高维推广,并且支持多轴同时索引。 :code:`index` 是一个K维度的张量,它可以认为是从 :code:`input` 中取K-1维张量,每一个元素是一个切片: - -.. math:: - output[(i_0, ..., i_{K-2})] = input[index[(i_0, ..., i_{K-2})]] - -显然, :code:`index.shape[-1] <= input.rank` 并且输出张量的维度是 :code:`index.shape[:-1] + input.shape[index.shape[-1]:]` 。 - -示例: - -:: - - 给定: - input = [[[ 0, 1, 2, 3], - [ 4, 5, 6, 7], - [ 8, 9, 10, 11]], - [[12, 13, 14, 15], - [16, 17, 18, 19], - [20, 21, 22, 23]]] - input.shape = (2, 3, 4) - - - 案例 1: - index = [[1]] - - gather_nd(input, index) - = [input[1, :, :]] - = [[12, 13, 14, 15], - [16, 17, 18, 19], - [20, 21, 22, 23]] - - - 案例 2: - - index = [[0,2]] - gather_nd(input, index) - = [input[0, 2, :]] - = [8, 9, 10, 11] - - - 案例 3: - - index = [[1, 2, 3]] - gather_nd(input, index) - = [input[1, 2, 3]] - = [23] - - -参数: - - **input** (Variable) - 输入张量,数据类型可以是int32,int64,float32,float64, bool。 - - **index** (Variable) - 输入的索引张量,数据类型为非负int32或非负int64。它的维度 :code:`index.rank` 必须大于1,并且 :code:`index.shape[-1] <= input.rank` 。 - - **name** (string) - 该层的名字,默认值为None,表示会自动命名。 - -返回:shape为index.shape[:-1] + input.shape[index.shape[-1]:]的Tensor|LoDTensor,数据类型与 :code:`input` 一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[3, 4, 5], dtype='float32') - index = fluid.layers.data(name='index', shape=[2, 2], dtype='int32') - output = fluid.layers.gather_nd(x, index) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/gather_tree_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/gather_tree_cn.rst deleted file mode 100644 index 0d8354364fcf965fa0e8a1a81d37a188bb8f0f4b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/gather_tree_cn.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _cn_api_fluid_layers_gather_tree: - -gather_tree -------------------------------- - -.. py:function:: paddle.fluid.layers.gather_tree(ids, parents) - -:alias_main: paddle.nn.gather_tree -:alias: paddle.nn.gather_tree,paddle.nn.decode.gather_tree -:old_api: paddle.fluid.layers.gather_tree - - - -该OP在整个束搜索(Beam Search)结束后使用。在搜索结束后,可以获得每个时间步选择的的候选词id及其对应的在搜索树中的parent节点, ``ids`` 和 ``parents`` 的形状布局均为 :math:`[max\_time, batch\_size, beam\_size]` ,该OP从最后一个时间步回溯产生完整的id序列。 - - -示例: - -:: - - 给定: - ids = [[[2 2] - [6 1]] - [[3 9] - [6 1]] - [[0 1] - [9 0]]] - parents = [[[0 0] - [1 1]] - [[1 0] - [1 0]] - [[0 0] - [0 1]]] - - 结果: - gather_tree(ids, parents) - = [[[2 2] - [1 6]] - [[3 3] - [6 1]] - [[0 1] - [9 0]]] - - - -参数: - - **ids** (Variable) - 形状为 :math:`[length, batch\_size, beam\_size]` 的三维Tensor,数据类型是int32或int64。包含了所有时间步选择的id。 - - **parents** (Variable) - 形状和数据类型均与 ``ids`` 相同的Tensor。包含了束搜索中每一时间步所选id对应的parent。 - -返回:和 ``ids`` 具有相同形状和数据类型的Tensor。包含了根据parent回溯而收集产生的完整id序列。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - ids = fluid.data(name='ids', - shape=[5, 2, 2], - dtype='int64') - parents = fluid.data(name='parents', - shape=[5, 2, 2], - dtype='int64') - final_sequences = fluid.layers.gather_tree(ids, parents) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/gaussian_random_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/gaussian_random_cn.rst deleted file mode 100644 index 059f19be02e3982a43bcec9a3ccbcd25e9bda5fd..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/gaussian_random_cn.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. _cn_api_fluid_layers_gaussian_random: - -gaussian_random -------------------------------- - -.. py:function:: paddle.fluid.layers.gaussian_random(shape, mean=0.0, std=1.0, seed=0, dtype='float32', name=None) - - - - -该OP返回数值符合高斯随机分布的Tensor,形状为 ``shape``,数据类型为 ``dtype``。 - -参数: - - **shape** (list|tuple|Tensor) - 生成的随机Tensor的形状。如果 ``shape`` 是list、tuple,则其中的元素可以是int,或者是形状为[1]且数据类型为int32、int64的Tensor。如果 ``shape`` 是Tensor,则是数据类型为int32、int64的1-D Tensor。 - - **mean** (float|int, 可选) - 输出Tensor的均值,支持的数据类型:float、int。默认值为0.0。 - - **std** (float|int, 可选) - 输出Tensor的标准差,支持的数据类型:float、int。默认值为1.0。 - - **seed** (int, 可选) - 随机数种子,默认值为 0。注:seed 设置为 0 表示使用系统的随机数种子。注意如果 seed 不为 0,则此算子每次将始终生成相同的随机数。 - - **dtype** (str|np.dtype|core.VarDesc.VarType, 可选) - 输出Tensor的数据类型,支持float32、float64。默认值为float32。 - - **name** (str, 可选) - 输出的名字。一般无需设置,默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: - Tensor:符合高斯随机分布的Tensor,形状为 ``shape``,数据类型为 ``dtype``。 - -抛出异常: - - ``TypeError`` - 如果 ``shape`` 的类型不是list、tuple、Tensor。 - - ``TypeError`` - 如果 ``dtype`` 不是float32、float64。 - -**代码示例**: - -.. code-block:: python - - # 静态图使用 - import numpy as np - from paddle import fluid - - x = fluid.layers.gaussian_random((2, 3), std=2., seed=10) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - exe.run(start) - x_np, = exe.run(main, feed={}, fetch_list=[x]) - - x_np - # array([[2.3060477, 2.676496 , 3.9911983], - # [0.9990833, 2.8675377, 2.2279181]], dtype=float32) - - -.. code-block:: python - - # 动态图使用 - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = fluid.layers.gaussian_random((2, 4), mean=2., dtype="float32", seed=10) - x_np = x.numpy() - x_np - # array([[2.3060477 , 2.676496 , 3.9911983 , 0.9990833 ], - # [2.8675377 , 2.2279181 , 0.79029655, 2.8447366 ]], dtype=float32) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/get_tensor_from_selected_rows_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/get_tensor_from_selected_rows_cn.rst deleted file mode 100644 index 3a9b9268aa345959d50b69667659b77203777a7c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/get_tensor_from_selected_rows_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_layers_get_tensor_from_selected_rows: - -get_tensor_from_selected_rows -------------------------------- - -.. py:function:: paddle.fluid.layers.get_tensor_from_selected_rows(x, name=None) - - - - -该OP从SelectedRows类型的输入中获取向量数据,以LoDTensor的形式输出。 - - -:: - - 例如: - - 输入为SelectedRows类型: - x.rows = [0, 5, 5, 4, 19] - x.height = 20 - x.value = [[1, 1] [2, 2] [2, 2] [3, 3] [6, 6]] - - 输出为LoDTensor: - out.shape = [5, 2] - out.data = [[1, 1], - [2, 2], - [2, 2], - [3, 3], - [6, 6]] - - -参数: - - **x** (SelectedRows) - SelectedRows类型的输入,数据类型为float32,float64,int32或int64。 - - **name** (str) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 从SelectedRows中转化而来的LoDTensor,数据类型和输入一致。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - b = fluid.default_main_program().global_block() - input = b.create_var(name="X", dtype="float32", persistable=True, type=fluid.core.VarDesc.VarType.SELECTED_ROWS) - out = fluid.layers.get_tensor_from_selected_rows(input) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/grid_sampler_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/grid_sampler_cn.rst deleted file mode 100644 index 8871106520eea576edbddf0b606e8113cfd4e85f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/grid_sampler_cn.rst +++ /dev/null @@ -1,87 +0,0 @@ -.. _cn_api_fluid_layers_grid_sampler: - -grid_sampler -------------------------------- - -.. py:function:: paddle.fluid.layers.grid_sampler(x, grid, name=None) - -:alias_main: paddle.nn.functional.grid_sampler -:alias: paddle.nn.functional.grid_sampler,paddle.nn.functional.vision.grid_sampler -:old_api: paddle.fluid.layers.grid_sampler - - - -该OP基于flow field网格的对输入X进行双线性插值采样。网格通常由affine_grid生成, shape为[N, H, W, 2],是shape为[N, H, W]的采样点张量的(x, y)坐标。 -其中,x坐标是对输入数据X的第四个维度(宽度维度)的索引,y坐标是第三维度(高维度)的索引,最终输出采样值为采样点的4个最接近的角点的双线性插值结果,输出张量的shape为[N, C, H, W]。 - -step 1: - - 得到(x, y)网格坐标,缩放到[0,h -1/W-1] - -.. code-block:: text - - grid_x = 0.5 * (grid[:, :, :, 0] + 1) * (W - 1) grid_y = 0.5 * (grid[:, :, :, 1] + 1) * (H - 1) - -step 2: - - 在每个[H, W]区域用网格(X, y)作为输入数据X的索引,并将双线性插值点值由4个最近的点表示。 - -.. code-block:: text - - wn ------- y_n ------- en - | | | - | d_n | - | | | - x_w --d_w-- grid--d_e-- x_e - | | | - | d_s | - | | | - ws ------- y_s ------- wn - - x_w = floor(x) // west side x coord - x_e = x_w + 1 // east side x coord - y_n = floor(y) // north side y coord - y_s = y_s + 1 // south side y coord - d_w = grid_x - x_w // distance to west side - d_e = x_e - grid_x // distance to east side - d_n = grid_y - y_n // distance to north side - d_s = y_s - grid_y // distance to south side - wn = X[:, :, y_n, x_w] // north-west point value - en = X[:, :, y_n, x_e] // north-east point value - ws = X[:, :, y_s, x_w] // south-east point value - es = X[:, :, y_s, x_w] // north-east point value - - - output = wn * d_e * d_s + en * d_w * d_s - + ws * d_e * d_n + es * d_w * d_n - -参数: - - **x** (Variable): 输入张量,维度为 :math:`[N, C, H, W]` 的4-D Tensor,N为批尺寸,C是通道数,H是特征高度,W是特征宽度, 数据类型为float32或float64。 - - **grid** (Variable): 输入网格数据张量,维度为 :math:`[N, H, W, 2]` 的4-D Tensor,N为批尺寸,C是通道数,H是特征高度,W是特征宽度, 数据类型为float32或float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - -返回: Variable(Tensor): 输入X基于输入网格的双线性插值计算结果,维度为 :math:`[N, C, H, W]` 的4-D Tensor - -返回类型:变量(Variable),数据类型与 ``x`` 一致 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - # 一般与 affine_grid 组合使用 - x = fluid.data(name='x', shape=[None, 10, 32, 32], dtype='float32') - theta = fluid.layers.data(name='theta', shape=[2, 3], dtype='float32') - grid = fluid.layers.affine_grid(theta=theta, out_shape=[3, 10, 32, 32]) - out = fluid.layers.grid_sampler(x=x, grid=grid) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/group_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/group_norm_cn.rst deleted file mode 100755 index 049a9e2f0055ca6ce3220c526f25f0abdd335c3d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/group_norm_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_group_norm: - -group_norm -------------------------------- - - -.. py:function:: paddle.fluid.layers.group_norm(input, groups, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, data_layout='NCHW', name=None) - -:api_attr: 声明式编程模式(静态图) - - - -参考论文: `Group Normalization `_ - -参数: - - **input** (Variable):输入为4-D Tensor,数据类型为float32或float64。 - - **groups** (int):从 channel 中分离出来的 group 的数目,数据类型为int32。 - - **epsilon** (float,可选):为防止方差除以零,增加一个很小的值。数据类型为float32。默认值:1e-05。 - - **param_attr** (ParamAttr|bool,可选) :指定权重参数属性的对象。若 ``param_attr`` 为bool类型,只支持为False,表示没有权重参数。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool,可选) : 指定偏置参数属性的对象。若 ``bias_attr`` 为bool类型,只支持为False,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str,可选):将激活应用于输出的 group normalizaiton。 - - **data_layout** (str,可选):指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - **name** (str,可选):具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:4-D Tensor,数据类型和格式与 `input` 一致。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` - 如果 ``data_layout`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``groups`` 小于1,或者 ``groups`` 大于输入的通道数。 - - ``ShapeError`` - 如果 ``param_attr`` (Scale) 或者 ``bias_attr`` (Bias) 不是 1-D Tensor。 - - ``ShapeError`` - 如果 ``param_attr`` (Scale) 或者 ``bias_attr`` (Bias) 的大小与输入的通道数不相等。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.data(name='data', shape=[None, 8, 32, 32], dtype='float32') - x = fluid.layers.group_norm(input=data, groups=4) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/hard_sigmoid_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/hard_sigmoid_cn.rst deleted file mode 100644 index f015a799c57376ee406cbac16d68d8a98b72dda4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/hard_sigmoid_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_layers_hard_sigmoid: - -hard_sigmoid -------------------------------- - -.. py:function:: paddle.fluid.layers.hard_sigmoid(x, slope=0.2, offset=0.5, name=None) - -:alias_main: paddle.nn.functional.hard_sigmoid -:alias: paddle.nn.functional.hard_sigmoid,paddle.nn.functional.activation.hard_sigmoid -:old_api: paddle.fluid.layers.hard_sigmoid - - - -sigmoid的分段线性逼近激活函数,速度比sigmoid快,详细解释参见 https://arxiv.org/abs/1603.00391。 - -.. math:: - - \\out=\max(0,\min(1,slope∗x+offset))\\ - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型必须为float32或float64。 - - **slope** (float,可选) - 斜率。值必须为正数,默认值为0.2。 - - **offset** (float,可选) - 偏移量。默认值为0.5。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:激活后的Tensor,形状、数据类型和 ``x`` 一致。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.fill_constant(shape=[3, 2], value=0.5, dtype='float32') # [[0.5, 0.5], [0.5, 0.5], [0.5, 0.5]] - result = fluid.layers.hard_sigmoid(data) # [[0.6, 0.6], [0.6, 0.6], [0.6, 0.6]] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/hard_swish_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/hard_swish_cn.rst deleted file mode 100644 index 8118ea27a2f2c6f1855e02cd8451a1de6d11151a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/hard_swish_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_layers_hard_swish: - -hard_swish -------------------------------- - -.. py:function:: paddle.fluid.layers.hard_swish(x, threshold=6.0, scale=6.0, offset=3.0, name=None) - -:alias_main: paddle.nn.functional.hard_swish -:alias: paddle.nn.functional.hard_swish,paddle.nn.functional.activation.hard_swish -:old_api: paddle.fluid.layers.hard_swish - - - -该OP实现了hard_swish激活函数。hard_swish激活函数在MobileNetV3架构中被提出,相较于swish函数,具有数值稳定性好,计算速度快等优点,具体原理请参考: https://arxiv.org/pdf/1905.02244.pdf - - :math:`out = \frac{x * (min(max(0, x+offset), threshold))}{scale}` - - 阈值 ``threshold`` 和缩放因子 ``scale`` 为正数,位移 ``offset`` 正负均可,建议使用默认参数。 - -参数: - - **x** (Variable) - 输入特征,多维Tensor。数据类型为float32或float64。 - - **threshold** (float,可选) - 激活操作中Relu函数的阈值,默认值为6.0。 - - **scale** (float,可选) - 激活操作的缩放因子,默认值为6.0。 - - **offset** (float,可选) - 激活操作的位移,默认值为3.0。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:经过hard_swish计算后的结果,数据类型及维度和x相同。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - DATATYPE='float32' - shape = [1,4] - - x_data = np.array([i for i in range(1,5)]).reshape(shape).astype(DATATYPE) - - x = fluid.layers.data(name="x", shape=shape, dtype=DATATYPE) - y = fluid.layers.hard_swish(x) - - place = fluid.CUDAPlace(0) - exe = fluid.Executor(place) - out, = exe.run(feed={'x':x_data}, fetch_list=[y.name]) - print(out) # [[0.66666667, 1.66666667,3., 4.]] - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/hash_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/hash_cn.rst deleted file mode 100644 index a25828a10dc67b9697541d6e83234272ffbbb81a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/hash_cn.rst +++ /dev/null @@ -1,58 +0,0 @@ -.. _cn_api_fluid_layers_hash: - -hash -------------------------------- - -.. py:function:: paddle.fluid.layers.hash(input, hash_size, num_hash=1, name=None) - -:alias_main: paddle.nn.functional.hash -:alias: paddle.nn.functional.hash,paddle.nn.functional.lod.hash -:old_api: paddle.fluid.layers.hash - - - -该OP将输入 hash 成为一个整数,该数的值小于给定的 ``hash_size`` 。**仅支持输入为LoDTensor**。 - -该OP使用的哈希算法是:xxHash - `Extremely fast hash algorithm `_ - - -参数: - - **input** (Variable) - 输入是一个 **二维** ``LoDTensor`` 。**输入维数必须为2**。数据类型为:int32、int64。**仅支持LoDTensor**。 - - **hash_size** (int) - 哈希算法的空间大小。输出值将保持在 :math:`[0, hash\_size)` 范围内。 - - **num_hash** (int) - 哈希次数。默认值为1。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:``LoDTensor`` - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - place = fluid.core.CPUPlace() - - # 构建网络 - x = fluid.data(name="x", shape=[2, 2], dtype="int32", lod_level=1) - res = fluid.layers.hash(name="res", input=x, hash_size=1000, num_hash=4) - - # 创建CPU执行器 - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - in1 = np.array([[1,2],[3,4]]).astype("int32") - print(in1) - x_i = fluid.create_lod_tensor(in1, [[0, 2]], place) - res = exe.run(fluid.default_main_program(), feed={'x':x_i}, fetch_list=[res], return_numpy=False) - print(np.array(res[0])) - # [[[722] - # [407] - # [337] - # [395]] - # [[603] - # [590] - # [386] - # [901]]] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/im2sequence_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/im2sequence_cn.rst deleted file mode 100644 index 88ca3cead90ac752adb9b1326104c0db557c216d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/im2sequence_cn.rst +++ /dev/null @@ -1,97 +0,0 @@ -.. _cn_api_fluid_layers_im2sequence: - -im2sequence -------------------------------- - - -.. py:function:: paddle.fluid.layers.im2sequence(input, filter_size=1, stride=1, padding=0, input_image_size=None, out_stride=1, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP使用 `filter` 扫描输入的Tensor并将输入Tensor转换成序列,返回值的 `shape={input.batch_size * output_height * output_width, filter_size_height* filter_size_width * input.channels}` 。返回值的timestep的个数为 `output_height * output_width` , 每个timestep的维度是 `filter_size_height* filter_size_width * input.channels` 。其中 `output_height` 和 `output_width` 由以下式计算: - - -.. math:: - output\_height = 1 + \frac{padding\_up + padding\_down + input\_height - filter\_size\_height + stride\_height-1}{stride\_height} \\ - output\_width = 1 + \frac{padding\_left + padding\_right + input\_width - filter\_size\_width + stride\_width-1}{stride\_width} - -其中符号的意义如下所示。 - -参数: - - **input** (Variable)- 类型为float32的4-D Tensor,格式为 `[N, C, H, W]` 。公式中 `input_height` 和 `input_width` 分别代表输入的高和宽。 - - **filter_size** (int32 | List[int32]) - 滤波器大小。如果 `filter_size` 是一个List,它必须包含两个整数 `[filter_size_height, filter_size_width]` 。如果 `filter_size` 是一个int32, 则滤波器大小是 `[filter_size, filter_size]` , 默认值为1。 - - **stride** (int32 | List[int32]) - 步长大小。如果stride是一个List,它必须包含两个整数 `[stride_height,stride_width]` 。如果stride是一个int32, 则步长大小是 `[stride, stride]` , 默认值为1。 - - **padding** (int32 | List[int32]) - 填充大小。如果padding是一个List,它可以包含四个整数 `[padding_up, padding_left, padding_down, padding_right]` ,当包含两个整数 `[padding_height, padding_width]` 时,可展开为 `[padding_height, padding_width, padding_height, padding_width]` 。如果padding是一个int, 可展开为 `[padding, padding, padding, padding]` 。默认值为0。 - - **input_image_size** (Variable, 可选) - 2-D Tensor, 输入图像的实际大小, 它的维度为 `[batchsize,2]` 。当该参数不为None时,可用于batch inference。默认值为None. - - **out_stride** (int32 | List[int32]) - 输出步长。只有当input_image_size不为None时才有效。如果out_stride是List,它必须包含 `[out_stride_height, out_stride_width]` ,如果out_stride是int32, 则可展开为 `[out_stride, out_stride]` ,默认值为1。 - - **name** (str, 可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,缺省值为None。 - -返回: 数据类型为float32, `shape` 为 `{batch_size * output_height * output_width, filter_size_height * filter_size_width * input.channels}` 的 2-D LodTensor。 - -返回类型: Variable - -:: - - Given: - - x = [[[[ 6. 2. 1.] - [ 8. 3. 5.] - [ 0. 2. 6.]] - - [[ 2. 4. 4.] - [ 6. 3. 0.] - [ 6. 4. 7.]]] - - [[[ 6. 7. 1.] - [ 5. 7. 9.] - [ 2. 4. 8.]] - - [[ 1. 2. 1.] - [ 1. 3. 5.] - [ 9. 0. 8.]]]] - - x.dims = {2, 2, 3, 3} - - And: - - filter = [2, 2] - stride = [1, 1] - padding = [0, 0] - - Then: - - output.data = [[ 6. 2. 8. 3. 2. 4. 6. 3.] - [ 2. 1. 3. 5. 4. 4. 3. 0.] - [ 8. 3. 0. 2. 6. 3. 6. 4.] - [ 3. 5. 2. 6. 3. 0. 4. 7.] - [ 6. 7. 5. 7. 1. 2. 1. 3.] - [ 7. 1. 7. 9. 2. 1. 3. 5.] - [ 5. 7. 2. 4. 1. 3. 9. 0.] - [ 7. 9. 4. 8. 3. 5. 0. 8.]] - - output.dims = {8, 8} - - output.lod = [[4, 4]] - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name='data', shape=[3, 32, 32], - dtype='float32') - output = fluid.layers.im2sequence( - input=data, stride=[1, 1], filter_size=[2, 2]) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/image_resize_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/image_resize_cn.rst deleted file mode 100644 index e0331de812743e569839bb9aa831b4667f0ce6a3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/image_resize_cn.rst +++ /dev/null @@ -1,192 +0,0 @@ -.. _cn_api_fluid_layers_image_resize: - -image_resize -------------------------------- - -.. py:function:: paddle.fluid.layers.image_resize(input, out_shape=None, scale=None, name=None, resample='BILINEAR', actual_shape=None, align_corners=True, align_mode=1, data_format='NCHW') - -:alias_main: paddle.nn.functional.image_resize -:alias: paddle.nn.functional.image_resize,paddle.nn.functional.vision.image_resize -:old_api: paddle.fluid.layers.image_resize - - - -**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 - -该OP用于调整一个batch中图片的大小。 - -输入为4-D Tensor时形状为(num_batches, channels, in_h, in_w)或者(num_batches, in_h, in_w, channels),输入为5-D Tensor时形状为(num_batches, channels, in_d, in_h, in_w)或者(num_batches, in_d, in_h, in_w, channels),并且调整大小只适用于深度,高度和宽度对应的维度。 - -支持的插值方法: - - BILINEAR:双线性插值 - - TRALINEAR:三线插值 - - NEAREST:最近邻插值 - - -最近邻插值是在输入张量的高度和宽度上进行最近邻插值。 - -双线性插值是线性插值的扩展,用于在直线2D网格上插值两个变量(例如,该操作中的H方向和W方向)的函数。 关键思想是首先在一个方向上执行线性插值,然后在另一个方向上再次执行线性插值。 - -三线插值是线性插值的一种扩展,是3参数的插值方程(比如op里的D,H,W方向),在三个方向上进行线性插值。 - -Align_corners和align_mode是可选参数,插值的计算方法可以由它们选择。 - -示例: - -:: - - For scale: - - if align_corners = True && out_size > 1 : - - scale_factor = (in_size-1.0)/(out_size-1.0) - - else: - - scale_factor = float(in_size/out_size) - - - Nearest neighbor interpolation: - - if: - align_corners = False - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = \left \lfloor {H_{in} * scale_{}factor}} \right \rfloor - W_out = \left \lfloor {W_{in} * scale_{}factor}} \right \rfloor - - else: - align_corners = True - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = round(H_{in} * scale_{factor}) - W_out = round(W_{in} * scale_{factor}) - - Bilinear interpolation: - - if: - align_corners = False , align_mode = 0 - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - - else: - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - - Trilinear interpolation: - - if: - align_corners = False , align_mode = 0 - - input : (N,C,D_in,H_in,W_in) - output: (N,C,D_out,H_out,W_out) where: - - D_out = (D_{in}+0.5) * scale_{factor} - 0.5 - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - - else: - - input : (N,C,D_in,H_in,W_in) - output: (N,C,D_out,H_out,W_out) where: - - D_out = D_{in} * scale_{factor} - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - - -有关最近邻插值的详细信息,请参阅维基百科: -https://en.wikipedia.org/wiki/Nearest-neighbor_interpolation - -有关双线性插值的详细信息,请参阅维基百科: -https://en.wikipedia.org/wiki/Bilinear_interpolation - -有关三线插值的详细信息,请参阅维基百科: -https://en.wikipedia.org/wiki/Trilinear_interpolation - -参数: - - **input** (Variable) - 4-D或5-D Tensor,数据类型为float32、float64或uint8,其数据格式由参数 ``data_format`` 指定。 - - **out_shape** (list|tuple|Variable|None) - 输出Tensor,输入为4D张量时,形状为为(out_h, out_w)的2-D Tensor。输入为5-D Tensor时,形状为(out_d, out_h, out_w)的3-D Tensor。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者形状为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。默认值为None。 - - **scale** (float|Variable|None)-输入的高度或宽度的乘数因子 。 out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值为None。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - **resample** (str) - 插值方法。支持“双线性”,“三线性”,“临近插值”。默认值为双线性插值。 - - **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。如果希望动态指定输出形状,建议使用 :code:`out_shape` ,因为 :code:`actual_shape` 未来将被弃用。在使用actual_shape指定输出形状时,还需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值:None - - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值为True - - **align_mode** (int)- 双线性插值的可选项。 可以是 '0' 代表src_idx = scale *(dst_indx + 0.5)-0.5;如果为'1' ,代表src_idx = scale * dst_index。 - - **data_format** (str,可选)- 指定输入的数据格式,输出的数据格式将与输入保持一致。对于4-D Tensor,支持 NCHW(num_batches, channels, height, width) 或者 NHWC(num_batches, height, width, channels),对于5-D Tensor,支持 NCDHW(num_batches, channels, depth, height, width)或者 NDHWC(num_batches, depth, height, width, channels),默认值:'NCHW'。 - -返回:4-D Tensor,形状为 (num_batches, channels, out_h, out_w) 或 (num_batches, out_h, out_w, channels);或者5-D Tensor,形状为 (num_batches, channels, out_d, out_h, out_w) 或 (num_batches, out_d, out_h, out_w, channels)。 - -返回类型: 变量(variable) - -抛出异常: - - :code:`TypeError` - out_shape应该是一个列表、元组或变量。 - - :code:`TypeError` - actual_shape应该是变量或None。 - - :code:`ValueError` - image_resize的"resample"只能是"BILINEAR"或"TRILINEAR"或"NEAREST"。 - - :code:`ValueError` - out_shape 和 scale 不可同时为 None。 - - :code:`ValueError` - out_shape 的长度必须为2如果输入是4D张量。 - - :code:`ValueError` - out_shape 的长度必须为3如果输入是5D张量。 - - :code:`ValueError` - scale应大于0。 - - :code:`TypeError` - align_corners 应为bool型。 - - :code:`ValueError` - align_mode 只能取 ‘0’ 或 ‘1’。 - - :code:`ValueError` - data_format 只能取 ‘NCHW’、‘NHWC’、‘NCDHW’ 或者 ‘NDHWC’。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32") - # input.shape = [-1, 3, 6, 9], where -1 indicates batch size, and it will get the exact value in runtime. - - out = fluid.layers.image_resize(input, out_shape=[12, 12], resample="NEAREST") - out0 = fluid.layers.image_resize(input, out_shape=[12, 12], resample="NEAREST") - # out0.shape = [-1, 3, 12, 12], it means out0.shape[0] = input.shape[0] in runtime. - - # out_shape is a list in which each element is a integer or a tensor Variable - dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False) - out1 = fluid.layers.image_resize(input, out_shape=[12, dim1], resample="NEAREST") - # out1.shape = [-1, 3, 12, -1] - - # out_shape is a 1-D tensor Variable - shape_tensor = fluid.layers.data(name="shape_tensor", shape=[2], dtype="int32", append_batch_size=False) - out2 = fluid.layers.image_resize(input, out_shape=shape_tensor, resample="NEAREST") - # out2.shape = [-1, 3, -1, -1] - - # when use actual_shape - actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[2], dtype="int32", append_batch_size=False) - out3 = fluid.layers.image_resize(input, out_shape=[4, 4], resample="NEAREST", actual_shape=actual_shape_tensor) - # out3.shape = [-1, 3, 4, 4] - - # scale is a Variable - scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False) - out4 = fluid.layers.image_resize(input, scale=scale_tensor) - # out4.shape = [-1, 3, -1, -1] - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/image_resize_short_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/image_resize_short_cn.rst deleted file mode 100644 index 93c8a9583d9329ef27606404b477dacc55bca21d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/image_resize_short_cn.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. _cn_api_fluid_layers_image_resize_short: - -image_resize_short -------------------------------- - -.. py:function:: paddle.fluid.layers.image_resize_short(input, out_short_len, resample='BILINEAR') - -:alias_main: paddle.nn.functional.image_resize_short -:alias: paddle.nn.functional.image_resize_short,paddle.nn.functional.vision.image_resize_short -:old_api: paddle.fluid.layers.image_resize_short - - - -该OP用于调整一批图片的大小。输入图像的短边将被调整为给定的out_short_len 。输入图像的长边按比例调整大小,最终图像的长宽比保持不变。 - -参数: - - **input** (Variable) - 图像调整图层的输入张量,这是一个维度为[num_batch, channels, in_h, in_w]的4-D Tensor。 - - **out_short_len** (int) - 输出图像的短边长度。 - - **resample** (str) - resample方法,默认为双线性插值。 - -返回: 4维张量,shape为(num_batches, channels, out_h, out_w) - -返回类型: 变量(variable) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32") - out = fluid.layers.image_resize_short(input, out_short_len=3) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/inplace_abn_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/inplace_abn_cn.rst deleted file mode 100755 index 11077c5b78fe34fb0387a9d2dcb7bfd3f73c20b0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/inplace_abn_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_inplace_abn: - -inplace_abn -------------------------------- - -**注意:该API仅支持【静态图】模式** - -.. py:function:: paddle.fluid.layers.inplace_abn(input, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, data_layout='NCHW', name=None, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False, act_alpha=1.0) - -就地批正则化化激活层(Inplace Activation Batch Normalization Layer) - -此层使用就地内存计算批处理正则化和激活来实现节省内存,有关批量正则化计算,请参见 ``fluid.layers.batch_norm`` ,有关就地激活批正则化化的计算,请参考 `In-Place Activated BatchNorm for Memory-Optimized Training of DNNs `_。 - -参数: - - **input** (Variable) - inplace_abn算子的输入特征,是一个Variable类型,输入维度可以是 2, 3, 4, 5。数据类型:flaot16, float32, float64。 - - **act** (string)- 激活函数类型,可以是leaky_realu、relu、prelu等。默认:None。 - - **is_test** (bool) - 指示它是否在测试阶段,非训练阶段使用训练过程中统计到的全局均值和全局方差。默认:False。 - - **momentum** (float|Variable)- 此值用于计算 moving_mean 和 moving_var,是一个float类型或者一个shape为[1],数据类型为float32的Variable类型。更新公式为: :math:`moving\_mean = moving\_mean * momentum + new\_mean * (1. - momentum)` , :math:`moving\_var = moving\_var * momentum + new\_var * (1. - momentum)` , 默认:0.9。 - - **epsilon** (float)- 加在分母上为了数值稳定的值。默认:1e-5。 - - **param_attr** (ParamAttr|None) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。inplace_abn算子默认的权重初始化是1.0。 - - **bias_attr** (ParamAttr|None)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。inplace_abn算子默认的偏置初始化是0.0。 - - **data_layout** (string) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **moving_mean_name** (string)- moving_mean的名称,存储全局均值。如果将其设置为None, ``inplace_abn`` 将随机命名全局均值;否则, ``inplace_abn`` 将命名全局均值为 ``moving_mean_name`` 。默认:None。 - - **moving_variance_name** (string)- moving_variance的名称,存储全局变量。如果将其设置为None, ``inplace_abn`` 将随机命名全局方差;否则, ``inplace_abn`` 将命名全局方差为 ``moving_variance_name`` 。默认:None。 - - **do_model_average_for_mean_and_var** (bool,默认False)- 是否为mean和variance做模型均值。 - - **use_global_stats** (bool) – 是否使用全局均值和方差。 在预测或测试模式下,将use_global_stats设置为true或将is_test设置为true,并且行为是等效的。 在训练模式中,当设置use_global_stats为True时,在训练期间也使用全局均值和方差。默认:False。 - - **act_alpha** (float) – 当 ``act`` 参数为None、leaky-relu、elu时,会使用就地批正则化激活算法,可通过此参数给定leaky-relu、elu的 ``alpha`` 值。默认:1.0。 - - -返回: 维度和输入相同的Tensor,在输入中运用批正则后的结果。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[3, 7, 3, 7], dtype='float32') - hidden1 = fluid.layers.fc(input=x, size=200, param_attr='fc1.w') - hidden2 = fluid.layers.inplace_abn(input=hidden1) - hidden3 = fluid.layers.inplace_abn(input=hidden2, act='leaky_relu', act_alpha=0.2) diff --git a/doc/paddle/api/paddle/fluid/layers/nn/instance_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/instance_norm_cn.rst deleted file mode 100644 index a10ff93900023ad41c2b7e6461764f060eef3293..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/instance_norm_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_instance_norm: - -instance_norm -------------------------------- - - -.. py:function:: paddle.fluid.layers.instance_norm(input, epsilon=1e-05, param_attr=None, bias_attr=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - - -可用作卷积和全连接操作的实例正则化函数,根据每个样本的每个通道的均值和方差信息进行正则化。该层需要的数据格式如下: - -NCHW[batch,in_channels,in_height,in_width] - -更多详情请参考 : `Instance Normalization: The Missing Ingredient for Fast Stylization `_ - -``input`` 是mini-batch的输入。 - -.. math:: - \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mean of each channel in each sample in a batch \\ - \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// variance of each channel in each sample a batch \\ - \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ - y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift - - -参数: - - **input** (Variable) - instance_norm算子的输入特征,是一个Variable类型,输入的维度可以为 2, 3, 4, 5。数据类型:float32和float64。 - - **epsilon** (float,默认1e-05)-为了当前输入做标准化时得到稳定的结果而加在的分母上的扰动值。默认值为1e-5。 - - **param_attr** (ParamAttr|None) - instance_norm 权重参数的属性,可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 如果设为None,则默认的参数初始化为1.0。如果在ParamAttr指定了属性时, instance_norm创建相应属性的param_attr(权重)参数。默认:None。 - - **bias_attr** (ParamAttr|None) - instance_norm 偏置参数的属性,可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。如果设为None,默认的参数初始化为0.0。如果在ParamAttr指定了参数的属性时, instance_norm创建相应属性的bias_attr(偏置)参数。默认:None。 - - **name** (string,默认None)- 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量,在输入中运用instance normalization后的结果 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name='x', shape=[3, 7, 3, 7], dtype='float32', append_batch_size=False) - hidden1 = fluid.layers.fc(input=x, size=200) - param_attr = fluid.ParamAttr(name='instance_norm_w', initializer=fluid.initializer.Constant(value=1.0)) - bias_attr = fluid.ParamAttr(name='instance_norm_b', initializer=fluid.initializer.Constant(value=0.0)) - hidden2 = fluid.layers.instance_norm(input=hidden1, param_attr = param_attr, bias_attr = bias_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(3, 7, 3, 7)).astype('float32') - output = exe.run(feed={"x": np_x}, fetch_list = [hidden2]) - print(output) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/l2_normalize_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/l2_normalize_cn.rst deleted file mode 100644 index f0e50f6af88923236a3ab8661d70ec10fe29ccc0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/l2_normalize_cn.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _cn_api_fluid_layers_l2_normalize: - -l2_normalize -------------------------------- - -.. py:function:: paddle.fluid.layers.l2_normalize(x,axis,epsilon=1e-12,name=None) - -:alias_main: paddle.nn.functional.l2_normalize -:alias: paddle.nn.functional.l2_normalize,paddle.nn.functional.norm.l2_normalize -:old_api: paddle.fluid.layers.l2_normalize - - - -该OP计算欧几里得距离之和对x进行归一化。对于1-D张量(系数矩阵的维度固定为0) -计算公式如下: - -.. math:: - - y=\frac{x}{\sqrt{\sum x^{2}+epsilon}} - -对于输入为多维Tensor的情况,该OP分别对维度轴上的每个1-D切片单独归一化 - -参数: - - **x** (Variable) - 维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - - **axis** (int) - 归一化的轴。如果轴小于0,归一化的维是rank(X)+axis。其中,-1用来表示最后一维。 - - **epsilon** (float) - epsilon,用于避免除0,默认值为1e-12。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - 返回:与输入x的维度一致的Tensor - - 返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="data", - shape=(3, 17, 13), - dtype="float32") - normed = fluid.layers.l2_normalize(x=data, axis=1) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/label_smooth_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/label_smooth_cn.rst deleted file mode 100644 index 62292e20d0bbe1245f67a0f58f57a5941f5a9911..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/label_smooth_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_label_smooth: - -label_smooth -------------------------------- - -.. py:function:: paddle.fluid.layers.label_smooth(label, prior_dist=None, epsilon=0.1, dtype='float32', name=None) - -:alias_main: paddle.nn.functional.label_smooth -:alias: paddle.nn.functional.label_smooth,paddle.nn.functional.common.label_smooth -:old_api: paddle.fluid.layers.label_smooth - - - -该OP实现了标签平滑的功能。标签平滑是一种对分类器层进行正则化的机制,称为标签平滑正则化(LSR)。由于直接优化正确标签的对数似然可能会导致过拟合,降低模型的适应能力,因此提出了标签平滑的方法来降低模型置信度。 - -标签平滑使用标签 :math:`y` 和一些固定模式随机分布变量 :math:`\mu` 。对 :math:`k` 标签,标签平滑的计算方式如下。 - -.. math:: - - \tilde{y_k} = (1 - \epsilon) * y_k + \epsilon * \mu_k, - -其中 :math:`1-\epsilon` 和 :math:`\epsilon` 分别是权重, :math:`\tilde{y_k}` 是平滑后的标签,通常 :math:`\mu` 使用均匀分布。 - - -关于更多标签平滑的细节, `查看论文 `_ 。 - - -参数: - - **label** (Variable) - 包含标签数据的输入变量。 标签数据应使用 one-hot 表示,是维度为 :math:`[N_1, ..., Depth]` 的多维Tensor,其中Depth为字典大小。 - - **prior_dist** (Variable,可选) - 用于平滑标签的先验分布,是维度为 :math:`[1,class\_num]` 的2D Tensor。 如果未设置,则使用均匀分布。默认值为None。 - - **epsilon** (float,可选) - 用于混合原始真实分布和固定分布的权重。默认值为0.1。 - - **dtype** (np.dtype|core.VarDesc.VarType|str,可选) - 输入 ``Tensor`` 的数据类型,,数据类型可以为”float32“或”float64“。默认值为”float32“。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:为平滑后标签的 ``Tensor`` ,数据类型为dtype设置的数据类型,维度也与输入的label参数维度相同。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - label = layers.data(name="label", shape=[1], dtype="float32") - one_hot_label = layers.one_hot(input=label, depth=10) - smooth_label = layers.label_smooth(label=one_hot_label, epsilon=0.1, dtype="float32") - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/layer_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/layer_norm_cn.rst deleted file mode 100644 index 477b6e6ba82ebca08e62080ee79c7cb788fecbc0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/layer_norm_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_layer_norm: - -layer_norm -------------------------------- - - -.. py:function:: paddle.fluid.layers.layer_norm(input, scale=True, shift=True, begin_norm_axis=1, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP实现了层归一化层(Layer Normalization Layer),其可以应用于小批量输入数据。更多详情请参考:`Layer Normalization `_ - -计算公式如下 - -.. math:: - \\\mu=\frac{1}{H}\sum_{i=1}^{H}x_i\\ - - \\\sigma=\sqrt{\frac{1}{H}\sum_i^H{(x_i-\mu)^2} + \epsilon}\\ - - \\y=f(\frac{g}{\sigma}(x-\mu) + b)\\ - -- :math:`x` : 该层神经元的向量表示 -- :math:`H` : 层中隐藏神经元个数 -- :math:`\epsilon` : 添加较小的值到方差中以防止除零 -- :math:`g` : 可训练的比例参数 -- :math:`b` : 可训练的偏差参数 - -参数: - - **input** (Variable) - 维度为任意维度的多维 ``Tensor`` ,数据类型为float32或float64。 - - **scale** (bool, 可选) - 指明是否在归一化后学习自适应增益 ``g`` 。默认值:True。 - - **shift** (bool, 可选) - 指明是否在归一化后学习自适应偏差 ``b`` 。默认值:True。 - - **begin_norm_axis** (int, 可选) - 指明归一化将沿着 ``begin_norm_axis`` 到 ``rank(input)`` 的维度执行。默认值:1。 - - **epsilon** (float, 可选) - 指明在计算过程中是否添加较小的值到方差中以防止除零。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。。 - -返回:表示归一化结果的 ``Tensor`` ,数据类型和 ``input`` 一致,返回维度和 ``input`` 一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name='x', shape=[3, 32, 32], dtype='float32') - hidden1 = fluid.layers.layer_norm(input=x, begin_norm_axis=1) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(8, 3, 32, 32)).astype('float32') - output = exe.run(feed={"x": np_x}, fetch_list = [hidden1]) - print(output) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/leaky_relu_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/leaky_relu_cn.rst deleted file mode 100644 index 736a39e0dfded848089f7511031addc5cf71dfe4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/leaky_relu_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_leaky_relu: - -leaky_relu -------------------------------- - -.. py:function:: paddle.fluid.layers.leaky_relu(x, alpha=0.02, name=None) - -:alias_main: paddle.nn.functional.leaky_relu -:alias: paddle.nn.functional.leaky_relu,paddle.nn.functional.activation.leaky_relu -:old_api: paddle.fluid.layers.leaky_relu - - - -LeakyRelu激活函数 - -.. math:: out=max(x,α∗x) - -参数: - - **x** (Variable) - 输入的多维LoDTensor/Tensor,数据类型为:float32,float64。 - - **alpha** (float) - 负斜率,缺省值为0.02。 - - **name** (str,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 与 ``x`` 维度相同,数据类型相同的LodTensor/Tensor。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # Graph Organizing - x = fluid.layers.data(name="x", shape=[2], dtype="float32") - res = fluid.layers.leaky_relu(x, alpha=0.1) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - x_i = np.array([[-1, 2], [3, -4]]).astype(np.float32) - res_val, = exe.run(fluid.default_main_program(), feed={'x':x_i}, fetch_list=[res]) - print(res_val) # [[-0.1, 2], [3, -0.4]] - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/linear_chain_crf_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/linear_chain_crf_cn.rst deleted file mode 100755 index cf38de480033e68c8388e08990a991cf5792bfef..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/linear_chain_crf_cn.rst +++ /dev/null @@ -1,141 +0,0 @@ -.. _cn_api_fluid_layers_linear_chain_crf: - -linear_chain_crf -------------------------------- - - -.. py:function:: paddle.fluid.layers.linear_chain_crf(input, label, param_attr=None, length=None) - -:api_attr: 声明式编程模式(静态图) - - - -线性链条件随机场(Linear Chain CRF) - -条件随机场定义间接概率图,节点代表随机变量,边代表两个变量之间的依赖。CRF学习条件概率 :math:`P\left ( Y|X \right )` , :math:`X = \left ( x_{1},x_{2},...,x_{n} \right )` 是结构性输入,:math:`Y = \left ( y_{1},y_{2},...,y_{n} \right )` 为输入标签。 - -线性链条件随机场(Linear Chain CRF)是特殊的条件随机场(CRF),有利于序列标注任务。序列标注任务不为输入设定许多条件依赖。唯一的限制是输入和输出必须是线性序列。因此类似CRF的图是一个简单的链或者线,也就是线性链随机场(linear chain CRF)。 - -该操作符实现了线性链条件随机场(linear chain CRF)的前向——反向算法。详情请参照 http://www.cs.columbia.edu/~mcollins/fb.pdf 和 http://cseweb.ucsd.edu/~elkan/250Bwinter2012/loglinearCRFs.pdf。 - - -长度为L的序列s的概率定义如下: - -.. math:: - - P(s) = (1/Z) exp(a_{s_1} + b_{s_L} + sum_{l=1}^L x_{s_l} + sum_{l=2}^L w_{s_{l-1},s_l}) - - -其中Z是归一化值,所有可能序列的P(s)之和为1,x是线性链条件随机场(linear chain CRF)的发射(emission)特征权重。 - -线性链条件随机场最终输出每个batch训练样本的条件概率的对数 - - - 1.这里 :math:`x` 代表Emission - - 2.Transition的第一维度值,代表起始权重,这里用 :math:`a` 表示 - - 3.Transition的下一维值,代表末尾权重,这里用 :math:`b` 表示 - - 4.Transition剩下的值,代表转移权重,这里用 :math:`w` 表示 - - 5.Label用 :math:`s` 表示 - - - - -**注意:** - - 1.条件随机场(CRF)的特征函数由发射特征(emission feature)和转移特征(transition feature)组成。发射特征(emission feature)权重在调用函数前计算,而不在函数里计算。 - - 2.由于该函数对所有可能序列的进行全局正则化,发射特征(emission feature)权重应是未缩放的。因此如果该函数带有发射特征(emission feature),并且发射特征是任意非线性激活函数的输出,则请勿调用该函数。 - - 3.Emission的第二维度必须和标记数字(tag number)相同。 - -参数: - - **input** (LoDTensor|Tensor) - 数据类型为float32, float64的Tensor或者LoDTensor。线性链条件随机场的发射矩阵emission。输入为LoDTensor时,是一个shape为[N*D]的2-D LoDTensor,N是每一个batch中batch对应的长度数想加的总数,D是维度。当输入为Tensor时,应该是一个shape为[N x S x D]的Tensor,N是batch_size,S为序列的最大长度,D是维度。 - - **label** (Tensor|LoDTensor) - 数据类型为int64类型Tensor或者LoDTensor。该值为标签值。输入为LoDTensor时[N x 1],N是mini-batch的总数;输入为Tensor时,[N x S],N为batch数量,S为序列的最大长度。 - - **Length** (Tensor) - 数据类型为int64类型的Tensor。 shape为[M x 1]的Tensor,M为mini_batch中序列的数量。 - - **param_attr** (ParamAttr) - 可学习参数的属性,为transition矩阵。详见代码示例。 - -返回: - Emission的指数形式。shape与Emission相同。这是前向计算中的中间计算结果,在反向计算中还会复用。 - - Transition的指数形式。shape为[(D+2)*D]的二维张量。这是前向计算中的中间计算结果,在反向计算中还会复用。 - - 条件概率的对数形式。每个batch训练样本的条件概率的对数。这是一个shape为[S*1]的二维张量,S是mini-batch的序列数。注:S等于mini-batch的序列数。输出不再是LoDTensor。 - -返回类型: - Emission的指数形式。Variable(Tensor|LoDTensor):数据类型为float32, float64的Tensor或者LoDTensor。 - - Transition的指数形式。Variable(Tensor|LoDTensor):数据类型为float32, float64的Tensor或者LoDTensor。 - - 条件概率的对数形式。Variable(Tensor):数据类型为float32, float64的Tensor。 - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - input_data = fluid.layers.data(name='input_data', shape=[10], dtype='float32', lod_level=1) - label = fluid.layers.data(name='label', shape=[1], dtype='int', lod_level=1) - emission= fluid.layers.fc(input=input_data, size=10, act="tanh") - crf_cost = fluid.layers.linear_chain_crf( - input=emission, - label=label, - param_attr=fluid.ParamAttr( - name='crfw', - learning_rate=0.01)) - use_cuda = False - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(startup_program) - #using LoDTensor, define network - a = fluid.create_lod_tensor(np.random.rand(12,10).astype('float32'), [[3,3,4,2]], place) - b = fluid.create_lod_tensor(np.array([[1],[1],[2],[3],[1],[1],[1],[3],[1],[1],[1],[1]]),[[3,3,4,2]] , place) - feed1 = {'input_data':a,'label':b} - loss= exe.run(train_program,feed=feed1, fetch_list=[crf_cost]) - print(loss) - - #using padding, define network - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - input_data2 = fluid.layers.data(name='input_data2', shape=[10,10], dtype='float32') - label2 = fluid.layers.data(name='label2', shape=[10,1], dtype='int') - label_length = fluid.layers.data(name='length', shape=[1], dtype='int') - emission2= fluid.layers.fc(input=input_data2, size=10, act="tanh", num_flatten_dims=2) - crf_cost2 = fluid.layers.linear_chain_crf( - input=emission2, - label=label2, - length=label_length, - param_attr=fluid.ParamAttr( - name='crfw', - learning_rate=0.01)) - - use_cuda = False - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(startup_program) - - #define input data - cc=np.random.rand(4,10,10).astype('float32') - dd=np.random.rand(4,10,1).astype('int64') - ll=np.array([[3,3,4,2]]) - feed2 = {'input_data2':cc,'label2':dd,'length':ll} - - loss2= exe.run(train_program,feed=feed2, fetch_list=[crf_cost2]) - print(loss2) - """ - output: - [array([[ 7.8902354], - [ 7.3602567], - [ 10.004011], - [ 5.86721 ]], dtype=float32)] - """ \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/layers/nn/lod_append_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/lod_append_cn.rst deleted file mode 100644 index 2c7f754233a198fdcdc39d4fcb453ad56c1a81d6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/lod_append_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_layers_lod_append: - -lod_append -------------------------------- - -.. py:function:: paddle.fluid.layers.lod_append(x, level) - - - - -给 ``x`` 的LoD添加 ``level`` 。 - -简单示例: - -.. code-block:: python - - give a 1-level LodTensor x: - x.lod = [[2, 3, 1]] - x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - x.dims = [6, 1] - - level:[1, 1, 1, 1, 1, 1] - - Then we get a 2-level LodTensor: - x.lod = [[2, 3, 1], [1, 1, 1, 1, 1, 1] - x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - x.dims = [6, 1] - -参数: - - **x** (Variable)-输入变量,可以是LoDTensor或tensor。 - - **level** (list|tuple|Variable)-预添加到x的LoD里的LoD level。 - -返回:一个有着新的LoD level的输出变量 - -返回类型:Variable - -Raise: ``ValueError`` - 如果y为None或者level不可迭代。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[6, 10], lod_level=1) - out = fluid.layers.lod_append(x, [1,1,1,1,1,1]) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/lod_reset_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/lod_reset_cn.rst deleted file mode 100644 index fbb090b26751d1a372911a7d35cf4425a2048e76..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/lod_reset_cn.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. _cn_api_fluid_layers_lod_reset: - -lod_reset -------------------------------- - -.. py:function:: paddle.fluid.layers.lod_reset(x, y=None, target_lod=None) - - - - -根据给定的参数 ``y`` 或 ``target_lod`` ,重设输入 ``x`` (LoDTensor) 的 LoD 信息。 - -参数: - - **x** (Variable) : 输入变量,类型为 Tensor 或者 LoDTensor。 - - **y** (Variable|None) : 当 ``y`` 非空时,输出 LoDTensor 的 LoD 信息将与 ``y`` 的 LoD 一致。 - - **target_lod** (list|tuple|None) : 一级 LoD,当 ``y`` 为空时,输出 LoDTensor 的 LoD 信息将与 ``target_lod`` 一致。 - -返回: - - Variable (LoDTensor),重设了 LoD 信息的 LoDTensor。 - -返回类型: - - Variable (LoDTensor)。 - -抛出异常: - - ``TypeError`` : 当 ``y`` 和 ``target_lod`` 二者均为空时抛出此异常。 - -:: - - * 例 1: - - x: 包含一级 LoD 信息的 LoDTensor - x.lod = [[ 2, 3, 1 ]] - x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - x.dims = [6, 1] - - y: None - - target_lod: [4, 2] - - Output: 包含一级 LoD 信息的 LoDTensor - out.lod = [[4, 2]] - out.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - out.dims = [6, 1] - - * 例 2: - - x: 包含一级 LoD 信息的 LoDTensor - x.lod = [[2, 3, 1]] - x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - x.dims = [6, 1] - - y: 普通 Tensor,不含 LoD 信息 - y.data = [[2, 4]] - y.dims = [1, 3] - - target_lod: 当 y 不为空时,此参数不起作用 - - Output: 包含一级 LoD 信息的 LoDTensor - out.lod = [[2, 4]] - out.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - out.dims = [6, 1] - - * 例 3: - - x: 包含一级 LoD 信息的 LoDTensor - x.lod = [[2, 3, 1]] - x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - x.dims = [6, 1] - - y: 包含二级 LoD 信息的 LoDTensor - y.lod = [[2, 2], [2, 2, 1, 1]] - y.data = [[1.1], [2.1], [3.1], [4.1], [5.1], [6.1]] - y.dims = [6, 1] - - target_lod: 当 y 不为空时,此参数不起作用 - - Output: 包含二级 LoD 信息的 LoDTensor - out.lod = [[2, 2], [2, 2, 1, 1]] - out.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]] - out.dims = [6, 1] - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - x = fluid.layers.data(name='x', shape=[6]) - y = fluid.layers.data(name='y', shape=[6], lod_level=2) - output = fluid.layers.lod_reset(x=x, y=y) - - # Create an executor using CPU as an example - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - # Execute - x_tensor = fluid.core.LoDTensor() - x_tensor.set(numpy.ones([6]).astype(numpy.float32), place) - y_ndarray = numpy.ones([6]).astype(numpy.float32) - y_lod = [[2, 2], [2, 2, 1, 1]] - y_tensor = fluid.create_lod_tensor(y_ndarray, y_lod, place) - - res, = exe.run(fluid.default_main_program(), - feed={'x':x_tensor, 'y':y_tensor}, - fetch_list=[output], - return_numpy=False) - print(res) - # Output Value: - # lod: [[0, 2, 4], [0, 2, 4, 5, 6]] - # dim: 6 - # layout: NCHW - # dtype: float - # data: [1 1 1 1 1 1] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/log_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/log_cn.rst deleted file mode 100644 index dc8f40a8081d7a7aa2fa6880761031c333edd88d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/log_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_log: - -log -------------------------------- - -.. py:function:: paddle.fluid.layers.log(x, name=None) - -:alias_main: paddle.log -:alias: paddle.log,paddle.tensor.log,paddle.tensor.math.log -:old_api: paddle.fluid.layers.log - - - - -Log激活函数(计算自然对数) - -.. math:: - \\Out=ln(x)\\ - - -参数: - - **x** (Variable) – 该OP的输入为LodTensor/Tensor。数据类型为float32,float64。 - - **name** (str,可选) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:Log算子自然对数输出 - -返回类型: Variable - 该OP的输出为LodTensor/Tensor,数据类型为输入一致。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # Graph Organizing - x = fluid.layers.data(name="x", shape=[1], dtype="float32") - res = fluid.layers.log(x) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - x_i = np.array([[1], [2]]).astype(np.float32) - res_val, = exe.run(fluid.default_main_program(), feed={'x':x_i}, fetch_list=[res]) - print(res_val) # [[0.], [0.6931472]] - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/log_loss_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/log_loss_cn.rst deleted file mode 100644 index aea52ab5f87ec3c61174a6516f10a650037007e5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/log_loss_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_log_loss: - -log_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.log_loss(input, label, epsilon=0.0001, name=None) - -:alias_main: paddle.nn.functional.log_loss -:alias: paddle.nn.functional.log_loss,paddle.nn.functional.loss.log_loss -:old_api: paddle.fluid.layers.log_loss - - - -**负log loss层** - -该 OP 对输入的预测结果和目标标签进行计算,返回负对数损失值。 - -.. math:: - - Out = -label * \log{(input + \epsilon)} - (1 - label) * \log{(1 - input + \epsilon)} - - -参数: - - **input** (Variable) – 形为 [N x 1] 的二维张量, 其中 N 为 batch 大小。该输入是由前驱算子计算得来的概率, 数据类型是 float32。 - - **label** (Variable) – 形为 [N x 1] 的二维张量,真值标签, 其中 N 为 batch 大小,数据类型是 float32。 - - **epsilon** (float) – epsilon - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 形为[N x 1]的二维张量,计算出的负log_loss值,数据类型为 float32 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - label = fluid.data(name='label', shape=[None, 1], dtype='float32') - prob = fluid.data(name='prob', shape=[None, 1], dtype='float32') - cost = fluid.layers.log_loss(input=prob, label=label) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/logical_and_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/logical_and_cn.rst deleted file mode 100644 index a5b0feeee80da6107ff8a0d2846a2008a74755e6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/logical_and_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_logical_and: - -logical_and -------------------------------- - -.. py:function:: paddle.logical_and(x, y, out=None, name=None) - -:alias_main: paddle.logical_and -:alias: paddle.logical_and, paddle.tensor.logical_and, paddle.tensor.logic.logical_and -:old_api: paddle.fluid.layers.logical_and - - - -该OP逐元素的对 ``x`` 和 ``y`` 进行逻辑与运算。 - -.. math:: - Out = X \&\& Y - -参数: - - **x** (Variable)- 逻辑与运算的第一个输入,是一个 Variable,数据类型只能是bool。 - - **y** (Variable)- 逻辑与运算的第二个输入,是一个 Variable,数据类型只能是bool。 - - **out** (Variable,可选)- 指定算子输出结果的 Variable,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - **name** (str,可选)- 该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:与 ``x`` 维度相同,数据类型相同的 Variable。 - -返回类型:Variable - - -**代码示例:** - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - x_data = np.array([True, True, False, False], dtype=np.bool) - y_data = np.array([True, False, True, False], dtype=np.bool) - x = paddle.imperative.to_variable(x_data) - y = paddle.imperative.to_variable(y_data) - res = paddle.logical_and(x, y) - print(res.numpy()) # [True False False False] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/logical_not_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/logical_not_cn.rst deleted file mode 100644 index 3eaf0f1719abac0ce3e63ed2867026f349e76fba..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/logical_not_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_logical_not: - -logical_not -------------------------------- - -.. py:function:: paddle.logical_not(x, out=None, name=None) - -:alias_main: paddle.logical_not -:alias: paddle.logical_not, paddle.tensor.logical_not, paddle.tensor.logic.logical_not -:old_api: paddle.fluid.layers.logical_not - - - -该OP逐元素的对 ``X`` Variable进行逻辑非运算 - -.. math:: - Out = !X - -参数: - - **x** (Variable)- 逻辑非运算的输入,是一个 Variable,数据类型只能是bool。 - - **out** (Variable,可选)- 指定算子输出结果的 Variable,可以是程序中已经创建的任何 Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - **name** (str,可选)- 该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:与 ``x`` 维度相同,数据类型相同的 Variable。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - x_data = np.array([True, False, True, False], dtype=np.bool) - x = paddle.imperative.to_variable(x_data) - res = paddle.logical_not(x) - print(res.numpy()) # [False True False True] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/logical_or_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/logical_or_cn.rst deleted file mode 100644 index b95924ba3104aa1308483ee2f87c6bf43d711c25..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/logical_or_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_logical_or: - -logical_or -------------------------------- - -.. py:function:: paddle.logical_or(x, y, out=None, name=None) - -:alias_main: paddle.logical_or -:alias: paddle.logical_or, paddle.tensor.logical_or, paddle.tensor.logic.logical_or -:old_api: paddle.fluid.layers.logical_or - - - -该OP逐元素的对 ``X`` 和 ``Y`` 进行逻辑或运算。 - -.. math:: - Out = X || Y - -参数: - - **x** (Variable)- 逻辑或运算的第一个输入,是一个 Variable,数据类型只能是bool。 - - **y** (Variable)- 逻辑或运算的第二个输入,是一个 Variable,数据类型只能是bool。 - - **out** (Variable,可选)- 指定算子输出结果的 Variable,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - **name** (str,可选)- 该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:与 ``x`` 维度相同,数据类型相同的 Variable。 - -返回类型:Variable - - -**代码示例:** - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - x_data = np.array([True, True, False, False], dtype=np.bool) - y_data = np.array([True, False, True, False], dtype=np.bool) - x = paddle.imperative.to_variable(x_data) - y = paddle.imperative.to_variable(y_data) - res = paddle.logical_or(x, y) - print(res.numpy()) # [True True True False] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/logical_xor_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/logical_xor_cn.rst deleted file mode 100644 index aefb5230c575fb9679d42b7fdafedaaef99c5dd9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/logical_xor_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_logical_xor: - -logical_xor -------------------------------- - -.. py:function:: paddle.logical_xor(x, y, out=None, name=None) - -:alias_main: paddle.logical_xor -:alias: paddle.logical_xor, paddle.tensor.logical_xor, paddle.tensor.logic.logical_xor -:old_api: paddle.fluid.layers.logical_xor - - - -该OP逐元素的对 ``X`` 和 ``Y`` 进行逻辑异或运算。 - -.. math:: - Out = (X || Y) \&\& !(X \&\& Y) - -参数: - - **x** (Variable)- 逻辑异或运算的第一个输入,是一个 Variable,数据类型只能是bool。 - - **y** (Variable)- 逻辑异或运算的第二个输入,是一个 Variable,数据类型只能是bool。 - - **out** (Variable,可选)- 指定算子输出结果的 Variable,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - **name** (str,可选)- 该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_Name` ,默认值为None。 - - -返回:与 ``x`` 维度相同,数据类型相同的 Variable。 - -返回类型:Variable - - -**代码示例:** - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - x_data = np.array([True, True, False, False], dtype=np.bool) - y_data = np.array([True, False, True, False], dtype=np.bool) - x = paddle.imperative.to_variable(x_data) - y = paddle.imperative.to_variable(y_data) - res = paddle.logical_xor(x, y) - print(res.numpy()) # [False True True False] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/lrn_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/lrn_cn.rst deleted file mode 100644 index 0465849f1c66e0bb8ce6bbdf3c987e45de01bffb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/lrn_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_lrn: - -lrn -------------------------------- - -.. py:function:: paddle.fluid.layers.lrn(input, n=5, k=1.0, alpha=0.0001, beta=0.75, name=None, data_format='NCHW') - -:alias_main: paddle.nn.functional.lrn -:alias: paddle.nn.functional.lrn,paddle.nn.functional.norm.lrn -:old_api: paddle.fluid.layers.lrn - - - - -该OP实现了局部响应正则化层(Local Response Normalization Layer),用于对局部输入区域正则化,执行一种侧向抑制(lateral inhibition)。更多详情参考: `ImageNet Classification with Deep Convolutional Neural Networks `_ - -其中 ``input`` 是mini-batch的输入特征。计算过程如下: - -.. math:: - - Output(i,x,y) = Input(i,x,y)/\left ( k+\alpha \sum_{j=max(0,i-n/2)}^{min(C-1,i+n/2)}(Input(j,x,y))^2 \right )^\beta - -在以上公式中: - - :math:`n` :累加的通道数 - - :math:`k` :位移 - - :math:`\alpha` : 缩放参数 - - :math:`\beta` : 指数参数 - - -参数: - - **input** (Variable)- 输入特征,形状为[N,C,H,W]或者[N,H,W,C]的4D-Tensor,其中N为batch大小,C为输入通道数,H为特征高度,W为特征宽度。必须包含4个维度,否则会抛出 ``ValueError`` 的异常。数据类型为float32。 - - **n** (int,可选) - 累加的通道数,默认值为5。 - - **k** (float,可选)- 位移,正数。默认值为1.0。 - - **alpha** (float,可选)- 缩放参数,正数。默认值为1e-4。 - - **beta** (float,可选)- 指数,正数。默认值为0.75。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - -返回:局部响应正则化得到的输出特征,数据类型及维度和input相同。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` : 如果输入不是4-D Tensor。 - - ``ValueError`` - 如果 ``data_format`` 不是"NCHW"或者"NHWC"。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data( - name="data", shape=[3, 112, 112], dtype="float32") - lrn = fluid.layers.lrn(input=data) - print(lrn.shape) # [-1, 3, 112, 112] - print(lrn.dtype) # float32 diff --git a/doc/paddle/api/paddle/fluid/layers/nn/matmul_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/matmul_cn.rst deleted file mode 100644 index 8514a410c290fe9de6004751329d2439772bcd99..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/matmul_cn.rst +++ /dev/null @@ -1,104 +0,0 @@ -.. _cn_api_fluid_layers_matmul: - -matmul -------------------------------- - -.. py:function:: paddle.fluid.layers.matmul(x, y, transpose_x=False, transpose_y=False, alpha=1.0, name=None) - - - - -输入 ``x`` 和输入 ``y`` 矩阵相乘。 - -两个输入的形状可为任意维度,但当任一输入维度大于3时,两个输入的维度必须相等。 -实际的操作取决于 ``x`` 、 ``y`` 的维度和 ``transpose_x`` 、 ``transpose_y`` 的布尔值。具体如下: - -- 如果 ``transpose`` 为真,则对应 Tensor 的后两维会转置。假定 ``x`` 是一个 shape=[D] 的一维 Tensor,则 ``x`` 非转置形状为 [1, D],转置形状为 [D, 1]。转置之后的输入形状需满足矩阵乘法要求,即 `x_width` 与 `y_height` 相等。 - -- 转置后,输入的两个 Tensor 维度将为 2-D 或 n-D,将根据下列规则矩阵相乘: - - 如果两个矩阵都是 2-D,则同普通矩阵一样进行矩阵相乘。 - - 如果任意一个矩阵是 n-D,则将其视为带 batch 的二维矩阵乘法。 - -- 如果原始 Tensor x 或 y 的秩为 1 且未转置,则矩阵相乘后的前置或附加维度 1 将移除。 - -参数: - - **x** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **y** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **transpose_x** (bool) : 相乘前是否转置 x。 - - **transpose_y** (bool) : 相乘前是否转置 y。 - - **alpha** (float) : 输出比例,默认为 1.0。 - - **name** (str|None) : 该层名称(可选),如果设置为空,则自动为该层命名。 - -返回: - - Variable (Tensor / LoDTensor),矩阵相乘后的结果。 - -返回类型: - - Variable(变量)。 - -:: - - * 例 1: - - x: [B, ..., M, K], y: [B, ..., K, N] - out: [B, ..., M, N] - - * 例 2: - - x: [B, M, K], y: [B, K, N] - out: [B, M, N] - - * 例 3: - - x: [B, M, K], y: [K, N] - out: [B, M, N] - - * 例 4: - - x: [M, K], y: [K, N] - out: [M, N] - - * 例 5: - - x: [B, M, K], y: [K] - out: [B, M] - - * 例 6: - - x: [K], y: [K] - out: [1] - - * 例 7: - - x: [M], y: [N] - out: [M, N] - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - x = fluid.layers.data(name='x', shape=[2, 3], dtype='float32') - y = fluid.layers.data(name='y', shape=[3, 2], dtype='float32') - output = fluid.layers.matmul(x, y, True, True) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - input_x = numpy.ones([2, 3]).astype(numpy.float32) - input_y = numpy.ones([3, 2]).astype(numpy.float32) - res, = exe.run(fluid.default_main_program(), - feed={'x':input_x, 'y':input_y}, - fetch_list=[output]) - print(res) - ''' - Output Value: - [[2. 2. 2.] - [2. 2. 2.] - [2. 2. 2.]] - ''' diff --git a/doc/paddle/api/paddle/fluid/layers/nn/maxout_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/maxout_cn.rst deleted file mode 100644 index 2f73289029229de4436d34bb99030a5eb958d1fb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/maxout_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_maxout: - -maxout -------------------------------- - -.. py:function:: paddle.fluid.layers.maxout(x, groups, name=None, axis=1) - -:alias_main: paddle.nn.functional.maxout -:alias: paddle.nn.functional.maxout,paddle.nn.functional.activation.maxout -:old_api: paddle.fluid.layers.maxout - - - -假设输入形状为(N, Ci, H, W),输出形状为(N, Co, H, W),则 :math:`Co=Ci/groups` 运算公式如下: - -.. math:: - - y_{si+j} &= \max_k x_{gsi + sk + j} \\ - g &= groups \\ - s &= \frac{input.size}{num\_channels} \\ - 0 \le &i < \frac{num\_channels}{groups} \\ - 0 \le &j < s \\ - 0 \le &k < groups - - -请参阅论文: - - Maxout Networks: http://www.jmlr.org/proceedings/papers/v28/goodfellow13.pdf - - Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks: https://arxiv.org/pdf/1312.6082v4.pdf - -参数: - - **x** (Variable) - 4-D Tensor,maxout算子的输入张量,其数据类型为float32,数据格式为NCHW或NHWC,其中N为 batch size ,C为通道数,H和W为特征图的高和宽。 - - **groups** (int) - 指定将输入张量的channel通道维度进行分组的数目。输出的通道数量为通道数除以组数。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **axis** (int) - 指定通道所在维度的索引。当数据格式为NCHW时,axis应该被设置为1,当数据格式为NHWC时,axis应该被设置为-1或者3。默认值:1。 - -返回:4-D Tensor,数据类型和格式与 `x` 一致。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` - 如果 ``axis`` 既不是1,也不是-1或3。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.data( - name='data', - shape=[None, 256, 32, 32], - dtype='float32') - out = fluid.layers.maxout(input, groups=2) diff --git a/doc/paddle/api/paddle/fluid/layers/nn/mean_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/mean_cn.rst deleted file mode 100644 index 69363e1c6ba3934a5ea1f5622d5233552b47fc84..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/mean_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_mean: - -mean -------------------------------- - -.. py:function:: paddle.fluid.layers.mean(x, name=None) - -:alias_main: paddle.mean -:alias: paddle.mean,paddle.tensor.mean,paddle.tensor.stat.mean -:old_api: paddle.fluid.layers.mean - - - -计算 ``x`` 所有元素的平均值。 - -参数: - - **x** (Variable) : Tensor 或 LoDTensor。均值运算的输入。 - - **name** (basestring | None) : 输出变量的名称。 - -返回: - - Variable: 包含输出均值的 Tensor / LoDTensor。 - -返回类型: - - Variable(变量)。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - input = fluid.layers.data( - name='data', shape=[2, 3], dtype='float32') - output = fluid.layers.mean(input) - - # Create an executor using CPU as an example - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - # Execute - x_ndarray = numpy.ones([2, 3]).astype(numpy.float32) - res, = exe.run(fluid.default_main_program(), - feed={'data':x_ndarray}, - fetch_list=[output]) - print(res) - ''' - Output Value: - [1.] - ''' diff --git a/doc/paddle/api/paddle/fluid/layers/nn/mean_iou_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/mean_iou_cn.rst deleted file mode 100644 index 254c9d9e5a4200741675d7c926085526bda5862f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/mean_iou_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_mean_iou: - -mean_iou -------------------------------- - -.. py:function:: paddle.fluid.layers.mean_iou(input, label, num_classes) - - - - -该OP计算均值IOU, 均值IOU(Mean Intersection-Over-Union)是语义图像分割中的常用的评价指标之一,它首先计算每个类的IOU,然后计算类之间的平均值。IOU定义如下: - -.. math:: - - IOU = \frac{true\_positive}{true\_positive+false\_positive+false\_negative} - -先得到类别的预测结果,然后从中计算均值-IOU。 - -参数: - - **input** (Variable) - 分割类别预测结果,类型为int32或int64的多维Tensor。 - - **label** (Variable) - 真实label,类型为int32或int64的多维Tensor,它的shape与input相同。 - - **num_classes** (int32) - 类别数目。 - -返回: - - **mean_iou** (Variable) - 类型为float32的1-D Tensor,shape为[1], 均值IOU的计算结果。 - - **out_wrong** (Variable) - 类型为int32的1-D Tensor,shape为[num_classes],代表每个类别中错误的个数。 - - **out_correct** (Variable) - 类型为int32的1-D Tensor,shape为[num_classes],代表每个类别中正确的个数。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - iou_shape = [32, 32] - num_classes = 5 - predict = fluid.layers.data(name='predict', shape=iou_shape, dtype='int64') - label = fluid.layers.data(name='label', shape=iou_shape, dtype='int64') - mean_iou, out_wrong, out_correct = fluid.layers.mean_iou(predict, label, num_classes) - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/merge_selected_rows_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/merge_selected_rows_cn.rst deleted file mode 100644 index d44783ca46c84322e25a4d16a767663ccad95d25..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/merge_selected_rows_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_layers_merge_selected_rows: - -merge_selected_rows -------------------------------- - -.. py:function:: paddle.fluid.layers.merge_selected_rows(x, name=None) - - - - -累加合并 `SelectedRows `_ ( ``x`` ) 中的重复行,并对行值由小到大重新排序。 - -参数: - - x (Variable) : 类型为 SelectedRows,选中行允许重复。 - - name (basestring|None) : 输出变量名称。 - -返回: - - 含有 SelectedRows 的 Variable,选中行不重复。 - -返回类型: - - Variable(变量)。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - place = fluid.CPUPlace() - block = fluid.default_main_program().global_block() - - var = block.create_var(name="X2", - dtype="float32", - persistable=True, - type=fluid.core.VarDesc.VarType.SELECTED_ROWS) - y = fluid.layers.merge_selected_rows(var) - z = fluid.layers.get_tensor_from_selected_rows(y) - - x_rows = [0, 2, 2, 4, 19] - row_numel = 2 - np_array = numpy.ones((len(x_rows), row_numel)).astype("float32") - - x = fluid.global_scope().var("X2").get_selected_rows() - x.set_rows(x_rows) - x.set_height(20) - x_tensor = x.get_tensor() - x_tensor.set(np_array, place) - - exe = fluid.Executor(place=place) - result = exe.run(fluid.default_main_program(), fetch_list=[z]) - - print("x_rows: ", x_rows) - print("np_array: ", np_array) - print("result: ", result) - ''' - Output Values: - ('x_rows: ', [0, 2, 2, 4, 19]) - ('np_array: ', array([[1., 1.], - [1., 1.], - [1., 1.], - [1., 1.], - [1., 1.]], dtype=float32)) - ('result: ', [array([[1., 1.], - [2., 2.], - [1., 1.], - [1., 1.]], dtype=float32)]) - ''' diff --git a/doc/paddle/api/paddle/fluid/layers/nn/mul_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/mul_cn.rst deleted file mode 100644 index 6e5fea3571adf9ca98948b6bbb38c44cfd44ad9d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/mul_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_tensor_argmax: - -mul -------------------------------- - -.. py:function:: paddle.mul(x, y, x_num_col_dims=1, y_num_col_dims=1, out=None, name=None) - -:alias_main: paddle.mul -:alias: paddle.mul,paddle.tensor.mul,paddle.tensor.math.mul -:update_api: paddle.fluid.layers.mul - - - - -mul算子 -此运算是用于对输入x和y执行矩阵乘法。 -公式是: - -.. math:: - out = x * y - -输入x和y都可以携带LoD(详细程度)信息。但输出仅与输入x共享LoD信息。 - -参数: - - **x** (Variable) - 乘法运算的第一个输入张量Tensor/LoDTensor。 - - **y** (Variable) - 乘法运算的第二个输入张量Tensor/LoDTensor。 - - **x_num_col_dims** (int,可选) - 默认值1, 可以将具有两个以上维度的张量作为输入。如果输入x是具有多于两个维度的张量,则输入x将先展平为二维矩阵。展平规则是:前 ``num_col_dims`` 将被展平成最终矩阵的第一个维度(矩阵的高度),其余的 rank(x) - num_col_dims 维度被展平成最终矩阵的第二个维度(矩阵的宽度)。结果是展平矩阵的高度等于x的前 ``x_num_col_dims`` 维数的乘积,展平矩阵的宽度等于x的最后一个 rank(x)- ``num_col_dims`` 个剩余维度的维数的乘积。例如,假设x是一个5-D张量,形状为(2,3,4,5,6),并且 ``x_num_col_dims`` 的值为3。 则扁平化后的张量具有的形即为(2x3x4,5x6)=(24,30)。 - - **y_num_col_dims** (int,可选) - 默认值1, 可以将具有两个以上维度的张量作为输入。如果输入y是具有多于两个维度的张量,则y将首先展平为二维矩阵。 ``y_num_col_dims`` 属性确定y的展平方式。有关更多详细信息,请参阅 ``x_num_col_dims`` 的注释。 - - **out** (Variable, 可选) - 默认值None,如果out不为空,则矩阵乘法运算结果存储在out变量中。 - - **name** (str,可选) - 默认值None,输出的名称。该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_name`。当out和name同时不为空时,结果输出变量名与out保持一致。 - -返回:Variable(Tensor)乘法运算输出张量。 - -返回类型:变量(Variable)。 - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - dataX = fluid.data(name="dataX", shape=[2, 5], dtype="float32") - dataY = fluid.data(name="dataY", shape=[5, 3], dtype="float32") - - res = fluid.data(name="output", shape=[2, 3], dtype="float32") - output = paddle.mul(dataX, dataY, - x_num_col_dims = 1, - y_num_col_dims = 1, - out=res) - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/multiplex_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/multiplex_cn.rst deleted file mode 100644 index 1cc5bf39c256f14165cbf87df1a15e02cee3a070..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/multiplex_cn.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. _cn_api_fluid_layers_multiplex: - -multiplex -------------------------------- - -.. py:function:: paddle.fluid.layers.multiplex(inputs, index) - -:alias_main: paddle.multiplex -:alias: paddle.multiplex,paddle.tensor.multiplex,paddle.tensor.math.multiplex -:old_api: paddle.fluid.layers.multiplex - - - -根据给定的index参数,该OP从每个输入Tensor中选择特定行构造输出Tensor。 - -设该OP输入包含 :math:`m` 个Tensor,其中 :math:`I_{i}` 代表第i个输入Tensor,:math:`i` 处于区间 :math:`[0,m)`。 - -设该OP输出为 :math:`O` ,其中 :math:`O[i]` 为输出的第i行,则输出满足: :math:`O[i] = I_{index[i]}[i]` - -示例: - -.. code-block:: text - - # 输入为4个shape为[4,4]的Tensor - inputs = [[[0,0,3,4], [0,1,3,4], [0,2,4,4], [0,3,3,4]], - [[1,0,3,4], [1,1,7,8], [1,2,4,2], [1,3,3,4]], - [[2,0,3,4], [2,1,7,8], [2,2,4,2], [2,3,3,4]], - [[3,0,3,4], [3,1,7,8], [3,2,4,2], [3,3,3,4]]] - - # index为shape为[4,1]的Tensor - index = [[3],[0],[1],[2]] - - # 输出shape为[4,4] - out = [[3,0,3,4] // out[0] = inputs[index[0]][0] = inputs[3][0] = [3,0,3,4] - [0,1,3,4] // out[1] = inputs[index[1]][1] = inputs[0][1] = [0,1,3,4] - [1,2,4,2] // out[2] = inputs[index[2]][2] = inputs[1][2] = [1,2,4,2] - [2,3,3,4]] // out[3] = inputs[index[3]][3] = inputs[2][3] = [2,3,3,4] - -参数: - - **inputs** (list) - 为输入Tensor列表,列表元素为数据类型为float32,float64,int32,int64的多维Tensor。所有输入Tensor的shape应相同,秩必须至少为2。 - - **index** (Variable)- 用来选择输入Tensor中的某些行构建输出Tensor的索引,为数据类型为int32或int64、shape为[M, 1]的2-D Tensor,其中M为输入Tensor个数。 - -返回:进行Multiplex运算后的输出Tensor。 - -返回类型:Variable(Tensor)。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - x1 = fluid.layers.data(name='x1', shape=[4], dtype='float32') - x2 = fluid.layers.data(name='x2', shape=[4], dtype='float32') - index = fluid.layers.data(name='index', shape=[1], dtype='int32') - out = fluid.layers.multiplex(inputs=[x1, x2], index=index) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img1 = np.array([[1, 2], [3, 4]]).astype(np.float32) - img2 = np.array([[5, 6], [7, 8]]).astype(np.float32) - index = np.array([[1], [0]]).astype(np.int32) - - res = exe.run(fluid.default_main_program(), feed={'x1':img1, 'x2':img2, 'index':index}, fetch_list=[out]) - print(res) # [array([[5., 6.], [3., 4.]], dtype=float32)] - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/one_hot_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/one_hot_cn.rst deleted file mode 100644 index 2aaaf117e6fc9dc5ab26032db91bef286f14e567..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/one_hot_cn.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. _cn_api_fluid_layers_one_hot: - -one_hot -------------------------------- - -.. py:function:: paddle.fluid.layers.one_hot(input, depth, allow_out_of_range=False) - - - - -**注意:此OP要求输入Tensor shape的最后一维必须为1。此OP将在未来的版本中被移除!推荐使用fluid.** :ref:`cn_api_fluid_one_hot` 。 - -该OP将输入(input)中的每个id转换为一个one-hot向量,其长度为 ``depth`` ,该id对应的向量维度上的值为1,其余维度的值为0。 - -输出的Tensor(或LoDTensor)的shape是将输入shape的最后一维替换为depth的维度。 - -- 示例1(allow_out_of_range=False): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [3], [0]] - depth = 4 - - 输出: - Out.shape = [4, 4] - Out.data = [[0., 1., 0., 0.], - [0., 1., 0., 0.], - [0., 0., 0., 1.], - [1., 0., 0., 0.]] - -- 示例2 (allow_out_of_range=True): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [5], [0]] - depth = 4 - allow_out_of_range=True - - 输出: - Out.shape = [4, 4] - Out.data = [[0., 1., 0., 0.], - [0., 1., 0., 0.], - [0., 0., 0., 0.], ## 这一维的值是5,超过了depth,因此填成0 - [1., 0., 0., 0.]] - -- 示例3 (allow_out_of_range=False): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [5], [0]] - depth = 4 - allow_out_of_range=False - - 输出:抛出 Illegal value 的异常 - X中第2维的值是5,超过了depth,而allow_out_of_range=False表示不允许超过,因此抛异常。 - - -参数: - - **input** (Variable) - 维度为 :math:`[N_1, ..., N_n, 1]` 的多维Tensor或LoDTensor,维度至少两维,且最后一维必须是1。数据类型为int32或int64。 - - **depth** (int) - 用于定义一个one-hot向量的长度。若输入为词id,则 ``depth`` 通常取值为词典大小。 - - **allow_out_of_range** (bool) - 指明input中所包含的id值是否可以大于depth值。当超过depth时,如果 `allow_out_of_range` 为False,则会抛出 `Illegal value` 的异常;如果设置为True,该id对应的向量为0向量。默认值为False。 - -返回:转换后的one_hot Tensor或LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - # 该代码对应上述第一个示例,其中输入label的shape是[4, 1],输出one_hot_label的shape是[4, 4] - label = fluid.layers.data(name="label", shape=[4, 1], append_batch_size=False, dtype="int64") - one_hot_label = fluid.layers.one_hot(input=label, depth=4) diff --git a/doc/paddle/api/paddle/fluid/layers/nn/pad2d_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/pad2d_cn.rst deleted file mode 100644 index 08e937f50a7eb33bb21adadc2039984ff221cf31..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/pad2d_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_layers_pad2d: - -pad2d -------------------------------- - -.. py:function:: paddle.fluid.layers.pad2d(input, paddings=[0, 0, 0, 0], mode='constant', pad_value=0.0, data_format='NCHW', name=None) - -:alias_main: paddle.nn.functional.pad2d -:alias: paddle.nn.functional.pad2d,paddle.nn.functional.common.pad2d -:old_api: paddle.fluid.layers.pad2d - - - -该OP依照 paddings 和 mode 属性对input进行2维 ``pad`` 。 - -参数: - - **input** (Variable) - 类型为float32的4-D Tensor, format为 `[N, C, H, W]` 或 `[N, H, W, C]` 。 - - **paddings** (Variable | List[int32]) - 填充大小。如果paddings是一个List,它必须包含四个整数 `[padding_top, padding_bottom, padding_left, padding_right]` 。 - 如果paddings是Variable, 则是类型为int32 的1-D Tensor,shape是 `[4]` 。默认值为 `[0,0,0,0]` 。 - - **mode** (str) - padding的三种模式,分别为 `'constant'` (默认)、 `'reflect'` 、 `'edge'` 。 `'constant'` 为填充常数 `pad_value` , `'reflect'` 为填充以input边界值为轴的映射, `'edge'` 为填充input边界值。具体结果可见以下示例。默认值为 `'constant'` 。 - - **pad_value** (float32) - 以 `'constant'` 模式填充区域时填充的值。默认值为0.0。 - - **data_format** (str) - 指定input的format,可为 `'NCHW'` 和 `'NHWC'` ,默认值为 `'NCHW'` 。 - - **name** (str, 可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,缺省值为None。 -返回: 对input进行2维 ``pad`` 的结果,数据类型和input一样的4-D Tensor。 - -返回类型:Variable - -**示例**: - -.. code-block:: text - - Input = [[[[1., 2., 3.], - [4., 5., 6.]]]] - - Case 0: - paddings = [0, 1, 2, 3], - mode = 'constant' - pad_value = 0 - Out = [[[[0., 0., 1., 2., 3., 0., 0., 0.], - [0., 0., 4., 5., 6., 0., 0., 0.], - [0., 0., 0., 0., 0., 0., 0., 0.]]]] - - Case 1: - paddings = [0, 1, 2, 1], - mode = 'reflect' - Out = [[[[3., 2., 1., 2., 3., 2.], - [6., 5., 4., 5., 6., 5.], - [3., 2., 1., 2., 3., 2.]]]] - - Case 2: - paddings = [0, 1, 2, 1], - mode = 'edge' - Out = [[[[1., 1., 1., 2., 3., 3.], - [4., 4., 4., 5., 6., 6.], - [4., 4., 4., 5., 6., 6.]]]] - - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.data(name='data', shape=[None, 3, 32, 32], dtype='float32') - result = fluid.layers.pad2d(input=data, paddings=[0, 1, 2, 3], mode='reflect') diff --git a/doc/paddle/api/paddle/fluid/layers/nn/pad_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/pad_cn.rst deleted file mode 100644 index a9ed06ded042fe47826667b3d70acfe766181c21..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/pad_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_pad: - -pad -------------------------------- - -.. py:function:: paddle.fluid.layers.pad(x, paddings, pad_value=0.0, name=None) - -:alias_main: paddle.nn.functional.pad -:alias: paddle.nn.functional.pad,paddle.nn.functional.common.pad -:old_api: paddle.fluid.layers.pad - - - -该OP在Tensor上填充一个由 ``pad_value`` 给出的常数值,填充宽度由 ``paddings`` 指定。 -其中,维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 - -**示例**: - -.. code-block:: text - - Given: - x = [[1, 2], [3, 4]] - - paddings = [0, 1, 1, 2] - - pad_value = 0 - - Return: - out = [[0, 1, 2, 0, 0] - [0, 3, 4, 0, 0] - [0, 0, 0, 0, 0]] - - -参数: - - **x** (Variable) — 多维Tensor,数据类型为float32 - - **paddings** (list of integers) — 整数列表,指定每个维度填充值的个数。维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 ``paddings`` 长度必须是 ``rank(x)×2`` - - **pad_value** (float32, 可选) — 用来填充的常量值,数据类型为float。默认值为0. - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 填充后的Tensor,数据类型与输入 ``x`` 相同 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - # x 为一个秩为2的张量 - import paddle.fluid as fluid - x = fluid.data(name='data', shape=[300, 300], dtype='float32') - out = fluid.layers.pad(x=x, paddings=[0, 1, 1, 2], pad_value=0.) - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/pad_constant_like_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/pad_constant_like_cn.rst deleted file mode 100644 index 8f0bad53df1e4c53ef64baa921b1153404d98a5b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/pad_constant_like_cn.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. _cn_api_fluid_layers_pad_constant_like: - -pad_constant_like -------------------------------- - -.. py:function:: paddle.fluid.layers.pad_constant_like(x, y, pad_value=0.0, name=None) - -:alias_main: paddle.nn.functional.pad_constant_like -:alias: paddle.nn.functional.pad_constant_like,paddle.nn.functional.common.pad_constant_like -:old_api: paddle.fluid.layers.pad_constant_like - - - -该OP使用 ``pad_value`` 填充 ``y`` ,填充到每个维度值的数量由x和y的形状而指定,((0,x.shape[0] - y.shape[0]), ..., (0, x.shape[i] - y.shape[i]), ..., (0, x.shape[n] - y.shape[n]))是每个维度填充的宽度,对于维度i,填充宽度 ``(0, x.shape[i] - y.shape[i])`` ,表示在y的第i维开头不填充,而在末尾填充 ``x.shape[i] - y.shape[i]`` 个位置。该OP要求y与x具有相同的秩,并且对每个维度i, ``y.shape[i] <= x.shape[i]`` 。 - -**示例**: - -.. code-block:: text - - Given: - X = [[[[ 0, 1, 2], - [ 3, 4, 5]], - [[ 6, 7, 8], - [ 9, 10, 11]], - [[12, 13, 14], - [15, 16, 17]]], - [[[18, 19, 20], - [21, 22, 23]], - [[24, 25, 26], - [27, 28, 29]], - [[30, 31, 32], - [33, 34, 35]]]] - - X.shape = (2, 3, 2, 3) - - Y = [[[[35, 36, 37]], - [[38, 39, 40]], - [[41, 42, 43]]]] - - Y.shape = (1, 3, 1, 3) - - And - pad_value = 0. - - Return: - Out = [[[[35, 36, 37], - [ 0, 0, 0]], - [[38, 39, 40], - [ 0, 0, 0]], - [[41, 42, 43], - [ 0, 0, 0]]], - [[[ 0, 0, 0], - [ 0, 0, 0]], - [[ 0, 0, 0], - [ 0, 0, 0]], - [[ 0, 0, 0], - [ 0, 0, 0]]]] - - Out.shape = [2, 3, 2, 3] - - -参数: - - **x** (Variable)- 多维Tensor - - **y** (Variable)- 多维Tensor,与x具有相同的秩,而且对任意维度 ``i`` ,要求满足 ``y.shape[i] <= x.shape[i]`` 。数据类型为float32或float64 - - **pad_value** (float,可选) - 用于填充的常量值。默认值为0. - - **name** (str | None) - (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:经过维度填充后的Tensor,与x具有相同的shape,与y具有相同的数据类型 - -返回类型: Variable - -**示例代码** - -.. code-block:: python - - # x是秩为4的tensor, x.shape = (2, 3, 2, 3) - # y是秩为4的tensor, y.shape = (1, 3, 1, 3) - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[2,3,2,3], dtype='float32') - y = fluid.data(name='y', shape=[1,3,1,3], dtype='float32') - out = fluid.layers.pad_constant_like(x=x, y=y, pad_value=0.) - # out是秩为4的tensor, out.shape = [2, 3 ,2 , 3] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/pixel_shuffle_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/pixel_shuffle_cn.rst deleted file mode 100644 index 07b29dd8892aece514291f781a5e3918dc882834..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/pixel_shuffle_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_pixel_shuffle: - -pixel_shuffle -------------------------------- - -.. py:function:: paddle.fluid.layers.pixel_shuffle(x, upscale_factor) - -:alias_main: paddle.nn.functional.pixel_shuffle -:alias: paddle.nn.functional.pixel_shuffle,paddle.nn.functional.vision.pixel_shuffle -:old_api: paddle.fluid.layers.pixel_shuffle - - - -该OP将一个形为[N, C, H, W]的Tensor重新排列成形为 [N, C/r**2, H*r, W*r] 的Tensor。这样做有利于实现步长(stride)为1/r的高效sub-pixel(亚像素)卷积。详见Shi等人在2016年发表的论文 `Real Time Single Image and Video Super Resolution Using an Efficient Sub Pixel Convolutional Neural Network `_ 。 - -.. code-block:: text - - 给定一个形为 x.shape = [1, 9, 4, 4] 的4-D张量 - 设定:upscale_factor=3 - 那么输出张量的形为:[1, 1, 12, 12] - -参数: - - **x** (Variable)- 维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - - **upscale_factor** (int)- 增大空间分辨率的增大因子 - - -返回:根据新的维度信息进行重组的张量 - -返回类型: Variable - -抛出异常: ``ValueError`` - 如果upscale_factor的平方不能整除输入的通道维度(C)的大小。 - - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[9,4,4]) - output = fluid.layers.pixel_shuffle(x=input, upscale_factor=3) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/pool2d_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/pool2d_cn.rst deleted file mode 100644 index d1990be374c9807f6272937e7e6c6d75e3e89062..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/pool2d_cn.rst +++ /dev/null @@ -1,215 +0,0 @@ -.. _cn_api_fluid_layers_pool2d: - -pool2d -------------------------------- - -.. py:function:: paddle.fluid.layers.pool2d(input, pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, name=None, exclusive=True, data_format="NCHW") - -:alias_main: paddle.nn.functional.pool2d -:alias: paddle.nn.functional.pool2d,paddle.nn.functional.pooling.pool2d -:old_api: paddle.fluid.layers.pool2d - - - -该OP使用上述输入参数的池化配置,为二维空间池化操作,根据 ``input`` ,池化核大小 ``pool_size`` ,池化类型 ``pool_type`` ,步长 ``pool_stride`` ,填充 ``pool_padding`` 等参数得到输出。 - -输入 ``input`` 和输出(out)采用NCHW或NHWC格式,N为批大小,C是通道数,H是特征高度,W是特征宽度。 - -参数 ``pool_size`` 和 ``pool_stride`` 含有两个整型元素,分别表示高度和宽度维度上的参数。 - -输入 ``input`` 和输出(out)的形状可能不同。 - - -例如: - -输入: - ``input`` 的形状::math:`\left ( N,C,H_{in},W_{in} \right )` - -输出: - ``out`` 的形状::math:`\left ( N,C,H_{out},W_{out} \right )` - -如果 ``ceil_mode`` = false: - -.. math:: - H_{out} = \frac{(H_{in} - pool\_size[0] + pad\_height\_top + pad\_height\_bottom)}{pool\_stride[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - pool\_size[1] + pad\_width\_left + pad\_width\_right)}{pool\_stride[1]} + 1 - -如果 ``ceil_mode`` = true: - -.. math:: - H_{out} = \frac{(H_{in} - pool\_size[0] + pad\_height\_top + pad\_height\_bottom + pool\_stride[0] - 1)}{pool\_stride[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - pool\_size[1] + pad\_width\_left + pad\_width\_right + pool\_stride[1] - 1)}{pool\_stride[1]} + 1 - -如果 ``exclusive`` = false: - -.. math:: - hstart &= i * pool\_stride[0] - pad\_height\_top \\ - hend &= hstart + pool\_size[0] \\ - wstart &= j * pool\_stride[1] - pad\_width\_left \\ - wend &= wstart + pool\_size[1] \\ - Output(i ,j) &= \frac{sum(Input[hstart:hend, wstart:wend])}{pool\_size[0] * pool\_size[1]} - -如果 ``exclusive`` = true: - -.. math:: - hstart &= max(0, i * pool\_stride[0] - pad\_height\_top) \\ - hend &= min(H, hstart + pool\_size[0]) \\ - wstart &= max(0, j * pool\_stride[1] - pad\_width\_left) \\ - wend & = min(W, wstart + pool\_size[1]) \\ - Output(i ,j) & = \frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)} - -如果 ``pool_padding`` = "SAME": - -.. math:: - H_{out} = \frac{(H_{in} + pool\_stride[0] - 1)}{pool\_stride[0]} - -.. math:: - W_{out} = \frac{(W_{in} + pool\_stride[1] - 1)}{pool\_stride[1]} - -如果 ``pool_padding`` = "VALID": - -.. math:: - H_{out} = \frac{(H_{in} - pool\_size[0])}{pool\_stride[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - pool\_size[1])}{pool\_stride[1]} + 1 - -参数: - - **input** (Variable) - 形状为 :math:`[N, C, H, W]` 或 :math:`[N, H, W, C]` 的4-D Tensor,N是批尺寸,C是通道数,H是特征高度,W是特征宽度,数据类型为float32或float64。 - - **pool_size** (int|list|tuple) - 池化核的大小。如果它是一个元组或列表,那么它包含两个整数值:(pool_size_Height, pool_size_Width)。若为一个整数,则表示H和W维度上均为该值,比如若pool_size=2, 则池化核大小为[2,2]。 - - **pool_type** (str) - 池化类型,可以为"max"或"avg","max"对应max-pooling,"avg"对应average-pooling。默认值:"max"。 - - **pool_stride** (int|list|tuple) - 池化层的步长。如果它是一个元组或列表,它将包含两个整数:(pool_stride_Height, pool_stride_Width)。若为一个整数,则表示H和W维度上均为该值,比如若pool_stride=3, 则池化层步长为[3,3]。默认值:1。 - - **pool_padding** (int|list|tuple|str) - 池化填充。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``pool_padding`` = "SAME"或 ``pool_padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含2个整数值:[pad_height, pad_width];(2)包含4个整数值:[pad_height_top, pad_height_bottom, pad_width_left, pad_width_right];(3)包含4个二元组:当 ``data_format`` 为"NCHW"时为 [[0,0], [0,0], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right]],当 ``data_format`` 为"NHWC"时为[[0,0], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right], [0,0]]。若为一个整数,则表示H和W维度上均为该值。默认值:0。 - - **global_pooling** (bool)- 是否用全局池化。如果global_pooling = True, 已设置的 ``pool_size`` 和 ``pool_padding`` 会被忽略, ``pool_size`` 将被设置为 :math:`[H_{in}, W_{in}]` , ``pool_padding`` 将被设置为0。默认值:False。 - - **use_cudnn** (bool)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **ceil_mode** (bool)- 是否用ceil函数计算输出高度和宽度。计算细节可参考上述 ``ceil_mode`` = true或 ``ceil_mode`` = false 时的计算公式。默认值:False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - - **exclusive** (bool) - 是否在平均池化模式忽略填充值。计算细节可参考上述 ``exclusive`` = true或 ``exclusive`` = false 时的计算公式。默认值:True。 - - **data_format** (str) - 输入和输出的数据格式,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回: 4-D Tensor,数据类型与 ``input`` 一致。 - -返回类型:Variable。 - -抛出异常: - - ``ValueError`` - 如果 ``pool_type`` 既不是"max"也不是"avg"。 - - ``ValueError`` - 如果 ``global_pooling`` 为False并且 ``pool_size`` 为-1。 - - ``TypeError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``pool_padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``pool_padding`` 是"VALID",但是 ``ceil_mode`` 是True。 - - ``ValueError`` - 如果 ``pool_padding`` 含有4个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果 ``input`` 既不是4-D Tensor 也不是5-D Tensor。 - - ``ShapeError`` - 如果 ``input`` 的维度减去 ``pool_stride`` 的尺寸大小不是2。 - - ``ShapeError`` - 如果 ``pool_size`` 和 ``pool_stride`` 的尺寸大小不相等。 - - ``ShapeError`` - 如果计算出的输出形状的元素值不大于0。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data_NCHW = fluid.data(name='data', shape=[None, 3, 8, 8], dtype='float32') - - data_NHWC = fluid.data(name='data', shape=[None, 8, 8, 3], dtype='float32') - - # example 1: - # ceil_mode = False - out_1 = fluid.layers.pool2d( - input=data_NCHW, # shape: [2, 3, 8, 8] - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding=[2,1], # it is same as pool_padding = [2,2,1,1] - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCHW") - # shape of out_1: [2, 3, 4, 3] - - # example 2: - # ceil_mode = True (different from example 1) - out_2 = fluid.layers.pool2d( - input=data_NCHW, - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding=[[0,0], [0,0], [2,2], [1,1]], # it is same as pool_padding = [2,2,1,1] - global_pooling=False, - ceil_mode=True, - exclusive=True, - data_format="NCHW") - # shape of out_2: [2, 3, 4, 4] which is different from out_1 - - # example 3: - # pool_padding = "SAME" (different from example 1) - out_3 = fluid.layers.pool2d( - input=data_NCHW, - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding="SAME", - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCHW") - # shape of out_3: [2, 3, 3, 3] which is different from out_1 - - # example 4: - # pool_padding = "VALID" (different from example 1) - out_4 = fluid.layers.pool2d( - input=data_NCHW, - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding="VALID", - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCHW") - # shape of out_4: [2, 3, 2, 2] which is different from out_1 - - # example 5: - # global_pooling = True (different from example 1) - # It will be set pool_size = [8,8] and pool_padding = [0,0] actually. - out_5 = fluid.layers.pool2d( - input=data_NCHW, - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding=[2,1], - global_pooling=True, - ceil_mode=False, - exclusive=True, - data_format="NCHW") - # shape of out_5: [2, 3, 1, 1] which is different from out_1 - - # example 6: - # data_format = "NHWC" (different from example 1) - out_6 = fluid.layers.pool2d( - input=data_NHWC, # shape: [2, 8, 8, 3] - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding=[2,1], - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NHWC") - # shape of out_6: [2, 4, 3, 3] which is different from out_1 - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/pool3d_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/pool3d_cn.rst deleted file mode 100644 index d23d77b7247696b0b6e53b269a6d24b6f59e6b9d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/pool3d_cn.rst +++ /dev/null @@ -1,226 +0,0 @@ -.. _cn_api_fluid_layers_pool3d: - -pool3d -------------------------------- - -.. py:function:: paddle.fluid.layers.pool3d(input, pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, name=None, exclusive=True, data_format="NCDHW") - -:alias_main: paddle.nn.functional.pool3d -:alias: paddle.nn.functional.pool3d,paddle.nn.functional.pooling.pool3d -:old_api: paddle.fluid.layers.pool3d - - - -该OP使用上述输入参数的池化配置,为三维空间池化操作,根据 ``input`` ,池化核大小 ``pool_size`` ,池化类型 ``pool_type`` ,步长 ``pool_stride`` 和填充 ``pool_padding`` 等参数计算输出。 - -输入 ``input`` 和输出(Out)采用NCDHW或NDHWC格式,其中N是批大小,C是通道数,D,H和W分别是特征的深度,高度和宽度。 - -参数 ``pool_size`` 和 ``pool_stride`` 含有三个整型元素。 分别代表深度,高度和宽度维度上的参数。 - -输入 ``input`` 和输出(Out)的形状可能不同。 - - -例如: - -输入: - ``X`` 的形状: :math:`(N, C, D_{in}, H_{in}, W_{in})` - -输出: - ``out`` 的形状: :math:`(N, C, D_{out}, H_{out}, W_{out})` - -当 ``ceil_mode`` = false时, - -.. math:: - - D_{out} &= \frac{(D_{in} - pool\_size[0] + pad\_depth\_front + pad\_depth\_back)}{pool\_stride[0]} + 1\\ - H_{out} &= \frac{(H_{in} - pool\_size[1] + pad\_height\_top + pad\_height\_bottom)}{pool\_stride[1]} + 1\\ - W_{out} &= \frac{(W_{in} - pool\_size[2] + pad\_width\_left + pad\_width\_right)}{pool\_stride[2]} + 1 - -当 ``ceil_mode`` = true时, - -.. math:: - - D_{out} &= \frac{(D_{in} - pool\_size[0] + pad\_depth\_front + pad\_depth\_back + pool\_stride[0] -1)}{pool\_stride[0]} + 1\\ - H_{out} &= \frac{(H_{in} - pool\_size[1] + pad\_height\_top + pad\_height\_bottom + pool\_stride[1] -1)}{pool\_stride[1]} + 1\\ - W_{out} &= \frac{(W_{in} - pool\_size[2] + pad\_width\_left + pad\_width\_right + pool\_stride[2] -1)}{pool\_stride[2]} + 1 - -当 ``exclusive`` = false时, - -.. math:: - dstart &= i * pool\_stride[0] - pad\_depth\_front \\ - dend &= dstart + pool\_size[0] \\ - hstart &= j * pool\_stride[1] - pad\_height\_top \\ - hend &= hstart + pool\_size[1] \\ - wstart &= k * pool\_stride[2] - pad\_width\_left \\ - wend &= wstart + pool\_size[2] \\ - Output(i ,j, k) &= \frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{pool\_size[0] * pool\_size[1] * pool\_size[2]} - -如果 ``exclusive`` = true: - -.. math:: - dstart &= max(0, i * pool\_stride[0] - pad\_depth\_front) \\ - dend &= min(D, dstart + pool\_size[0]) \\ - hstart &= max(0, j * pool\_stride[1] - pad\_height\_top) \\ - hend &= min(H, hstart + pool\_size[1]) \\ - wstart &= max(0, k * pool\_stride[2] - pad\_width\_left) \\ - wend & = min(W, wstart + pool\_size[2]) \\ - Output(i ,j, k) & = \frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{(dend - dstart) * (hend - hstart) * (wend - wstart)} - -如果 ``pool_padding`` = "SAME": - -.. math:: - D_{out} = \frac{(D_{in} + pool\_stride[0] - 1)}{pool\_stride[0]} - -.. math:: - H_{out} = \frac{(H_{in} + pool\_stride[1] - 1)}{pool\_stride[1]} - -.. math:: - W_{out} = \frac{(W_{in} + pool\_stride[2] - 1)}{pool\_stride[2]} - -如果 ``pool_padding`` = "VALID": - -.. math:: - D_{out} = \frac{(D_{in} - pool\_size[0])}{pool\_stride[0]} + 1 - -.. math:: - H_{out} = \frac{(H_{in} - pool\_size[1])}{pool\_stride[1]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - pool\_size[2])}{pool\_stride[2]} + 1 - - -参数: - - **input** (Vairable) - 形状为 :math:`[N, C, D, H, W]` 或 :math:`[N, D, H, W, C]` 的5-D Tensor,N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度,数据类型为float32或float64。 - - **pool_size** (int|list|tuple) - 池化核的大小。如果它是一个元组或列表,那么它包含三个整数值,(pool_size_Depth, pool_size_Height, pool_size_Width)。若为一个整数,则表示D,H和W维度上均为该值,比如若pool_size=2, 则池化核大小为[2,2,2]。 - - **pool_type** (str) - 池化类型,可以为"max"或"avg","max" 对应max-pooling, "avg" 对应average-pooling。默认值:"max"。 - - **pool_stride** (int|list|tuple) - 池化层的步长。如果它是一个元组或列表,那么它包含三个整数值,(pool_stride_Depth, pool_stride_Height, pool_stride_Width)。若为一个整数,则表示D,H和W维度上均为该值,比如若pool_stride=3, 则池化层步长为[3,3,3]。默认值:1。 - - **pool_padding** (int|list|tuple|str) - 池化填充。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``pool_padding`` = "SAME"或 ``pool_padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含3个整数值:[pad_depth, pad_height, pad_width];(2)包含6个整数值:[pad_depth_front, pad_depth_back, pad_height_top, pad_height_bottom, pad_width_left, pad_width_right];(3)包含5个二元组:当 ``data_format`` 为"NCDHW"时为[[0,0], [0,0], [pad_depth_front, pad_depth_back], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right]],当 ``data_format`` 为"NDHWC"时为[[0,0], [pad_depth_front, pad_depth_back], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right], [0,0]]。若为一个整数,则表示D、H和W维度上均为该值。默认值:0。 - - **global_pooling** (bool)- 是否用全局池化。如果global_pooling = True,已设置的 ``pool_size`` 和 ``pool_padding`` 会被忽略, ``pool_size`` 将被设置为 :math:`[D_{in}, H_{in}, W_{in}]` , ``pool_padding`` 将被设置为0。默认值:False。 - - **use_cudnn** (bool)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **ceil_mode** (bool)- 是否用ceil函数计算输出的深度、高度和宽度。计算细节可参考上述 ``ceil_mode`` = true或 ``ceil_mode`` = false 时的计算公式。默认值:False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - - **exclusive** (bool) - 是否在平均池化模式忽略填充值。计算细节可参考上述 ``exclusive`` = true或 ``exclusive`` = false 时的计算公式。默认值:True。 - - **data_format** (str) - 输入和输出的数据格式,可以是"NCDHW"和"NDHWC"。N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度。默认值:"NDCHW"。 - -返回: 5-D Tensor,数据类型与 ``input`` 一致。 - -返回类型:Variable。 - -抛出异常: - - ``ValueError`` - 如果 ``pool_type`` 既不是"max"也不是"avg"。 - - ``ValueError`` - 如果 ``global_pooling`` 为False并且 ``pool_size`` 为-1。 - - ``TypeError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``pool_padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``pool_padding`` 是"VALID",但是 ``ceil_mode`` 是True。 - - ``ValueError`` - 如果 ``pool_padding`` 含有5个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果 ``input`` 既不是4-D Tensor 也不是5-D Tensor。 - - ``ShapeError`` - 如果 ``input`` 的维度减去 ``pool_stride`` 的尺寸大小不是2。 - - ``ShapeError`` - 如果 ``pool_size`` 和 ``pool_stride`` 的尺寸大小不相等。 - - ``ShapeError`` - 如果计算出的输出形状的元素值不大于0。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data_NCDHW = fluid.data(name='data', shape=[None, 3, 8, 8, 8], dtype='float32') - - data_NDHWC = fluid.data(name='data', shape=[None, 8, 8, 8, 3], dtype='float32') - - # example 1: - # ceil_mode = False - out_1 = fluid.layers.pool3d( - input=data_NCDHW, # shape: [2, 3, 8, 8, 8] - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding=[2,2,1], # it is same as pool_padding = [2,2,2,2,1,1] - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCDHW") - # shape of out_1: [2, 3, 4, 4, 3] - - # example 2: - # ceil_mode = True (different from example 1) - out_2 = fluid.layers.pool3d( - input=data_NCDHW, - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding=[[0,0], [0,0], [2,2], [2,2], [1,1]], # it is same as pool_padding = [2,2,2,2,1,1] - global_pooling=False, - ceil_mode=True, - exclusive=True, - data_format="NCDHW") - # shape of out_2: [2, 3, 4, 4, 4] which is different from out_1 - - # example 3: - # pool_padding = "SAME" (different from example 1) - out_3 = fluid.layers.pool3d( - input=data_NCDHW, - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding="SAME", - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCDHW") - # shape of out_3: [2, 3, 3, 3, 3] which is different from out_1 - - # example 4: - # pool_padding = "VALID" (different from example 1) - out_4 = fluid.layers.pool3d( - input=data_NCDHW, - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding="VALID", - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCDHW") - # shape of out_4: [2, 3, 2, 2, 2] which is different from out_1 - - # example 5: - # global_pooling = True (different from example 1) - # It will be set pool_size = [8,8,8] and pool_padding = [0,0,0] actually. - out_5 = fluid.layers.pool3d( - input=data_NCDHW, - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding=[2,2,1], - global_pooling=True, - ceil_mode=False, - exclusive=True, - data_format="NCDHW") - # shape of out_5: [2, 3, 1, 1, 1] which is different from out_1 - - # example 6: - # data_format = "NDHWC" (different from example 1) - out_6 = fluid.layers.pool3d( - input=data_NHWC, # shape: [2, 8, 8, 8, 3] - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding=[2,2,1], - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NDHWC") - # shape of out_6: [2, 4, 4, 3, 3] which is different from out_1 - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/pow_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/pow_cn.rst deleted file mode 100644 index 01987cc7993054a6afbef41c49a7d8b82d49fd56..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/pow_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_tensor_argmax: - -pow -------------------------------- - -.. py:function:: paddle.pow(input, exponent, out=None, name=None): - -:alias_main: paddle.pow -:alias: paddle.pow,paddle.tensor.pow,paddle.tensor.math.pow -:update_api: paddle.fluid.layers.pow - - - -该OP是指数激活算子: - -.. math:: - out = x^{exponent} - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` ,数据类型为 ``float32`` 或 ``float64`` 。 - - **exponent** (float32|Variable,可选)- ``float32`` 或形状为[1]的 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``。Pow OP的指数因子。默认值:1.0。 - - **out** (Variable, 可选) - 默认值None,如果out不为空,则该运算结果存储在out变量中。 - - **name** (str,可选) - 默认值None,输出的名称。该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_name`。当out和name同时不为空时,结果输出变量名与out保持一致。 - -返回:维度与输入 `x` 相同的 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``x`` 相同。 - -返回类型:Variable。 - - -**代码示例:** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - x = fluid.data(name="x", shape=[32,32], dtype="float32") - - # 示例1: 参数exponent是个浮点数 - res = fluid.data(name="output", shape=[32,32], dtype="float32") - y_1 = paddle.pow(x, 2.0, out=res) - # y_1 is x^{2.0} - - # 示例2: 参数exponent是个变量 - exponent_tensor = fluid.layers.fill_constant([1], "float32", 3.0) - res = fluid.data(name="output", shape=[32,32], dtype="float32") - y_2 = paddle.pow(x, exponent_tensor, out=res) - # y_2 is x^{3.0} \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/layers/nn/prelu_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/prelu_cn.rst deleted file mode 100644 index b1ea4cfb569fac4c885b8292ba07f022886e0934..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/prelu_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_prelu: - -prelu -------------------------------- - - -.. py:function:: paddle.fluid.layers.prelu(x, mode, param_attr=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -等式: - -.. math:: - y = max(0, x) + \alpha min(0, x) - -共提供三种激活方式: - -.. code-block:: text - - all: 所有元素使用同一个alpha值 - channel: 在同一个通道中的元素使用同一个alpha值 - element: 每一个元素有一个独立的alpha值 - - -参数: - - **x** (Variable)- 多维Tensor或LoDTensor,数据类型为float32。 - - **mode** (str) - 权重共享模式。 - - **param_attr** (ParamAttr,可选) - 可学习权重 :math:`[\alpha]` 的参数属性,可由ParamAttr创建。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: 表示激活输出Tensor或LoDTensor,数据类型为float32。与输入形状相同。 - - -返回类型:Variable - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.param_attr import ParamAttr - x = fluid.data(name="x", shape=[None,5,10,10], dtype="float32") - mode = 'channel' - output = fluid.layers.prelu( - x,mode,param_attr=ParamAttr(name='alpha')) - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/prroi_pool_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/prroi_pool_cn.rst deleted file mode 100644 index 43221ea069434bd83fd066e6f1091ca9332f2e7f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/prroi_pool_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_fluid_layers_prroi_pool: - -prroi_pool -------------------------------- - -.. py:function:: paddle.fluid.layers.prroi_pool(input, rois, output_channels, spatial_scale, pooled_height, pooled_width, name=None) - -:alias_main: paddle.nn.functional.prroi_pool -:alias: paddle.nn.functional.prroi_pool,paddle.nn.functional.vision.prroi_pool -:old_api: paddle.fluid.layers.prroi_pool - - - -PRROIPool运算 - -精确区域池化方法(Precise region of interest pooling,也称为PRROIPooling)是对输入的 "感兴趣区域"(RoI)执行插值处理,将离散的特征图数据映射到一个连续空间,使用二重积分再求均值的方式实现Pooling。 - -通过积分方式计算ROI特征,反向传播时基于连续输入值计算梯度,使得反向传播连续可导的PRROIPooling。 有关更多详细信息,请参阅 https://arxiv.org/abs/1807.11590。 - -参数: - - **input** (Variable) - (Tensor),PRROIPoolOp的输入。 输入张量的格式是NCHW。 其中N是批大小batch_size,C是输入通道的数量,H是输入特征图的高度,W是特征图宽度 - - **rois** (Variable) - 要进行池化的RoI(感兴趣区域)。应为一个形状为(num_rois, 4)的二维LoDTensor,其lod level为1。给出[[x1, y1, x2, y2], ...],(x1, y1)为左上角坐标,(x2, y2)为右下角坐标。 - - **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),PRROIPoolOp的输出是形为 (num_rois,output_channels,pooled_h,pooled_w) 的4-D Tensor。 - -返回类型: 变量(Variable) - -**代码示例:** - -.. code-block:: python - - ## prroi_pool without batch_roi_num - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[None, 490, 28, 28], dtype='float32') - rois = fluid.data(name='rois', shape=[None, 4], lod_level=1, dtype='float32') - pool_out = fluid.layers.prroi_pool(x, rois, 1.0, 7, 7) - - ## prroi_pool with batch_roi_num - batchsize=4 - x2 = fluid.data(name='x2', shape=[batchsize, 490, 28, 28], dtype='float32') - rois2 = fluid.data(name='rois2', shape=[batchsize, 4], dtype='float32') - batch_rois_num = fluid.data(name='rois_nums', shape=[batchsize], dtype='int64') - pool_out2 = fluid.layers.prroi_pool(x2, rois2, 1.0, 7, 7, batch_roi_nums=batch_rois_num) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/psroi_pool_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/psroi_pool_cn.rst deleted file mode 100644 index 92a246f63c4c04e4955322e73359398f03dd17c6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/psroi_pool_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.psroi_pool -:alias: paddle.nn.functional.psroi_pool,paddle.nn.functional.vision.psroi_pool -:old_api: paddle.fluid.layers.psroi_pool - - - -**注意 rois必须为2维LoDTensor,lod_level为1** - -该OP执行PSROIPooling运算,是位置敏感的感兴趣区域池化方法(Position sensitive region of interest pooling,也称为PSROIPooling)。输入input是位置敏感的评分图,输入rois是感兴趣区域的位置坐标。PSROIPooling不同于普通ROIPooling的地方在于,输入input特征图的不同通道会跟输出特征图上的位置区域相关联,该方法是在R-FCN模型中首次提出来的,更多详细信息请参阅 https://arxiv.org/abs/1605.06409。 - - -**样例**: - -:: - - Given: - input.shape = [2, 490, 28, 28] - rois.shape = [5, 4], rois.lod = [[3, 2]] - output_channels = 10 - pooled_height = 7 - pooled_width = 7 - - Return: - out.shape = [5, 10, 7, 7], out.lod = [[3, 2]] - - -参数: - - **input** (Variable) - 输入特征图,4-D Tensor,格式是NCHW。 其中N是batch_size,C是输入通道的数量,H是输入特征图的高度,W是特征图宽度。数据类型是float32或者float64 - - **rois** (Variable) - 感兴趣区域,2-D LoDTensor,形状为(num_rois, 4),lod_level为1。形式如[x1, y1, x2, y2], ...],其中(x1, y1)为左上角坐标,(x2, y2)为右下角坐标。数据类型与input相同 - - **output_channels** (int) - 输出特征图的通道数。对于共C个种类的图像分类任务,output_channels应该是 ``(C + 1)`` ,其中1代表背景 - - **spatial_scale** (float) - 空间跨度因子,用于将 ``rois`` 中的坐标从其输入尺寸按比例映射到 ``input`` 特征图的尺寸 - - **pooled_height** (int) - 池化输出的高度 - - **pooled_width** (int) - 池化输出的宽度 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 经过PSROIPooling之后的结果,形状为(num_rois,output_channels,pooled_height,pooled_width) 的4维LoDTensor,lod_level为1,数据类型与input相同,与rois具有相同的lod信息。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[490, 28, 28], dtype='float32') - rois = fluid.layers.data(name='rois', shape=[4], lod_level=1, dtype='float32') - pool_out = fluid.layers.psroi_pool(x, rois, 10, 1.0, 7, 7) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/random_crop_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/random_crop_cn.rst deleted file mode 100644 index e9a229030384d8a9dd28ca0308654510f2326008..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/random_crop_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_random_crop: - -random_crop -------------------------------- - -.. py:function:: paddle.fluid.layers.random_crop(x, shape, seed=None) - -:alias_main: paddle.nn.functional.random_crop -:alias: paddle.nn.functional.random_crop,paddle.nn.functional.extension.random_crop -:old_api: paddle.fluid.layers.random_crop - - - -该操作对batch中每个实例进行随机裁剪,即每个实例的裁剪位置不同,裁剪位置由均匀分布随机数生成器决定。所有裁剪后的实例都具有相同的维度,由 ``shape`` 参数决定。 - -参数: - - **x(Variable)** - 多维Tensor。 - - **shape(list(int))** - 裁剪后最后几维的形状,注意, ``shape`` 的个数小于 ``x`` 的秩。 - - **seed(int|Variable,可选)** - 设置随机数种子,默认情况下,种子是[-65536,-65536)中一个随机数,如果类型是Variable,要求数据类型是int64,默认值:None。 - -返回: 裁剪后的Tensor。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - img = fluid.data("img", [None, 3, 256, 256]) - # cropped_img的shape: [-1, 3, 224, 224] - cropped_img = fluid.layers.random_crop(img, shape=[3, 224, 224]) - - # cropped_img2的shape: [-1, 2, 224, 224] - # cropped_img2 = fluid.layers.random_crop(img, shape=[2,224, 224]) - - # cropped_img3的shape: [-1, 3, 128, 224] - # cropped_img3 = fluid.layers.random_crop(img, shape=[128, 224]) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/rank_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/rank_cn.rst deleted file mode 100644 index 0d3aee591f86e84bc4a73fe40e2c31f434b558fa..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/rank_cn.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. _cn_api_fluid_layers_rank: - -rank -------------------------------- - -.. py:function:: paddle.fluid.layers.rank(input) - -:alias_main: paddle.rank -:alias: paddle.rank,paddle.tensor.rank,paddle.tensor.attribute.rank -:old_api: paddle.fluid.layers.rank - - - -该OP用于计算输入Tensor的维度(秩)。 - -参数: - - **input** (Variable) — 输入input是shape为 :math:`[N_1, N_2, ..., N_k]` 的多维Tensor,数据类型可以任意类型。 - -返回:输出Tensor的秩,是一个0-D Tensor。 - -返回类型:Variable,数据类型为int32。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.data( - name="input", shape=[3, 100, 100], dtype="float32") - rank = fluid.layers.rank(input) # rank=(4,) - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/reduce_all_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/reduce_all_cn.rst deleted file mode 100644 index 88a1ba9e3f9081ec3772e88481a15864c41ee86e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/reduce_all_cn.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. _cn_api_fluid_layers_reduce_all: - -reduce_all -------------------------------- - -.. py:function:: paddle.fluid.layers.reduce_all(input, dim=None, keep_dim=False, name=None) - -:alias_main: paddle.reduce_all -:alias: paddle.reduce_all,paddle.tensor.reduce_all,paddle.tensor.logic.reduce_all -:old_api: paddle.fluid.layers.reduce_all - - - -该OP是对指定维度上的Tensor元素进行与逻辑(&)计算,并输出相应的计算结果。 - -参数: - - **input** (Variable)— 输入变量为多维Tensor或LoDTensor,数据类型需要为bool类型。 - - **dim** (list | int,可选)— 与逻辑运算的维度。如果为None,则计算所有元素的与逻辑并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input))` 范围内。如果 :math:`dim [i] <0` ,则维度将减小为 :math:`rank+dim[i]` 。默认值为None。 - - **keep_dim** (bool)— 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str, 可选)— 这一层的名称。如果设置为None,则将自动命名这一层。默认值为None。 - -返回:在指定dim上进行与逻辑计算的Tensor,数据类型为bool类型。 - -返回类型:Variable,数据类型为bool类型。 - -**代码示例** - -.. code-block:: python - - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - - # x是一个布尔型Tensor,元素如下: - # [[True, False] - # [True, True]] - x = layers.assign(np.array([[1, 0], [1, 1]], dtype='int32')) - x = layers.cast(x, 'bool') - - out = layers.reduce_all(x) # False - out = layers.reduce_all(x, dim=0) # [True, False] - out = layers.reduce_all(x, dim=-1) # [False, True] - # keep_dim=False, x.shape=(2,2), out.shape=(2,) - - out = layers.reduce_all(x, dim=1, keep_dim=True) # [[False], [True]] - # keep_dim=True, x.shape=(2,2), out.shape=(2,1) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/reduce_any_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/reduce_any_cn.rst deleted file mode 100644 index 13a23b8139886d391641a6a9068879d51b2fd1ee..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/reduce_any_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_reduce_any: - -reduce_any -------------------------------- - -.. py:function:: paddle.fluid.layers.reduce_any(input, dim=None, keep_dim=False, name=None) - -:alias_main: paddle.reduce_any -:alias: paddle.reduce_any,paddle.tensor.reduce_any,paddle.tensor.logic.reduce_any -:old_api: paddle.fluid.layers.reduce_any - - - -该OP是对指定维度上的Tensor元素进行或逻辑(|)计算,并输出相应的计算结果。 - -参数: - - **input** (Variable)— 输入变量为多维Tensor或LoDTensor,数据类型需要为bool类型。 - - **dim** (list | int,可选)— 与逻辑运算的维度。如果为None,则计算所有元素的与逻辑并返回包含单个元素的Tensoe变量,否则必须在 :math:`[−rank(input),rank(input))` 范围内。如果 :math:`dim [i] <0` ,则维度将减小为 :math:`rank+dim[i]` 。默认值为None。 - - **keep_dim** (bool)— 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str,可选)— 这一层的名称(可选)。如果设置为None,则将自动命名这一层。默认值为None。 - -返回:在指定dim上进行或逻辑计算的Tensor,数据类型为bool类型。 - -返回类型:Variable,数据类型为bool类型。 - -**代码示例** - -.. code-block:: python - - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - - # x是一个布尔型Tensor,元素如下: - # [[True, False] - # [False, False]] - x = layers.assign(np.array([[1, 0], [0, 0]], dtype='int32')) - x = layers.cast(x, 'bool') - - out = layers.reduce_any(x) # True - out = layers.reduce_any(x, dim=0) # [True, False] - out = layers.reduce_any(x, dim=-1) # [True, False] - # keep_dim=False, x.shape=(2,2), out.shape=(2,) - - out = layers.reduce_any(x, dim=1, - keep_dim=True) # [[True], [False]] - # keep_dim=True, x.shape=(2,2), out.shape=(2,1) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/reduce_max_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/reduce_max_cn.rst deleted file mode 100644 index 37cc3db57a4d12ac01e43fce0e3b9cea8e609b17..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/reduce_max_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_reduce_max: - -reduce_max -------------------------------- - -.. py:function:: paddle.fluid.layers.reduce_max(input, dim=None, keep_dim=False, name=None) - -:alias_main: paddle.reduce_max -:alias: paddle.reduce_max,paddle.tensor.reduce_max,paddle.tensor.math.reduce_max -:old_api: paddle.fluid.layers.reduce_max - - - -该OP是对指定维度上的Tensor元素求最大值运算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)- 求最大值运算的维度。如果为None,则计算所有元素的最大值并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行求最大值运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - fluid.layers.reduce_max(x) # [0.9] - fluid.layers.reduce_max(x, dim=0) # [0.2, 0.3, 0.6, 0.9] - fluid.layers.reduce_max(x, dim=-1) # [0.9, 0.7] - fluid.layers.reduce_max(x, dim=1, keep_dim=True) # [[0.9], [0.7]] - - # y是一个shape为[2, 2, 2]的Tensor,元素如下: - # [[[1.0, 2.0], [3.0, 4.0]], - # [[5.0, 6.0], [7.0, 8.0]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - fluid.layers.reduce_max(y, dim=[1, 2]) # [4.0, 8.0] - fluid.layers.reduce_max(y, dim=[0, 1]) # [7.0, 8.0] - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/reduce_mean_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/reduce_mean_cn.rst deleted file mode 100644 index c94fed0a80b6a766a57f10ad6c5357428b0c0bd4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/reduce_mean_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_reduce_mean: - -reduce_mean -------------------------------- - -.. py:function:: paddle.fluid.layers.reduce_mean(input, dim=None, keep_dim=False, name=None) - -:alias_main: paddle.reduce_mean -:alias: paddle.reduce_mean,paddle.tensor.reduce_mean,paddle.tensor.stat.reduce_mean -:old_api: paddle.fluid.layers.reduce_mean - - - -该OP是对指定维度上的Tensor元素进行平均值算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)— 求平均值运算的维度。如果为None,则计算所有元素的平均值并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)— 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行平均值运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - fluid.layers.reduce_mean(x) # [0.4375] - fluid.layers.reduce_mean(x, dim=0) # [0.15, 0.25, 0.55, 0.8] - fluid.layers.reduce_mean(x, dim=-1) # [0.475, 0.4] - fluid.layers.reduce_mean(x, dim=1, keep_dim=True) # [[0.475], [0.4]] - - # y是一个shape为[2, 2, 2]的Tensor元素如下: - # [[[1.0, 2.0], [3.0, 4.0]], - # [[5.0, 6.0], [7.0, 8.0]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - fluid.layers.reduce_mean(y, dim=[1, 2]) # [2.5, 6.5] - fluid.layers.reduce_mean(y, dim=[0, 1]) # [4.0, 5.0] - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/reduce_min_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/reduce_min_cn.rst deleted file mode 100644 index 2517c935e483cff4a2c7686556e6583126e29bb4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/reduce_min_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_reduce_min: - -reduce_min -------------------------------- - -.. py:function:: paddle.fluid.layers.reduce_min(input, dim=None, keep_dim=False, name=None) - -:alias_main: paddle.reduce_min -:alias: paddle.reduce_min,paddle.tensor.reduce_min,paddle.tensor.math.reduce_min -:old_api: paddle.fluid.layers.reduce_min - - - -该OP是对指定维度上的Tensor元素求最小值运算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)- 求最小值运算的维度。如果为None,则计算所有元素的最小值并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行求最小值运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - fluid.layers.reduce_min(x) # [0.1] - fluid.layers.reduce_min(x, dim=0) # [0.1, 0.2, 0.5, 0.7] - fluid.layers.reduce_min(x, dim=-1) # [0.2, 0.1] - fluid.layers.reduce_min(x, dim=1, keep_dim=True) # [[0.2], [0.1]] - - # y是一个shape为[2, 2, 2]的Tensor元素如下: - # [[[1.0, 2.0], [3.0, 4.0]], - # [[5.0, 6.0], [7.0, 8.0]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - fluid.layers.reduce_min(y, dim=[1, 2]) # [1.0, 5.0] - fluid.layers.reduce_min(y, dim=[0, 1]) # [1.0, 2.0] - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/reduce_prod_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/reduce_prod_cn.rst deleted file mode 100644 index a1b65ee1ddb2fe5e59e63df68d7a674a684d6e65..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/reduce_prod_cn.rst +++ /dev/null @@ -1,58 +0,0 @@ -.. _cn_api_fluid_layers_reduce_prod: - -reduce_prod -------------------------------- - -.. py:function:: paddle.fluid.layers.reduce_prod(input, dim=None, keep_dim=False, name=None) - -:alias_main: paddle.reduce_prod -:alias: paddle.reduce_prod,paddle.tensor.reduce_prod,paddle.tensor.math.reduce_prod -:old_api: paddle.fluid.layers.reduce_prod - - - -该OP是对指定维度上的Tensor元素进行求乘积运算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)- 求乘积运算的维度。如果为None,则计算所有元素的乘积并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行求乘积运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - fluid.layers.reduce_prod(x) # [0.0002268] - fluid.layers.reduce_prod(x, dim=0) # [0.02, 0.06, 0.3, 0.63] - fluid.layers.reduce_prod(x, dim=-1) # [0.027, 0.0084] - fluid.layers.reduce_prod(x, dim=1, - keep_dim=True) # [[0.027], [0.0084]] - - # y 是一个shape为[2, 2, 2]的Tensor元素如下: - # [[[1.0, 2.0], [3.0, 4.0]], - # [[5.0, 6.0], [7.0, 8.0]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - fluid.layers.reduce_prod(y, dim=[1, 2]) # [24.0, 1680.0] - fluid.layers.reduce_prod(y, dim=[0, 1]) # [105.0, 384.0] - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/reduce_sum_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/reduce_sum_cn.rst deleted file mode 100644 index da06baf68be2370b27a1162e24882a615b878589..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/reduce_sum_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_reduce_sum: - -reduce_sum -------------------------------- - -.. py:function:: paddle.fluid.layers.reduce_sum(input, dim=None, keep_dim=False, name=None) - -:alias_main: paddle.reduce_sum -:alias: paddle.reduce_sum,paddle.tensor.reduce_sum,paddle.tensor.math.reduce_sum -:old_api: paddle.fluid.layers.reduce_sum - - - -该OP是对指定维度上的Tensor元素进行求和运算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)- 求和运算的维度。如果为None,则计算所有元素的和并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行求和运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - fluid.layers.reduce_sum(x) # [3.5] - fluid.layers.reduce_sum(x, dim=0) # [0.3, 0.5, 1.1, 1.6] - fluid.layers.reduce_sum(x, dim=-1) # [1.9, 1.6] - fluid.layers.reduce_sum(x, dim=1, keep_dim=True) # [[1.9], [1.6]] - - # y 是一个shape为[2, 2, 2]的Tensor元素如下: - # [[[1, 2], [3, 4]], - # [[5, 6], [7, 8]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - fluid.layers.reduce_sum(y, dim=[1, 2]) # [10, 26] - fluid.layers.reduce_sum(y, dim=[0, 1]) # [16, 20] - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/relu6_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/relu6_cn.rst deleted file mode 100644 index 05c83c7e5e48c6fda17a075dd8bbd13f00c62c02..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/relu6_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_layers_relu6: - -relu6 -------------------------------- - -.. py:function:: paddle.fluid.layers.relu6(x, threshold=6.0, name=None) - -:alias_main: paddle.nn.functional.relu6 -:alias: paddle.nn.functional.relu6,paddle.nn.functional.activation.relu6 -:old_api: paddle.fluid.layers.relu6 - - - -relu6激活函数 - -.. math:: out=min(max(0, x), threshold) - - -参数: - - **x** (Variable) - 输入的多维 ``Tensor`` ,数据类型为:float32、float64。 - - **threshold** (float) - relu6的阈值。默认值为6.0 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 与 ``x`` 维度相同、数据类型相同的 ``Tensor``。 - -返回类型: Variable - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[-1,0],[2.5,7.8]]) - with fluid.dygraph.guard(): - x1 = fluid.dygraph.to_variable(in1) - out1 = fluid.layers.relu6(x=x1, threshold=6.0) - print(out1.numpy()) - # [[0. 0. ] - # [2.5 6. ]] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/relu_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/relu_cn.rst deleted file mode 100644 index 6df2e05bea36cf96f6990269d6bb77952f15549e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/relu_cn.rst +++ /dev/null @@ -1,37 +0,0 @@ -.. _cn_api_fluid_layers_relu: - -relu -------------------------------- - -.. py:function:: paddle.fluid.layers.relu(x, name=None) - - - - -ReLU(Rectified Linear Unit)激活函数 - -.. math:: Out=max(0,x) - - -参数: - - **x** (Variable) - 输入的多维 ``Tensor`` ,数据类型为:float32、float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 与 ``x`` 维度相同、数据类型相同的 ``Tensor`` 。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[-1,0],[1,2.6]]) - with fluid.dygraph.guard(): - x1 = fluid.dygraph.to_variable(in1) - out1 = fluid.layers.relu(x1) - print(out1.numpy()) - # [[0. 0. ] - # [1. 2.6]] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/reshape_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/reshape_cn.rst deleted file mode 100644 index a5e39dff07f19832e9468f7deea5cc43b366a33d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/reshape_cn.rst +++ /dev/null @@ -1,88 +0,0 @@ -.. _cn_api_fluid_layers_reshape: - -reshape -------------------------------- - -.. py:function:: paddle.fluid.layers.reshape(x, shape, actual_shape=None, act=None, inplace=False, name=None) - -:alias_main: paddle.reshape -:alias: paddle.reshape,paddle.tensor.reshape,paddle.tensor.manipulation.reshape -:old_api: paddle.fluid.layers.reshape - - - -该OP在保持输入 ``x`` 数据不变的情况下,改变 ``x`` 的形状。 - -目标形状可由 ``shape`` 或 ``actual_shape`` 给出。当两个属性同时被指定时,``actual_shape`` 的优先级高于 ``shape`` ,但此时 ``shape`` 只能是整数列表或元组,且在编译时仍然应该正确地设置 ``shape`` 以保证形状推断。 - -在指定目标shape时存在一些技巧: - -.. code-block:: text - - 1. -1 表示这个维度的值是从x的元素总数和剩余维度推断出来的。因此,有且只有一个维度可以被设置为-1。 - 2. 0 表示实际的维数是从x的对应维数中复制出来的,因此shape中0的索引值不能超过x的维度。 - - -这里有一些例子来解释它们: - -.. code-block:: text - - 1. 给定一个形状为[2,4,6]的三维张量x,目标形状为[6,8],则将x变换为形状为[6,8]的2-D张量,且x的数据保持不变。 - 2. 给定一个形状为[2,4,6]的三维张量x,目标形状为[2,3,-1,2],则将x变换为形状为[2,3,4,2]的4-D张量,且x的数据保持不变。在这种情况下,目标形状的一个维度被设置为-1,这个维度的值是从x的元素总数和剩余维度推断出来的。 - 3. 给定一个形状为[2,4,6]的三维张量x,目标形状为[-1,0,3,2],则将x变换为形状为[2,4,3,2]的4-D张量,且x的数据保持不变。在这种情况下,0对应位置的维度值将从x的对应维数中复制,-1对应位置的维度值由x的元素总数和剩余维度推断出来。 - -**注意:参数** ``actual_shape`` **之后将被舍弃,只用参数** ``shape`` **来表示目标形状。** - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32``,或 ``int64``。 - - **shape** (list|tuple|Variable)- 数据类型是 ``int32`` 。定义目标形状。目标形状最多只能有一个维度为-1。如果 ``shape`` 的类型是 list 或 tuple, 它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``shape`` 的类型是 ``Variable``,则是1-D的 ``Tensor`` 或 ``LoDTensor``。 - - **actual_shape** (Variable,可选)- 1-D ``Tensor`` 或 ``LoDTensor``,默认值:`None`。如果 ``actual_shape`` 被提供,``actual_shape`` 具有比 ``shape`` 更高的优先级,此时 ``shape`` 只能是整数列表或元组。更新提示:``actual_shape`` 在未来的版本中将被舍弃,并用 ``shape`` 代替。 - - **act** (str,可选)- 对形状改变后的输入变量做非线性激活操作,激活函数类型可以参考 :ref:`api_guide_activations` 。默认值: ``None``。 - - **inplace** (bool,可选)- 如果 ``inplace`` 为 ``True``,则 ``layers.reshape`` 的输入和输出是同一个变量,否则 ``layers.reshape`` 的输入和输出是不同的变量。默认值:``False``。请注意,如果 ``x`` 是多个OP的输入,则 ``inplace`` 必须为False。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:多维 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``input`` 相同。如果 ``inplace`` 为 ``False``,则返回一个新的变量,否则将改变输入变量 ``x`` 自身。如果 ``act`` 为 ``None``,则直接返回形状改变后的变量,否则返回经过激活函数后的变量。 - -返回类型:Variable。 - -抛出异常: - - :code:`TypeError`:``actual_shape`` 的类型应该是 Variable 或 None。 - - :code:`TypeError`:``starts`` 的类型应该是list、tuple 或 Variable。 - - :code:`ValueError`:``shape`` 中至多有一个元素可以是-1。 - - :code:`ValueError`:``shape`` 中的元素为0时,对应的维度应该小于等于``x``的维度。 - - :code:`ValueError`:``shape`` 中的元素除了-1之外,都应该是非负值。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # example 1: - # attr shape is a list which doesn't contain tensor Variable. - data_1 = fluid.data( - name='data_1', shape=[2, 4, 6], dtype='float32') - reshaped_1 = fluid.layers.reshape( - x=data_1, shape=[-1, 0, 3, 2], inplace=True) - # the shape of reshaped_1 is [2,4,3,2]. - - # example 2: - # attr shape is a list which contains tensor Variable. - data_2 = fluid.layers.fill_constant([2,25], "int32", 3) - dim = fluid.layers.fill_constant([1], "int32", 5) - reshaped_2 = fluid.layers.reshape(data_2, shape=[dim, 10]) - # the shape of reshaped_2 is [5,10]. - - # example 3: - data_3 = fluid.data( - name="data_3", shape=[2,4,6], dtype='float32') - reshaped_3 = fluid.layers.reshape(x=data_3, shape=[6,8]) - # the shape of reshaped_3 is [6,8]. - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/resize_bilinear_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/resize_bilinear_cn.rst deleted file mode 100644 index d0fd0a3f2b04cbf90fe6d4944929b9c93cbaec5f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/resize_bilinear_cn.rst +++ /dev/null @@ -1,101 +0,0 @@ -.. _cn_api_fluid_layers_resize_bilinear: - -resize_bilinear -------------------------------- - -.. py:function:: paddle.fluid.layers.resize_bilinear(input, out_shape=None, scale=None, name=None, actual_shape=None, align_corners=True, align_mode=1, data_format='NCHW') - -:alias_main: paddle.nn.functional.resize_bilinear -:alias: paddle.nn.functional.resize_bilinear,paddle.nn.functional.vision.resize_bilinear -:old_api: paddle.fluid.layers.resize_bilinear - - - -**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 - -该OP应用双向性插值法调整输入图片的大小,输出形状按优先级由actual_shape、out_shape和scale指定。 - -双线性插值是对线性插值的扩展,即二维变量方向上(如h方向和w方向)插值。关键思想是先在一个方向上执行线性插值,然后再在另一个方向上执行线性插值。 - -详情请参阅 `维基百科 `_ 。 - -align_corners和align_mode是可选参数,插值的计算方法可以由它们选择。 - - -:: - - Example: - - For scale: - - if align_corners = True && out_size > 1 : - - scale_factor = (in_size-1.0)/(out_size-1.0) - - else: - - scale_factor = float(in_size/out_size) - - Bilinear interpolation: - - if align_corners = False , align_mode = 0 - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - - else: - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - - - -参数: - - **input** (Variable) - 4-D Tensor,数据类型为float32、float64或uint8,其数据格式由参数 ``data_format`` 指定。 - - **out_shape** (list|tuple|Variable|None) - 双线性层的输出形状,维度为[out_h, out_w]的二维Tensor。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者维度为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。默认值为None。 - - **scale** (float|Variable|None) - 用于输入高度或宽度的乘数因子。out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值为None。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。注意:如果希望动态指定输出形状,建议使用 :code:`out_shape` , 因为 :code:`actual_shape` 未来将被弃用。在使用actual_shape指定输出形状时,仍然需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值为None。 - - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值为True - - **align_mode** (int)- 双线性插值的可选项。 可以是'0'代表src_idx = scale *(dst_indx + 0.5)-0.5;如果为'1' ,代表src_idx = scale * dst_index。 - - **data_format** (str,可选)- 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:4-D Tensor,形状为 (num_batches, channels, out_h, out_w) 或 (num_batches, out_h, out_w, channels)。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32") - # input.shape = [-1, 3, 6, 9], where -1 indicates batch size, and it will get the exact value in runtime. - - out0 = fluid.layers.resize_bilinear(input, out_shape=[12, 12]) - # out0.shape = [-1, 3, 12, 12], it means out0.shape[0] = input.shape[0] in runtime. - - # out_shape is a list in which each element is a integer or a tensor Variable - dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False) - out1 = fluid.layers.resize_bilinear(input, out_shape=[12, dim1]) - # out1.shape = [-1, 3, 12, -1] - - # out_shape is a 1-D tensor Variable - shape_tensor = fluid.layers.data(name="shape_tensor", shape=[2], dtype="int32", append_batch_size=False) - out2 = fluid.layers.resize_bilinear(input, out_shape=shape_tensor) - # out2.shape = [-1, 3, -1, -1] - - # when use actual_shape - actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[2], dtype="int32", append_batch_size=False) - out3 = fluid.layers.resize_bilinear(input, out_shape=[4, 4], actual_shape=actual_shape_tensor) - # out3.shape = [-1, 3, 4, 4] - - # scale is a Variable - scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False) - out4 = fluid.layers.resize_bilinear(input, scale=scale_tensor) - # out4.shape = [-1, 3, -1, -1] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/resize_nearest_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/resize_nearest_cn.rst deleted file mode 100644 index 2d4ff2abf242b745703200a0fb7966486f8faefc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/resize_nearest_cn.rst +++ /dev/null @@ -1,111 +0,0 @@ -.. _cn_api_fluid_layers_resize_nearest: - -resize_nearest -------------------------------- - -.. py:function:: paddle.fluid.layers.resize_nearest(input, out_shape=None, scale=None, name=None, actual_shape=None, align_corners=True, data_format='NCHW') - -:alias_main: paddle.nn.functional.resize_nearest -:alias: paddle.nn.functional.resize_nearest,paddle.nn.functional.vision.resize_nearest -:old_api: paddle.fluid.layers.resize_nearest - - - -该OP对输入图片进行大小调整,在高度方向宽度方向进行最邻近插值(nearest neighbor interpolation)操作。 - -输出形状按优先级顺序依据 ``actual_shape`` , ``out_shape`` 和 ``scale`` 而定。 - -**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 - -:: - - Example: - - For scale: - - if align_corners = True && out_size > 1 : - - scale_factor = (in_size-1.0)/(out_size-1.0) - - else: - - scale_factor = float(in_size/out_size) - - - Nearest neighbor interpolation: - - if align_corners = False - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = \left \lfloor {H_{in} * scale_{}factor}} \right \rfloor - W_out = \left \lfloor {W_{in} * scale_{}factor}} \right \rfloor - - else: - align_corners = True - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = round(H_{in} * scale_{factor}) - W_out = round(W_{in} * scale_{factor}) - -最邻近插值的详细介绍请参照: `Wiki Nearest-neighbor interpolation `_ - - -参数: - - **input** (Variable) - 4-D Tensor,数据类型为float32、float64或uint8,其数据格式由参数 ``data_format`` 指定。 - - **out_shape** (list|tuple|Variable|None) - 双线性插值法调整后的输出,维度为[out_h, out_w]的2-D Tensor。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者shape为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。默认值为None。 - - **scale** (float|Variable|None) – 输入高宽的乘数因子。 ``out_shape`` 和 ``scale`` 二者至少设置其一。 ``out_shape`` 具有比 ``scale`` 更高的优先级。 默认值为None。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。注意:如果希望动态指定输出形状,建议使用 :code:`out_shape` , 因为 :code:`actual_shape` 未来将被弃用。在使用actual_shape指定输出形状时,仍然需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值为None。 - - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值为True。 - - **data_format** (str,可选)- 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:4-D Tensor,形状为 (num_batches, channels, out_h, out_w) 或 (num_batches, out_h, out_w, channels)。 - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32") - # input.shape = [-1, 3, 6, 9], where -1 indicates batch size, and it will get the exact value in runtime. - - out0 = fluid.layers.resize_nearest(input, out_shape=[12, 12]) - # out0.shape = [-1, 3, 12, 12], it means out0.shape[0] = input.shape[0] in runtime. - - # out_shape is a list in which each element is a integer or a tensor Variable - dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False) - out1 = fluid.layers.resize_nearest(input, out_shape=[12, dim1]) - # out1.shape = [-1, 3, 12, -1] - - # out_shape is a 1-D tensor Variable - shape_tensor = fluid.layers.data(name="resize_shape", shape=[2], dtype="int32", append_batch_size=False) - out2 = fluid.layers.resize_nearest(input, out_shape=shape_tensor) - # out2.shape = [-1, 3, -1, -1] - - # when use actual_shape - actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[2], dtype="int32", append_batch_size=False) - out3 = fluid.layers.resize_nearest(input, out_shape=[4, 4], actual_shape=actual_shape_tensor) - # out3.shape = [-1, 3, 4, 4] - - # scale is a Variable - scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False) - out4 = fluid.layers.resize_nearest(input, scale=scale_tensor) - # out4.shape = [-1, 3, -1, -1] - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/resize_trilinear_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/resize_trilinear_cn.rst deleted file mode 100644 index 58c62c6ca849b47d12ff1188b88e3cc3797030d2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/resize_trilinear_cn.rst +++ /dev/null @@ -1,96 +0,0 @@ -.. _cn_api_fluid_layers_resize_trilinear: - -resize_trilinear -------------------------------- - -.. py:function:: paddle.fluid.layers.resize_trilinear(input, out_shape=None, scale=None, name=None, actual_shape=None, align_corners=True, align_mode=1, data_format='NCDHW') - -:alias_main: paddle.nn.functional.resize_trilinear -:alias: paddle.nn.functional.resize_trilinear,paddle.nn.functional.vision.resize_trilinear -:old_api: paddle.fluid.layers.resize_trilinear - - - -**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 - -该层对输入进行放缩,基于给定的由 ``actual_shape`` , ``out_shape`` , ``scale`` 确定的输出shape,进行三线插值。三线插值是包含三个参数的线性插值方程(D方向,H方向, W方向),在一个3D格子上进行三个方向的线性插值。更多细节,请参考维基百科:https://en.wikipedia.org/wiki/Trilinear_interpolation -Align_corners和align_mode都是可选参数,可以用来设置插值的计算方法,如下: - -:: - - Example: - - For scale: - - if align_corners = True && out_size > 1 : - - scale_factor = (in_size-1.0)/(out_size-1.0) - - else: - - scale_factor = float(in_size/out_size) - - Bilinear interpolation: - - if: - align_corners = False , align_mode = 0 - - input : (N,C,D_in,H_in,W_in) - output: (N,C,D_out,H_out,W_out) where: - - D_out = (D_{in}+0.5) * scale_{factor} - 0.5 - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - - else: - - input : (N,C,D_in,H_in,W_in) - output: (N,C,D_out,H_out,W_out) where: - - D_out = D_{in} * scale_{factor} - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - -参数: - - **input** (Variable) – 5-D Tensor,数据类型为float32、float64或uint8,其数据格式由参数 ``data_format`` 指定。 - - **out_shape** (list|tuple|Variable|None) – 调整最近邻层的输出形状,形式为(out_h, out_w)。默认值:None。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者shape为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。 - - **scale** (float|None) – 输入高、宽的乘法器。 ``out_shape`` 和 ``scale`` 二者至少设置其一。 ``out_shape`` 具有比 ``scale`` 更高的优先级。 默认: None - - **name** (str|None) – 输出变量的命名 - - **actual_shape** (Variable) – 可选输入, 动态设置输出张量的形状。 如果提供该值, 图片放缩会依据此形状进行, 而非依据 ``out_shape`` 和 ``scale`` 。 即为, ``actual_shape`` 具有最高的优先级。 如果想动态指明输出形状,推荐使用 ``out_shape`` ,因为 ``actual_shape`` 未来将被弃用。 当使用 ``actual_shape`` 来指明输出形状, ``out_shape`` 和 ``scale`` 也应该进行设置, 否则在图形生成阶段将会报错。默认: None - - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值:True - - **align_mode** (bool) - (int,默认为'1'),双线性插值选项,src_idx = scale*(dst_index+0.5)-0.5时取'0',src_idx = scale*dst_index时取'1'。 - - **data_format** (str,可选)- 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCDHW"和"NDHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCDHW"。 - -返回:5-D Tensor,形状为 (num_batches, channels, out_d, out_h, out_w) 或 (num_batches, out_d, out_h, out_w, channels)。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9,11], dtype="float32") - # input.shape = [-1, 3, 6, 9, 11], where -1 indicates batch size, and it will get the exact value in runtime. - - out0 = fluid.layers.resize_trilinear(input, out_shape=[12, 12, 12]) - # out0.shape = [-1, 3, 12, 12, 12], it means out0.shape[0] = input.shape[0] in runtime. - - # out_shape is a list in which each element is a integer or a tensor Variable - dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False) - out1 = fluid.layers.resize_trilinear(input, out_shape=[12, dim1, 4]) - # out1.shape = [-1, 3, 12, -1, 4] - - # out_shape is a 1-D tensor Variable - shape_tensor = fluid.layers.data(name="shape_tensor", shape=[3], dtype="int32", append_batch_size=False) - out2 = fluid.layers.resize_trilinear(input, out_shape=shape_tensor) - # out2.shape = [-1, 3, -1, -1, -1] - - # when use actual_shape - actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[3], dtype="int32", append_batch_size=False) - out3 = fluid.layers.resize_trilinear(input, out_shape=[4, 4, 8], actual_shape=actual_shape_tensor) - # out3.shape = [-1, 3, 4, 4, 8] - - # scale is a Variable - scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False) - out4 = fluid.layers.resize_trilinear(input, scale=scale_tensor) - # out4.shape = [-1, 3, -1, -1, -1] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/roi_align_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/roi_align_cn.rst deleted file mode 100644 index c5c72638bb5979df1767cf4f7eb765060e245bea..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/roi_align_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_roi_align: - -roi_align -------------------------------- - -.. py:function:: paddle.fluid.layers.roi_align(input, rois, pooled_height=1, pooled_width=1, spatial_scale=1.0, sampling_ratio=-1, name=None) - -:alias_main: paddle.nn.functional.roi_align -:alias: paddle.nn.functional.roi_align,paddle.nn.functional.vision.roi_align -:old_api: paddle.fluid.layers.roi_align - - - -**实现RoIAlign操作。** - -Region of Interests align(直译:有意义、有价值选区对齐) 用于实现双线性插值,它可以将不均匀大小的输入 -变为固定大小的特征图(feature map)。 - -该运算通过 ``pooled_width`` 和 ``pooled_height`` 将每个推荐区域划分为等大小分块。位置保持不变。 - -在每个RoI分块中,分别取sampling_ratio个点(若为-1则取框内所有点),每个点通过双线性插值直接计算得到坐标。再对分块内取的点取平均值作为小框的坐标值。坐标对齐有误的问题。 - -参数: - - **input** (Variable) – 维度为[N,C,H,W]的4-D Tensor,N 为batch大小, C 为输入通道的个数, H 特征高度, W 特征宽度。数据类型为float32或float64。 - - **rois** (Variable) – 维度为[num_rois,4]2-D LoDTensor,数据类型为float32或float64。待池化的ROIs (Regions of Interest),lod level 为1。给定比如[[x1,y1,x2,y2], ...],(x1,y1)为左上点坐标,(x2,y2)为右下点坐标。 - - **pooled_height** (int32,可选) – 池化后的输出高度,默认值为1。 - - **pooled_width** (int32,可选) – 池化后的输出宽度,默认值为1。 - - **spatial_scale** (float32,可选) – 乘法性质空间标尺因子,池化时,将RoI坐标变换至运算采用的标度,默认值为1.0。 - - **sampling_ratio** (int32) – 插值格中采样点的数目。 如果它 <=0, 它们将自适应 ``roi_width`` 和 ``pooled_w`` , 在高度上也是同样的道理。默认值为-1 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回:表示RoI align输出的LoDTensor,数据类型为float32或float64,维度为 (num_rois, channels, pooled_h, pooled_w) - - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data( - name='data', shape=[None, 256, 32, 32], dtype='float32') - rois = fluid.data( - name='rois', shape=[None, 4], dtype='float32') - align_out = fluid.layers.roi_align(input=x, - rois=rois, - pooled_height=7, - pooled_width=7, - spatial_scale=0.5, - sampling_ratio=-1) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/roi_pool_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/roi_pool_cn.rst deleted file mode 100644 index 616c119d22d5d91e30903d82879975b0733ace87..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/roi_pool_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_layers_roi_pool: - -roi_pool -------------------------------- - -.. py:function:: paddle.fluid.layers.roi_pool(input, rois, pooled_height=1, pooled_width=1, spatial_scale=1.0) - -:alias_main: paddle.nn.functional.roi_pool -:alias: paddle.nn.functional.roi_pool,paddle.nn.functional.vision.roi_pool -:old_api: paddle.fluid.layers.roi_pool - - - - -该OP实现了roi池化操作,对非均匀大小的输入执行最大池化,以获得固定大小的特征映射(例如7*7)。 - -该OP的操作分三个步骤: - - 1. 用pooled_width和pooled_height将每个proposal区域划分为大小相等的部分; - 2. 在每个部分中找到最大的值; - 3. 将这些最大值复制到输出缓冲区。 - -Faster-RCNN使用了roi池化。roi池化的具体原理请参考 https://stackoverflow.com/questions/43430056/what-is-roi-layer-in-fast-rcnn - -参数: - - **input** (Variable) - 输入特征,维度为[N,C,H,W]的4D-Tensor,其中N为batch大小,C为输入通道数,H为特征高度,W为特征宽度。数据类型为float32或float64. - - **rois** (Variable) – 待池化的ROIs (Regions of Interest),维度为[num_rois,4]的2D-LoDTensor,lod level 为1。给定如[[x1,y1,x2,y2], ...],其中(x1,y1)为左上点坐标,(x2,y2)为右下点坐标。lod信息记录了每个roi所属的batch_id。 - - **pooled_height** (int,可选) - 数据类型为int32,池化输出的高度。默认值为1。 - - **pooled_width** (int,可选) - 数据类型为int32,池化输出的宽度。默认值为1。 - - **spatial_scale** (float,可选) - 数据类型为float32,用于将ROI coords从输入比例转换为池化时使用的比例。默认值为1.0。 - -返回: 池化后的特征,维度为[num_rois, C, pooled_height, pooled_width]的4D-Tensor。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - DATATYPE='float32' - - place = fluid.CPUPlace() - #place = fluid.CUDAPlace(0) - - input_data = np.array([i for i in range(1,17)]).reshape(1,1,4,4).astype(DATATYPE) - roi_data =fluid.create_lod_tensor(np.array([[1., 1., 2., 2.], [1.5, 1.5, 3., 3.]]).astype(DATATYPE),[[2]], place) - - x = fluid.layers.data(name='input', shape=[1, 4, 4], dtype=DATATYPE) - rois = fluid.layers.data(name='roi', shape=[4], lod_level=1, dtype=DATATYPE) - - pool_out = fluid.layers.roi_pool( - input=x, - rois=rois, - pooled_height=1, - pooled_width=1, - spatial_scale=1.0) - - exe = fluid.Executor(place) - out, = exe.run(feed={'input':input_data ,'roi':roi_data}, fetch_list=[pool_out.name]) - print(out) #array([[[[11.]]], [[[16.]]]], dtype=float32) - print(np.array(out).shape) # (2, 1, 1, 1) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/row_conv_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/row_conv_cn.rst deleted file mode 100644 index ab16bdbfbb86e42131b331a373b8e66e2a1099c1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/row_conv_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_row_conv: - -row_conv -------------------------------- - - -.. py:function:: paddle.fluid.layers.row_conv(input, future_context_size, param_attr=None, act=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口为行卷积(Row-convolution operator)或称之为超前卷积(lookahead convolution),最早介绍于DeepSpeech2论文中,论文链接: - - ``_ - -双向的RNN在深度语音模型中很有用,它通过对整个序列执行正向和反向传递来学习序列的表示。然而,与单向RNNs不同的是,在线部署和低延迟设置中,双向RNNs具有难度。超前卷积将来自未来子序列的信息以一种高效的方式进行计算,以改进单向递归神经网络。 row convolution operator 与一维序列卷积不同,计算方法如下: - -给定输入序列长度为 :math:`t` 的输入序列 :math:`X` 和输入维度 :math:`D` ,以及一个大小为 :math:`context * D` 的滤波器 :math:`W` ,输出序列卷积为: - -.. math:: - out_i = \sum_{j=i}^{i+context-1} X_{j} · W_{j-i} - -公式中: - - :math:`out_i` : 第i行输出变量形为[1, D]. - - :math:`context` : 下文(future context)大小 - - :math:`X_j` : 第j行输出变量,形为[1,D] - - :math:`W_{j-i}` : 第(j-i)行参数,其形状为[1,D]。 - -详细请参考 `设计文档 `_ 。 - -参数: - - **input** (Variable) -- 支持输入为LodTensor和Tensor,输入类型可以是[float32, float64],它支持可变时间长度的输入序列。当输入input为LodTensor时,其内部张量是一个具有形状(T x N)的矩阵,其中T是这个mini batch中的总的timestep,N是输入数据维数。当输入input为Tensor时,其形状为(B x T x N)的三维矩阵,B为mini batch大小,T为每个batch输入中的最大timestep,N是输入数据维数。当输入input为LoDTensor,形状为[9, N],LoD信息为[2, 3, 4],等价于输入input为形状是[3, 4, N]的Tensor。 - - **future_context_size** (int) -- 下文大小。请注意,卷积核的shape是[future_context_size + 1, N],N和输入input的数据维度N保持一致。 - - **param_attr** (ParamAttr) -- 参数的属性,包括名称、初始化器等。 - - **act** (str) -- 非线性激活函数。 - -返回:表示row_conv计算结果的Variable,数据类型、维度和输入input相同。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # LoDTensor input - x = fluid.layers.data(name='x', shape=[9, 16], - dtype='float32', lod_level=3, - append_batch_size=False) - out = fluid.layers.row_conv(input=x, future_context_size=2) - - # Tensor input - x = fluid.layers.data(name='x', shape=[9, 4, 16], - dtype='float32', - append_batch_size=False) - out = fluid.layers.row_conv(input=x, future_context_size=2) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/sampling_id_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/sampling_id_cn.rst deleted file mode 100644 index 098bba3e2e75a62a28ea4bd9c040a1960846f858..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/sampling_id_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_sampling_id: - -sampling_id -------------------------------- - -.. py:function:: paddle.fluid.layers.sampling_id(x, min=0.0, max=1.0, seed=0, dtype='float32') - - - - -该OP从输入的多项分布中进行采样。 - -参数: - - **x** (Variable)- 输入Tensor。一个形如[batch_size,input_feature_dimensions]的2-D Tensor。 - - **min** (Float)- 随机的最小值。默认值为为0.0。 - - **max** (Float)- 随机的最大值。默认值为1.0。 - - **seed** (int)- 随机种子。0表示使用系统生成的种子, 默认值为0。请注意,如果seed不为0,则此算子每次调用将生成相同的随机数。 - - **dtype** (np.dtype | core.VarDesc.VarType | str)- 指定输出数据的类型。 - -返回:采样的数据张量(Tensor) - -返回类型:变量(Variable) - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data( - name="X", - shape=[13, 11], - dtype='float32', - append_batch_size=False) - - out = fluid.layers.sampling_id(x) - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/scale_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/scale_cn.rst deleted file mode 100644 index 6623f9e451b594e71b28235a54dbe858d98ff9c9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/scale_cn.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. _cn_api_fluid_layers_scale: - -scale -------------------------------- - -.. py:function:: paddle.fluid.layers.scale(x, scale=1.0, bias=0.0, bias_after_scale=True, act=None, name=None) - -:alias_main: paddle.scale -:alias: paddle.scale,paddle.tensor.scale,paddle.tensor.math.scale -:old_api: paddle.fluid.layers.scale - - - -缩放算子。 - -对输入Tensor进行缩放和偏置,其公式如下: - -``bias_after_scale`` 为True: - -.. math:: - Out=scale*X+bias - -``bias_after_scale`` 为False: - -.. math:: - Out=scale*(X+bias) - -参数: - - **x** (Variable) - 要进行缩放的多维Tensor,数据类型可以为float32,float64,int8,int16,int32,int64,uint8。 - - **scale** (float|Variable) - 缩放的比例,是一个float类型或者一个shape为[1],数据类型为float32的Variable类型。 - - **bias** (float) - 缩放的偏置。 - - **bias_after_scale** (bool) - 判断在缩放之前或之后添加偏置。为True时,先缩放再偏置;为False时,先偏置再缩放。该参数在某些情况下,对数值稳定性很有用。 - - **act** (str,可选) - 应用于输出的激活函数,如tanh、softmax、sigmoid、relu等。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 缩放后的输出Tensor。 - -返回类型: Variable(Tensor|LoDTensor)。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - inputs = fluid.layers.data(name="x", shape=[2, 3], dtype='float32') - output = fluid.layers.scale(inputs, scale = 2.0, bias = 1.0) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([[1, 2, 3], [4, 5, 6]]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) # [array([[ 3., 5., 7.], [ 9., 11., 13.]], dtype=float32)] - -.. code-block:: python - - # scale with parameter scale as Variable - import paddle.fluid as fluid - import numpy as np - - inputs = fluid.layers.data(name="x", shape=[2, 3], dtype='float32') - scale = fluid.layers.data(name="scale", shape=[1], dtype='float32', - append_batch_size=False) - output = fluid.layers.scale(inputs, scale = scale, bias = 1.0) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([[1, 2, 3], [4, 5, 6]]).astype(np.float32) - scale_np = np.array([2.]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img, 'scale':scale_np}, fetch_list=[output]) - print(res) # [array([[ 3., 5., 7.], [ 9., 11., 13.]], dtype=float32)] - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/scatter_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/scatter_cn.rst deleted file mode 100644 index 38824d7fbdd7d3aa250f24e4b8185b3399f53b5b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/scatter_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_scatter: - -scatter -------------------------------- - -.. py:function:: paddle.fluid.layers.scatter(input, index, updates, name=None, overwrite=True) - -:alias_main: paddle.scatter -:alias: paddle.scatter,paddle.tensor.scatter,paddle.tensor.manipulation.scatter -:old_api: paddle.fluid.layers.scatter - - - -该OP根据index中的索引值将updates数据更新到input中。 - -.. code-block:: python - - 输入: - input = np.array([[1, 1], [2, 2], [3, 3]]) - index = np.array([2, 1, 0, 1]) - # updates的维度需要和input一样 - # updates 维度 > 1 的shape要和input一样 - updates = np.array([[1, 1], [2, 2], [3, 3], [4, 4]]) - overwrite = False - - 计算过程: - if not overwrite: - for i in range(len(index)): - input[index[i]] = np.zeros((2)) - - # 根据index中的索引值取updates中的数据更新到input中去 - for i in range(len(index)): - if (overwirte): - input[index[i]] = updates[i] - else: - input[index[i]] += updates[i] - - 输出: - out # np.array([[3, 3], [6, 6], [1, 1]]) - out.shape # [3, 2] - -参数: - - **input** (Variable) - 支持任意纬度的Tensor。支持的数据类型为float32。 - - **index** (Variable) - 表示索引,仅支持1-D Tensor。 支持的数据类型为int32,int64。 - - **updates** (Variable) - 根据索引的值将updates Tensor中的对应值更新到input Tensor中,updates Tensor的维度需要和input tensor保持一致,且除了第一维外的其他的维度的大小需要和input Tensor保持相同。支持的数据类型为float32。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **overwrite** (bool,可选) - 如果index中的索引值有重复且overwrite 为True,旧更新值将被新的更新值覆盖;如果为False,新的更新值将同旧的更新值相加。默认值为True。 - -返回:返回类型为Variable(Tensor|LoDTensor),数据类型以及shape大小同输入一致。 - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - input = fluid.layers.data(name='data', shape=[3, 2], dtype='float32', append_batch_size=False) - index = fluid.layers.data(name='index', shape=[4], dtype='int64', append_batch_size=False) - updates = fluid.layers.data(name='update', shape=[4, 2], dtype='float32', append_batch_size=False) - - output = fluid.layers.scatter(input, index, updates, overwrite=False) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - in_data = np.array([[1, 1], [2, 2], [3, 3]]).astype(np.float32) - index_data = np.array([2, 1, 0, 1]).astype(np.int64) - update_data = np.array([[1, 1], [2, 2], [3, 3], [4, 4]]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'data':in_data, "index":index_data, "update":update_data}, fetch_list=[output]) - print(res) - # [array([[3., 3.], - # [6., 6.], - # [1., 1.]], dtype=float32)] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/scatter_nd_add_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/scatter_nd_add_cn.rst deleted file mode 100644 index 95b26e03a214a8cd04a11ef8b6803c246d9cfcb8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/scatter_nd_add_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_fluid_layers_scatter_nd_add: - -scatter_nd_add -------------------------------- - -.. py:function:: paddle.fluid.layers.scatter_nd_add(ref, index, updates, name=None) - -:alias_main: paddle.scatter_nd_add -:alias: paddle.scatter_nd_add,paddle.tensor.scatter_nd_add,paddle.tensor.manipulation.scatter_nd_add -:old_api: paddle.fluid.layers.scatter_nd_add - - - -该OP通过对Variable中的单个值或切片应用稀疏加法,从而得到输出的Variable。 - -:code:`ref` 是维度为 :code:`R` 的张量。 :code:`index` 是维度为 :code:`K` 的张量。因此, :code:`index` 的形状是 :math:`[i_0, i_1, ..., i_{K-2}, Q]` ,其中 :math:`Q \leq R` 。:code:`updates` 是一个维度为 :math:`K - 1 + R - Q` 的张量,它的形状是 :math:`index.shape[:-1] + ref.shape[index.shape[-1]:]` 。 - -根据 :code:`index` 的 :math:`[i_0, i_1, ..., i_{K-2}]` 得到相应的 :code:`updates` 切片,将其加到根据 :code:`index` 的最后一维得到 :code:`ref` 切片上,从而得到最终的输出张量。 - - -示例: - -:: - - - 案例 1: - ref = [0, 1, 2, 3, 4, 5] - index = [[1], [2], [3], [1]] - updates = [9, 10, 11, 12] - - 得到: - - output = [0, 22, 12, 14, 4, 5] - - - 案例 2: - ref = [[65, 17], [-14, -25]] - index = [[], []] - updates = [[[-1, -2], [1, 2]], - [[3, 4], [-3, -4]]] - ref.shape = (2, 2) - index.shape = (2, 0) - updates.shape = (2, 2, 2) - - 得到: - - output = [[67, 19], [-16, -27]] - - -参数: - - **ref** (Variable) - 输入张量,数据类型可以是float32,float64。 - - **index** (Variable) - 输入的索引张量,数据类型为非负int32或非负int64。它的维度 :code:`index.rank` 必须大于1,并且 :code:`index.shape[-1] <= ref.rank` - - **updates** (Variable) - 输入的更新张量,它必须和 :code:`ref` 有相同的数据类型。形状必须是 :code:`index.shape[:-1] + ref.shape[index.shape[-1]:]` 。 - - **name** (string) - 该层的名字,默认值为None,表示会自动命名。 - -返回:数据类型和形状都与 :code:`ref` 相同的Tensor|LoDTensor。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - ref = fluid.layers.data(name='ref', shape=[3, 5, 9, 10], dtype='float32', append_batch_size=False) - index = fluid.layers.data(name='index', shape=[3, 2], dtype='int32', append_batch_size=False) - updates = fluid.layers.data(name='update', shape=[3, 9, 10], dtype='float32', append_batch_size=False) - output = fluid.layers.scatter_nd_add(ref, index, updates) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/scatter_nd_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/scatter_nd_cn.rst deleted file mode 100644 index 60a0b84a5d774638cf99589cdc78fb42a0cd7d22..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/scatter_nd_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_layers_scatter_nd: - -scatter_nd -------------------------------- - -.. py:function:: paddle.fluid.layers.scatter_nd(index, updates, shape, name=None) - -:alias_main: paddle.scatter_nd -:alias: paddle.scatter_nd,paddle.tensor.scatter_nd,paddle.tensor.manipulation.scatter_nd -:old_api: paddle.fluid.layers.scatter_nd - - - -该OP根据 :code:`index` ,将 :code:`updates` 添加到一个新的张量中,从而得到输出的Variable。这个操作与 :code:`scatter_nd_add` 类似,除了形状为 :code:`shape` 的张量是通过零初始化的。相应地, :code:`scatter_nd(index, updates, shape)` 等价于 :code:`scatter_nd_add(fluid.layers.zeros(shape, updates.dtype), index, updates)` 。如果 :code:`index` 有重复元素,则将累积相应的更新,因此,由于数值近似问题,索引中重复元素的顺序不同可能会导致不同的输出结果。具体的计算方法可以参见 :code:`scatter_nd_add` 。该OP是 :code:`gather_nd` 的反函数。 - -参数: - - **index** (Variable) - 输入的索引张量,数据类型为非负int32或非负int64。它的维度 :code:`index.rank` 必须大于1,并且 :code:`index.shape[-1] <= len(shape)` - - **updates** (Variable) - 输入的更新张量。形状必须是 :code:`index.shape[:-1] + shape[index.shape[-1]:]` 。数据类型可以是float32,float64。 - - **shape** (tuple|list) - 要求输出张量的形状。类型是tuple或者list。 - - **name** (string) - 该层的名字,默认值为None,表示会自动命名。 - -返回:数据类型与 :code:`updates` 相同,形状是 :code:`shape` 的Tensor|LoDTensor。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - index = fluid.layers.data(name='index', shape=[3, 2], dtype='int64', append_batch_size=False) - updates = fluid.layers.data(name='update', shape=[3, 9, 10], dtype='float32', append_batch_size=False) - shape = [3, 5, 9, 10] - output = fluid.layers.scatter_nd(index, updates, shape) - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/selu_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/selu_cn.rst deleted file mode 100644 index 4aee591bcc8dd87d0df0e9f0ef8faed224d5c5f1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/selu_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_selu: - -selu -------------------------------- - -.. py:function:: paddle.fluid.layers.selu(x, scale=None, alpha=None, name=None) - -:alias_main: paddle.nn.functional.selu -:alias: paddle.nn.functional.selu,paddle.nn.functional.activation.selu -:old_api: paddle.fluid.layers.selu - - - -SeLU激活函数,其公式如下: - -.. math:: - selu= \lambda* - \begin{cases} - x &\quad \text{ if } x>0 \\ - \alpha * e^x - \alpha &\quad \text{ if } x<=0 - \end{cases} - -输入 ``x`` 可以选择性携带LoD信息。输出和它共享此LoD信息(如果有)。 - -参数: - - **x** (Variable) - 输入变量,为数据类型为float32,float64的多维Tensor或者LoDTensor。 - - **scale** (float,可选) – 可选,表示SeLU激活函数中的λ的值,其默认值为 1.0507009873554804934193349852946。 详情请见: `Self-Normalizing Neural Networks `_。 - - **alpha** (float,可选) – 可选,表示SeLU激活函数中的α的值,其默认值为 1.6732632423543772848170429916717。 详情请见: `Self-Normalizing Neural Networks `_。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:一个Tensor,shape和输入Tensor相同。 - -返回类型:Variable(Tensor|LoDTensor),LoD信息与输入Tensor一致。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - inputs = fluid.layers.data(name="x", shape=[2, 2], dtype="float32") - output = fluid.layers.selu(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([[0, 1],[2, 3]]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) # [array([[0. , 1.050701],[2.101402, 3.152103]], dtype=float32)] - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/shape_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/shape_cn.rst deleted file mode 100644 index 0672af0a3a203fd1d2e866705c2b52ee21421fe9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/shape_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_shape: - -shape -------------------------------- - -.. py:function:: paddle.fluid.layers.shape(input) - -:alias_main: paddle.shape -:alias: paddle.shape,paddle.tensor.shape,paddle.tensor.attribute.shape -:old_api: paddle.fluid.layers.shape - - - -shape层。 - -获得输入Tensor或SelectedRows的shape。 - -:: - - 示例1: - 输入是 N-D Tensor类型: - input = [ [1, 2, 3, 4], [5, 6, 7, 8] ] - - 输出shape: - input.shape = [2, 4] - - 示例2: - 输入是 SelectedRows类型: - input.rows = [0, 4, 19] - input.height = 20 - input.value = [ [1, 2], [3, 4], [5, 6] ] # inner tensor - 输出shape: - input.shape = [3, 2] - -参数: - - **input** (Variable)- 输入的多维Tensor或SelectedRows,数据类型为float16,float32,float64,int32,int64。如果输入是SelectedRows类型,则返回其内部持有Tensor的shape。 - - -返回: 一个Tensor,表示输入Tensor或SelectedRows的shape。 - -返回类型: Variable(Tensor)。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - inputs = fluid.data(name="x", shape=[3, 100, 100], dtype="float32") - output = fluid.layers.shape(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.ones((3, 100, 100)).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) # [array([ 3, 100, 100], dtype=int32)] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/shard_index_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/shard_index_cn.rst deleted file mode 100644 index 2bf72254ca86f7559f30f3dcec891248a0a64e6b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/shard_index_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_layers_shard_index: - -shard_index -------------------------------- - -.. py:function:: paddle.fluid.layers.shard_index(input, index_num, nshards, shard_id, ignore_value=-1) - -:alias_main: paddle.shard_index -:alias: paddle.shard_index,paddle.tensor.shard_index,paddle.tensor.manipulation.shard_index -:old_api: paddle.fluid.layers.shard_index - - - -该函数对输入的索引根据分片(shard)的偏移量重新计算。 -索引长度被均分为N个分片,如果输入索引所在的分片跟分片ID对应,则该索引以分片的偏移量为界重新计算,否则更新为默认值(ignore_value)。具体计算为: -:: - - 每个分片的长度为 - shard_size = (index_num + nshards - 1) // nshards - - 如果 shard_id == input // shard_size - 则 output = input % shard_size - 否则 output = ignore_value - -注意:若索引长度不能被分片数整除,则最后一个分片长度不足shard_size。 - -示例: -:: - - 输入: - input.shape = [4, 1] - input.data = [[1], [6], [12], [19]] - index_num = 20 - nshards = 2 - ignore_value=-1 - - 如果 shard_id == 0, 输出: - output.shape = [4, 1] - output.data = [[1], [6], [-1], [-1]] - - 如果 shard_id == 1, 输出: - output.shape = [4, 1] - output.data = [[-1], [-1], [2], [9]] - -参数: - - **input** (Variable)- 输入的索引 - - **index_num** (scalar) - 索引长度 - - **nshards** (scalar) - 分片数量 - - **shard_id** (scalar) - 当前分片ID - - **ignore_value** (scalar) - 超出分片索引范围的默认值 - -返回:更新后的索引值 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - label = fluid.layers.data(name="label", shape=[1], dtype="int64") - shard_label = fluid.layers.shard_index(input=label, - index_num=20, - nshards=2, - shard_id=0) diff --git a/doc/paddle/api/paddle/fluid/layers/nn/shuffle_channel_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/shuffle_channel_cn.rst deleted file mode 100644 index fffbae0a48f36c1cfa80a37ea91fdddf139d75b9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/shuffle_channel_cn.rst +++ /dev/null @@ -1,75 +0,0 @@ -.. _cn_api_fluid_layers_shuffle_channel: - -shuffle_channel -------------------------------- - -.. py:function:: paddle.fluid.layers.shuffle_channel(x, group, name=None) - -:alias_main: paddle.nn.functional.shuffle_channel -:alias: paddle.nn.functional.shuffle_channel,paddle.nn.functional.vision.shuffle_channel -:old_api: paddle.fluid.layers.shuffle_channel - - - -该OP将输入 ``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) – 输入Tensor。 维度为[N,C,H,W]的4-D Tensor。 - - **group** (int) – 表示子组的数目,它应该整除通道数。 - -返回:一个形状和类型与输入相同的Tensor。 - -返回类型:Variable - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name='input', shape=[4,2,2], dtype='float32') - out = fluid.layers.shuffle_channel(x=input, group=2) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/sign_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/sign_cn.rst deleted file mode 100644 index 5559e7a7bef67ed07aa58e3162e6c501867a803f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/sign_cn.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. _cn_api_fluid_layers_sign: - -sign -------------------------------- - -.. py:function:: paddle.fluid.layers.sign(x) - -:alias_main: paddle.sign -:alias: paddle.sign,paddle.tensor.sign,paddle.tensor.math.sign -:old_api: paddle.fluid.layers.sign - - - -此OP对输入x中每个元素进行正负判断,并且输出正负判断值:1代表正,-1代表负,0代表零。 - -参数: - - **x** (Variable|numpy.ndarray) – 进行正负值判断的多维Tensor或者是多维的numpy数组,数据类型为 float32,float64。 - -返回:输出正负号Tensor,数据的shape大小和输入x的数据shape一致。 - -返回类型:Variable,数据类型和输入数据类型一致。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.sign(np.array([3.0, 0.0, -2.0], dtype='float32')) - # data=[1.0, 0.0, -1.0] - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/similarity_focus_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/similarity_focus_cn.rst deleted file mode 100644 index 5024493c825ea66ac0ed63ec35f05cc73e2e45e9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/similarity_focus_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_layers_similarity_focus: - -similarity_focus -------------------------------- - -.. py:function:: paddle.fluid.layers.similarity_focus(input, axis, indexes, name=None) - -:alias_main: paddle.nn.functional.similarity_focus -:alias: paddle.nn.functional.similarity_focus,paddle.nn.functional.extension.similarity_focus -:old_api: paddle.fluid.layers.similarity_focus - - - -**实现SimilarityFocus(相似度聚焦)运算** - -通过以下三个步骤,该层生成一个和输入 ``input`` 同形的 similarity focus mask(相似度聚焦掩码): - -1. 根据 ``axis`` 和 ``indexes`` 提取一个三维张量,第一维为batch大小。 - 例如,如果 ``axis=1, indexes=[a]`` , 将得到矩阵 T=X[:, a, :, :] 。 - 该例中,如果输入X的形为 (BatchSize, A, B, C) ,则输出张量T的形为 (BatchSize, B, C) 。 -2. 对于每一个索引,在输出T中找到最大值。所以同一行、同一列最多只有一个数字,这意味着如果在第i行,第j列中找到最大值,那么在相应行、列中的其他数值都将被忽略。然后再在剩余的数值中找到下一个最大值。显然,将会产生 min(B,C)个数字,并把三维相似聚焦掩码张量相应位置的元素置为1,其余则置为0。对每个索引按元素进行or运算。 -3. 将这个三维相似度聚焦掩码张量 broadcast 成输入 ``input`` 的形状 - -请参考 `Similarity Focus Layer `_ 。 - -:: - - 例如 : - - 给定四维张量 x 形为 (BatchSize, C, A, B), 其中C 为通道Channel数目, - 特征图(feature map)的形为(A,B): - - x.shape = (2, 3, 2, 2) - x.data = [[[[0.8, 0.1], - [0.4, 0.5]], - - [[0.9, 0.7], - [0.9, 0.9]], - - [[0.8, 0.9], - [0.1, 0.2]]], - - - [[[0.2, 0.5], - [0.3, 0.4]], - - [[0.9, 0.7], - [0.8, 0.4]], - - [[0.0, 0.2], - [0.4, 0.7]]]] - - 给定轴: 1 (即channel轴) - 给定索引: [0] - - 于是我们得到一个与输入同形的四维输出张量: - out.shape = (2, 3, 2, 2) - out.data = [[[[1.0, 0.0], - [0.0, 1.0]], - - [[1.0, 0.0], - [0.0, 1.0]], - - [[1.0, 0.0], - [0.0, 1.0]]], - - [[[0.0, 1.0], - [1.0, 0.0]], - - [[0.0, 1.0], - [1.0, 0.0]], - - [[0.0, 1.0], - [1.0, 0.0]]]] - - - -参数: - - **input** (Variable) – 输入张量,应为一个四维张量,形为[BatchSize, A, B, C],数据类型为 float32 或者 float64。 - - **axis** (int) – 指明要选择的轴。 可能取值为 1, 2 或 3。 - - **indexes** (list) – 指明选择维度的索引列表。 - -返回:一个和输入 Variable 同形状、同数据类型的 Variable - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data( - name='data', shape=[-1, 3, 2, 2], dtype='float32') - fluid.layers.similarity_focus(input=data, axis=1, indexes=[0]) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/size_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/size_cn.rst deleted file mode 100644 index 6082053be65007c49e2b1e4e41e8a7cf7164035c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/size_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_size: - -size -------------------------------- - -.. py:function:: paddle.fluid.layers.size(input) - - - - -返回张量的单元数量,是一个shape为[1]的int64的张量。 - -参数: - - **input** (Variable)- 输入变量 - -返回:(Variable)。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid.layers as layers - - input = layers.data( - name="input", shape=[3, 100], dtype="float32", append_batch_size=False) - rank = layers.size(input) # 300 - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/slice_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/slice_cn.rst deleted file mode 100644 index ed77cc9498273ed264dd97a052fd35c1327a647a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/slice_cn.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. _cn_api_fluid_layers_slice: - -slice -------------------------------- - -.. py:function:: paddle.fluid.layers.slice(input, axes, starts, ends) - -:alias_main: paddle.slice -:alias: paddle.slice,paddle.tensor.slice,paddle.tensor.manipulation.slice -:old_api: paddle.fluid.layers.slice - - - -该OP沿多个轴生成 ``input`` 的切片。与numpy类似: https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html 该OP使用 ``axes`` 、 ``starts`` 和 ``ends`` 属性来指定轴列表中每个轴的起点和终点位置,并使用此信息来对 ``input`` 切片。如果向 ``starts`` 或 ``ends`` 传递负值如 :math:`-i`,则表示该轴的反向第 :math:`i-1` 个位置(这里以0为初始位置)。如果传递给 ``starts`` 或 ``end`` 的值大于n(维度中的元素数目),则表示n。当切片一个未知数量的维度时,建议传入 ``INT_MAX``。 ``axes`` 、 ``starts`` 和 ``ends`` 三个参数的元素数目必须相等。以下示例将解释切片如何工作: - -:: - - 示例1: - 给定: - data=[[1,2,3,4],[5,6,7,8],] - axes=[0,1] - starts=[1,0] - ends=[2,3] - 则: - result=[[5,6,7],] - - 示例2: - 给定: - data=[[1,2,3,4],[5,6,7,8],] - starts=[0,1] - ends=[-1,1000] # 此处-1表示第0维的反向第0个位置,索引值是1。 - 则: - result=[[2,3,4],] # 即 data[0:1, 1:4] - -参数: - - **input** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float16``, ``float32``,``float64``,``int32``,或 ``int64``。 - - **axes** (list|tuple)- 数据类型是 ``int32``。表示进行切片的轴。它是可选的,如果不存在,将被视为 :math:`[0,1,...,len(starts)- 1]`。 - - **starts** (list|tuple|Variable)- 数据类型是 ``int32``。如果 ``starts`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``starts`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示在各个轴上切片的起始索引值。 - - **ends** (list|tuple|Variable)- 数据类型是 ``int32``。如果 ``ends`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``ends`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示在各个轴上切片的结束索引值。 - -返回:多维 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``input`` 相同。 - -返回类型:Variable。 - -抛出异常: - - :code:`TypeError`:``starts`` 的类型应该是 list、tuple 或 Variable。 - - :code:`TypeError`:``ends`` 的类型应该是 list、tuple 或 Variable。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - input = fluid.layers.data( - name="input", shape=[3, 4, 5, 6], dtype='float32') - - # example 1: - # attr starts is a list which doesn't contain tensor Variable. - axes = [0, 1, 2] - starts = [-3, 0, 2] - ends = [3, 2, 4] - sliced_1 = fluid.layers.slice(input, axes=axes, starts=starts, ends=ends) - # sliced_1 is input[:, 0:3, 0:2, 2:4]. - - - # example 2: - # attr starts is a list which contain tensor Variable. - minus_3 = fluid.layers.fill_constant([1], "int32", -3) - sliced_2 = fluid.layers.slice(input, axes=axes, starts=[minus_3, 0, 2], ends=ends) - # sliced_2 is input[:, 0:3, 0:2, 2:4]. - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/smooth_l1_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/smooth_l1_cn.rst deleted file mode 100755 index 8b19838d11e7bc0687873b8a880c0d407328cbdd..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/smooth_l1_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_smooth_l1: - -smooth_l1 -------------------------------- - -.. py:function:: paddle.fluid.layers.smooth_l1(x, y, inside_weight=None, outside_weight=None, sigma=None) - -:alias_main: paddle.nn.functional.smooth_l1 -:alias: paddle.nn.functional.smooth_l1,paddle.nn.functional.loss.smooth_l1 -:old_api: paddle.fluid.layers.smooth_l1 - - - -该layer计算变量 ``x`` 和 ``y`` 的smooth L1 loss,它以 ``x`` 和 ``y`` 的第一维大小作为批处理大小。对于每个实例,按元素计算smooth L1 loss,然后计算所有loss。输出变量的形状是[batch_size, 1] - - -参数: - - **x** (Tensor|LoDTensor) - 数据类型为float32,rank至少为2的张量。smooth L1损失函数的输入,shape为[batch_size, dim1,…,dimN]。 - - **y** (Tensor|LoDTensor) - 数据类型为float32,rank至少为2的张量。与 ``x`` shape相同的目标值。 - - **inside_weight** (Tensor|None) - 数据类型为float32,rank至少为2的张量。这个输入是可选的,与x的shape应该相同。如果给定, ``(x - y)`` 的结果将乘以这个张量元素。 - - **outside_weight** (Tensor|None) - 数据类型为float32,一个rank至少为2的张量。这个输入是可选的,它的shape应该与 ``x`` 相同。 smooth L1 loss的输出会乘以这个张量。 - - **sigma** (float|NoneType) - smooth L1 loss layer的超参数。标量,默认值为1.0。 - -返回: smooth L1损失的输出值, shape为 [batch_size, 1] - -返回类型:Variable(Tensor),数据类型为float32的Tensor。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name="x", shape=[-1, 3], dtype="float32") - label = fluid.layers.data(name="y", shape=[-1, 3], dtype="float32") - result = fluid.layers.smooth_l1(data,label) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(3,3).astype("float32") - y = np.random.rand(3,3).astype("float32") - output= exe.run(feed={"x":x, "y":y}, - fetch_list=[result]) - print(output) - """ - output: - [array([[0.08220536], - [0.36652038], - [0.20541131]], dtype=float32)] - """ - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/soft_relu_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/soft_relu_cn.rst deleted file mode 100644 index dc8912ca4f15478b703df53a3f1a58f7e97c5668..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/soft_relu_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_soft_relu: - -soft_relu -------------------------------- - -.. py:function:: paddle.fluid.layers.soft_relu(x, threshold=40.0, name=None) - -:alias_main: paddle.nn.functional.soft_relu -:alias: paddle.nn.functional.soft_relu,paddle.nn.functional.activation.soft_relu -:old_api: paddle.fluid.layers.soft_relu - - - -SoftReLU 激活函数. - -.. math:: out=ln(1+exp(max(min(x,threshold),-threshold))) - -参数: - - **x** (Variable) - SoftReLU激活函数的输入,为数据类型为float32,float64的多维Tensor或者LoDTensor。 - - **threshold** (float) - SoftRelu的阈值,默认为40.0。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:一个Tensor,shape和输入Tensor相同。 - -返回类型:Variable(Tensor|LoDTensor),LoD信息与输入Tensor一致。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - inputs = fluid.layers.data(name="x", shape=[2, 2], dtype="float32") - output = fluid.layers.soft_relu(inputs, threshold=20.0) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([[0, 1],[2, 3]]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) # [array([[0.6931472, 1.3132616], [2.126928 , 3.0485873]], dtype=float32)] - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/softmax_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/softmax_cn.rst deleted file mode 100755 index a11f955072ab19183abde10ce55469e81bc1c696..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/softmax_cn.rst +++ /dev/null @@ -1,118 +0,0 @@ -.. _cn_api_fluid_layers_softmax: - -softmax -------------------------------- - -.. py:function:: paddle.fluid.layers.softmax(input, use_cudnn=False, name=None, axis=-1) - -:alias_main: paddle.nn.functional.softmax -:alias: paddle.nn.functional.softmax,paddle.nn.functional.activation.softmax -:old_api: paddle.fluid.layers.softmax - - - -该OP实现了softmax层。OP的计算过程如下: - -步骤1:输入 ``input`` 的 ``axis`` 维会被置换到最后一维; - -步骤2:将输入 ``Tensor`` 在逻辑上变换为二维矩阵。二维矩阵第一维(列长度)是输入除最后一维之外的其他维度值的乘积,第二维(行长度)和输入 ``axis`` 维的长度相同;对于矩阵的每一行,softmax操作对其进行重新缩放,使得该行的每个元素在 \[0,1\] 范围内,并且总和为1; - -步骤3:softmax操作执行完成后,执行步骤1和步骤2的逆运算,将二维矩阵恢复至和输入 ``input`` 相同的维度。 - -上述步骤2中softmax操作计算过程如下: - - - 对于二维矩阵的每一行,计算K维向量(K是输入第 ``axis`` 维的长度)中指定位置的指数值和全部位置指数值的和。 - - - 指定位置指数值与全部位置指数值之和的比值就是softmax操作的输出。 - -对于二维矩阵中的第i行和第j列有: - -.. math:: - - - Out[i,j] = \frac{exp(X[i,j])}{\sum_j exp(X[i,j])} - -- 示例1(矩阵一共有三维。axis = -1,表示沿着最后一维(即第三维)做softmax操作) - -.. code-block:: python - - 输入 - - X.shape = [2, 3, 4] - - X.data = [[[2.0, 3.0, 4.0, 5.0], - [3.0, 4.0, 5.0, 6.0], - [7.0, 8.0, 8.0, 9.0]], - [[1.0, 2.0, 3.0, 4.0], - [5.0, 6.0, 7.0, 8.0], - [6.0, 7.0, 8.0, 9.0]]] - - axis = -1 - - 输出 - - Out.shape = [2, 3, 4] - - Out.data = [[[0.0320586 , 0.08714432, 0.23688282, 0.64391426], - [0.0320586 , 0.08714432, 0.23688282, 0.64391426], - [0.07232949, 0.19661193, 0.19661193, 0.53444665]], - [[0.0320586 , 0.08714432, 0.23688282, 0.64391426], - [0.0320586 , 0.08714432, 0.23688282, 0.64391426], - [0.0320586 , 0.08714432, 0.23688282, 0.64391426]]] - -- 示例2(矩阵一共有三维。axis = 1,表示沿着第二维做softmax操作) - -.. code-block:: python - - 输入 - - X.shape = [2, 3, 4] - - X.data = [[[2.0, 3.0, 4.0, 5.0], - [3.0, 4.0, 5.0, 6.0], - [7.0, 8.0, 8.0, 9.0]], - [[1.0, 2.0, 3.0, 4.0], - [5.0, 6.0, 7.0, 8.0], - [6.0, 7.0, 8.0, 9.0]]] - - axis = 1 - - 输出 - - Out.shape = [2, 3, 4] - - Out.data = [[[0.00657326, 0.00657326, 0.01714783, 0.01714783], - [0.01786798, 0.01786798, 0.04661262, 0.04661262], - [0.97555875, 0.97555875, 0.93623955, 0.93623955]], - [[0.00490169, 0.00490169, 0.00490169, 0.00490169], - [0.26762315, 0.26762315, 0.26762315, 0.26762315], - [0.72747516, 0.72747516, 0.72747516, 0.72747516]]] - - -参数: - - **input** (Variable) - 任意维度的多维 ``Tensor`` ,数据类型为float32或float64。 - - **use_cudnn** (bool, 可选) - 指示是否用cudnn库。当 ``use_cudnn`` 为True时,在安装GPU版本Paddle并且本机安装cudnn库的前提下,使用GPU训练或推理时才有效。默认值:False。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **axis** (int, 可选) - 指示进行softmax计算的维度索引,其范围应为 :math:`[-1,rank-1]` ,其中rank是输入变量的秩。默认值:-1(表示对最后一维做softmax操作)。 - -返回:表示softmax操作结果的 ``Tensor`` ,数据类型和 ``input`` 一致,返回维度和 ``input`` 一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name="input", shape=[-1, 3],dtype="float32") - result = fluid.layers.softmax(data,axis=1) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(3, 3).astype("float32") - output= exe.run(feed={"input": x}, - fetch_list=[result[0]]) - print(output) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/space_to_depth_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/space_to_depth_cn.rst deleted file mode 100644 index bfa5dbbf5308f4d347effcbef18f55f131181653..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/space_to_depth_cn.rst +++ /dev/null @@ -1,97 +0,0 @@ -.. _cn_api_fluid_layers_space_to_depth: - -space_to_depth -------------------------------- - -.. py:function:: paddle.fluid.layers.space_to_depth(x, blocksize, name=None) - -:alias_main: paddle.nn.functional.space_to_depth -:alias: paddle.nn.functional.space_to_depth,paddle.nn.functional.vision.space_to_depth -:old_api: paddle.fluid.layers.space_to_depth - - - -该OP对成块的空间数据进行重组,输出一个输入张量的拷贝,其高度和宽度维度上的值移至通道维度。 - -重组时,依据 ``blocksize`` 指明的数据块大小, 对形为 ``[batch, channel, height, width]`` 的输入张量进行space_to_depth(广度至深度)运算,生成形为 ``[batch, channel * blocksize * blocksize, height/blocksize, width/blocksize]`` 的输出: - - - 在各位置上,不重叠的,大小为 ``blocksize * blocksize`` 的块重组入深度depth - - 输入各个块中的Y, X坐标变为输出张量通道索引的高序部位 - - 输入 ``channel`` 需可以被 ``blocksize`` 的平方整除 - - 输入的高度和宽度需可以被 ``blocksize`` 整除 - -该OP适用于在卷积间重放缩激活函数,并保持所有的数据。 - -范例如下: - -:: - - 给定形状为[1, 1, 4, 4]的输入 x: - x.data = [[[[1, 2, 5, 6], - [3, 4, 7, 8], - [9, 10, 13, 14], - [11, 12, 15, 16]]]] - 设置 blocksize = 2 - - 得到形状为[1, 4, 2, 2]的输出 out: - out.data = [[[[1, 2], [3, 4]], - [[5, 6], [7, 8]], - [[9, 10], [11, 12]], - [[13, 14], [15, 16]]]] - - - - -参数: - - **x** (Variable) – 输入,形状为 ``[batch, channel, height, width]`` 的4维Tensor或LoD Tensor。数据类型支持int32,int64,float32或float64。 - - **blocksize** (int) – 在每个特征图上选择元素时采用的块大小,应该 >= 2 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出,形状为 ``[batch, channel * blocksize * blocksize, height/blocksize, width/blocksize]`` 的4维Tensor或LoD Tensor。数据类型与输入 ``x`` 一致。 - -返回类型:Variable - -抛出异常: - - ``TypeError`` - ``blocksize`` 必须是int64类型 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.data( - name='data', shape=[1, 4, 2, 2], dtype='float32') - space_to_depthed = fluid.layers.space_to_depth( - x=data, blocksize=2) - - exe = fluid.Executor(fluid.CPUPlace()) - data_np = np.arange(0,16).reshape((1,4,2,2)).astype('float32') - - print(data_np) - #array([[[[ 0., 1.], [ 2., 3.]], - # [[ 4., 5.], [ 6., 7.]], - # [[ 8., 9.], [10., 11.]], - # [[12., 13.], [14., 15.]]]], dtype=float32) - - out_main = exe.run(fluid.default_main_program(), - feed={'data': data_np}, - fetch_list=[space_to_depthed]) - - print(out_main) - #[array([[[[ 0.]], [[ 4.]], [[ 1.]], [[ 5.]], - # [[ 8.]], [[12.]], [[ 9.]], [[13.]], - # [[ 2.]], [[ 6.]], [[ 3.]], [[ 7.]], - # [[10.]], [[14.]], [[11.]], [[15.]]]], dtype=float32)] - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/spectral_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/spectral_norm_cn.rst deleted file mode 100644 index 9ca240e3c7758177fba78b97db6b27d046091340..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/spectral_norm_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_spectral_norm: - -spectral_norm -------------------------------- - - -.. py:function:: paddle.fluid.layers.spectral_norm(weight, dim=0, power_iters=1, eps=1e-12, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**Spectral Normalization Layer** - -该OP用于计算了fc、conv1d、conv2d、conv3d层的权重参数的谱正则值,输入权重参数应分别为2-D, 3-D, 4-D, 5-D张量,输出张量与输入张量shape相同。谱特征值计算方式如下。 - -步骤1:生成形状为[H]的向量U,以及形状为[W]的向量V,其中H是输入权重张量的第 ``dim`` 个维度,W是剩余维度的乘积。 - -步骤2: ``power_iters`` 应该是一个正整数,用U和V迭代计算 ``power_iters`` 轮,迭代步骤如下。 - -.. math:: - - \mathbf{v} &:= \frac{\mathbf{W}^{T} \mathbf{u}}{\|\mathbf{W}^{T} \mathbf{u}\|_2}\\ - \mathbf{u} &:= \frac{\mathbf{W}^{T} \mathbf{v}}{\|\mathbf{W}^{T} \mathbf{v}\|_2} - -步骤3:计算 :math:`\sigma(\mathbf{W})` 并特征值值归一化。 - -.. math:: - \sigma(\mathbf{W}) &= \mathbf{u}^{T} \mathbf{W} \mathbf{v}\\ - \mathbf{W} &= \frac{\mathbf{W}}{\sigma(\mathbf{W})} - -可参考: `Spectral Normalization `_ - -参数: - - **weight** (Variable) - spectral_norm算子的输入权重张量,可以是2-D, 3-D, 4-D, 5-D Tensor,它是fc、conv1d、conv2d、conv3d层的权重,数据类型为float32或float64。 - - **dim** (int) - 将输入(weight)重塑为矩阵之前应排列到第一个的维度索引,如果input(weight)是fc层的权重,则应设置为0;如果input(weight)是conv层的权重,则应设置为1,默认为0。 - - **power_iters** (int) - 将用于计算spectral norm的功率迭代次数,默认值1 - - **eps** (float) - epsilon用于保证计算规范中的数值稳定性,分母会加上 ``eps`` 防止除零,默认1e-12 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - -返回:Variable(Tensor) 谱正则化后权重张量,维度与输入 ``weight`` 一致。 - -返回类型:变量(Variable),数据类型与输入 ``weight`` 一致。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - weight = fluid.data(name='weight', shape=[2, 8, 32, 32], dtype='float32') - x = fluid.layers.spectral_norm(weight=weight, dim=1, power_iters=2) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/split_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/split_cn.rst deleted file mode 100644 index 52f85fcccef62b2dc97d34bb4626b8fbefa1435b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/split_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_paddle_tensor_split -split -------------------------------- - -.. py:function:: paddle.tensor.split(x, num_or_sections, axis=0, name=None) - - - -该OP将输入Tensor分割成多个子Tensor。 - -**参数**: - - **x** (Tensor) - 输入变量,数据类型为bool, float16, float32,float64,int32,int64的多维Tensor。 - - **num_or_sections** (int|list|tuple) - 如果 ``num_or_sections`` 是一个整数,则表示Tensor平均划分为相同大小子Tensor的数量。如果 ``num_or_sections`` 是一个list或tuple,那么它的长度代表子Tensor的数量,它的元素可以是整数或者形状为[1]的Tensor,依次代表子Tensor需要分割成的维度的大小。list或tuple的长度不能超过输入Tensor待分割的维度的大小。在list或tuple中,至多有一个元素值为-1,表示该值是由 ``x`` 的维度和其他 ``num_or_sections`` 中元素推断出来的。例如对一个维度为[4,6,6]Tensor的第三维进行分割时,指定 ``num_or_sections=[2,-1,1]`` ,输出的三个Tensor维度分别为:[4,6,2],[4,6,3],[4,6,1]。 - - **axis** (int|Tensor,可选) - 整数或者形状为[1]的Tensor,数据类型为int32或int64。表示需要分割的维度。如果 ``axis < 0`` ,则划分的维度为 ``rank(x) + axis`` 。默认值为0。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:分割后的Tensor列表。 - -抛出异常: - - :code:`TypeError`:``x`` 的数据类型不是float16、float32、float64、int32或int64时 。 - - :code:`TypeError`:``num_or_sections`` 不是int、list 或 tuple时。 - - :code:`TypeError`:``axis`` 不是 int 或 Tensor时。当 ``axis`` 为Tensor,其数据类型不是int32或int64时。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - - paddle.enable_imperative() - # x is a Tensor which shape is [3, 9, 5] - x_np = np.random.random([3, 9, 5]).astype("int32") - x = paddle.imperative.to_variable(x_np) - - out0, out1, out22 = paddle.split(x, num_or_sections=3, axis=1) - # out0.shape [3, 3, 5] - # out1.shape [3, 3, 5] - # out2.shape [3, 3, 5] - - out0, out1, out2 = paddle.split(x, num_or_sections=[2, 3, 4], axis=1) - # out0.shape [3, 2, 5] - # out1.shape [3, 3, 5] - # out2.shape [3, 4, 5] - - out0, out1, out2 = paddle.split(x, num_or_sections=[2, 3, -1], axis=1) - # out0.shape [3, 2, 5] - # out1.shape [3, 3, 5] - # out2.shape [3, 4, 5] - - # axis is negative, the real axis is (rank(x) + axis) which real - # value is 1. - out0, out1, out2 = paddle.split(x, num_or_sections=3, axis=-2) - # out0.shape [3, 3, 5] - # out1.shape [3, 3, 5] - # out2.shape [3, 3, 5] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/squeeze_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/squeeze_cn.rst deleted file mode 100644 index 026f38455ff2e877cb13952e0c446427196ee83a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/squeeze_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_layers_squeeze: - -squeeze -------------------------------- - -.. py:function:: paddle.fluid.layers.squeeze(input, axes, name=None) - - - - -该OP会根据axes压缩输入Tensor的维度。如果指定了axes,则会删除axes中指定的维度,axes指定的维度要等于1。如果没有指定axes,那么所有等于1的维度都会被删除。 - -- 例1: - -.. code-block:: python - - 输入: - X.shape = [1,3,1,5] - axes = [0] - 输出; - Out.shape = [3,1,5] -- 例2: - -.. code-block:: python - - 输入: - X.shape = [1,3,1,5] - axes = [] - 输出: - Out.shape = [3,5] -- 例3: - -.. code-block:: python - - 输入: - X.shape = [1,3,1,5] - axes = [-2] - 输出: - Out.shape = [1,3,5] - -参数: - - **input** (Variable) - 输入任意维度的Tensor。 支持的数据类型:float32,float64,int8,int32,int64。 - - **axes** (list) - 输入一个或一列整数,代表要压缩的轴。axes的范围: :math:`[-rank(input), rank(input))` 。 axes为负数时, :math:`axes=axes+rank(input)` 。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 返回对维度进行压缩后的Tensor。数据类型与输入Tensor一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - x = layers.data(name='x', shape=[5, 1, 10]) - y = layers.squeeze(input=x, axes=[1]) #y.shape=[5, 10] - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/stack_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/stack_cn.rst deleted file mode 100644 index 2c2a88e6845d7d507f2b8274cf0b6247eb79aaef..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/stack_cn.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. _cn_api_fluid_layers_stack: - -stack -------------------------------- - -.. py:function:: paddle.fluid.layers.stack(x, axis=0) - - - - - -该OP沿 ``axis`` 轴对输入 ``x`` 进行堆叠操作。 - -- 例1: - -.. code-block:: python - - 输入: - x[0].shape = [1, 2] - x[0].data = [ [1.0 , 2.0 ] ] - x[1].shape = [1, 2] - x[1].data = [ [3.0 , 4.0 ] ] - x[2].shape = [1, 2] - x[2].data = [ [5.0 , 6.0 ] ] - - 参数: - axis = 0 #沿着第0维对输入x进行堆叠操作。 - - 输出: - Out.shape = [3, 1, 2] - Out.data = [ [ [1.0, 2.0] ], - [ [3.0, 4.0] ], - [ [5.0, 6.0] ] ] - - -- 例2: - -.. code-block:: python - - 输入: - x[0].shape = [1, 2] - x[0].data = [ [1.0 , 2.0 ] ] - x[1].shape = [1, 2] - x[1].data = [ [3.0 , 4.0 ] ] - x[2].shape = [1, 2] - x[2].data = [ [5.0 , 6.0 ] ] - - 参数: - axis = 1 or axis = -2 #沿着第1维对输入进行堆叠操作。 - - 输出: - Out.shape = [1, 3, 2] - Out.data = [ [ [1.0, 2.0] - [3.0, 4.0] - [5.0, 6.0] ] ] - -参数: - - **x** (Variable|list(Variable)) – 输入 x 可以是单个Tensor,或是多个Tensor组成的列表。如果 x 是一个列表,那么这些Tensor的维度必须相同。 假设输入是N维Tensor :math:`[d_0,d_1,...,d_{n−1}]`,则输出变量的维度为N+1维 :math:`[d_0,d_1,...d_{axis-1},len(x),d_{axis}...,d_{n−1}]` 。支持的数据类型: float32,float64,int32,int64。 - - **axis** (int, 可选) – 指定对输入Tensor进行堆叠运算的轴,有效 ``axis`` 的范围是: :math:`[-(R+1), R+1)`,R是输入中第一个Tensor的rank。如果 ``axis`` < 0,则 :math:`axis=axis+rank(x[0])+1` 。axis默认值为0。 - -返回: 堆叠运算后的Tensor,数据类型与输入Tensor相同。输出维度等于 :math:`rank(x[0])+1` 维。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - x1 = layers.data(name='x1', shape=[1, 2], dtype='int32') - x2 = layers.data(name='x2', shape=[1, 2], dtype='int32') - #对Tensor List进行堆叠 - data = layers.stack([x1,x2]) # 沿着第0轴进行堆叠,data.shape=[2, 1, 2] - - data = layers.stack([x1,x2], axis=1) # 沿着第1轴进行堆叠,data.shape=[1, 2, 2] - - #单个Tensor的堆叠 - data = layers.stack(x1) # 沿着第0轴进行堆叠,data.shape=[1, 1, 2] - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/stanh_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/stanh_cn.rst deleted file mode 100644 index d592060093583d3791ba6d4ed3f0d038c603ded5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/stanh_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_stanh: - -stanh -------------------------------- - -.. py:function:: paddle.fluid.layers.stanh(x, scale_a=0.67, scale_b=1.7159, name=None) - -:alias_main: paddle.stanh -:alias: paddle.stanh,paddle.tensor.stanh,paddle.tensor.math.stanh -:old_api: paddle.fluid.layers.stanh - - - -STanh 激活算子(STanh Activation Operator.) - -.. math:: - \\out=b*\frac{e^{a*x}-e^{-a*x}}{e^{a*x}+e^{-a*x}}\\ - -参数: - - **x** (Tensor|LoDTensor) - 数据类型为float32,float64。STanh operator的输入 - - **scale_a** (float) - 输入的a的缩放参数 - - **scale_b** (float) - b的缩放参数 - - **name** (str|None) - 这个层的名称(可选)。如果设置为None,该层将被自动命名 - -返回: 与输入shape相同的张量 - -返回类型: Variable(Tensor),数据类型为float32的Tensor。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name="input", shape=[-1, 3]) - result = fluid.layers.stanh(data,scale_a=0.67, scale_b=1.72) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.random(size=(3, 3)).astype('float32') - output= exe.run(feed={"input": x}, - fetch_list=[result]) - print(output) - """ - output: - [array([[0.626466 , 0.89842904, 0.7501062 ], - [0.25147712, 0.7484996 , 0.22902708], - [0.62705994, 0.23110689, 0.56902856]], dtype=float32)] - """ - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/strided_slice_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/strided_slice_cn.rst deleted file mode 100644 index 164559652c31746cd9e77d182e43263839fc5451..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/strided_slice_cn.rst +++ /dev/null @@ -1,89 +0,0 @@ -.. _cn_api_fluid_layers_strided_slice: - -strided_slice -------------------------------- -.. py:function:: paddle.fluid.layers.strided_slice(input, axes, starts, ends, strides) - -:alias_main: paddle.strided_slice -:alias: paddle.strided_slice,paddle.tensor.strided_slice,paddle.tensor.manipulation.strided_slice -:old_api: paddle.fluid.layers.strided_slice - - -strided_slice算子。 - -该OP沿多个轴生成 ``input`` 的切片,与numpy类似: https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html。该OP使用 ``axes`` 、 ``starts`` 和 ``ends`` 属性来指定轴列表中每个轴的起点和终点位置,并使用此信息来对 ``input`` 切片。如果向 ``starts`` 或 ``ends`` 传递负值如 :math:`-i`,则表示该轴的反向第 :math:`i-1` 个位置(这里以0为初始位置), ``strides`` 表示切片的步长, ``strides`` 如果为负数,则按照反方向进行切片。如果传递给 ``starts`` 或 ``ends`` 的值大于n(维度中的元素数目),则表示n。当切片一个未知数量的维度时,建议传入 ``INT_MAX``。 ``axes`` 、 ``starts`` 和 ``ends`` 以及 ``strides`` 四个参数的元素数目必须相等。以下示例将解释切片如何工作: - -:: - - - 示例1: - 给定: - data=[[1,2,3,4],[5,6,7,8],] - axes=[0,1] - starts=[1,0] - ends=[2,3] - strides=[1,1] - - 则: - result=[[5,6,7],] - 示例2: - 给定: - data=[[1,2,3,4],[5,6,7,8],] - axes=[0,1] - starts=[1,3] - ends=[2,0] - strides=[1,-1] - - 则: - result=[[8,7,6],] - 示例3: - 给定: - data=[[1,2,3,4],[5,6,7,8],] - axes=[0,1] - starts=[0,1] - ends=[-1,1000] # 此处-1表示第0维的反向第0个位置,索引值是1。 - strides =[1,3] - 则: - result=[[2],] - - -参数: - - - **input** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32``,或 ``int64``。 - - **axes** (list|tuple)- 数据类型是 ``int32``。表示进行切片的轴。 - - **starts** (list|tuple|Variable)- 数据类型是 ``int32``。如果 ``starts`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``starts`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示在各个轴上切片的起始索引值。 - - **ends** (list|tuple|Variable)- 数据类型是 ``int32``。如果 ``ends`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``ends`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示在各个轴上切片的结束索引值。 - - **strides** (list|tuple|Variable)- 数据类型是 ``int32``。如果 ``strides`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``strides`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示在各个轴上切片的步长。 - - -返回:多维 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``input`` 相同。 - - -返回类型:Variable。 - -抛出异常: - - :code:`TypeError`:``starts`` 的类型应该是 list、tuple 或 Variable。 - - :code:`TypeError`:``ends`` 的类型应该是 list、tuple 或 Variable。 - - :code:`TypeError`:``strides`` 的类型应该是 list、tuple 或 Variable。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data( - name="input", shape=[3, 4, 5, 6], dtype='float32', append_batch_size=False) - # example 1: - # attr starts is a list which doesn't contain tensor Variable. - axes = [1, 2, 3] - starts = [-3, 0, 2] - ends = [3, 2, 4] - strides_1 = [1, 1, 1] - strides_2 = [1, 1, 2] - sliced_1 = fluid.layers.strided_slice(input, axes=axes, starts=starts, ends=ends, strides=strides_1) - # sliced_1 is input[:, 0:3:1, 0:2:1, 2:4:1]. - # example 2: - # attr starts is a list which contain tensor Variable. - minus_3 = fluid.layers.fill_constant([1], "int32", -3) - sliced_2 = fluid.layers.strided_slice(input, axes=axes, starts=[minus_3, 0, 2], ends=ends, strides=strides_2) - # sliced_2 is input[:, 0:3:1, 0:2:1, 2:4:2]. diff --git a/doc/paddle/api/paddle/fluid/layers/nn/sum_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/sum_cn.rst deleted file mode 100644 index 89825e0b4254f68efd155310f7db1edbd391c82e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/sum_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_tensor_sum: - -sum -------------------------------- - -.. py:function:: paddle.sum(input, dim=None, dtype=None, keep_dim=False, name=None) - -:alias_main: paddle.sum -:alias: paddle.sum,paddle.tensor.sum,paddle.tensor.math.sum -:update_api: paddle.fluid.layers.reduce_sum - - - -该OP是对指定维度上的Tensor元素进行求和运算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)- 求和运算的维度。如果为None,则计算所有元素的和并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **dtype** (str , 可选)- 输出变量的数据类型。若参数为空,则输出变量的数据类型和输入变量相同,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行求和运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - out1 = paddle.sum(x) # [3.5] - out2 = paddle.sum(x, dim=0) # [0.3, 0.5, 1.1, 1.6] - out3 = paddle.sum(x, dim=-1) # [1.9, 1.6] - out4 = paddle.sum(x, dim=1, keep_dim=True) # [[1.9], [1.6]] - - # y 是一个shape为[2, 2, 2]的Tensor元素如下: - # [[[1, 2], [3, 4]], - # [[5, 6], [7, 8]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - out5 = paddle.sum(y, dim=[1, 2]) # [10, 26] - out6 = paddle.sum(y, dim=[0, 1]) # [16, 20] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/swish_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/swish_cn.rst deleted file mode 100644 index 85ab54d4c1830bdac80f80e1e1454dc3e0308808..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/swish_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_swish: - -swish -------------------------------- - -.. py:function:: paddle.fluid.layers.swish(x, beta=1.0, name=None) - -:alias_main: paddle.nn.functional.swish -:alias: paddle.nn.functional.swish,paddle.nn.functional.activation.swish -:old_api: paddle.fluid.layers.swish - - - -逐元素计算 Swish 激活函数,参考 `Searching for Activation Functions `_ 。 - -.. math:: - out = \frac{x}{1 + e^{- beta * x}} - -参数: - - **x** (Variable) - 多维 Tensor 或 LoDTensor,数据类型为 float32,float64。 - - **beta** (float) - Swish operator 的常量 beta,默认值为 1.0。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - Swish op 的结果,多维 Tensor 或 LoDTensor。数据类型为 float32 或 float64,数据类型以及形状和输入 x 一致。 - -返回类型: - - Variable - - -**代码示例:** - -.. code-block:: python - - # 静态图使用 - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.swish(x, beta=2.0) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[-1.1239197 , 1.3391294 , 0.03921051], - # [ 1.1970421 , 0.02440812, 1.2055548 ]], dtype=float32) - y_np - # array([[-0.2756806 , 1.0610548 , 0.01998957], - # [ 0.9193261 , 0.01235299, 0.9276883 ]], dtype=float32) - -.. code-block:: python - - # 动态图使用 - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.swish(x) - y_np = y.numpy() - data - # array([[-0.0816701 , 1.1603649 , -0.88325626], - # [ 0.7522361 , 1.0978601 , 0.12987892]], dtype=float32) - y_np - # array([[-0.03916847, 0.8835007 , -0.25835553], - # [ 0.51126915, 0.82324016, 0.06915068]], dtype=float32) - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/temporal_shift_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/temporal_shift_cn.rst deleted file mode 100644 index acde7a2951aeaec7760094c27332bbe023da3cdc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/temporal_shift_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_temporal_shift: - -temporal_shift -------------------------------- -.. py:function:: paddle.fluid.layers.temporal_shift(x, seg_num, shift_ratio=0.25, name=None) - -:alias_main: paddle.nn.functional.temporal_shift -:alias: paddle.nn.functional.temporal_shift,paddle.nn.functional.extension.temporal_shift -:old_api: paddle.fluid.layers.temporal_shift - - - -该OP用于对输入X做时序通道T上的位移操作,为TSM(Temporal Shift Module)中使用的操作。 - -输入(X)的形状应为[N*T, C, H, W],N是批大小,T是 ``seg_num`` 指定的时间段号,C是通道号,H和W是特征的高度和宽度。 - -时间偏移计算如下: - -步骤1:将输入(X)reshape为[N, T, C, H, W]。 - -步骤2:填充0到第二个(T)尺寸的变形结果,填充宽度每边为1,填充结果的形状为[N,T+2,C,H,W]。 - -步骤3:假设 ``shift_ratio`` 为1/4,切片填充结果如下: - -.. math:: - - slice1 &= x[:, :T, :C/4, :, :] - - slice2 &= x[:, 2:T+2, C/4:C/2, :, :] - - slice3 &= x[:, 1:T+1, C/2:, :, :] - -步骤4:沿第3(C)维连接三个切片,并将结果重塑为[N*T, C, H, W]。 - -有关时序移动的详细信息,请参阅文件: `Temporal Shift Module `_ - -参数: - - **x** (Variable) – 时移算符的输入张量。维度为 :math:`[N*T,C,H,W]` 的4-D Tensor。N为批量大小,T为时间段数,C为信道数,H为特征高度,W为特征宽度,数据类型为float32或float64。 - - **seg_num** (int) – 时间段编号,这应该是一个正整数。 - - **shift_ratio** (float) – 通道的移位比、通道的第一个 ``shift_ratio`` 部分沿时间维度移动-1,通道的第二个 ``shift_ratio`` 部分沿时间维度移动1,范围须在[0, 0.5]内。默认值0.25 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - -返回:Variable(Tensor) 时序位移后的输出张量,维度与输入 ``x`` 一致。 - -返回类型:变量(Variable),数据类型与输入 ``x`` 一致。 - -抛出异常: ``TypeError`` – seg_num 必须是int类型 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.data(name='input', shape=[None,4,2,2], dtype='float32') - out = fluid.layers.temporal_shift(x=input, seg_num=2, shift_ratio=0.2) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/topk_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/topk_cn.rst deleted file mode 100644 index acef758bbb5c06c5734742830c2b046f372495af..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/topk_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_topk: - -topk -------------------------------- -.. py:function:: paddle.fluid.layers.topk(input, k, name=None) - -:alias_main: paddle.topk -:alias: paddle.topk,paddle.tensor.topk,paddle.tensor.search.topk -:old_api: paddle.fluid.layers.topk - - - -此OP用于查找输入Tensor的最后一维的前k个最大项,返回它们的值和索引。 -如果输入是1-D Tensor,则找到Tensor的前k个最大项,并输出前k个最大项的值和索引。如果输入是更高阶的Tensor,则该OP会基于最后一维计算前k项。 - -- 例1: - -.. code-block:: python - - 输入: - input.shape = [3, 4] - input.data = [[5, 4, 2, 3], - [9, 7, 10, 25], - [6, 2, 10, 1]] - k = 2 - - 输出: - 第一个输出: - values.shape = [3, 2] - values.data = [[5, 4], - [10, 25], - [6, 10]] - - 第二个输出: - indices.shape = [3, 2] - indices.data = [[0, 1], - [2, 3], - [0, 2]] - - -参数: - - **input** (Variable) - 输入的Tensor,支持的数据类型: float32,float64。 - - **k** (int|Variable) - 指定在输入Tensor最后一维中寻找最大前多少项。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - ``values``: 输入Tensor最后维切片的最大前k项。数据类型同输入Tensor一致。Tensor维度等于 :math:`input.shape[:-1]+ [k]` 。 - - - ``indices``: 输入Tensor最后维切片最大前k项值的索引,数据类型为int64,维度同values的维度。 - -抛出异常: - - ``ValueError`` : 如果k<1或者k大于输入的最后维。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - input = layers.data(name="input", shape=[13, 11], dtype='float32') - top5_values, top5_indices = layers.topk(input, k=5) #top5_values.shape=[13, 5],top5_indices.shape=[13, 5] - - # 1D Tensor - input1 = layers.data(name="input1", shape=[13], dtype='float32') - top5_values, top5_indices = layers.topk(input1, k=5) #top5_values.shape=[5],top5_indices.shape=[5] - - # k=Variable - input2 = layers.data(name="input2", shape=[13, 11], dtype='float32') - vk = layers.data(name="vk", shape=[1], dtype='int32') # 把k值保存在vk.data[0]中 - vk_values, vk_indices = layers.topk(input2, k=vk) #vk_values.shape=[13, k],vk_indices.shape=[13, k] - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/transpose_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/transpose_cn.rst deleted file mode 100644 index b9d6bfb644cbd2210c2ab22818c4ca0609eba906..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/transpose_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_transpose: - -transpose -------------------------------- - -.. py:function:: paddle.fluid.layers.transpose(x,perm,name=None) - -:alias_main: paddle.transpose -:alias: paddle.transpose,paddle.tensor.transpose,paddle.tensor.linalg.transpose,paddle.tensor.manipulation.transpose -:old_api: paddle.fluid.layers.transpose - - - -该OP根据perm对输入的多维Tensor进行数据重排。返回多维Tensor的第i维对应输入Tensor的perm[i]维。 - -参数: - - **x** (Variable) - 输入:x:[N_1, N_2, ..., N_k, D]多维Tensor,可选的数据类型为float16, float32, float64, int32, int64。 - - **perm** (list) - perm长度必须和X的维度相同,并依照perm中数据进行重排。 - - **name** (str) - 该层名称(可选)。 - -返回: 多维Tensor - -返回类型:Variable - -**示例**: - -.. code-block:: python - - x = [[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] - [[13 14 15 16] [17 18 19 20] [21 22 23 24]]] - shape(x) = [2,3,4] - - # 例0 - perm0 = [1,0,2] - y_perm0 = [[[ 1 2 3 4] [13 14 15 16]] - [[ 5 6 7 8] [17 18 19 20]] - [[ 9 10 11 12] [21 22 23 24]]] - shape(y_perm0) = [3,2,4] - - # 例1 - perm1 = [2,1,0] - y_perm1 = [[[ 1 13] [ 5 17] [ 9 21]] - [[ 2 14] [ 6 18] [10 22]] - [[ 3 15] [ 7 19] [11 23]] - [[ 4 16] [ 8 20] [12 24]]] - shape(y_perm1) = [4,3,2] - - -**代码示例**: - -.. code-block:: python - - # 请使用 append_batch_size=False 来避免 - # 在数据张量中添加多余的batch大小维度 - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 3, 4], - dtype='float32', append_batch_size=False) - x_transposed = fluid.layers.transpose(x, perm=[1, 0, 2]) - print(x_transposed.shape) - #(3L, 2L, 4L) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/unbind_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/unbind_cn.rst deleted file mode 100644 index 1ed191175d7e85592225ffc3c19c8faeda8c83d2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/unbind_cn.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _cn_api_paddle_tensor_unbind -unbind -------------------------------- - -.. py:function:: paddle.tensor.unbind(input, axis=0) - -:alias_main: paddle.unbind -:alias: paddle.unbind,paddle.tensor.unbind,paddle.tensor.manipulation.unbind - - - -该OP将输入Tensor按照指定的维度分割成多个子Tensor。 - -**参数**: - - **input** (Variable) - 输入变量,数据类型为float32,float64,int32,int64的多维Tensor。 - - **axis** (int32|int64,可选) - 数据类型为int32或int64,表示需要分割的维度。如果axis < 0,则划分的维度为rank(input) + axis。默认值为0。 - -**返回**:分割后的Tensor列表。 - -**返回类型**:列表(Variable),数据类型为int32,int64,float32,float64。 - -**代码示例**: - -.. code-block:: python - - import paddle - # input is a variable which shape is [3, 4, 5] - input = paddle.fluid.data( - name="input", shape=[3, 4, 5], dtype="float32") - [x0, x1, x2] = paddle.tensor.unbind(input, axis=0) - # x0.shape [4, 5] - # x1.shape [4, 5] - # x2.shape [4, 5] - [x0, x1, x2, x3] = paddle.tensor.unbind(input, axis=1) - # x0.shape [3, 5] - # x1.shape [3, 5] - # x2.shape [3, 5] - # x3.shape [3, 5] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/unfold_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/unfold_cn.rst deleted file mode 100644 index 4422467062eb9865d286f8a08faf834b4d256c76..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/unfold_cn.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. _cn_api_fluid_layers_unfold: - -unfold -------------------------------- - -.. py:function:: paddle.fluid.layers.unfold(x, kernel_size, strides=1, paddings=0, dilation=1, name=None) - -:alias_main: paddle.nn.functional.unfold -:alias: paddle.nn.functional.unfold,paddle.nn.functional.common.unfold -:old_api: paddle.fluid.layers.unfold - - - -该OP实现的功能与卷积中用到的im2col函数一样,通常也被称作为im2col过程。对于每一个卷积核覆盖下的区域,元素会被重新排成一列。当卷积核在整个图片上滑动时,将会形成一系列的列向量。对于每一个输入形状为[N, C, H, W]的 ``x`` ,都将会按照下面公式计算出一个形状为[N, Cout, Lout]的输出。 - - -.. math:: - - dkernel[0] &= dilations[0] * (kernel\_sizes[0] - 1) + 1 - - dkernel[1] &= dilations[1] * (kernel\_sizes[1] - 1) + 1 - - hout &= \frac{H + paddings[0] + paddings[2] - dkernel[0]}{strides[0]} + 1 - - wout &= \frac{W + paddings[1] + paddings[3] - dkernel[1]}{strides[1]} + 1 - - Cout &= C * kernel\_sizes[0] * kernel\_sizes[1] - - Lout &= hout * wout - -**样例**: - -:: - - Given: - x.shape = [5, 10, 25, 25] - kernel_size = [3, 3] - strides = 1 - paddings = 1 - - Return: - out.shape = [5, 90, 625] - - -参数: - - **x** (Variable) – 输入4-D Tensor,形状为[N, C, H, W],数据类型为float32或者float64 - - **kernel_size** (int|list of int) – 卷积核的尺寸,整数或者整型列表。如果为整型列表,应包含两个元素 ``[k_h, k_w]`` ,卷积核大小为 ``k_h * k_w`` ;如果为整数k,会被当作整型列表 ``[k, k]`` 处理 - - **strides** (int|list of int,可选) – 卷积步长,整数或者整型列表。如果为整型列表,应该包含两个元素 ``[stride_h, stride_w]`` 。如果为整数,则 ``stride_h = stride_w = strides`` 。默认值为1 - - **paddings** (int|list of int,可选) – 每个维度的扩展, 整数或者整型列表。如果为整型列表,长度应该为4或者2;长度为4 对应的padding参数是:[padding_top, padding_left,padding_bottom, padding_right],长度为2对应的padding参数是[padding_h, padding_w],会被当作[padding_h, padding_w, padding_h, padding_w]处理。如果为整数padding,则会被当作[padding, padding, padding, padding]处理。默认值为0 - - **dilations** (int|list of int,可选) – 卷积膨胀,整型列表或者整数。如果为整型列表,应该包含两个元素[dilation_h, dilation_w]。如果是整数dilation,会被当作整型列表[dilation, dilation]处理。默认值为1 - - **name** (str|None,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - - -返回: unfold操作之后的结果,形状如上面所描述的[N, Cout, Lout],Cout每一个滑动block里面覆盖的元素个数,Lout是滑动block的个数,数据类型与 ``x`` 相同 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name = 'data', shape = [3, 224, 224], dtype = 'float32') - y = fluid.layers.unfold(x, [3, 3], 1, 1, 1) - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/uniform_random_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/uniform_random_cn.rst deleted file mode 100644 index 14e921926463fb4f02aa1b1bf133e2bc2f8c9bd7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/uniform_random_cn.rst +++ /dev/null @@ -1,75 +0,0 @@ -.. _cn_api_fluid_layers_uniform_random: - -uniform_random -------------------------------- - -.. py:function:: paddle.fluid.layers.uniform_random(shape, dtype='float32', min=-1.0, max=1.0, seed=0, name=None) - - - - -该OP返回数值服从范围[``min``, ``max``)内均匀分布的随机Tensor,形状为 ``shape``,数据类型为 ``dtype``。 - -:: - - 示例1: - 给定: - shape=[1,2] - 则输出为: - result=[[0.8505902, 0.8397286]] - -参数: - - **shape** (list|tuple|Tensor) - 生成的随机Tensor的形状。如果 ``shape`` 是list、tuple,则其中的元素可以是int,或者是形状为[1]且数据类型为int32、int64的Tensor。如果 ``shape`` 是Tensor,则是数据类型为int32、int64的1-D Tensor。 - - **dtype** (str|np.dtype|core.VarDesc.VarType, 可选) - 输出Tensor的数据类型,支持float32、float64。默认值为float32。 - - **min** (float|int,可选) - 要生成的随机值范围的下限,min包含在范围中。支持的数据类型:float、int。默认值为-1.0。 - - **max** (float|int,可选) - 要生成的随机值范围的上限,max不包含在范围中。支持的数据类型:float、int。默认值为1.0。 - - **seed** (int,可选) - 随机种子,用于生成样本。0表示使用系统生成的种子。注意如果种子不为0,该操作符每次都生成同样的随机数。支持的数据类型:int。默认为 0。 - - **name** (str, 可选) - 输出的名字。一般无需设置,默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: - Tensor:数值服从范围[``min``, ``max``)内均匀分布的随机Tensor,形状为 ``shape``,数据类型为 ``dtype``。 - -抛出异常: - - ``TypeError`` - 如果 ``shape`` 的类型不是list、tuple、Tensor。 - - ``TypeError`` - 如果 ``dtype`` 不是float32、float64。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - startup_program = fluid.Program() - train_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - # example 1: - # attr shape is a list which doesn't contain Tensor. - result_1 = fluid.layers.uniform_random(shape=[3, 4]) - - # example 2: - # attr shape is a list which contains Tensor. - dim_1 = fluid.layers.fill_constant([1],"int64",3) - dim_2 = fluid.layers.fill_constant([1],"int32",5) - result_2 = fluid.layers.uniform_random(shape=[dim_1, dim_2]) - - # example 3: - # attr shape is a Tensor, the data type must be int32 or int64 - var_shape = fluid.data(name='var_shape', shape=[2], dtype="int64") - result_3 = fluid.layers.uniform_random(var_shape) - var_shape_int32 = fluid.data(name='var_shape_int32', shape=[2], dtype="int32") - result_4 = fluid.layers.uniform_random(var_shape_int32) - shape_1 = np.array([3,4]).astype("int64") - shape_2 = np.array([3,4]).astype("int32") - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(startup_program) - outs = exe.run(train_program, feed = {'var_shape':shape_1, 'var_shape_int32':shape_2}, - fetch_list=[result_1, result_2, result_3, result_4]) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/unique_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/unique_cn.rst deleted file mode 100644 index 0877f8686aa1101fff05377404492f8d45aa493f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/unique_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_unique: - -unique -------------------------------- - -.. py:function:: paddle.fluid.layers.unique(x, dtype='int32') - -:alias_main: paddle.unique -:alias: paddle.unique,paddle.tensor.unique,paddle.tensor.manipulation.unique -:old_api: paddle.fluid.layers.unique - - - -unique为 ``x`` 返回一个unique张量和一个指向该unique张量的索引。 - -参数: - - **x** (Variable) - 一个1维输入张量 - - **dtype** (np.dtype|core.VarDesc.VarType|str) – 索引张量的类型,int32,int64。 - -返回:元组(out, index)。 ``out`` 为 ``x`` 的指定dtype的unique张量, ``index`` 是一个指向 ``out`` 的索引张量, 用户可以通过该函数来转换原始的 ``x`` 张量的索引。 - -返回类型:元组(tuple) - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - x = fluid.layers.assign(np.array([2, 3, 3, 1, 5, 3], dtype='int32')) - out, index = fluid.layers.unique(x) # out is [2, 3, 1, 5]; index is [0, 1, 1, 2, 3, 1] - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/unique_with_counts_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/unique_with_counts_cn.rst deleted file mode 100644 index 906ff316a3f77ab6756b36543bd0ca6e4b55fcf4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/unique_with_counts_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_unique_with_counts: - -unique_with_counts -------------------------------- - -.. py:function:: paddle.fluid.layers.unique_with_counts(x, dtype='int32') - -:alias_main: paddle.unique_with_counts -:alias: paddle.unique_with_counts,paddle.tensor.unique_with_counts,paddle.tensor.manipulation.unique_with_counts -:old_api: paddle.fluid.layers.unique_with_counts - - -该OP对输入Tensor元素进行去重,获取去重后结果Tensor,同时获取去重后结果在原始输入中的计数Tensor以及在原始输入中的索引Tensor。 - -注:该OP仅支持 **CPU** ,同时仅支持 **Tensor** - -参数: - - **x** (Variable) – 数据shape为 :math:`[N]` 的一维Tensor,数据类型为 float32,float64,int32,int64。 - - **dtype** (np.dtype|core.VarDesc.VarType|str) – 索引和计数Tensor的类型,默认为 int32,数据类型需要为 int32或int64。 - -返回: - - **out** 表示对输入进行去重后结果一维Tensor,数据shape为 :math:`[K]` ,K和输入x的shape中的N可能不一致。 - - **index** 表示原始输入在去重后结果中的索引Tensor :math:`[N]` ,shape和输入x的shape一致。 - - **count** 表示去重后元素的计数结果Tensor,数据shape为 :math:`[K]` ,数据shape和out的shape一致。 - -返回类型:tuple,tuple中元素类型为Variable(Tensor),输出中的out和输入x的数据类型一致,输出中index以及count的数据类型为 int32,int64。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - x = fluid.layers.assign(np.array([2, 3, 3, 1, 5, 3], dtype='int32')) - out, index, count = fluid.layers.unique_with_counts(x) # out is [2, 3, 1, 5]; - # index is [0, 1, 1, 2, 3, 1]; - # count is [1, 3, 1, 1] - # x.shape=(6,) out.shape=(4,), index.shape=(6,), count.shape=(4,) - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/unsqueeze_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/unsqueeze_cn.rst deleted file mode 100644 index 3290bebea17c0e989232238b6f5c6c79639467fd..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/unsqueeze_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_unsqueeze: - -unsqueeze -------------------------------- - -.. py:function:: paddle.fluid.layers.unsqueeze(input, axes, name=None) - - - - -该OP向输入(input)的shape中一个或多个位置(axes)插入维度。 - -- 示例: - -.. code-block:: python - - 输入: - X.shape = [2, 3] - X.data = [[1, 2, 3], - [4,5,6]] - axes = [0, 2] - 输出(在X的第0维和第2维插入新维度): - Out.shape = [1, 2, 1, 3] - Out.data = [[[[1, 2, 3]], - [[4, 5, 6]]]] - -参数: - - **input** (Variable)- 多维 ``Tensor``,数据类型为 ``float32``, ``float64``, ``int8``, ``int32``,或 ``int64``。 - - **axes** (int|list|tuple|Variable) - 表示要插入维度的位置。数据类型是 ``int32`` 。如果 ``axes`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 。如果 ``axes`` 的类型是 ``Variable``,则是1-D ``Tensor``。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:扩展维度后的多维Tensor - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[5, 10]) - y = fluid.layers.unsqueeze(input=x, axes=[1]) - # y.shape is [5, 1, 10] diff --git a/doc/paddle/api/paddle/fluid/layers/nn/unstack_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/unstack_cn.rst deleted file mode 100644 index cc4324c6b5764b7a03cfe509345e14aa43e505ee..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/unstack_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_unstack: - -unstack -------------------------------- - -.. py:function:: paddle.fluid.layers.unstack(x, axis=0, num=None) - -:alias_main: paddle.unstack -:alias: paddle.unstack,paddle.tensor.unstack,paddle.tensor.manipulation.unstack -:old_api: paddle.fluid.layers.unstack - - - -该OP将单个dim为 ``D`` 的Tensor沿 ``axis`` 轴unpack为 ``num`` 个dim为 ``(D-1)`` 的Tensor - -参数: - - **x** (Variable) – 输入x为 ``dim > 0`` 的Tensor, - 支持的数据类型: float32,float64,int32,int64。 - - - **axis** (int | 可选) – 输入Tensor进行unpack运算所在的轴,axis的范围为:``[-D, D)`` , - 如果 ``axis < 0`` ,则 :math:`axis = axis + dim(x)`,axis的默认值为0。 - - - **num** (int | 可选) - axis轴的长度,一般无需设置,默认值为 ``None`` 。 - -返回: 长度为num的Tensor列表, 数据类型与输入Tensor相同,dim为 ``(D-1)``。 - -返回类型: list(Variable) - -抛出异常: - - :code:`ValueError`:``x.shape[axis]`` <= 0 或 ``axis`` 不在[-D, D)范围内 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 3, 5], dtype='float32') #创建一个shape=[2, 3, 5]的Tensor - y = fluid.layers.unstack(x, axis=1) #沿着第1轴进行unpack, unpack后为3个shape=[2,5]的Tensor - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/nn/where_cn.rst b/doc/paddle/api/paddle/fluid/layers/nn/where_cn.rst deleted file mode 100644 index bcfabfab33a23f1e56e23bc922c59b965564155e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/nn/where_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_tensor_where: - -where -------------------------------- - -.. py:function:: paddle.where(condition, x, y, name=None) - -:alias_main: paddle.where -:alias: paddle.where,paddle.tensor.where,paddle.tensor.search.where -:update_api: paddle.fluid.layers.cond - - - -该OP返回一个根据输入 ``condition``, 选择 ``x`` 或 ``y`` 的元素组成的多维 ``Tensor`` : - -.. math:: - Out_i = - \left\{ - \begin{aligned} - &X_i, & & if \ cond_i \ is \ True \\ - &Y_i, & & if \ cond_i \ is \ False \\ - \end{aligned} - \right. - -参数: - - **condition** (Variable)- 选择 ``x`` 或 ``y`` 元素的条件 。 - - **x** (Variable)- 多维 ``Tensor`` ,数据类型为 ``float32`` 或 ``float64`` 或 ``int32`` 或 ``int64`` 。 - - **y** (Variable)- 多维 ``Tensor`` ,数据类型为 ``float32`` 或 ``float64`` 或 ``int32`` 或 ``int64`` 。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:数据类型与 ``x`` 相同的 ``Tensor`` 。 - -返回类型:Variable。 - - -**代码示例:** - -.. code-block:: python - - import paddle - import numpy as np - import paddle.fluid as fluid - - x_i = np.array([0.9383, 0.1983, 3.2, 1.2]).astype("float32") - y_i = np.array([1.0, 1.0, 1.0, 1.0]).astype("float32") - - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(x_i) - y = fluid.dygraph.to_variable(y_i) - out = paddle.where(x>1, x, y) - - print(out.numpy()) - #out: [1.0, 1.0, 3.2, 1.2] diff --git a/doc/paddle/api/paddle/fluid/layers/not_equal_cn.rst b/doc/paddle/api/paddle/fluid/layers/not_equal_cn.rst deleted file mode 100644 index 5a9cedf60cc03d67d8571424cffc2af62a583184..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/not_equal_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_not_equal: - -not_equal -------------------------------- - -.. py:function:: paddle.fluid.layers.not_equal(x, y, cond=None, name=None) - -:alias_main: paddle.not_equal -:alias: paddle.not_equal,paddle.tensor.not_equal,paddle.tensor.logic.not_equal -:old_api: paddle.fluid.layers.not_equal - - - -该OP逐元素地返回 :math:`x != y` 的逻辑值,使用重载算子 `!=` 可以有相同的计算函数效果。 - -参数: - - **x** (Variable) – 进行比较的第一个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **y** (Variable) – 进行比较的第二个输入,是一个多维的Tensor,数据类型可以是float32,float64,int32,int64。 - - **cond** (Variable,可选) – 如果为None,则创建一个Tensor来作为进行比较的输出结果,该Tensor的shape和数据类型和输入x一致;如果不为None,则将Tensor作为该OP的输出,数据类型和数据shape需要和输入x一致。默认值为None。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 -返回:输出结果的Tensor,数据的shape和输入x一致。 - -返回类型:变量(Variable),数据类型为bool类型。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - label = layers.assign(np.array([2, 3], dtype='int32')) - limit = layers.assign(np.array([3, 2], dtype='int32')) - out = fluid.layers.not_equal(x=label, y=limit) #out=[True, True] - out1 = label != limit #out1=[True, True] - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/one_hot_cn.rst b/doc/paddle/api/paddle/fluid/layers/one_hot_cn.rst deleted file mode 100644 index 2aaaf117e6fc9dc5ab26032db91bef286f14e567..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/one_hot_cn.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. _cn_api_fluid_layers_one_hot: - -one_hot -------------------------------- - -.. py:function:: paddle.fluid.layers.one_hot(input, depth, allow_out_of_range=False) - - - - -**注意:此OP要求输入Tensor shape的最后一维必须为1。此OP将在未来的版本中被移除!推荐使用fluid.** :ref:`cn_api_fluid_one_hot` 。 - -该OP将输入(input)中的每个id转换为一个one-hot向量,其长度为 ``depth`` ,该id对应的向量维度上的值为1,其余维度的值为0。 - -输出的Tensor(或LoDTensor)的shape是将输入shape的最后一维替换为depth的维度。 - -- 示例1(allow_out_of_range=False): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [3], [0]] - depth = 4 - - 输出: - Out.shape = [4, 4] - Out.data = [[0., 1., 0., 0.], - [0., 1., 0., 0.], - [0., 0., 0., 1.], - [1., 0., 0., 0.]] - -- 示例2 (allow_out_of_range=True): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [5], [0]] - depth = 4 - allow_out_of_range=True - - 输出: - Out.shape = [4, 4] - Out.data = [[0., 1., 0., 0.], - [0., 1., 0., 0.], - [0., 0., 0., 0.], ## 这一维的值是5,超过了depth,因此填成0 - [1., 0., 0., 0.]] - -- 示例3 (allow_out_of_range=False): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [5], [0]] - depth = 4 - allow_out_of_range=False - - 输出:抛出 Illegal value 的异常 - X中第2维的值是5,超过了depth,而allow_out_of_range=False表示不允许超过,因此抛异常。 - - -参数: - - **input** (Variable) - 维度为 :math:`[N_1, ..., N_n, 1]` 的多维Tensor或LoDTensor,维度至少两维,且最后一维必须是1。数据类型为int32或int64。 - - **depth** (int) - 用于定义一个one-hot向量的长度。若输入为词id,则 ``depth`` 通常取值为词典大小。 - - **allow_out_of_range** (bool) - 指明input中所包含的id值是否可以大于depth值。当超过depth时,如果 `allow_out_of_range` 为False,则会抛出 `Illegal value` 的异常;如果设置为True,该id对应的向量为0向量。默认值为False。 - -返回:转换后的one_hot Tensor或LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - # 该代码对应上述第一个示例,其中输入label的shape是[4, 1],输出one_hot_label的shape是[4, 4] - label = fluid.layers.data(name="label", shape=[4, 1], append_batch_size=False, dtype="int64") - one_hot_label = fluid.layers.one_hot(input=label, depth=4) diff --git a/doc/paddle/api/paddle/fluid/layers/ones_cn.rst b/doc/paddle/api/paddle/fluid/layers/ones_cn.rst deleted file mode 100644 index fa13c3412fd1d741d129987b415e4ac33a956557..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ones_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_tensor_ones: - -ones -------------------------------- - -.. py:function:: paddle.ones(shape, dtype=None) - - - -该OP创建形状为 ``shape`` 、数据类型为 ``dtype`` 且值全为1的Tensor。 - -参数: - - **shape** (tuple|list|Tensor) - 输出Tensor的形状, ``shape`` 的数据类型为int32或者int64。 - - **dtype** (np.dtype|core.VarDesc.VarType|str, 可选) - 输出Tensor的数据类型,数据类型必须为bool、 float16、float32、float64、int32或int64。如果 ``dtype`` 为None,默认数据类型为float32。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:值全为1的Tensor,数据类型和 ``dtype`` 定义的类型一致。 - - -抛出异常: - - ``TypeError`` - 当 ``dtype`` 不是bool、 float16、float32、float64、int32、int64和None时。 - - ``TypeError`` - 当 ``shape`` 不是tuple、list、或者Tensor的时, 当 ``shape`` 为Tensor时,其数据类型不是int32或者int64。 - -**代码示例**: - -.. code-block:: python - - import paddle - - paddle.enable_imperative() - - #default dtype for ones OP - data1 = paddle.ones(shape=[3, 2]) - # [[1. 1.] - # [1. 1.] - # [1. 1.]] - data2 = paddle.ones(shape=[2, 2], dtype='int32') - # [[1 1] - # [1 1]] - - #attr shape is a Variable Tensor - shape = paddle.fill_constant(shape=[2], dtype='int32', value=2) - data3 = paddle.ones(shape=shape, dtype='int32') - # [[1 1] - # [1 1]] - diff --git a/doc/paddle/api/paddle/fluid/layers/ones_like_cn.rst b/doc/paddle/api/paddle/fluid/layers/ones_like_cn.rst deleted file mode 100644 index 33b189c7aaeebf5cc9f54f9f3d4fca38cb5de752..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ones_like_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_tensor_ones_like: - -ones_like -------------------------------- - -.. py:function:: paddle.ones_like(x, dtype=None, name=None) - -:alias_main: paddle.ones_like -:alias: paddle.tensor.ones_like, paddle.tensor.creation.ones_like - -该OP返回一个和 ``x`` 具有相同形状的数值都为1的Tensor,数据类型为 ``dtype`` 或者和 ``x`` 相同。 - -参数 -:::::::::: - - **x** (Tensor) – 输入的Tensor,数据类型可以是bool,float16, float32,float64,int32,int64。输出Tensor的形状和 ``x`` 相同。如果 ``dtype`` 为None,则输出Tensor的数据类型与 ``x`` 相同。 - - **dtype** (str|np.dtype|core.VarDesc.VarType, 可选) - 输出Tensor的数据类型,支持bool,float16, float32,float64,int32,int64。当该参数值为None时, 输出Tensor的数据类型与 ``x`` 相同。默认值为None. - - **name** (str, 可选) - 输出的名字。一般无需设置,默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回 -:::::::::: - Tensor:和 ``x`` 具有相同形状的数值都为1的Tensor,数据类型为 ``dtype`` 或者和 ``x`` 相同。 - -抛出异常 -:::::::::: - - ``TypeError`` - 如果 ``dtype`` 不是bool、float16、float32、float64、int32、int64。 - -代码示例 -:::::::::: - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - - x = paddle.imperative.to_variable(np.array([1,2,3], dtype='float32')) - out1 = paddle.ones_like(x) # [1., 1., 1.] - out2 = paddle.ones_like(x, dtype='int32') # [1, 1, 1] diff --git a/doc/paddle/api/paddle/fluid/layers/ops/abs_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/abs_cn.rst deleted file mode 100644 index cf726de9f97c0bc5c621654cf07ff5787f8c9260..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/abs_cn.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. _cn_api_fluid_layers_abs: - -abs -------------------------------- - -.. py:function:: paddle.fluid.layers.abs(x, name=None) - -:alias_main: paddle.abs -:alias: paddle.abs,paddle.tensor.abs,paddle.tensor.math.abs -:old_api: paddle.fluid.layers.abs - - - -绝对值激活函数。 - -.. math:: - out = |x| - -参数: - - **x** (Variable)- 多维Tensor,数据类型为float32或float64。 - - **name** (str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:表示绝对值结果的Tensor,数据类型与x相同。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.abs(data) diff --git a/doc/paddle/api/paddle/fluid/layers/ops/acos_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/acos_cn.rst deleted file mode 100644 index 9185569aa0e9f5329c63bc734e3a96996042584e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/acos_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_acos: - -acos -------------------------------- - -.. py:function:: paddle.fluid.layers.acos(x, name=None) - -:alias_main: paddle.acos -:alias: paddle.acos,paddle.tensor.acos,paddle.tensor.math.acos -:old_api: paddle.fluid.layers.acos - - - -arccosine激活函数。 - -.. math:: - out = cos^{-1}(x) - -参数: - - **x(Variable)** - acos的输入Tensor,数据类型为 float32 或 float64 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 -返回: `acos` 的输出Tensor,数据类型与 `x` 相同。 - -返回类型: Variable - - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[4]) - # if data is [-0.8183, 0.4912, -0.6444, 0.0371] - result = fluid.layers.acos(data) - # result is [2.5293, 1.0573, 2.2711, 1.5336] - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/asin_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/asin_cn.rst deleted file mode 100644 index 03109d28ec3125c9f1cc5a3e8bd97e63484bde07..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/asin_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_asin: - -asin -------------------------------- - -.. py:function:: paddle.fluid.layers.asin(x, name=None) - -:alias_main: paddle.asin -:alias: paddle.asin,paddle.tensor.asin,paddle.tensor.math.asin -:old_api: paddle.fluid.layers.asin - - - -arcsine激活函数。 - -.. math:: - out = sin^{-1}(x) - - -参数: - - **x(Variable)** - asin的输入Tensor,数据类型为 float32 或 float64 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - -返回: `asin` 的输出Tensor,数据类型与 `x` 相同。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[4]) - # if data is [-0.8183, 0.4912, -0.6444, 0.0371] - result = fluid.layers.asin(data) - # result is [-0.9585, 0.5135, -0.7003, 0.0372] - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/atan_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/atan_cn.rst deleted file mode 100644 index 382f6b09b17eefdb766665dd5f21857c3fda9822..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/atan_cn.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _cn_api_tensor_atan: - -atan -------------------------------- - -.. py:function:: paddle.atan(x, name=None, out=None) - -arctanh 激活函数。 - -.. math:: - out = tanh^{-1}(x) - -参数: - - **x(Variable)** - atan的输入Tensor,数据类型为 float32 或 float64 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **out** (Variable, 可选) – 指定存储运算结果的Tensor。如果设置为None或者不设置,将创建新的Tensor存储运算结果,默认值为None。 - -返回:返回类型为Variable(Tensor|LoDTensor), 数据类型同输入一致。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - inputs = fluid.layers.data(name="x", shape = [3], dtype='float32') - output = paddle.atan(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([-0.8183, 0.4912, -0.6444, 0.0371]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) - #[array([-0.6858003, 0.45658287, -0.5724284, 0.03708299], dtype=float32)] diff --git a/doc/paddle/api/paddle/fluid/layers/ops/ceil_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/ceil_cn.rst deleted file mode 100644 index 27ca3dd547fb43ecf26ce0d499ce39049e2ef1bb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/ceil_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_layers_ceil: - -ceil -------------------------------- - -.. py:function:: paddle.fluid.layers.ceil(x, name=None) - -:alias_main: paddle.ceil -:alias: paddle.ceil,paddle.tensor.ceil,paddle.tensor.math.ceil -:old_api: paddle.fluid.layers.ceil - - - -向上取整运算函数。 - -.. math:: - out = \left \lceil x \right \rceil - - - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型为float32或float64。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为None。 - -返回: 输出为Tensor,与 ``x`` 维度相同、数据类型相同。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - input_ceil = np.array([[-1.5,6],[1,15.6]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(input_ceil) - y = fluid.layers.ceil(x) - print(y.numpy()) - # [[-1. 6.] - # [ 1. 16.]] diff --git a/doc/paddle/api/paddle/fluid/layers/ops/cos_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/cos_cn.rst deleted file mode 100644 index 4f31c473c95be1f3b4a46915c505fe29250d11e8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/cos_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_cos: - -cos -------------------------------- - -.. py:function:: paddle.fluid.layers.cos(x, name=None) - -:alias_main: paddle.cos -:alias: paddle.cos,paddle.tensor.cos,paddle.tensor.math.cos -:old_api: paddle.fluid.layers.cos - - - -余弦函数。 - -.. math:: - - out = cos(x) - - - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor,数据类型为float32,float64。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为None。 - - -返回:输出为Tensor,与 ``x`` 维度相同、数据类型相同。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - input_cos = np.array([[-1,np.pi],[1,15.6]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(input_cos) - y = fluid.layers.cos(x) - print(y.numpy()) - # [[ 0.54030231 -1. ] - # [ 0.54030231 -0.99417763]] diff --git a/doc/paddle/api/paddle/fluid/layers/ops/cumsum_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/cumsum_cn.rst deleted file mode 100644 index fd9238e64bd85b90f4a54ced20b6dda1266b4e60..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/cumsum_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_cumsum: - -cumsum -------------------------------- - -.. py:function:: paddle.fluid.layers.cumsum(x,axis=None,exclusive=None,reverse=None) - -:alias_main: paddle.cumsum -:alias: paddle.cumsum,paddle.tensor.cumsum,paddle.tensor.math.cumsum -:old_api: paddle.fluid.layers.cumsum - - - -沿给定轴(axis)的元素的累加和。默认结果的第一个元素和输入的第一个元素一致。如果exlusive为True,结果的第一个元素则为0。 - -参数: - - **x** (Variable) - 累加的输入,需要进行累加操作的变量Tensor/LoDTensor。 - - **axis** (int,可选) - 指明需要累加的维。-1代表最后一维。默认为:-1。 - - **exclusive** (bool,可选) - 是否执行exclusive累加。默认为:False。 - - **reverse** (bool,可选) - 若为True,则以相反顺序执行累加。默认为:False。 - -返回:Variable(Tensor)。是累加的结果,即累加器的输出。 - -返回类型:变量(Variable)。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.cumsum(data, axis=0) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/erf_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/erf_cn.rst deleted file mode 100644 index c30dc7175303dc3890049ad49cf5ee39505ece2c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/erf_cn.rst +++ /dev/null @@ -1,75 +0,0 @@ -.. _cn_api_fluid_layers_erf: - -erf -------------------------------- - -.. py:function:: paddle.fluid.layers.erf(x) - -:alias_main: paddle.erf -:alias: paddle.erf,paddle.tensor.erf,paddle.tensor.math.erf,paddle.nn.functional.erf,paddle.nn.functional.activation.erf -:old_api: paddle.fluid.layers.erf - - - -逐元素计算 Erf 激活函数。更多细节请参考 `Error function `_ 。 - - -.. math:: - out = \frac{2}{\sqrt{\pi}} \int_{0}^{x}e^{- \eta^{2}}d\eta - -参数: - - **x** (Variable) - Erf Op 的输入,多维 Tensor 或 LoDTensor,数据类型为 float16, float32 或 float64。 - -返回: - - 多维 Tensor 或 LoDTensor, 数据类型为 float16, float32 或 float64, 和输入 x 的数据类型相同,形状和输入 x 相同。 - -返回类型: - - Variable - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.erf(x) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[ 0.4643714 , -1.1509596 , 1.2538221 ], - # [ 0.34369683, 0.27478245, 1.1805398 ]], dtype=float32) - y_np - # array([[ 0.48863927, -0.8964121 , 0.9237998 ], - # [ 0.37307587, 0.30242872, 0.9049887 ]], dtype=float32) - -.. code-block:: python - - # imperative mode - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.erf(x) - y_np = y.numpy() - data - # array([[ 0.4643714 , -1.1509596 , 1.2538221 ], - # [ 0.34369683, 0.27478245, 1.1805398 ]], dtype=float32) - y_np - # array([[ 0.48863927, -0.8964121 , 0.9237998 ], - # [ 0.37307587, 0.30242872, 0.9049887 ]], dtype=float32) diff --git a/doc/paddle/api/paddle/fluid/layers/ops/exp_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/exp_cn.rst deleted file mode 100644 index 33f053e947410c7be2111cfdb826fdf21295059a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/exp_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_fluid_layers_exp: - -exp -------------------------------- - -.. py:function:: paddle.fluid.layers.exp(x, name=None) - -:alias_main: paddle.exp -:alias: paddle.exp,paddle.tensor.exp,paddle.tensor.math.exp -:old_api: paddle.fluid.layers.exp - - - -对输入,逐元素进行以自然数e为底指数运算。 - -.. math:: - out = e^x - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型为float32,float64。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为None。 - -返回:输出为Tensor,与 ``x`` 维度相同、数据类型相同。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - input_exp = np.array([[-1.5,6],[1,15.6]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(input_exp) - y = fluid.layers.exp(x) - print(y.numpy()) - # [[2.23130160e-01 4.03428793e+02] - # [2.71828183e+00 5.95653801e+06]] diff --git a/doc/paddle/api/paddle/fluid/layers/ops/floor_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/floor_cn.rst deleted file mode 100644 index e1dc4edb72600bf63fd26555942c75d69678f7f4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/floor_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_layers_floor: - -floor -------------------------------- - -.. py:function:: paddle.fluid.layers.floor(x, name=None) - -:alias_main: paddle.floor -:alias: paddle.floor,paddle.tensor.floor,paddle.tensor.math.floor -:old_api: paddle.fluid.layers.floor - - - -向下取整函数。 - -.. math:: - out = \left \lfloor x \right \rfloor - -参数: - - **x** - 该OP的输入为多维Tensor。数据类型必须为float32或float64。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出为Tensor,与 ``x`` 维度相同、数据类型相同。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data1 = fluid.layers.fill_constant(shape=[3, 2], value=2.5, dtype='float32') # [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] - data2 = fluid.layers.fill_constant(shape=[2, 3], value=-2.5, dtype='float64') # [[-2.5, -2.5, -2.5], [-2.5, -2.5, -2.5]] - result1 = fluid.layers.floor(data1) # [[2., 2.], [2., 2.], [2., 2.]] - result2 = fluid.layers.floor(data2) # [[-3., -3., -3.], [-3., -3., -3.]] diff --git a/doc/paddle/api/paddle/fluid/layers/ops/gelu_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/gelu_cn.rst deleted file mode 100644 index c234e3b574b2ee089f6cc39b000f28590ad1630d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/gelu_cn.rst +++ /dev/null @@ -1,82 +0,0 @@ -.. _cn_api_fluid_layers_gelu: - -gelu -------------------------------- - -.. py:function:: paddle.fluid.layers.gelu(x) - -:alias_main: paddle.nn.functional.gelu -:alias: paddle.nn.functional.gelu,paddle.nn.functional.activation.gelu -:old_api: paddle.fluid.layers.gelu - - - -逐元素计算 Gelu激活函数。更多细节请参考 `Gaussian Error Linear Units `_ 。 - -如果使用近似计算: - -.. math:: - out = 0.5 * x * (1 + tanh(\sqrt{\frac{2}{\pi}} * (x + 0.044715x^{3}))) - -如果不使用近似计算: - -.. math:: - out = 0.5 * x * (1 + erf(\frac{x}{\sqrt{2}})) - -参数: - - **x** (Variable) - Gelu Op 的输入,多维 Tensor 或 LoDTensor,数据类型为 float32 或 float64。 - - **approximate** (bool, 可选) - 是否使用近似计算,默认值为 False。 - -返回: - - 多维 Tensor 或 LoDTensor, 数据类型为 float32 或 float64, 和输入 x 的数据类型相同,形状和输入 x 相同。 - -返回类型: - - Variable - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.gelu(x) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[ 0.87165993, -1.0541513 , -0.37214822], - # [ 0.15647964, 0.32496083, 0.33045998]], dtype=float32) - y_np - # array([[ 0.70456535, -0.15380788, -0.13207214], - # [ 0.08796856, 0.20387867, 0.2080159 ]], dtype=float32) - -.. code-block:: python - - # imperative mode - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.gelu(x) - y_np = y.numpy() - data - # array([[ 0.87165993, -1.0541513 , -0.37214822], - # [ 0.15647964, 0.32496083, 0.33045998]], dtype=float32) - y_np - # array([[ 0.70456535, -0.15380788, -0.13207214], - # [ 0.08796856, 0.20387867, 0.2080159 ]], dtype=float32) diff --git a/doc/paddle/api/paddle/fluid/layers/ops/hard_shrink_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/hard_shrink_cn.rst deleted file mode 100644 index d139a6a8fe52833cfa1e682bdcc7940d613b2270..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/hard_shrink_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_fluid_layers_hard_shrink: - -hard_shrink -------------------------------- - -.. py:function:: paddle.fluid.layers.hard_shrink(x,threshold=None) - -:alias_main: paddle.nn.functional.hard_shrink -:alias: paddle.nn.functional.hard_shrink,paddle.nn.functional.activation.hard_shrink -:old_api: paddle.fluid.layers.hard_shrink - - - -HardShrink激活函数(HardShrink activation operator) - - -.. math:: - - out = \begin{cases} - x, \text{if } x > \lambda \\ - x, \text{if } x < -\lambda \\ - 0, \text{otherwise} - \end{cases} - -参数: - - **x** - HardShrink激活函数的输入 - - **threshold** (FLOAT)-HardShrink激活函数的threshold值。[默认:0.5] - -返回:HardShrink激活函数的输出 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[784]) - result = fluid.layers.hard_shrink(x=data, threshold=0.3) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/logsigmoid_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/logsigmoid_cn.rst deleted file mode 100644 index 94ba6048566ebe86ee6de81466bef0b5dac0d8d8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/logsigmoid_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_logsigmoid: - -logsigmoid -------------------------------- - -.. py:function:: paddle.fluid.layers.logsigmoid(x, name=None) - -:alias_main: paddle.nn.functional.logsigmoid -:alias: paddle.nn.functional.logsigmoid,paddle.nn.functional.activation.logsigmoid -:old_api: paddle.fluid.layers.logsigmoid - - - -Logsigmoid激活函数 - - -.. math:: - - out = \log \frac{1}{1 + e^{-x}} - - -参数: - - **x** (Variable)- 张量(Tensor) - - **name** (str|None) - 该层名称(可选),若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.logsigmoid(data) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/reciprocal_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/reciprocal_cn.rst deleted file mode 100644 index a76a495a5112dc3404510b76bc310ad0b0f78e37..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/reciprocal_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_reciprocal: - -reciprocal -------------------------------- - -.. py:function:: paddle.fluid.layers.reciprocal(x, name=None) - -:alias_main: paddle.reciprocal -:alias: paddle.reciprocal,paddle.tensor.reciprocal,paddle.tensor.math.reciprocal -:old_api: paddle.fluid.layers.reciprocal - - - -reciprocal 对输入Tensor取倒数 - - -.. math:: - out = \frac{1}{x} - -参数: - - - **x** - 输入的多维Tensor,支持的数据类型为float32,float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: 对输入取倒数得到的Tensor,输出Tensor数据类型和维度与输入相同。 - -**代码示例**: - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - x_data = np.array([1, 2, 3, 4]).astype(np.float32) - x = paddle.imperative.to_variable(x_data) - res = paddle.%s(x) - print(res.numpy()) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/round_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/round_cn.rst deleted file mode 100644 index 7de4214b7e9a993490a07b76b28b62142f1d72d2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/round_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_round: - -round -------------------------------- - -.. py:function:: paddle.fluid.layers.round(x, name=None) - -:alias_main: paddle.round -:alias: paddle.round,paddle.tensor.round,paddle.tensor.math.round -:old_api: paddle.fluid.layers.round - - - - -该OP将输入中的数值四舍五入到最接近的整数数值。 - -.. code-block:: python - - 输入: - x.shape = [4] - x.data = [1.2, -0.9, 3.4, 0.9] - - 输出: - out.shape = [4] - Out.data = [1., -1., 3., 1.] - -参数: - - - **x** (Variable) - 支持任意维度的Tensor。数据类型为float32,float64或float16。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:返回类型为Variable(Tensor|LoDTensor), 数据类型同输入一致。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - inputs = fluid.layers.data(name="x", shape = [3], dtype='float32') - output = fluid.layers.round(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([1.2, -0.9, 3.4, 0.9]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) - # [array([ 1., -1., 3., 1.], dtype=float32)] - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/rsqrt_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/rsqrt_cn.rst deleted file mode 100644 index 0d4a83041be454cdcd2f4e2e6d850d861d3bbbeb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/rsqrt_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_rsqrt: - -rsqrt -------------------------------- - -.. py:function:: paddle.fluid.layers.rsqrt(x, name=None) - -:alias_main: paddle.rsqrt -:alias: paddle.rsqrt,paddle.tensor.rsqrt,paddle.tensor.math.rsqrt -:old_api: paddle.fluid.layers.rsqrt - - - -该OP为rsqrt激活函数。 - -注:输入x应确保为非 **0** 值,否则程序会抛异常退出。 - -其运算公式如下: - -.. math:: - out = \frac{1}{\sqrt{x}} - - -参数: - - **x** (Variable) – 输入是多维Tensor或LoDTensor,数据类型可以是float32和float64。 - - **name** (str,可选)— 这一层的名称(可选)。如果设置为None,则将自动命名这一层。默认值为None。 - -返回:对输入x进行rsqrt激活函数计算后的Tensor或LoDTensor,数据shape和输入x的shape一致。 - -返回类型:Variable,数据类型和输入数据类型一致。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.data(name="input", shape=[32, 784]) - result = fluid.layers.rsqrt(data) - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/sigmoid_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/sigmoid_cn.rst deleted file mode 100755 index fb5ccd21da695a2f3c840663797b66a5ccaff54c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/sigmoid_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_sigmoid: - -sigmoid -------------------------------- - -.. py:function:: paddle.fluid.layers.sigmoid(x, name=None) - - - - -sigmoid激活函数 - -.. math:: - out = \frac{1}{1 + e^{-x}} - - -参数: - - - **x** (Tensor|LoDTensor)- 数据类型为float32,float64。激活函数的输入值。 - - **name** (str|None) - 该层名称(可选)。若为空,则自动为该层命名。默认:None - -返回:激活函数的输出值 - -返回类型:Variable(Tensor),数据类型为float32的Tensor。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name="input", shape=[-1, 3]) - result = fluid.layers.sigmoid(data) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(3, 3) - output= exe.run(feed={"input": x}, - fetch_list=[result[0]]) - print(output) - """ - output: - [array([0.50797188, 0.71353652, 0.5452265 ])] - """ - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/sin_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/sin_cn.rst deleted file mode 100644 index 97d3fec0fdae36058f1403c054a8cbfa21587faa..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/sin_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_tensor_sin: - -sin -------------------------------- - -.. py:function:: paddle.sin(x, name=None, out=None) - -:alias_main: paddle.sin -:alias: paddle.sin,paddle.tensor.sin,paddle.tensor.math.sin -:update_api: paddle.fluid.layers.sin - - - -计算输入的正弦值。 - -.. math:: - out = sin(x) - -参数: - - **x** (Variable) - 支持任意维度的Tensor。数据类型为float32,float64或float16。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **out** (Variable, 可选) – 指定存储运算结果的Tensor。如果设置为None或者不设置,将创建新的Tensor存储运算结果,默认值为None。 - -返回:返回类型为Variable(Tensor|LoDTensor), 数据类型同输入一致。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - inputs = fluid.layers.data(name="x", shape = [3], dtype='float32') - output = paddle.sin(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([0, 45, 90]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) - # [array([0. , 0.8509035 , 0.89399666], dtype=float32)] diff --git a/doc/paddle/api/paddle/fluid/layers/ops/softplus_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/softplus_cn.rst deleted file mode 100644 index 34ffe22854ec38f6e4d6379ff4925f002005901a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/softplus_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_softplus: - -softplus -------------------------------- - -.. py:function:: paddle.fluid.layers.softplus(x,name=None) - -:alias_main: paddle.nn.functional.softplus -:alias: paddle.nn.functional.softplus,paddle.nn.functional.activation.softplus -:old_api: paddle.fluid.layers.softplus - - - -softplus激活函数 - -.. math:: - out = \ln(1 + e^{x}) - -参数: - - **x** (Variable) - 张量(Tensor) - - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.softplus(data) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/softshrink_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/softshrink_cn.rst deleted file mode 100644 index b3a1af822dfe31a96ad9802e5b4795f1ea10624c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/softshrink_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_softshrink: - -softshrink -------------------------------- - -.. py:function:: paddle.fluid.layers.softshrink(x, alpha=None) - -:alias_main: paddle.nn.functional.softshrink -:alias: paddle.nn.functional.softshrink,paddle.nn.functional.activation.softshrink -:old_api: paddle.fluid.layers.softshrink - - - -Softshrink激活函数 - -.. math:: - out = \begin{cases} - x - \alpha, \text{if } x > \alpha \\ - x + \alpha, \text{if } x < -\alpha \\ - 0, \text{otherwise} - \end{cases} - -参数: - - **x** (Variable0 - 张量(Tensor) - - **alpha** (float) - 上面公式中alpha的值 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.softshrink(data) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/softsign_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/softsign_cn.rst deleted file mode 100644 index ca46bf270800dd0764d000c9b3275a45553c0bb1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/softsign_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_softsign: - -softsign -------------------------------- - -.. py:function:: paddle.fluid.layers.softsign(x,name=None) - -:alias_main: paddle.nn.functional.softsign -:alias: paddle.nn.functional.softsign,paddle.nn.functional.activation.softsign -:old_api: paddle.fluid.layers.softsign - - - - -softsign激活函数 - -.. math:: - out = \frac{x}{1 + |x|} - -参数: - - **x** (Variable) - 张量(Tensor) - - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.softsign(data) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/sqrt_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/sqrt_cn.rst deleted file mode 100644 index fd64d0cb368dfbbd30dc741f50dacab64428a484..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/sqrt_cn.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. _cn_api_tensor_sqrt: - -sqrt -------------------------------- - -.. py:function:: paddle.sqrt(x, name=None, out=None) - -:alias_main: paddle.sqrt -:alias: paddle.sqrt,paddle.tensor.sqrt,paddle.tensor.math.sqrt -:update_api: paddle.fluid.layers.sqrt - - - -计算输入的算数平方根。 - -.. math:: - out=\sqrt x=x^{1/2} - -.. note:: - 请确保输入中的数值是非负数。 - -参数: - - - **x** (Variable) - 支持任意维度的Tensor。数据类型为float32,float64或float16。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **out** (Variable, 可选) – 指定存储运算结果的Tensor。如果设置为None或者不设置,将创建新的Tensor存储运算结果,默认值为None。 - -返回:返回类型为Variable(Tensor|LoDTensor), 数据类型同输入一致。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - inputs = fluid.layers.data(name="x", shape = [3], dtype='float32') - output = paddle.sqrt(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([0, 9, 36]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) - # [array([0., 3., 6.], dtype=float32)] diff --git a/doc/paddle/api/paddle/fluid/layers/ops/square_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/square_cn.rst deleted file mode 100644 index 8c2a73306c51ca5ac4fd3d67f7f54549e7e3d222..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/square_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_square: - -square -------------------------------- - -.. py:function:: paddle.fluid.layers.square(x,name=None) - -:alias_main: paddle.square -:alias: paddle.square,paddle.tensor.square,paddle.tensor.math.square -:old_api: paddle.fluid.layers.square - - - -该OP执行逐元素取平方运算。 - -.. math:: - out = x^2 - -参数: - - **x** (Variable) - 任意维度的Tensor,支持的数据类型: float32,float64。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:返回取平方后的Tensor,维度和数据类型同输入一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784], dtype='float32') - result = fluid.layers.square(data) #result.shape=[32, 784], type=float32 - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/tanh_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/tanh_cn.rst deleted file mode 100644 index 84e295cb73c3be0d40d43ca571500232d0dbc7ac..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/tanh_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_tensor_tanh: - -tanh -------------------------------- - -.. py:function:: paddle.tanh(x, name=None, out=None) - -:alias_main: paddle.tanh -:alias: paddle.tanh,paddle.tensor.tanh,paddle.tensor.math.tanh -:update_api: paddle.fluid.layers.tanh - - - -tanh 激活函数 - -.. math:: - out = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} - - -参数: - - - **x** (Variable) - 支持任意维度的Tensor。数据类型为float32,float64或float16。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **out** (Variable, 可选) – 指定存储运算结果的Tensor。如果设置为None或者不设置,将创建新的Tensor存储运算结果,默认值为None。 - -返回:返回类型为Variable(Tensor|LoDTensor), 数据类型同输入一致。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - inputs = fluid.layers.data(name="x", shape = [3], dtype='float32') - output = paddle.tanh(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([0, 0.5, 0.3]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) - # [array([0., 0.46211717, 0.2913126], dtype=float32)] diff --git a/doc/paddle/api/paddle/fluid/layers/ops/tanh_shrink_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/tanh_shrink_cn.rst deleted file mode 100644 index 6002d1216918b363c9c7a890d40456c37e9b88f5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/tanh_shrink_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_tanh_shrink: - -tanh_shrink -------------------------------- - -.. py:function:: paddle.fluid.layers.tanh_shrink(x, name=None) - -:alias_main: paddle.nn.functional.tanh_shrink -:alias: paddle.nn.functional.tanh_shrink,paddle.nn.functional.activation.tanh_shrink -:old_api: paddle.fluid.layers.tanh_shrink - - - -tanh_shrink激活函数 - -.. math:: - out = x - \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} - -参数: - - - **x** - TanhShrink算子的输入 - - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.tanh_shrink(data) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/ops/thresholded_relu_cn.rst b/doc/paddle/api/paddle/fluid/layers/ops/thresholded_relu_cn.rst deleted file mode 100644 index e4942697680025e6145c476612d3a1668e643f47..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/ops/thresholded_relu_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_thresholded_relu: - -thresholded_relu -------------------------------- - -.. py:function:: paddle.fluid.layers.thresholded_relu(x,threshold=None) - -:alias_main: paddle.nn.functional.thresholded_relu -:alias: paddle.nn.functional.thresholded_relu,paddle.nn.functional.activation.thresholded_relu -:old_api: paddle.fluid.layers.thresholded_relu - - - -逐元素计算 ThresholdedRelu激活函数。 - -.. math:: - - out = \left\{\begin{matrix} - x, &if x > threshold\\ - 0, &otherwise - \end{matrix}\right. - -参数: - - **x** (Variable) -ThresholdedRelu Op 的输入,多维 Tensor 或 LoDTensor,数据类型为 float32,float64。 - - **threshold** (float,可选)-激活函数的 threshold 值,如 threshold 值为 None,则其值为 1.0。 - -返回: - - 多维 Tensor 或 LoDTensor, 数据类型为 float32 或 float64, 和输入 x 的数据类型相同,形状和输入 x 相同。 - -返回类型: - - Variable - -**代码示例**: - -.. code-block:: python - - # 静态图使用 - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.thresholded_relu(x, threshold=0.1) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - start = fluid.default_startup_program() - main = fluid.default_main_program() - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[ 0.21134382, -1.1805999 , 0.32876605], - # [-1.2210793 , -0.7365624 , 1.0013918 ]], dtype=float32) - y_np - # array([[ 0.21134382, -0. , 0.32876605], - # [-0. , -0. , 1.0013918 ]], dtype=float32) - - -.. code-block:: python - - # 动态图使用 - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.thresholded_relu(x, threshold=0.1) - y_np = y.numpy() - data - # array([[ 0.21134382, -1.1805999 , 0.32876605], - # [-1.2210793 , -0.7365624 , 1.0013918 ]], dtype=float32) - y_np - # array([[ 0.21134382, -0. , 0.32876605], - # [-0. , -0. , 1.0013918 ]], dtype=float32) diff --git a/doc/paddle/api/paddle/fluid/layers/pow_cn.rst b/doc/paddle/api/paddle/fluid/layers/pow_cn.rst deleted file mode 100644 index 01987cc7993054a6afbef41c49a7d8b82d49fd56..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/pow_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_tensor_argmax: - -pow -------------------------------- - -.. py:function:: paddle.pow(input, exponent, out=None, name=None): - -:alias_main: paddle.pow -:alias: paddle.pow,paddle.tensor.pow,paddle.tensor.math.pow -:update_api: paddle.fluid.layers.pow - - - -该OP是指数激活算子: - -.. math:: - out = x^{exponent} - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` ,数据类型为 ``float32`` 或 ``float64`` 。 - - **exponent** (float32|Variable,可选)- ``float32`` 或形状为[1]的 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``。Pow OP的指数因子。默认值:1.0。 - - **out** (Variable, 可选) - 默认值None,如果out不为空,则该运算结果存储在out变量中。 - - **name** (str,可选) - 默认值None,输出的名称。该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_name`。当out和name同时不为空时,结果输出变量名与out保持一致。 - -返回:维度与输入 `x` 相同的 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``x`` 相同。 - -返回类型:Variable。 - - -**代码示例:** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - x = fluid.data(name="x", shape=[32,32], dtype="float32") - - # 示例1: 参数exponent是个浮点数 - res = fluid.data(name="output", shape=[32,32], dtype="float32") - y_1 = paddle.pow(x, 2.0, out=res) - # y_1 is x^{2.0} - - # 示例2: 参数exponent是个变量 - exponent_tensor = fluid.layers.fill_constant([1], "float32", 3.0) - res = fluid.data(name="output", shape=[32,32], dtype="float32") - y_2 = paddle.pow(x, exponent_tensor, out=res) - # y_2 is x^{3.0} \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/layers/prelu_cn.rst b/doc/paddle/api/paddle/fluid/layers/prelu_cn.rst deleted file mode 100644 index b1ea4cfb569fac4c885b8292ba07f022886e0934..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/prelu_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_prelu: - -prelu -------------------------------- - - -.. py:function:: paddle.fluid.layers.prelu(x, mode, param_attr=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -等式: - -.. math:: - y = max(0, x) + \alpha min(0, x) - -共提供三种激活方式: - -.. code-block:: text - - all: 所有元素使用同一个alpha值 - channel: 在同一个通道中的元素使用同一个alpha值 - element: 每一个元素有一个独立的alpha值 - - -参数: - - **x** (Variable)- 多维Tensor或LoDTensor,数据类型为float32。 - - **mode** (str) - 权重共享模式。 - - **param_attr** (ParamAttr,可选) - 可学习权重 :math:`[\alpha]` 的参数属性,可由ParamAttr创建。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: 表示激活输出Tensor或LoDTensor,数据类型为float32。与输入形状相同。 - - -返回类型:Variable - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.param_attr import ParamAttr - x = fluid.data(name="x", shape=[None,5,10,10], dtype="float32") - mode = 'channel' - output = fluid.layers.prelu( - x,mode,param_attr=ParamAttr(name='alpha')) - - diff --git a/doc/paddle/api/paddle/fluid/layers/py_func_cn.rst b/doc/paddle/api/paddle/fluid/layers/py_func_cn.rst deleted file mode 100644 index 79d11adef7a0cf8abfd256ad8d81a58945ab7d86..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/py_func_cn.rst +++ /dev/null @@ -1,133 +0,0 @@ -.. _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) - -:api_attr: 声明式编程模式(静态图) - - - -PaddlePaddle Fluid通过py_func在Python端注册OP。py_func的设计原理在于Paddle中的LodTensor与numpy数组可以方便的互相转换,从而可使用Python中的numpy API来自定义一个Python OP。 - -该自定义的Python OP的前向函数是 ``func``, 反向函数是 ``backward_func`` 。 Paddle将在前向部分调用 ``func`` ,并在反向部分调用 ``backward_func`` (如果 ``backward_func`` 不是None)。 ``x`` 为 ``func`` 的输入,必须为LoDTensor类型; ``out`` 为 ``func`` 的输出, 既可以是LoDTensor类型, 也可以是numpy数组。 - -反向函数 ``backward_func`` 的输入依次为:前向输入 ``x`` 、前向输出 ``out`` 、 ``out`` 的梯度。 如果 ``out`` 的某些变量没有梯度,则 ``backward_func`` 的相关输入变量为None。如果 ``x`` 的某些变量没有梯度,则用户应在 ``backward_func`` 中主动返回None。 - -在调用该接口之前,还应正确设置 ``out`` 的数据类型和形状,而 ``out`` 和 ``x`` 对应梯度的数据类型和形状将自动推断而出。 - -此功能还可用于调试正在运行的网络,可以通过添加没有输出的 ``py_func`` 运算,并在 ``func`` 中打印输入 ``x`` 。 - -参数: - - **func** (callable) - 所注册的Python OP的前向函数,运行网络时,将根据该函数与前向输入 ``x`` ,计算前向输出 ``out`` 。 在 ``func`` 建议先主动将LoDTensor转换为numpy数组,方便灵活的使用numpy相关的操作,如果未转换成numpy,则可能某些操作无法兼容。 - - **x** (Variable|tuple(Variable)|list[Variale]) - 前向函数 ``func`` 的输入,多个LoDTensor以tuple(Variable)或list[Variale]的形式传入,其中Variable为LoDTensor或Tenosr。 - - **out** (Variable|tuple(Variable)|list[Variale]) - 前向函数 ``func`` 的输出,可以为Variable|tuple(Variable)|list[Variale],其中Variable既可以为LoDTensor或Tensor,也可以为numpy数组。由于Paddle无法自动推断 ``out`` 的形状和数据类型,必须应事先创建 ``out`` 。 - - **backward_func** (callable,可选) - 所注册的Python OP的反向函数。默认值为None,意味着没有反向计算。若不为None,则会在运行网络反向时调用 ``backward_func`` 计算 ``x`` 的梯度。 - - **skip_vars_in_backward_input** (Variable,可选) - ``backward_func`` 的输入中不需要的变量,可以是Variable|tuple(Variable)|list[Variale]。 这些变量必须是 ``x`` 和 ``out`` 中的一个。默认值为None,意味着没有变量需要从 ``x`` 和 ``out`` 中去除。若不为None,则这些变量将不是 ``backward_func`` 的输入。该参数仅在 ``backward_func`` 不为None时有用。 - -返回: 前向函数的输出 ``out`` - -返回类型: Variable|tuple(Variable)|list[Variable] - -**示例代码1**: - -.. code-block:: python - - import paddle.fluid as fluid - import six - - # 自定义的前向函数,可直接输入LoDTenosor - def tanh(x): - return np.tanh(x) - - # 在反向函数中跳过前向输入x,返回x的梯度。 - # 必须使用np.array主动将LodTensor转换为numpy,否则"+/-"等操作无法使用 - def tanh_grad(y, dy): - return np.array(dy) * (1 - np.square(np.array(y))) - - # 自定义的前向函数,可用于调试正在运行的网络(打印值) - def debug_func(x): - print(x) - - def create_tmp_var(name, dtype, shape): - return fluid.default_main_program().current_block().create_var( - name=name, dtype=dtype, shape=shape) - - 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) - - # 用户自定义的调试函数,打印出输入的LodTensor - 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) - -**示例代码2**: - -.. code-block:: python - - # 该示例展示了如何将LoDTensor转化为numpy数组,并利用numpy API来自定义一个OP - import paddle.fluid as fluid - import numpy as np - - def element_wise_add(x, y): - # 必须先手动将LodTensor转换为numpy数组,否则无法支持numpy的shape操作 - x = np.array(x) - y = np.array(y) - - if x.shape != y.shape: - raise AssertionError("the shape of inputs must be the same!") - - result = np.zeros(x.shape, dtype='int32') - for i in range(len(x)): - for j in range(len(x[0])): - result[i][j] = x[i][j] + y[i][j] - - return result - - def create_tmp_var(name, dtype, shape): - return fluid.default_main_program().current_block().create_var( - name=name, dtype=dtype, shape=shape) - - def py_func_demo(): - start_program = fluid.default_startup_program() - main_program = fluid.default_main_program() - - # 创建前向函数的输入变量 - x = fluid.data(name='x', shape=[2,3], dtype='int32') - y = fluid.data(name='y', shape=[2,3], dtype='int32') - - # 创建前向函数的输出变量,必须指明变量名称name/数据类型dtype/维度shape - output = create_tmp_var('output','int32', [3,1]) - - # 输入多个LodTensor以list[Variable]或tuple(Variable)形式 - fluid.layers.py_func(func=element_wise_add, x=[x,y], out=output) - - exe=fluid.Executor(fluid.CPUPlace()) - exe.run(start_program) - - # 给program喂入numpy数组 - input1 = np.random.randint(1, 10, size=[2,3], dtype='int32') - input2 = np.random.randint(1, 10, size=[2,3], dtype='int32') - out = exe.run(main_program, - feed={'x':input1, 'y':input2}, - fetch_list=[output.name]) - print("{0} + {1} = {2}".format(input1, input2, out)) - - py_func_demo() - - # 参考输出: - # [[5, 9, 9] + [[7, 8, 4] = [array([[12, 17, 13] - # [7, 5, 2]] [1, 3, 3]] [8, 8, 5]], dtype=int32)] diff --git a/doc/paddle/api/paddle/fluid/layers/py_reader_cn.rst b/doc/paddle/api/paddle/fluid/layers/py_reader_cn.rst deleted file mode 100644 index 2f8f6f631479e9220221535b4ead4d0e753ead35..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/py_reader_cn.rst +++ /dev/null @@ -1,153 +0,0 @@ -.. _cn_api_fluid_layers_py_reader: - -py_reader -------------------------------- - - -.. py:function:: paddle.fluid.layers.py_reader(capacity, shapes, dtypes, lod_levels=None, name=None, use_double_buffer=True) - -:api_attr: 声明式编程模式(静态图) - - - - -创建一个在Python端提供数据的reader - -该OP返回一个Reader Variable。该Reader提供了 ``decorate_paddle_reader()`` 和 ``decorate_tensor_provider()`` 来设置Python generator作为数据源,将数据源中的数据feed到Reader Variable。在c++端调用 ``Executor::Run()`` 时,来自generator的数据将被自动读取。与 ``DataFeeder.feed()`` 不同,数据读取进程和 ``Executor::Run()`` 进程可以使用 ``py_reader`` 并行运行。在每次数据传递开始时调用reader的 ``start()`` ,在传递结束和抛出 ``fluid.core.EOFException`` 异常后执行 ``reset()`` 。 - -注意: ``Program.clone()`` (含义详见 :ref:`cn_api_fluid_Program` )不能克隆 ``py_reader`` ,且 ``read_file`` ( ``read_file`` 含义详见 :ref:`cn_api_fluid_layers_read_file` )调用需在声明 ``py_reader`` 的program block内。 - -参数: - - **capacity** (int) – ``py_reader`` 维护的缓冲区的容量数据个数。 - - **shapes** (list|tuple) – 一个列表或元组,shapes[i]是代表第i个数据shape,因此shape[i]也是元组或列表。 - - **dtypes** (list|tuple) – 一个string的列表或元组。为 ``shapes`` 对应元素的数据类型,支持bool,float16,float32,float64,int8,int16,int32,int64,uint8。 - - **lod_levels** (list|tuple) – lod_level的整型列表或元组 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **use_double_buffer** (bool) – 是否使用双缓冲区,双缓冲区是为了预读下一个batch的数据、异步CPU -> GPU拷贝。默认值为True。 - -返回:reader,从reader中可以获取feed的数据,其dtype和feed的数据dtype相同。 - -返回类型:Variable - - - -**代码示例** - -1.py_reader 基本用法如下 - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import paddle.dataset.mnist as mnist - - def network(image, label): - # 用户自定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - reader = fluid.layers.py_reader(capacity=64, - shapes=[(-1,1, 28, 28), (-1,1)], - dtypes=['float32', 'int64']) - reader.decorate_paddle_reader( - paddle.reader.shuffle(paddle.batch(mnist.train(), batch_size=5), - buf_size=1000)) - - img, label = fluid.layers.read_file(reader) - loss = network(img, label) # 一些网络定义 - - fluid.Executor(fluid.CUDAPlace(0)).run(fluid.default_startup_program()) - exe = fluid.ParallelExecutor(use_cuda=True, loss_name=loss.name) - for epoch_id in range(10): - reader.start() - try: - while True: - exe.run(fetch_list=[loss.name]) - except fluid.core.EOFException: - reader.reset() - - fluid.io.save_inference_model(dirname='./model', - feeded_var_names=[img.name, label.name], - target_vars=[loss], - executor=fluid.Executor(fluid.CUDAPlace(0))) - - -2.训练和测试应使用不同的名称创建两个不同的py_reader,例如: - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import paddle.dataset.mnist as mnist - - def network(reader): - img, label = fluid.layers.read_file(reader) - # 用户自定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=img, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=predict, label=label) - return fluid.layers.mean(loss) - - # 新建 train_main_prog 和 train_startup_prog - train_main_prog = fluid.Program() - train_startup_prog = fluid.Program() - with fluid.program_guard(train_main_prog, train_startup_prog): - # 使用 fluid.unique_name.guard() 实现与test program的参数共享 - with fluid.unique_name.guard(): - train_reader = fluid.layers.py_reader(capacity=64, - shapes=[(-1, 1, 28, 28), (-1, 1)], - dtypes=['float32', 'int64'], - name='train_reader') - train_reader.decorate_paddle_reader( - paddle.reader.shuffle(paddle.batch(mnist.train(), - batch_size=5), - buf_size=500)) - train_loss = network(train_reader) # 一些网络定义 - adam = fluid.optimizer.Adam(learning_rate=0.01) - adam.minimize(train_loss) - - # Create test_main_prog and test_startup_prog - test_main_prog = fluid.Program() - test_startup_prog = fluid.Program() - with fluid.program_guard(test_main_prog, test_startup_prog): - # 使用 fluid.unique_name.guard() 实现与train program的参数共享 - with fluid.unique_name.guard(): - test_reader = fluid.layers.py_reader(capacity=32, - shapes=[(-1, 1, 28, 28), (-1, 1)], - dtypes=['float32', 'int64'], - name='test_reader') - test_reader.decorate_paddle_reader(paddle.batch(mnist.test(), 512)) - test_loss = network(test_reader) - - fluid.Executor(fluid.CUDAPlace(0)).run(train_startup_prog) - fluid.Executor(fluid.CUDAPlace(0)).run(test_startup_prog) - - train_exe = fluid.ParallelExecutor(use_cuda=True, - loss_name=train_loss.name, main_program=train_main_prog) - test_exe = fluid.ParallelExecutor(use_cuda=True, - loss_name=test_loss.name, main_program=test_main_prog) - for epoch_id in range(10): - train_reader.start() - try: - while True: - train_exe.run(fetch_list=[train_loss.name]) - except fluid.core.EOFException: - train_reader.reset() - - test_reader.start() - try: - while True: - test_exe.run(fetch_list=[test_loss.name]) - except fluid.core.EOFException: - test_reader.reset() - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/range_cn.rst b/doc/paddle/api/paddle/fluid/layers/range_cn.rst deleted file mode 100644 index 519f5e76f72b649cb924adc6c00342b7b5c54929..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/range_cn.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _cn_api_fluid_layers_range: - -range -------------------------------- - -.. py:function:: paddle.fluid.layers.range(start, end, step, dtype, name=None) - - -注意:推荐使用 paddle.arange - -该OP返回以步长 ``step`` 均匀分隔给定数值区间[``start``, ``end``)的1-D Tensor,数据类型为 ``dtype``。 - -当 ``dtype`` 表示浮点类型时,为了避免浮点计算误差,建议给 ``end`` 加上一个极小值epsilon,使边界可以更加明确。 - -参数: - - **start** (float|int|Tensor) - 区间起点(且区间包括此值)。当 ``start`` 类型是Tensor时,是形状为[1]且数据类型为int32、int64、float32、float64的Tensor。 - - **end** (float|int|Tensor) - 区间终点(且通常区间不包括此值)。当 ``end`` 类型是Tensor时,是形状为[1]且数据类型为int32、int64、float32、float64的Tensor。 - - **step** (float|int|Tensor) - 均匀分割的步长。当 ``step`` 类型是Tensor时,是形状为[1]且数据类型为int32、int64、float32、float64的Tensor。 - - **dtype** (str|np.dtype|core.VarDesc.VarType) - 输出Tensor的数据类型,支持int32、int64、float32、float64。 - - **name** (str, 可选) - 输出的名字。一般无需设置,默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: - Tensor: 以步长 ``step`` 均匀分割给定数值区间[``start``, ``end``)后得到的1-D Tensor, 数据类型为 ``dtype`` 。 - -抛出异常: - - ``TypeError`` - 如果 ``dtype`` 不是int32、int64、float32、float64。 - -代码示例: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.range(0, 10, 2, 'int32') - # [0, 2, 4, 6, 8] diff --git a/doc/paddle/api/paddle/fluid/layers/read_file_cn.rst b/doc/paddle/api/paddle/fluid/layers/read_file_cn.rst deleted file mode 100644 index c2ac46e1465712cec6c6c5d7645ce8d4f711cb9f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/read_file_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_read_file: - -read_file -------------------------------- - - -.. py:function:: paddle.fluid.layers.read_file(reader) - -:api_attr: 声明式编程模式(静态图) - - - -从给定的reader中读取数据 - -reader是一个Variable,它可以是由函数fluid.layers.py_reader()生成的reader,或者是由函数fluid.layers.double_buffer()生成的装饰Variable。 - -参数: - - **reader** (Variable)-待处理的reader - -返回:从reader中读取的数据元组,元组数据类型为Variable - -返回类型: tuple(元组) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - reader = fluid.layers.py_reader(capacity=64, - shapes=[(-1, 1, 28, 28), (-1, 1)], - dtypes=['float32', 'int64']) - image, label = fluid.layers.read_file(reader) - data_file = fluid.layers.double_buffer( - fluid.layers.batch(data_file, batch_size=64)) - input, label = fluid.layers.read_file(data_file) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/relu_cn.rst b/doc/paddle/api/paddle/fluid/layers/relu_cn.rst deleted file mode 100644 index 6df2e05bea36cf96f6990269d6bb77952f15549e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/relu_cn.rst +++ /dev/null @@ -1,37 +0,0 @@ -.. _cn_api_fluid_layers_relu: - -relu -------------------------------- - -.. py:function:: paddle.fluid.layers.relu(x, name=None) - - - - -ReLU(Rectified Linear Unit)激活函数 - -.. math:: Out=max(0,x) - - -参数: - - **x** (Variable) - 输入的多维 ``Tensor`` ,数据类型为:float32、float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 与 ``x`` 维度相同、数据类型相同的 ``Tensor`` 。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[-1,0],[1,2.6]]) - with fluid.dygraph.guard(): - x1 = fluid.dygraph.to_variable(in1) - out1 = fluid.layers.relu(x1) - print(out1.numpy()) - # [[0. 0. ] - # [1. 2.6]] diff --git a/doc/paddle/api/paddle/fluid/layers/reorder_lod_tensor_by_rank_cn.rst b/doc/paddle/api/paddle/fluid/layers/reorder_lod_tensor_by_rank_cn.rst deleted file mode 100644 index 7e67ee31003a74f34f64e9403336732388ca0ed2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/reorder_lod_tensor_by_rank_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_reorder_lod_tensor_by_rank: - -reorder_lod_tensor_by_rank -------------------------------- - -.. py:function:: paddle.fluid.layers.reorder_lod_tensor_by_rank(x, rank_table) - - - - - -该OP根据 ``rank_table`` 中提供的 ``LoDRankTable`` 类型的顺序信息来实现对 ``X`` 的重新排列。 -接口参数 ``X`` 是由多个序列(Sequence)组成的的一个批序列(Batch of Sequences), ``rank_table`` 存储着对batch中序列重新排列的 ``LoDRankTable`` 类型的顺序信息。 - -例如: - -假设在 ``rank_table`` 中存储的序列索引为 :math:`[3,0,2,1]` , ``X`` 将会被这样被重新排列: -``X`` 中的第四个序列(即索引为3的序列,后面以此类推)会变成排列后的batch中的第一个,紧接着就是原来batch中的第一个元素,第三个元素,和第二个元素。 -简言之,若有原batch::math:`X = [Seq0, Seq1, Seq2, Seq3]` 且 RankTable 中的索引为 :math:`[3,0,2,1]` ,那么输出即为 :math:`Out = [Seq3, Seq0, Seq2, Seq1]` ,它携带着新的LoD信息。 -如果 ``X`` 的LoD信息是空的,这表明 ``X`` 不是序列型数据。这和由多个定长为1的序列组成的batch是相同的情况。此时,该函数将对 ``X`` 中数据 在第一轴(axis)上按 ``rank_table`` 里的规则加以排列。 -例如,现有 :math:`X = [Slice0, Slice1, Slice2, Slice3]` ,并且它LoD信息为空,在 ``rank_table`` 索引为 :math:`[3, 0, 2, 1]` 。则 :math:`Out = [Slice3, Slice0, Slice2, Slice1]` ,并且不在其中追加LoD信息。 - -注意:该OP对 ``X`` 进行的排序所依据的 ``LoDRankTable`` 不一定是在 ``X`` 的基础上得出来的。它可以由其他不同的序列得出,并由该OP依据这个 ``LoDRankTable`` 来对 ``X`` 排序。 - -参数: - - **x** (Variable) - 待根据提供的 ``rank_table`` 进行排序的LoDTensor. - - **rank_table** (Variable) - 提供对 ``x`` 重新排列的 ``LoDRankTable`` 类型的顺序信息. - - -返回: 重新排列后的LoDTensor - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - - import numpy as np - import paddle.fluid as fluid - - rank_data = fluid.layers.data(name='rank_data', shape=[5], dtype='float32', lod_level=2) - table = fluid.layers.control_flow.lod_rank_table(rank_data, level=1) - - data = fluid.layers.data(name='data', shape=[9], lod_level=2) - new_data = fluid.layers.reorder_lod_tensor_by_rank( - x=data, rank_table=table) - - - place=fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - rank_tensor = fluid.create_lod_tensor(np.random.random([14,5]).astype("float32"), [[4,1], [3, 2, 2, 3, 4]], place) - - data_ndarray = np.random.random([27, 9]).astype("float32") - data_lod = [[1, 2, 2, 4, 4], [2, 2, 4, 2, 2, 2, 1, 1, 2, 2, 4, 2, 1]] - data_tensor = fluid.create_lod_tensor(data_ndarray, data_lod, place) - - out = exe.run(fluid.default_main_program(),feed={'data':data_tensor, 'rank_data':rank_tensor}, fetch_list=[new_data], return_numpy=False) - print(out[0]) - # lod: {{0, 4, 5, 9, 11, 13}{0, 2, 6, 8, 9, 11, 13, 14, 15, 17, 19, 23, 25, 27}} - #shape: [27, 9] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/reverse_cn.rst b/doc/paddle/api/paddle/fluid/layers/reverse_cn.rst deleted file mode 100644 index a4a552705b1dfc6bb389434a3f0cc771232f91c3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/reverse_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_layers_reverse: - -reverse -------------------------------- - -.. py:function:: paddle.fluid.layers.reverse(x,axis) - -:alias_main: paddle.reverse -:alias: paddle.reverse,paddle.tensor.reverse,paddle.tensor.manipulation.reverse -:old_api: paddle.fluid.layers.reverse - - - -**reverse** - -该OP对输入Tensor ``x`` 在指定轴 ``axis`` 上进行数据的逆序操作。 - -:: - - 示例1: - 输入是 LoDTensor 类型: - x = [[0, 1, 2], [3, 4, 5], [6, 7, 8]] - axis = [0, 1] - - 输出: - output = [[8, 7, 6], [5, 4, 3], [2, 1, 0]] - - 示例2: - 输入是 LoDTensorArray 类型: - x = {[[0, 1], [2, 3]], - [[4, 5, 6]], - [[7], [8], [9]]} - axis = 0 - - 输出: - output = {[[7], [8], [9]], - [[4, 5, 6]], - [[0, 1], [2, 3]]} - -参数: - - **x** (Variable) - 输入为Tensor或LoDTensorArray,数据类型支持bool,int8,int32,int64,float32和float64。若输入是LoDTensorArray类型,则返回一个逆序的LoDTensorArray,其内部Tensor元素的次序保持不变。 - - **axis** (int|tuple|list) - 指定逆序运算的轴,取值范围是[-R, R),R是输入 ``x`` 的Rank, ``axis`` 为负时与 ``axis`` +R 等价。如果 ``axis`` 是一个元组或列表,则在 ``axis`` 每个元素值所指定的轴上进行逆序运算。如果输入是LoDTensorArray类型,axis须是值为0的int,或shape为[1]的list ``[0]`` 、元组 ``(0,)`` 。 -返回:逆序后的Tensor,形状、数据类型和 ``x`` 一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.assign(np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]], dtype='float32')) # [[0., 1., 2.], [3., 4., 5.], [6., 7., 8.]] - result1 = fluid.layers.reverse(data, 0) # [[6., 7., 8.], [3., 4., 5.], [0., 1., 2.]] - result2 = fluid.layers.reverse(data, [0, 1]) # [[8., 7., 6.], [5., 4., 3.], [2., 1., 0.]] - - # 输入为LoDTensorArray时 - data1 = fluid.layers.assign(np.array([[0, 1, 2]], dtype='float32')) - data2 = fluid.layers.assign(np.array([[3, 4, 5]], dtype='float32')) - tensor_array = fluid.layers.create_array(dtype='float32') - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=0) - fluid.layers.array_write(data1, i, tensor_array) - fluid.layers.array_write(data2, i+1, tensor_array) - - reversed_tensor_array = fluid.layers.reverse(tensor_array, 0) # {[[3, 4, 5]], [[0, 1, 2]]} diff --git a/doc/paddle/api/paddle/fluid/layers/rnn_cn.rst b/doc/paddle/api/paddle/fluid/layers/rnn_cn.rst deleted file mode 100644 index 75faee0a3e3975cc1403cbdec72e187fed7e36ae..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/rnn_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_fluid_layers_rnn: - -rnn -------------------------------- - - - -.. py:method:: paddle.fluid.layers.rnn(cell, inputs, initial_states=None, sequence_length=None, time_major=False, is_reverse=False, **kwargs) - -:api_attr: 声明式编程模式(静态图) - - - - -rnn创建一个由RNNCell :code:`cell` 指定的递归神经网络,该神经网络重复执行 :code:`cell.call()` 直至达到 :code:`inputs` 的最大长度。 - -参数: - - **cell** (RNNCell) - RNNCell的实例。 - - **inputs** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。当 :code:`time_major == False` 时,tensor的形状应为 :math:`[batch\_size, sequence\_length, ...]`;当 :code:`time_major == True` 时,tensor的形状应为 :math:`[sequence\_length, batch\_size, ...]`。它表示要在RNN中展开的输入。 - - **initial_states** (Variable,可选) - 初始状态,单个tensor变量或tensor变量组成的嵌套结构,表示RNN的初始状态。如果未提供,将使用 :code:`cell.get_initial_states` 产生初始状态。默认值None。 - - **sequence_length** (Variable,可选) - 序列长度,形状为 :math:`[batch\_size]` 的tensor。它存储每个实例的实际长度,从而使用户能够在批处理的时候,提取最后一个有效状态,以确保正确性。如果未提供,则不区分填充和非填充输入。默认值None。 - - **time_major** (bool,可选) - 指示输入tensor和输出tensor中包含的tensor的数据组织。如果为False,则数据组织为batch为主,形状为 :math:`[batch\_size,sequence\_length,...]`。如果为True,则数据组织为time为主,形状为 :math:`[sequence\_length,batch\_size,...]`。默认值:False。 - - **is_reverse** (bool,可选) - 指示是否以输入序列的相反顺序进行计算。默认值:False。 - - **kwargs** - 其他关键字参数。参数传递给 :code:`cell.call`。 - -返回:一个元组 :code:`(final_outputs, final_states)` ,包括 :code:`final_outputs` 和 :code:`final_states`,均为单个tensor变量或tensor变量的嵌套结构。:code:`final_outputs` 具有与 :code:`cell.call` 返回的 :code:`outputs` 相同的结构和数据类型,并且 :code:`final_outputs` 中的每个tensor是将所有时间步的 :code:`outputs` 中对应内容堆叠产生,因此其形状为 :math:`[batch\_size,sequence\_length,...]` (:code:`time_major == False` 时)或 :math:`[sequence\_length,batch\_size,...]` (:code:`time_major == True` 时)。:code:`final_states` 是最后一步的状态,因此具有和 :code:`initial_states` 相同的结构,形状和数据类型。 - -返回类型:tuple - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - inputs = fluid.data(name="inputs", - shape=[-1, 32, 128], - dtype="float32") - cell = fluid.layers.GRUCell(hidden_size=128) - outputs = fluid.layers.rnn(cell=cell, inputs=inputs) - diff --git a/doc/paddle/api/paddle/fluid/layers/row_conv_cn.rst b/doc/paddle/api/paddle/fluid/layers/row_conv_cn.rst deleted file mode 100644 index ab16bdbfbb86e42131b331a373b8e66e2a1099c1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/row_conv_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_row_conv: - -row_conv -------------------------------- - - -.. py:function:: paddle.fluid.layers.row_conv(input, future_context_size, param_attr=None, act=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口为行卷积(Row-convolution operator)或称之为超前卷积(lookahead convolution),最早介绍于DeepSpeech2论文中,论文链接: - - ``_ - -双向的RNN在深度语音模型中很有用,它通过对整个序列执行正向和反向传递来学习序列的表示。然而,与单向RNNs不同的是,在线部署和低延迟设置中,双向RNNs具有难度。超前卷积将来自未来子序列的信息以一种高效的方式进行计算,以改进单向递归神经网络。 row convolution operator 与一维序列卷积不同,计算方法如下: - -给定输入序列长度为 :math:`t` 的输入序列 :math:`X` 和输入维度 :math:`D` ,以及一个大小为 :math:`context * D` 的滤波器 :math:`W` ,输出序列卷积为: - -.. math:: - out_i = \sum_{j=i}^{i+context-1} X_{j} · W_{j-i} - -公式中: - - :math:`out_i` : 第i行输出变量形为[1, D]. - - :math:`context` : 下文(future context)大小 - - :math:`X_j` : 第j行输出变量,形为[1,D] - - :math:`W_{j-i}` : 第(j-i)行参数,其形状为[1,D]。 - -详细请参考 `设计文档 `_ 。 - -参数: - - **input** (Variable) -- 支持输入为LodTensor和Tensor,输入类型可以是[float32, float64],它支持可变时间长度的输入序列。当输入input为LodTensor时,其内部张量是一个具有形状(T x N)的矩阵,其中T是这个mini batch中的总的timestep,N是输入数据维数。当输入input为Tensor时,其形状为(B x T x N)的三维矩阵,B为mini batch大小,T为每个batch输入中的最大timestep,N是输入数据维数。当输入input为LoDTensor,形状为[9, N],LoD信息为[2, 3, 4],等价于输入input为形状是[3, 4, N]的Tensor。 - - **future_context_size** (int) -- 下文大小。请注意,卷积核的shape是[future_context_size + 1, N],N和输入input的数据维度N保持一致。 - - **param_attr** (ParamAttr) -- 参数的属性,包括名称、初始化器等。 - - **act** (str) -- 非线性激活函数。 - -返回:表示row_conv计算结果的Variable,数据类型、维度和输入input相同。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # LoDTensor input - x = fluid.layers.data(name='x', shape=[9, 16], - dtype='float32', lod_level=3, - append_batch_size=False) - out = fluid.layers.row_conv(input=x, future_context_size=2) - - # Tensor input - x = fluid.layers.data(name='x', shape=[9, 4, 16], - dtype='float32', - append_batch_size=False) - out = fluid.layers.row_conv(input=x, future_context_size=2) - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sampling_id_cn.rst b/doc/paddle/api/paddle/fluid/layers/sampling_id_cn.rst deleted file mode 100644 index 098bba3e2e75a62a28ea4bd9c040a1960846f858..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sampling_id_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_sampling_id: - -sampling_id -------------------------------- - -.. py:function:: paddle.fluid.layers.sampling_id(x, min=0.0, max=1.0, seed=0, dtype='float32') - - - - -该OP从输入的多项分布中进行采样。 - -参数: - - **x** (Variable)- 输入Tensor。一个形如[batch_size,input_feature_dimensions]的2-D Tensor。 - - **min** (Float)- 随机的最小值。默认值为为0.0。 - - **max** (Float)- 随机的最大值。默认值为1.0。 - - **seed** (int)- 随机种子。0表示使用系统生成的种子, 默认值为0。请注意,如果seed不为0,则此算子每次调用将生成相同的随机数。 - - **dtype** (np.dtype | core.VarDesc.VarType | str)- 指定输出数据的类型。 - -返回:采样的数据张量(Tensor) - -返回类型:变量(Variable) - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data( - name="X", - shape=[13, 11], - dtype='float32', - append_batch_size=False) - - out = fluid.layers.sampling_id(x) - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_concat_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_concat_cn.rst deleted file mode 100644 index 8bb16a4524400184880e1ee3cd36e570d048901d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_concat_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_sequence_concat: - -sequence_concat -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_concat(input, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用concat函数(fluid.layers.** :ref:`cn_api_fluid_layers_concat` **)。** - -**该OP仅支持LoDTensor** ,通过LoDTensor的LoD信息将输入的多个LoDTensor进行连接(concat),输出连接后的LoDTensor。 - -:: - - input是由多个LoDTensor组成的list: - input = [x1, x2] - 其中: - x1.lod = [[0, 3, 5]] - x1.data = [[1], [2], [3], [4], [5]] - x1.shape = [5, 1] - - x2.lod = [[0, 2, 4]] - x2.data = [[6], [7], [8], [9]] - x2.shape = [4, 1] - 且必须满足:len(x1.lod[0]) == len(x2.lod[0]) - - 输出为LoDTensor: - out.lod = [[0, 3+2, 5+4]] - out.data = [[1], [2], [3], [6], [7], [4], [5], [8], [9]] - out.shape = [9, 1] - - -参数: - - **input** (list of Variable) – 多个LoDTensor组成的list,要求每个输入LoDTensor的LoD长度必须一致。数据类型为float32,float64或int64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 输出连接后的LoDTensor,数据类型和输入一致。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[10], dtype='float32') - y = fluid.layers.data(name='y', shape=[10], dtype='float32') - out = fluid.layers.sequence_concat(input=[x, y]) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_conv_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_conv_cn.rst deleted file mode 100644 index 9bf232beca7000c5a42c552814aa5ab70179a559..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_conv_cn.rst +++ /dev/null @@ -1,85 +0,0 @@ -.. _cn_api_fluid_layers_sequence_conv: - -sequence_conv -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_conv(input, num_filters, filter_size=3, filter_stride=1, padding=True, padding_start=None, bias_attr=None, param_attr=None, act=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用conv2d函数(fluid.layers.** :ref:`cn_api_fluid_layers_conv2d` **)。** - -该OP在给定的卷积参数下(如卷积核数目、卷积核大小等),对输入的变长序列(sequence)LoDTensor进行卷积操作。默认情况下,该OP会自适应地在每个输入序列的两端等长地填充全0数据,以确保卷积后的序列输出长度和输入长度一致。支持通过配置 ``padding_start`` 参数来指定序列填充的行为。 - -**提示:** 参数 ``padding`` 为无用参数,将在未来的版本中被移除。 - -:: - - 这里详细介绍数据填充操作的细节: - 对于一个min-batch为2的变长序列输入,分别包含3个、1个时间步(time_step), - 假设输入input是一个[4, N]的float类型LoDTensor,为了方便,这里假设N = 2 - input.data = [[1, 1], - [2, 2], - [3, 3], - [4, 4]] - input.lod = [[0, 3, 4]] - - 即输入input总共有4个词,每个词被表示为一个2维向量。 - - Case1: - - 若 padding_start = -1,filter_size = 3, - 则两端填充数据的长度分别为: - up_pad_len = max(0, -padding_start) = 1 - down_pad_len = max(0, filter_size + padding_start - 1) = 1 - - 则以此填充后的输入数据为: - data_aftet_padding = [[0, 0, 1, 1, 2, 2], - [1, 1, 2, 2, 3, 3], - [2, 2, 3, 3, 0, 0], - [0, 0, 4, 4, 0, 0]] - - 它将和卷积核矩阵相乘得到最终的输出,假设num_filters = 3: - output.data = [[ 0.3234, -0.2334, 0.7433], - [ 0.5646, 0.9464, -0.1223], - [-0.1343, 0.5653, 0.4555], - [ 0.9954, -0.1234, -0.1234]] - output.shape = [4, 3] # 3 = num_filters - output.lod = [[0, 3, 4]] # 保持不变 - - - -参数: - - **input** (Variable) - 维度为 :math:`(M, K)` 的二维LoDTensor,仅支持lod_level为1。其中M是mini-batch的总时间步数,K是输入的 ``hidden_size`` 特征维度。数据类型为float32或float64。 - - **num_filters** (int) - 滤波器的数量。 - - **filter_size** (int) - 滤波器的高度(H);不支持指定滤波器宽度(W),宽度固定取值为输入的 ``hidden_size`` 。默认值为3。 - - **filter_stride** (int) - 滤波器每次移动的步长。目前只支持取值为1,默认为1。 - - **padding** (bool) - **此参数不起任何作用,将在未来的版本中被移除。** 无论 ``padding`` 取值为False或者True,默认地,该函数会自适应地在每个输入序列的两端等长地填充全0数据,以确保卷积后的输出序列长度和输入长度一致。默认填充是考虑到输入的序列长度可能会小于卷积核大小,这会导致无正确计算卷积输出。填充为0的数据在训练过程中不会被更新。默认为True。 - - **padding_start** (int) - 表示对输入序列填充时的起始位置,可以为负值。负值表示在每个序列的首端填充 ``|padding_start|`` 个时间步(time_step)的全0数据;正值表示对每个序列跳过前 ``padding_start`` 个时间步的数据。同时在末端填充 :math:`filter\_size + padding\_start - 1` 个时间步的全0数据,以保证卷积输出序列长度和输入长度一致。如果 ``padding_start`` 为None,则在每个序列的两端填充 :math:`\frac{filter\_size}{2}` 个时间步的全0数据;如果 ``padding_start`` 设置为0,则只在序列的末端填充 :math:`filter\_size - 1` 个时间步的全0数据。默认为None。 - - **bias_attr** (ParamAttr) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回:和输入序列等长的LoDTensor,数据类型和输入一致,为float32或float64。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[10,10], append_batch_size=False, dtype='float32') - x_conved = fluid.layers.sequence_conv(x,2) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_enumerate_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_enumerate_cn.rst deleted file mode 100644 index 5ac0470fa3a199296d246361c7e4c5528a7e37bc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_enumerate_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_sequence_enumerate: - -sequence_enumerate -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_enumerate(input, win_size, pad_value=0, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -枚举形状为 ``[d_1, 1]`` 的输入序列所有长度为 ``win_size`` 的子序列,生成一个形状为 ``[d_1, win_size]`` 的新序列,需要时以 ``pad_value`` 填充。 - -注意,该OP的输入 ``input`` 只能是LodTensor。 - -范例如下: - -:: - - 给定输入 x: - x.lod = [[0, 3, 5]] - x.data = [[1], [2], [3], [4], [5]] - x.dims = [5, 1] - 设置属性 win_size = 2 pad_value = 0 - - 得到输出 out: - out.lod = [[0, 3, 5]] - out.data = [[1, 2], [2, 3], [3, 0], [4, 5], [5, 0]] - out.dims = [5, 2] - -参数: - - **input** (Variable)- 输入序列,形状为 ``[d_1, 1]`` ,lod level为1的LodTensor。数据类型支持int32,int64,float32或float64。 - - **win_size** (int)- 子序列窗口大小。 - - **pad_value** (int,可选)- 填充值,默认为0。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 枚举序列,形状为 ``[d_1, win_size]`` ,lod_level为1的LoDTensor。数据类型与输入 ``input`` 一致。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x',shape=[-1, 1], dtype='int32', lod_level=1) - out = fluid.layers.sequence_enumerate(input=x, win_size=3, pad_value=0) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_expand_as_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_expand_as_cn.rst deleted file mode 100644 index c76d64fe47934ec7a52a125b07a14ce2e1fd1442..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_expand_as_cn.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _cn_api_fluid_layers_sequence_expand_as: - -sequence_expand_as -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_expand_as(x, y, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -Sequence Expand As Layer,该OP根据输入 ``y`` 的第0级lod对输入 ``x`` 进行扩展。当前实现要求 ``y`` 的lod层数(level)必须为1,且 ``x`` 的第一维必须和 ``y`` 的第0层lod大小相同,所以扩展后的LodTensor具有和 ``y`` 相同的lod。扩展结果与输入 ``x`` 的lod无关,所以无需考虑 ``x`` 的lod。 - -注意,该OP的输入 ``x`` 可以是Tensor或LoDTensor, ``y`` 只能是LodTensor。 - -范例解释如下: - -:: - - 例1: - 假设,有4个长度维1的序列[a]、[b]、[c]和[d],现在要将其扩展为长度是3、3、1、1的序列[a][a][a]、[b][b][b]、[c]和[d]。 - 显然,扩展后的序列lod为[0, 3, 6, 7, 8],则: - 给定输入一维LoDTensor x - x.data = [[a], [b], [c], [d]] - x.dims = [4, 1] - 和输入 y - y.lod = [[3, 3, 1, 1]] #为了便于理解这里用基于长度lod表示 - - 经过sequence_expand_as运算,得到输出1级LoDTensor out - out.lod = [[0, 3, 6, 7, 8]] #基于偏移的lod,等价于基于长度的[[3, 3, 1, 1]] - out.data = [[a], [a], [a], [b], [b], [b], [c], [d]] - out.dims = [8, 1] - - 可见,输出out将x扩展至和y具有相同的lod。 - -:: - - 例2: - 设定与例1类似,给定输入一维LoDTensor x: - x.data = [[a, b], [c, d], [e, f]] - x.dims = [3, 2] - 和输入 y: - y.lod = [[2, 1, 3]] #为了便于理解这里用基于长度lod表示 - - 输出为1级LoDTensor: - out.lod = [[0, 2, 3, 6]] #基于偏移的lod,等价于基于长度的[[2, 1, 3]] - out.data = [[a, b], [a, b] [c, d], [e, f], [e, f], [e, f]] - out.dims = [6, 2] - - 可见,输出out将x扩展至和y具有相同的lod。 - - -参数: - - **x** (Variable) - 输入变量,维度为 :math:`[M, K]` 的二维Tensor或LoDTensor,第一维必须与输入 ``y`` 的第0层lod大小相同,且仅支持lod_level为1。数据类型支持int32,int64,float32或float64。 - - **y** (Variable) - 输入变量,LoDTensor,lod level必须为1。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:扩展变量,维度为 :math:`[N, K]` 的二维LoDTensor,N由输入 ``y`` 的lod决定,且仅支持lod_level为1。数据类型与输入 ``x`` 一致。 - -返回类型:Variable - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - - x = fluid.data(name='x', shape=[1], dtype='float32') - y = fluid.data(name='y', shape=[1], dtype='float32', lod_level=1) - out = layers.sequence_expand_as(x=x, y=y) - - exe = fluid.Executor(fluid.CPUPlace()) - place = fluid.CPUPlace() - - np_data = np.array([[1], [2], [3], [4]]).astype('float32') - x_lod_tensor = fluid.create_lod_tensor(np_data, [[2, 2]], place) - print(x_lod_tensor) - #lod: [[0, 2, 4]] - # dim: 4, 1 - # layout: NCHW - # dtype: float - # data: [1 2 3 4] - - y_lod_tensor = fluid.create_random_int_lodtensor([[3,3,1,1]], [1], - place, low=0, high=1) - print(y_lod_tensor) - #lod: [[0, 3, 6, 7, 8]] - # dim: 8, 1 - # layout: NCHW - # dtype: int64_t - # data: [0 0 1 0 1 1 1 0] - - out_main = exe.run(fluid.default_main_program(), - feed={'x': x_lod_tensor, 'y': y_lod_tensor}, - fetch_list=[out], return_numpy=False) - print(out_main[0]) - #lod: [[0, 3, 6, 7, 8]] - # dim: 8, 1 - # layout: NCHW - # dtype: float - # data: [1 1 1 2 2 2 3 4] - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_expand_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_expand_cn.rst deleted file mode 100644 index 81bbbe60230a1c14f09e8c066ba957bac8c054b9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_expand_cn.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _cn_api_fluid_layers_sequence_expand: - -sequence_expand -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_expand(x, y, ref_level=-1, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -序列扩张层(Sequence Expand Layer),根据输入 ``y`` 的第 ``ref_level`` 层lod对输入 ``x`` 进行扩展。 ``x`` 的lod level最多为1,若 ``x`` 的lod level为1,则 ``x`` 的lod大小必须与 ``y`` 的第 ``ref_level`` 层lod大小相等;若 ``x`` 的lod level为0,则 ``x`` 的第一维大小必须与 ``y`` 第 ``ref_level`` 层大小相等。 ``x`` 的秩最少为2,当 ``x`` 的秩大于2时,将被当作是一个二维张量处理。 - -注意,该OP的输入 ``x`` 可以是Tensor或LodTensor, ``y`` 只能是LodTensor。 - -范例解释如下: - -:: - - 例1: - 假设两个长度为2的序列[a][b]和[c][d],欲将其扩展为4个长度为2的序列[a][b]、[a][b]、[c][d]、[c][d]。 - 序列[a][b]扩展2次,[c][d]扩展2次,扩展所需依据的lod为[2, 2],则: - 给定输入一维LoDTensor x - x.lod = [[2, 2]] #表示两个序列的长度为2,为了便于理解这里用基于长度lod表示 - x.data = [[a], [b], [c], [d]] - x.dims = [4, 1] - 和输入 y - y.lod = [[2, 2], #第0层lod,指定按该层扩展,表示分别扩展2次,为了便于理解这里用基于长度lod表示 - [3, 3, 1, 1]] #第1层lod,注意,因为指定ref_level为0,所以这一层与运算无关 - 指定 ref_level = 0,依据y的第0层lod进行扩展, - - 经过sequence_expand,输出为1级LoDTensor out - out.lod = [[0, 2, 4, 6, 8]] #基于偏移的lod,等价于基于长度的[[2, 2, 2, 2]] - out.data = [[a], [b], [a], [b], [c], [d], [c], [d]] - out.dims = [8, 1] - -:: - - 例2: - 假设有3个长度维1的序列[a]、[b]、[c],现在要将其扩展为长度是2、0、3的序列[a][a]、[c][c][c]。 - 显然,扩展后的序列lod为[2, 0, 3],则: - 给定输入一维LoDTensor x - x.data = [[a], [b], [c]] - x.dims = [3, 1] - 和输入 y - y.lod = [[2, 0, 3]] - 默认 ref_level = -1 - - 经过sequence_expand,输出为1级LoDTensor out - out.data = [[a], [a], [c], [c], [c]] - out.dims = [5, 1] - -参数: - - **x** (Variable) - 输入变量,维度为 :math:`[M, K]` ,lod level至多1的二维Tensor或LoDTensor。数据类型支持int32,int64,float32或float64。 - - **y** (Variable) - 输入变量,lod level至少为1的LoDTensor。数据类型不限。 - - **ref_level** (int,可选) - 扩展 ``x`` 所依据的 ``y`` 的lod层。默认值-1,表示lod的最后一层。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:扩展变量,维度为 :math:`[N, K]` 的LoDTensor,N由输入 ``x`` 和 ``y`` 的lod共同决定。数据类型与输入 ``x`` 一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - - x = fluid.data(name='x', shape=[1], dtype='float32') - y = fluid.data(name='y', shape=[1], - dtype='float32', lod_level=1) - out = layers.sequence_expand(x=x, y=y, ref_level=0) - - exe = fluid.Executor(fluid.CPUPlace()) - place = fluid.CPUPlace() - - np_data = np.array([[1], [2], [3], [4]]).astype('float32') - x_lod_tensor = fluid.create_lod_tensor(np_data, [[2, 2]], place) - print(x_lod_tensor) - #lod: [[0, 2, 4]] - # dim: 4, 1 - # layout: NCHW - # dtype: float - # data: [1 2 3 4] - - y_lod_tensor = fluid.create_random_int_lodtensor([[2, 2], [3,3,1,1]], [1], - place, low=0, high=1) - print(y_lod_tensor) - #lod: [[0, 2, 4][0, 3, 6, 7, 8]] - # dim: 8, 1 - # layout: NCHW - # dtype: int64_t - # data: [0 0 1 1 1 1 1 0] - - out_main = exe.run(fluid.default_main_program(), - feed={'x': x_lod_tensor, 'y': y_lod_tensor}, - fetch_list=[out], return_numpy=False) - print(out_main[0]) - #lod: [[0, 2, 4, 6, 8]] - # dim: 8, 1 - # layout: NCHW - # dtype: float - # data: [1 2 1 2 3 4 3 4] - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_first_step_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_first_step_cn.rst deleted file mode 100644 index bdc2afbba3f1ffe770b9dfc5364b248b6d44d6da..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_first_step_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_layers_sequence_first_step: - -sequence_first_step -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_first_step(input) - -:api_attr: 声明式编程模式(静态图) - - - -该OP **仅支持LoDTensor类型的输入** ,将对输入的LoDTensor,在最后一层lod_level上,选取其每个序列(sequence)的第一个时间步(time_step)的特征向量作为池化后的输出向量。 - -:: - - Case 1: - - input是1-level LoDTensor: - input.lod = [[0, 2, 5, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - - 输出为LoDTensor: - out.shape = [3, 1] - 且 out.shape[0] == len(x.lod[-1]) == 3 - out.data = [[1.], [2.], [5.]], where 1.=first(1., 3.), 2.=first(2., 4., 6.), 5.=first(5., 1.) - - Case 2: - - input是2-level的LoDTensor, 包含3个长度分别为[2, 0, 3]的序列,其中中间的0表示序列为空。 - 第一个长度为2的序列包含2个长度分别为[1, 2]的子序列; - 最后一个长度为3的序列包含3个长度分别为[1, 0, 3]的子序列。 - input.lod = [[0, 2, 2, 5], [0, 1, 3, 4, 4, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - - 将根据最后一层的lod信息[0, 1, 3, 4, 4, 7]进行池化操作,且pad_value = 0.0 - 输出为LoDTensor: - out.shape= [5, 1] - out.lod = [[0, 2, 2, 5]] - 其中 out.shape[0] == len(x.lod[-1]) == 5 - out.data = [[1.], [3.], [4.], [0.0], [6.]] - where 1.=first(1.), 3.=first(3., 2.), 4.=first(4.), 0.0 = pad_value, 6.=first(6., 5., 1.) - -参数:**input** (Variable)- 类型为LoDTensor的输入序列,仅支持lod_level不超过2的LoDTensor,数据类型为float32。 - -返回:每个输入序列中的第一个step的特征向量组成的LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[7, 1], append_batch_size=False, - dtype='float32', lod_level=1) - x_first_step = fluid.layers.sequence_first_step(input=x) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_last_step_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_last_step_cn.rst deleted file mode 100644 index c2f4604c51ef494f4e374ba0efb88d73a1e1b778..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_last_step_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_fluid_layers_sequence_last_step: - -sequence_last_step -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_last_step(input) - -:api_attr: 声明式编程模式(静态图) - - - -该OP **仅支持LoDTensor类型的输入** ,将对输入的LoDTensor,在最后一层lod_level上,选取其每个序列(sequence)的最后一个时间步(time-step)的特征向量作为池化后的输出向量。 - -:: - - Case 1: - - input是1-level的LoDTensor: - input.lod = [[0, 2, 5, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - - 输出为LoDTensor: - out.shape = [3, 1] - 且 out.shape[0] == len(x.lod[-1]) == 3 - - out.data = [[3.], [6.], [1.]], where 3.=last(1., 3.), 6.=last(2., 4., 6.), 1.=last(5., 1.) - - Case 2: - - input是2-level的LoDTensor, 包含3个长度分别为[2, 0, 3]的序列,其中中间的0表示序列为空。 - 第一个长度为2的序列包含2个长度分别为[1, 2]的子序列; - 最后一个长度为3的序列包含3个长度分别为[1, 0, 3]的子序列。 - input.lod = [[0, 2, 2, 5], [0, 1, 3, 4, 4, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - - 将根据最后一层的lod信息[0, 1, 3, 4, 4, 7]进行池化操作,且pad_value = 0.0 - 输出为LoDTensor: - out.shape= [5, 1] - out.lod = [[0, 2, 2, 5]] - 其中 out.shape[0] == len(x.lod[-1]) == 5 - out.data = [[1.], [2.], [4.], [0.0], [1.]] - where 1.=last(1.), 2.=last(3., 2.), 4.=last(4.), 0.0 = pad_value, 1=last(6., 5., 1.) - -参数:**input** (Variable)- 类型为LoDTensor的输入序列,仅支持lod_level不超过2的LoDTensor,数据类型为float32。 - -返回:每个输入序列中的最后一步特征向量组成的LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[7, 1], append_batch_size=False, - dtype='float32', lod_level=1) - x_last_step = fluid.layers.sequence_last_step(input=x) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_concat_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_concat_cn.rst deleted file mode 100644 index 8bb16a4524400184880e1ee3cd36e570d048901d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_concat_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_sequence_concat: - -sequence_concat -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_concat(input, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用concat函数(fluid.layers.** :ref:`cn_api_fluid_layers_concat` **)。** - -**该OP仅支持LoDTensor** ,通过LoDTensor的LoD信息将输入的多个LoDTensor进行连接(concat),输出连接后的LoDTensor。 - -:: - - input是由多个LoDTensor组成的list: - input = [x1, x2] - 其中: - x1.lod = [[0, 3, 5]] - x1.data = [[1], [2], [3], [4], [5]] - x1.shape = [5, 1] - - x2.lod = [[0, 2, 4]] - x2.data = [[6], [7], [8], [9]] - x2.shape = [4, 1] - 且必须满足:len(x1.lod[0]) == len(x2.lod[0]) - - 输出为LoDTensor: - out.lod = [[0, 3+2, 5+4]] - out.data = [[1], [2], [3], [6], [7], [4], [5], [8], [9]] - out.shape = [9, 1] - - -参数: - - **input** (list of Variable) – 多个LoDTensor组成的list,要求每个输入LoDTensor的LoD长度必须一致。数据类型为float32,float64或int64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 输出连接后的LoDTensor,数据类型和输入一致。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[10], dtype='float32') - y = fluid.layers.data(name='y', shape=[10], dtype='float32') - out = fluid.layers.sequence_concat(input=[x, y]) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_conv_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_conv_cn.rst deleted file mode 100644 index 9bf232beca7000c5a42c552814aa5ab70179a559..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_conv_cn.rst +++ /dev/null @@ -1,85 +0,0 @@ -.. _cn_api_fluid_layers_sequence_conv: - -sequence_conv -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_conv(input, num_filters, filter_size=3, filter_stride=1, padding=True, padding_start=None, bias_attr=None, param_attr=None, act=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用conv2d函数(fluid.layers.** :ref:`cn_api_fluid_layers_conv2d` **)。** - -该OP在给定的卷积参数下(如卷积核数目、卷积核大小等),对输入的变长序列(sequence)LoDTensor进行卷积操作。默认情况下,该OP会自适应地在每个输入序列的两端等长地填充全0数据,以确保卷积后的序列输出长度和输入长度一致。支持通过配置 ``padding_start`` 参数来指定序列填充的行为。 - -**提示:** 参数 ``padding`` 为无用参数,将在未来的版本中被移除。 - -:: - - 这里详细介绍数据填充操作的细节: - 对于一个min-batch为2的变长序列输入,分别包含3个、1个时间步(time_step), - 假设输入input是一个[4, N]的float类型LoDTensor,为了方便,这里假设N = 2 - input.data = [[1, 1], - [2, 2], - [3, 3], - [4, 4]] - input.lod = [[0, 3, 4]] - - 即输入input总共有4个词,每个词被表示为一个2维向量。 - - Case1: - - 若 padding_start = -1,filter_size = 3, - 则两端填充数据的长度分别为: - up_pad_len = max(0, -padding_start) = 1 - down_pad_len = max(0, filter_size + padding_start - 1) = 1 - - 则以此填充后的输入数据为: - data_aftet_padding = [[0, 0, 1, 1, 2, 2], - [1, 1, 2, 2, 3, 3], - [2, 2, 3, 3, 0, 0], - [0, 0, 4, 4, 0, 0]] - - 它将和卷积核矩阵相乘得到最终的输出,假设num_filters = 3: - output.data = [[ 0.3234, -0.2334, 0.7433], - [ 0.5646, 0.9464, -0.1223], - [-0.1343, 0.5653, 0.4555], - [ 0.9954, -0.1234, -0.1234]] - output.shape = [4, 3] # 3 = num_filters - output.lod = [[0, 3, 4]] # 保持不变 - - - -参数: - - **input** (Variable) - 维度为 :math:`(M, K)` 的二维LoDTensor,仅支持lod_level为1。其中M是mini-batch的总时间步数,K是输入的 ``hidden_size`` 特征维度。数据类型为float32或float64。 - - **num_filters** (int) - 滤波器的数量。 - - **filter_size** (int) - 滤波器的高度(H);不支持指定滤波器宽度(W),宽度固定取值为输入的 ``hidden_size`` 。默认值为3。 - - **filter_stride** (int) - 滤波器每次移动的步长。目前只支持取值为1,默认为1。 - - **padding** (bool) - **此参数不起任何作用,将在未来的版本中被移除。** 无论 ``padding`` 取值为False或者True,默认地,该函数会自适应地在每个输入序列的两端等长地填充全0数据,以确保卷积后的输出序列长度和输入长度一致。默认填充是考虑到输入的序列长度可能会小于卷积核大小,这会导致无正确计算卷积输出。填充为0的数据在训练过程中不会被更新。默认为True。 - - **padding_start** (int) - 表示对输入序列填充时的起始位置,可以为负值。负值表示在每个序列的首端填充 ``|padding_start|`` 个时间步(time_step)的全0数据;正值表示对每个序列跳过前 ``padding_start`` 个时间步的数据。同时在末端填充 :math:`filter\_size + padding\_start - 1` 个时间步的全0数据,以保证卷积输出序列长度和输入长度一致。如果 ``padding_start`` 为None,则在每个序列的两端填充 :math:`\frac{filter\_size}{2}` 个时间步的全0数据;如果 ``padding_start`` 设置为0,则只在序列的末端填充 :math:`filter\_size - 1` 个时间步的全0数据。默认为None。 - - **bias_attr** (ParamAttr) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回:和输入序列等长的LoDTensor,数据类型和输入一致,为float32或float64。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[10,10], append_batch_size=False, dtype='float32') - x_conved = fluid.layers.sequence_conv(x,2) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_enumerate_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_enumerate_cn.rst deleted file mode 100644 index 5ac0470fa3a199296d246361c7e4c5528a7e37bc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_enumerate_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_sequence_enumerate: - -sequence_enumerate -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_enumerate(input, win_size, pad_value=0, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -枚举形状为 ``[d_1, 1]`` 的输入序列所有长度为 ``win_size`` 的子序列,生成一个形状为 ``[d_1, win_size]`` 的新序列,需要时以 ``pad_value`` 填充。 - -注意,该OP的输入 ``input`` 只能是LodTensor。 - -范例如下: - -:: - - 给定输入 x: - x.lod = [[0, 3, 5]] - x.data = [[1], [2], [3], [4], [5]] - x.dims = [5, 1] - 设置属性 win_size = 2 pad_value = 0 - - 得到输出 out: - out.lod = [[0, 3, 5]] - out.data = [[1, 2], [2, 3], [3, 0], [4, 5], [5, 0]] - out.dims = [5, 2] - -参数: - - **input** (Variable)- 输入序列,形状为 ``[d_1, 1]`` ,lod level为1的LodTensor。数据类型支持int32,int64,float32或float64。 - - **win_size** (int)- 子序列窗口大小。 - - **pad_value** (int,可选)- 填充值,默认为0。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 枚举序列,形状为 ``[d_1, win_size]`` ,lod_level为1的LoDTensor。数据类型与输入 ``input`` 一致。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x',shape=[-1, 1], dtype='int32', lod_level=1) - out = fluid.layers.sequence_enumerate(input=x, win_size=3, pad_value=0) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_expand_as_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_expand_as_cn.rst deleted file mode 100644 index c76d64fe47934ec7a52a125b07a14ce2e1fd1442..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_expand_as_cn.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _cn_api_fluid_layers_sequence_expand_as: - -sequence_expand_as -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_expand_as(x, y, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -Sequence Expand As Layer,该OP根据输入 ``y`` 的第0级lod对输入 ``x`` 进行扩展。当前实现要求 ``y`` 的lod层数(level)必须为1,且 ``x`` 的第一维必须和 ``y`` 的第0层lod大小相同,所以扩展后的LodTensor具有和 ``y`` 相同的lod。扩展结果与输入 ``x`` 的lod无关,所以无需考虑 ``x`` 的lod。 - -注意,该OP的输入 ``x`` 可以是Tensor或LoDTensor, ``y`` 只能是LodTensor。 - -范例解释如下: - -:: - - 例1: - 假设,有4个长度维1的序列[a]、[b]、[c]和[d],现在要将其扩展为长度是3、3、1、1的序列[a][a][a]、[b][b][b]、[c]和[d]。 - 显然,扩展后的序列lod为[0, 3, 6, 7, 8],则: - 给定输入一维LoDTensor x - x.data = [[a], [b], [c], [d]] - x.dims = [4, 1] - 和输入 y - y.lod = [[3, 3, 1, 1]] #为了便于理解这里用基于长度lod表示 - - 经过sequence_expand_as运算,得到输出1级LoDTensor out - out.lod = [[0, 3, 6, 7, 8]] #基于偏移的lod,等价于基于长度的[[3, 3, 1, 1]] - out.data = [[a], [a], [a], [b], [b], [b], [c], [d]] - out.dims = [8, 1] - - 可见,输出out将x扩展至和y具有相同的lod。 - -:: - - 例2: - 设定与例1类似,给定输入一维LoDTensor x: - x.data = [[a, b], [c, d], [e, f]] - x.dims = [3, 2] - 和输入 y: - y.lod = [[2, 1, 3]] #为了便于理解这里用基于长度lod表示 - - 输出为1级LoDTensor: - out.lod = [[0, 2, 3, 6]] #基于偏移的lod,等价于基于长度的[[2, 1, 3]] - out.data = [[a, b], [a, b] [c, d], [e, f], [e, f], [e, f]] - out.dims = [6, 2] - - 可见,输出out将x扩展至和y具有相同的lod。 - - -参数: - - **x** (Variable) - 输入变量,维度为 :math:`[M, K]` 的二维Tensor或LoDTensor,第一维必须与输入 ``y`` 的第0层lod大小相同,且仅支持lod_level为1。数据类型支持int32,int64,float32或float64。 - - **y** (Variable) - 输入变量,LoDTensor,lod level必须为1。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:扩展变量,维度为 :math:`[N, K]` 的二维LoDTensor,N由输入 ``y`` 的lod决定,且仅支持lod_level为1。数据类型与输入 ``x`` 一致。 - -返回类型:Variable - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - - x = fluid.data(name='x', shape=[1], dtype='float32') - y = fluid.data(name='y', shape=[1], dtype='float32', lod_level=1) - out = layers.sequence_expand_as(x=x, y=y) - - exe = fluid.Executor(fluid.CPUPlace()) - place = fluid.CPUPlace() - - np_data = np.array([[1], [2], [3], [4]]).astype('float32') - x_lod_tensor = fluid.create_lod_tensor(np_data, [[2, 2]], place) - print(x_lod_tensor) - #lod: [[0, 2, 4]] - # dim: 4, 1 - # layout: NCHW - # dtype: float - # data: [1 2 3 4] - - y_lod_tensor = fluid.create_random_int_lodtensor([[3,3,1,1]], [1], - place, low=0, high=1) - print(y_lod_tensor) - #lod: [[0, 3, 6, 7, 8]] - # dim: 8, 1 - # layout: NCHW - # dtype: int64_t - # data: [0 0 1 0 1 1 1 0] - - out_main = exe.run(fluid.default_main_program(), - feed={'x': x_lod_tensor, 'y': y_lod_tensor}, - fetch_list=[out], return_numpy=False) - print(out_main[0]) - #lod: [[0, 3, 6, 7, 8]] - # dim: 8, 1 - # layout: NCHW - # dtype: float - # data: [1 1 1 2 2 2 3 4] - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_expand_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_expand_cn.rst deleted file mode 100644 index 81bbbe60230a1c14f09e8c066ba957bac8c054b9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_expand_cn.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _cn_api_fluid_layers_sequence_expand: - -sequence_expand -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_expand(x, y, ref_level=-1, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -序列扩张层(Sequence Expand Layer),根据输入 ``y`` 的第 ``ref_level`` 层lod对输入 ``x`` 进行扩展。 ``x`` 的lod level最多为1,若 ``x`` 的lod level为1,则 ``x`` 的lod大小必须与 ``y`` 的第 ``ref_level`` 层lod大小相等;若 ``x`` 的lod level为0,则 ``x`` 的第一维大小必须与 ``y`` 第 ``ref_level`` 层大小相等。 ``x`` 的秩最少为2,当 ``x`` 的秩大于2时,将被当作是一个二维张量处理。 - -注意,该OP的输入 ``x`` 可以是Tensor或LodTensor, ``y`` 只能是LodTensor。 - -范例解释如下: - -:: - - 例1: - 假设两个长度为2的序列[a][b]和[c][d],欲将其扩展为4个长度为2的序列[a][b]、[a][b]、[c][d]、[c][d]。 - 序列[a][b]扩展2次,[c][d]扩展2次,扩展所需依据的lod为[2, 2],则: - 给定输入一维LoDTensor x - x.lod = [[2, 2]] #表示两个序列的长度为2,为了便于理解这里用基于长度lod表示 - x.data = [[a], [b], [c], [d]] - x.dims = [4, 1] - 和输入 y - y.lod = [[2, 2], #第0层lod,指定按该层扩展,表示分别扩展2次,为了便于理解这里用基于长度lod表示 - [3, 3, 1, 1]] #第1层lod,注意,因为指定ref_level为0,所以这一层与运算无关 - 指定 ref_level = 0,依据y的第0层lod进行扩展, - - 经过sequence_expand,输出为1级LoDTensor out - out.lod = [[0, 2, 4, 6, 8]] #基于偏移的lod,等价于基于长度的[[2, 2, 2, 2]] - out.data = [[a], [b], [a], [b], [c], [d], [c], [d]] - out.dims = [8, 1] - -:: - - 例2: - 假设有3个长度维1的序列[a]、[b]、[c],现在要将其扩展为长度是2、0、3的序列[a][a]、[c][c][c]。 - 显然,扩展后的序列lod为[2, 0, 3],则: - 给定输入一维LoDTensor x - x.data = [[a], [b], [c]] - x.dims = [3, 1] - 和输入 y - y.lod = [[2, 0, 3]] - 默认 ref_level = -1 - - 经过sequence_expand,输出为1级LoDTensor out - out.data = [[a], [a], [c], [c], [c]] - out.dims = [5, 1] - -参数: - - **x** (Variable) - 输入变量,维度为 :math:`[M, K]` ,lod level至多1的二维Tensor或LoDTensor。数据类型支持int32,int64,float32或float64。 - - **y** (Variable) - 输入变量,lod level至少为1的LoDTensor。数据类型不限。 - - **ref_level** (int,可选) - 扩展 ``x`` 所依据的 ``y`` 的lod层。默认值-1,表示lod的最后一层。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:扩展变量,维度为 :math:`[N, K]` 的LoDTensor,N由输入 ``x`` 和 ``y`` 的lod共同决定。数据类型与输入 ``x`` 一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - - x = fluid.data(name='x', shape=[1], dtype='float32') - y = fluid.data(name='y', shape=[1], - dtype='float32', lod_level=1) - out = layers.sequence_expand(x=x, y=y, ref_level=0) - - exe = fluid.Executor(fluid.CPUPlace()) - place = fluid.CPUPlace() - - np_data = np.array([[1], [2], [3], [4]]).astype('float32') - x_lod_tensor = fluid.create_lod_tensor(np_data, [[2, 2]], place) - print(x_lod_tensor) - #lod: [[0, 2, 4]] - # dim: 4, 1 - # layout: NCHW - # dtype: float - # data: [1 2 3 4] - - y_lod_tensor = fluid.create_random_int_lodtensor([[2, 2], [3,3,1,1]], [1], - place, low=0, high=1) - print(y_lod_tensor) - #lod: [[0, 2, 4][0, 3, 6, 7, 8]] - # dim: 8, 1 - # layout: NCHW - # dtype: int64_t - # data: [0 0 1 1 1 1 1 0] - - out_main = exe.run(fluid.default_main_program(), - feed={'x': x_lod_tensor, 'y': y_lod_tensor}, - fetch_list=[out], return_numpy=False) - print(out_main[0]) - #lod: [[0, 2, 4, 6, 8]] - # dim: 8, 1 - # layout: NCHW - # dtype: float - # data: [1 2 1 2 3 4 3 4] - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_first_step_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_first_step_cn.rst deleted file mode 100644 index bdc2afbba3f1ffe770b9dfc5364b248b6d44d6da..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_first_step_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_layers_sequence_first_step: - -sequence_first_step -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_first_step(input) - -:api_attr: 声明式编程模式(静态图) - - - -该OP **仅支持LoDTensor类型的输入** ,将对输入的LoDTensor,在最后一层lod_level上,选取其每个序列(sequence)的第一个时间步(time_step)的特征向量作为池化后的输出向量。 - -:: - - Case 1: - - input是1-level LoDTensor: - input.lod = [[0, 2, 5, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - - 输出为LoDTensor: - out.shape = [3, 1] - 且 out.shape[0] == len(x.lod[-1]) == 3 - out.data = [[1.], [2.], [5.]], where 1.=first(1., 3.), 2.=first(2., 4., 6.), 5.=first(5., 1.) - - Case 2: - - input是2-level的LoDTensor, 包含3个长度分别为[2, 0, 3]的序列,其中中间的0表示序列为空。 - 第一个长度为2的序列包含2个长度分别为[1, 2]的子序列; - 最后一个长度为3的序列包含3个长度分别为[1, 0, 3]的子序列。 - input.lod = [[0, 2, 2, 5], [0, 1, 3, 4, 4, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - - 将根据最后一层的lod信息[0, 1, 3, 4, 4, 7]进行池化操作,且pad_value = 0.0 - 输出为LoDTensor: - out.shape= [5, 1] - out.lod = [[0, 2, 2, 5]] - 其中 out.shape[0] == len(x.lod[-1]) == 5 - out.data = [[1.], [3.], [4.], [0.0], [6.]] - where 1.=first(1.), 3.=first(3., 2.), 4.=first(4.), 0.0 = pad_value, 6.=first(6., 5., 1.) - -参数:**input** (Variable)- 类型为LoDTensor的输入序列,仅支持lod_level不超过2的LoDTensor,数据类型为float32。 - -返回:每个输入序列中的第一个step的特征向量组成的LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[7, 1], append_batch_size=False, - dtype='float32', lod_level=1) - x_first_step = fluid.layers.sequence_first_step(input=x) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_last_step_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_last_step_cn.rst deleted file mode 100644 index c2f4604c51ef494f4e374ba0efb88d73a1e1b778..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_last_step_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_fluid_layers_sequence_last_step: - -sequence_last_step -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_last_step(input) - -:api_attr: 声明式编程模式(静态图) - - - -该OP **仅支持LoDTensor类型的输入** ,将对输入的LoDTensor,在最后一层lod_level上,选取其每个序列(sequence)的最后一个时间步(time-step)的特征向量作为池化后的输出向量。 - -:: - - Case 1: - - input是1-level的LoDTensor: - input.lod = [[0, 2, 5, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - - 输出为LoDTensor: - out.shape = [3, 1] - 且 out.shape[0] == len(x.lod[-1]) == 3 - - out.data = [[3.], [6.], [1.]], where 3.=last(1., 3.), 6.=last(2., 4., 6.), 1.=last(5., 1.) - - Case 2: - - input是2-level的LoDTensor, 包含3个长度分别为[2, 0, 3]的序列,其中中间的0表示序列为空。 - 第一个长度为2的序列包含2个长度分别为[1, 2]的子序列; - 最后一个长度为3的序列包含3个长度分别为[1, 0, 3]的子序列。 - input.lod = [[0, 2, 2, 5], [0, 1, 3, 4, 4, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - - 将根据最后一层的lod信息[0, 1, 3, 4, 4, 7]进行池化操作,且pad_value = 0.0 - 输出为LoDTensor: - out.shape= [5, 1] - out.lod = [[0, 2, 2, 5]] - 其中 out.shape[0] == len(x.lod[-1]) == 5 - out.data = [[1.], [2.], [4.], [0.0], [1.]] - where 1.=last(1.), 2.=last(3., 2.), 4.=last(4.), 0.0 = pad_value, 1=last(6., 5., 1.) - -参数:**input** (Variable)- 类型为LoDTensor的输入序列,仅支持lod_level不超过2的LoDTensor,数据类型为float32。 - -返回:每个输入序列中的最后一步特征向量组成的LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[7, 1], append_batch_size=False, - dtype='float32', lod_level=1) - x_last_step = fluid.layers.sequence_last_step(input=x) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_mask_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_mask_cn.rst deleted file mode 100644 index ac7fafb2faa1728201dc7452da644c8449a6f728..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_mask_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_sequence_mask: - -sequence_mask -------------------------------- - -.. py:function:: paddle.fluid.layers.sequence_mask(x, maxlen=None, dtype='int64', name=None) - - - - -该层根据输入 ``x`` 和 ``maxlen`` 输出一个掩码,数据类型为 ``dtype`` 。 - -假设 x 是一个形状为 ``[d_1, d_2,…, d_n]`` 的张量, 则输出 y 是一个形状为 ``[d_1, d_2,… ,d_n, maxlen]`` 的掩码,其中: - -.. math:: - - y(i_1, i_2,..., i_n, j) = (j < x(i_1, i_2,..., i_n)) - -范例如下: - -:: - - 给定输入: - x = [3, 1, 1, 0] maxlen = 4 - - 得到输出张量: - mask = [[1, 1, 1, 0], - [1, 0, 0, 0], - [1, 0, 0, 0], - [0, 0, 0, 0]] - - - - - -参数: - - **x** (Variable) - 输入张量,其元素是小于等于 ``maxlen`` 的整数,形状为 ``[d_1, d_2,…, d_n]`` 的Tensor或LoDTensor。 - - **maxlen** (int,可选) - 序列的最大长度。默认为空,此时 ``maxlen`` 取 ``x`` 中所有元素的最大值。 - - **dtype** (np.dtype|core.VarDesc.VarType|str,可选) - 输出的数据类型,默认为 ``int64`` 。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: mask张量,Tensor或LoDTensor,形状为 ``[d_1, d_2,… ,d_n, maxlen]`` ,数据类型由 ``dtype`` 指定,支持float32、float64、int32和int64,默认为int64。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - x = fluid.data(name='x', shape=[10], dtype='float32', lod_level=1) - mask = layers.sequence_mask(x=x) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_pad_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_pad_cn.rst deleted file mode 100644 index 12ddf6eb2ecd59afe5700187479a636d33cd7fe7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_pad_cn.rst +++ /dev/null @@ -1,91 +0,0 @@ -.. _cn_api_fluid_layers_sequence_pad: - -sequence_pad -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_pad(x,pad_value,maxlen=None,name=None) - -:api_attr: 声明式编程模式(静态图) - - - -序列填充操作符(Sequence Pad Operator),该OP将同一batch中的序列填充到一个一致的长度(由 ``maxlen`` 指定)。填充的新元素的值具体由输入 ``pad_value`` 指定,并会添加到每一个序列的末尾,使得他们最终的长度保持一致。最后返回一个Python tuple ``(Out, Length)`` ,其中LodTensor ``Out`` 为填充后的序列,LodTensor ``Length`` 为填充前的原序列长度信息。 - -注意,该OP的输入 ``x`` 只能是LodTensor。 - -范例如下: - -:: - - 例1: - 给定输入1-level LoDTensor x: - x.lod = [[0, 2, 5]] #输入的两个序列长度是2和3 - x.data = [[a],[b],[c],[d],[e]] - 和输入 pad_value: - pad_value.data = [0] - 设置 maxlen = 4 - - 得到得到tuple (Out, Length): - Out.data = [[[a],[b],[0],[0]],[[c],[d],[e],[0]]] - Length.data = [2, 3] #原序列长度是2和3 - -:: - - 例2: - 给定输入1-level LoDTensor x: - x.lod = [[0, 2, 5]] - x.data = [[a1,a2],[b1,b2],[c1,c2],[d1,d2],[e1,e2]] - 和输入 pad_value: - pad_value.data = [0] - 默认 maxlen = None, (根据x的形状,此例中实际长度为3) - - 得到得到tuple (Out, Length): - Out.data = [[[a1,a2],[b1,b2],[0,0]],[[c1,c2],[d1,d2],[e1,e2]]] - Length.data = [2, 3] - -:: - - 例3: - 给定输入1-level LoDTensor x: - x.lod = [[0, 2, 5]] - x.data = [[a1,a2],[b1,b2],[c1,c2],[d1,d2],[e1,e2]] - 和输入 pad_value: - pad_value.data = [p1,p2] - 默认 maxlen = None, (根据x的形状,此例中实际长度为3) - - 得到tuple (Out, Length): - Out.data = [[[a1,a2],[b1,b2],[p1,p2]],[[c1,c2],[d1,d2],[e1,e2]]] - Length.data = [2, 3] - - -参数: - - **x** (Vairable) - 输入,维度为 ``[M, K]`` 的LoDTensor,仅支持lod_level为1。lod所描述的序列数量,作为要填充的batch_size。数据类型为int32,int64,float32或float64。 - - **pad_value** (Variable) - 填充值,可以是标量或长度为 ``K`` 的一维Tensor。如果是标量,则自动广播为Tensor。数据类型需与 ``x`` 相同。 - - **maxlen** (int,可选) - 填充序列的长度。默认为None,此时以序列中最长序列的长度为准,其他所有序列填充至该长度。当是某个特定的正整数,最大长度必须大于最长初始序列的长度。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:元素为两个LoDTensor的Python tuple。第一个元素为填充后的变量 ``Out`` ,形状为 ``[batch_size, maxlen, K]`` ,lod level为0的LoDTensor,数据类型与输入 ``x`` 相同。第二个元素为填充前的原序列长度信息 ``Length`` ,lod level为0的一维LoDTensor,长度等于batch_size,数据类型为int64。 - -返回类型:tuple - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - x = fluid.layers.data(name='y', shape=[10, 5], - dtype='float32', lod_level=1) - pad_value = fluid.layers.assign( - input=numpy.array([0.0], dtype=numpy.float32)) - out = fluid.layers.sequence_pad(x=x, pad_value=pad_value) - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_pool_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_pool_cn.rst deleted file mode 100644 index 480bc75c92f9d5412861391bbcb5ce94361a1701..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_pool_cn.rst +++ /dev/null @@ -1,99 +0,0 @@ -.. _cn_api_fluid_layers_sequence_pool: - -sequence_pool -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_pool(input, pool_type, is_test=False, pad_value=0.0) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用pool2d函数(fluid.layers.** :ref:`cn_api_fluid_layers_pool2d` **)。** - -该OP **仅支持LoDTensor类型的输入** ,将对输入的LoDTensor进行指定方式的池化(pooling)操作。通过指定pool_type参数,将输入的每个序列(sequence)在最后一层lod_level上或时间步(time-step)上对特征进行诸如sum、average、sqrt等池化操作。 - -支持六种pool_type: - -- **average**: :math:`Out[i] = \frac{\sum_{i}X_{i}}{N}` -- **sum**: :math:`Out[i] = \sum _{j}X_{ij}` -- **sqrt**: :math:`Out[i] = \frac{ \sum _{j}X_{ij}}{\sqrt{len(\sqrt{X_{i}})}}` -- **max**: :math:`Out[i] = max(X_{i})` -- **last**: :math:`Out[i] = X_{N\_i}` -- **first**: :math:`Out[i] = X_{0}` - -其中 ``N_i`` 为待池化第i个输入序列的长度。 - -:: - - Case 1: - - input是1-level的LoDTensor, 且pad_value = 0.0: - input.lod = [[0, 2, 5, 7, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - 输出为LoDTensor: - out.shape = [4, 1] - 其中 out.shape[0] == len(x.lod[-1]) == 4 - 对于不同的pool_type: - average: out.data = [[2.], [4.], [3.], [0.0]], where 2.=(1. + 3.)/2, 4.=(2. + 4. + 6.)/3, 3.=(5. + 1.)/2 - sum : out.data = [[4.], [12.], [6.], [0.0]], where 4.=1. + 3., 12.=2. + 4. + 6., 6.=5. + 1. - sqrt : out.data = [[2.82], [6.93], [4.24], [0.0]], where 2.82=(1. + 3.)/sqrt(2), 6.93=(2. + 4. + 6.)/sqrt(3), 4.24=(5. + 1.)/sqrt(2) - max : out.data = [[3.], [6.], [5.], [0.0]], where 3.=max(1., 3.), 6.=max(2., 4., 6.), 5.=max(5., 1.) - last : out.data = [[3.], [6.], [1.], [0.0]], where 3.=last(1., 3.), 6.=last(2., 4., 6.), 1.=last(5., 1.) - first : out.data = [[1.], [2.], [5.], [0.0]], where 1.=first(1., 3.), 2.=first(2., 4., 6.), 5.=first(5., 1.) - - 上述out.data中的最后一个[0.0]均为填充的数据。 - - Case 2: - - input是2-level的LoDTensor, 包含3个长度分别为[2, 0, 3]的序列,其中中间的0表示序列为空。 - 第一个长度为2的序列包含2个长度分别为[1, 2]的子序列; - 最后一个长度为3的序列包含3个长度分别为[1, 0, 3]的子序列。 - input.lod = [[0, 2, 2, 5], [0, 1, 3, 4, 4, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - - 以pool_type取值为sum为例,将根据最后一层的lod信息[0, 1, 3, 4, 4, 7]进行池化操作,且pad_value = 0.0 - 输出为LoDTensor: - out.shape= [5, 1] - out.lod = [[0, 2, 2, 5]] - 其中 out.shape[0] == len(x.lod[-1]) == 5 - sum: out.data = [[1.], [5.], [4.], [0.0], [12.]] - where 1.=1., 5.=3. + 2., 4.=4., 0.0=pad_value, 12.=6. + 5. + 1. - - -参数: - - **input** (Variable) - 类型为LoDTensor的输入序列,仅支持lod_level不超过2的LoDTensor,数据类型为float32。 - - **pool_type** (str) - 池化类型,支持average,sum,sqrt,max,last和first池化操作。 - - **is_test** (bool) - 仅在pool_type取值为max时生效。当is_test为False时,则在池化操作过程中会创建maxIndex临时Tenosr,以记录最大特征值对应的索引信息,用于训练阶段的反向梯度计算。默认为False。 - - **pad_value** (float) - 用于填充输入序列为空时的池化结果,默认为0.0。 - -返回:经过指定类型池化后的LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.layers.data(name='x', shape=[7, 1], append_batch_size=False, - dtype='float32', lod_level=1) - avg_x = fluid.layers.sequence_pool(input=x, pool_type='average') - sum_x = fluid.layers.sequence_pool(input=x, pool_type='sum') - sqrt_x = fluid.layers.sequence_pool(input=x, pool_type='sqrt') - max_x = fluid.layers.sequence_pool(input=x, pool_type='max') - last_x = fluid.layers.sequence_pool(input=x, pool_type='last') - first_x = fluid.layers.sequence_pool(input=x, pool_type='first') - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_reshape_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_reshape_cn.rst deleted file mode 100644 index 78385efd975cc5c88768fe787c552b782688e6cb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_reshape_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_sequence_reshape: - -sequence_reshape -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_reshape(input, new_dim) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用reshape函数(fluid.layers.** :ref:`cn_api_fluid_layers_reshape` **)。** - -**该OP仅支持LoDTensor** ,在指定 ``new_dim`` 参数下,通过序列原始长度、和原始shape计算出新的shape,以输出包含新维度(new_dim)下的LoDTensor。目前仅支持1-level LoDTensor,请确保(原长度*原维数)可以除以新的维数,且每个序列没有余数。 - -:: - - input是一个LoDTensor: - input.lod = [[0, 2, 6]] - input.data = [[1, 2], [3, 4], - [5, 6], [7, 8], - [9, 10], [11, 12]] - input.shape = [6, 2] - 设置 new_dim = 4 - 输出为LoDTensor: - out.lod = [[0, 1, 3]] - - out.data = [[1, 2, 3, 4], - [5, 6, 7, 8], - [9, 10, 11, 12]] - out.shape = [3, 4] - - - -参数: - - **input** (Variable) - 维度为 :math:`[M, K]` 的二维LoDTensor,且仅支持lod_level为1。数据类型为int32,int64,float32或float64。 - - **new_dim** (int)- 指定reshape后的新维度,即对输入LoDTensor重新reshape后的新维度。 - -返回:根据新维度重新reshape后的LoDTensor,数据类型和输入一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 6], append_batch_size=False, dtype='float32', lod_level=1) - x_reshaped = fluid.layers.sequence_reshape(input=x, new_dim=4) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_reverse_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_reverse_cn.rst deleted file mode 100644 index 2bad60302dc081653322dee0bbc23a6c20cc84e9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_reverse_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_sequence_reverse: - -sequence_reverse -------------------------------- - -.. py:function:: paddle.fluid.layers.sequence_reverse(x, name=None) - - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用reverse函数(fluid.layers.** :ref:`cn_api_fluid_layers_reverse` **)。** - -**该OP仅支持LoDTensor** ,对于输入的LoDTensor,在每个序列(sequence)上进行反转。目前仅支持对LoD层次(LoD level)为1的LoDTensor进行反转。该OP在构建反向 :ref:`cn_api_fluid_layers_DynamicRNN` 网络时十分有用。 - -:: - - 输入x是一个LoDTensor: - x.lod = [[0, 2, 5]] - x.data = [[1, 2, 3, 4], - [5, 6, 7, 8], - [9, 10, 11, 12], - [13,14, 15, 16], - [17,18, 19, 20]] - x.shape = [5, 4] - - 输出out与x具有同样的shape和LoD信息: - out.lod = [[0, 2, 5]] - out.data = [[5, 6, 7, 8], - [1, 2, 3, 4], - [17,18, 19, 20], - [13,14, 15, 16], - [9, 10, 11, 12]] - out.shape = [5, 4] - - -参数: - - **x** (Variable) – 输入是LoD level为1的LoDTensor。目前仅支持对LoD层次(LoD level)为1的LoDTensor进行反转。数据类型为float32,float64,int8,int32或int64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出在每个序列上反转后的LoDTensor,数据类型和输入类型一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 6], dtype='float32') - x_reversed = fluid.layers.sequence_reverse(x) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_scatter_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_scatter_cn.rst deleted file mode 100644 index aaae0735e5ac837e744f7c87a3c7447a894e8e4c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_scatter_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_sequence_scatter: - -sequence_scatter -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_scatter(input, index, updates, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -.. note:: - 该OP的输入index,updates必须是LoDTensor。 - -该OP根据index提供的位置将updates中的信息更新到输出中。 - -该OP先使用input初始化output,然后通过output[instance_index][index[pos]] += updates[pos]方式,将updates的信息更新到output中,其中instance_idx是pos对应的在batch中第k个样本。 - -output[i][j]的值取决于能否在index中第i+1个区间中找到对应的数据j,若能找到out[i][j] = input[i][j] + update[m][n],否则 out[i][j] = input[i][j]。 - -例如,在下面样例中,index的lod信息分为了3个区间。其中,out[0][0]能在index中第1个区间中找到对应数据0,所以,使用updates对应位置的值进行更新,out[0][0] = input[0][0]+updates[0][0]。out[2][1]不能在index中第3个区间找到对应数据1,所以,它等于输入对应位置的值,out[2][1] = input[2][1]。 - -**样例**: - -:: - - 输入: - - input.data = [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]] - input.dims = [3, 6] - - index.data = [[0], [1], [2], [5], [4], [3], [2], [1], [3], [2], [5], [4]] - index.lod = [[0, 3, 8, 12]] - - updates.data = [[0.3], [0.3], [0.4], [0.1], [0.2], [0.3], [0.4], [0.0], [0.2], [0.3], [0.1], [0.4]] - updates.lod = [[ 0, 3, 8, 12]] - - 输出: - - out.data = [[1.3, 1.3, 1.4, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.4, 1.3, 1.2, 1.1], - [1.0, 1.0, 1.3, 1.2, 1.4, 1.1]] - out.dims = X.dims = [3, 6] - - -参数: - - **input** (Variable) - 维度为 :math:`[N, k_1 ... k_n]` 的Tensor, 支持的数据类型:float32,float64,int32,int64。 - - **index** (Variable) - 包含index信息的LoDTensor,lod level必须等于1,支持的数据类型:int32,int64。 - - **updates** (Variable) - 包含updates信息的LoDTensor,lod level和index一致,数据类型与input的数据类型一致。支持的数据类型:float32,float64,int32,int64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:在input的基础上使用updates进行更新后得到的Tensor,它与input有相同的维度和数据类型。 - -返回类型:Variable - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - input = fluid.data( name="x", shape=[3, 6], dtype='float32' ) - index = fluid.data( name='index', shape=[12, 1], dtype='int64', lod_level=1) - updates = fluid.data( name='updates', shape=[12, 1], dtype='float32', lod_level=1) - output = fluid.layers.sequence_scatter(input, index, updates) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_slice_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_slice_cn.rst deleted file mode 100644 index 4281741274a644ed90949de219105be69e5729b8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_slice_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_layers_sequence_slice: - -sequence_slice -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_slice(input, offset, length, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**实现Sequence Slice(序列切片)运算** - -**该OP输入只能是LoDTensor, 如果您需要处理的是Tensor类型,请使用 :ref:`cn_api_fluid_layers_slice` 。** -该层从给定序列中截取子序列。截取依据为所给的开始 ``offset`` (偏移量) 和子序列长 ``length`` 。 - -:: - 输入变量: - (1) input (LoDTensor): - input.data = [[a1, a2], [b1, b2], [c1, c2], [d1, d2], [e1, e2]], - input.lod = [[3, 2]], - input.dims = (5, 2), - - (2) offset (Variable): - offset.data = [[0], [1]] - (3) length (Variable): - length.data = [[2], [1]] - (4) name (str|None) - - 输出变量为LoDTensor: - - out.data = [[a1, a2], [b1, b2], [e1, e2]], - out.lod = [[2, 1]], - out.dims = (3, 2). - -.. 注意:: - ``input`` , ``offset`` , ``length`` 的第一维大小应相同。 - ``offset`` 从0开始。 - -参数: - - **input** (Variable) – 输入变量,类型为LoDTensor,承载着完整的序列。数据类型为float32,float64,int32或int64。 - - **offset** (Variable) – 指定每个序列切片的起始索引,数据类型为int32或int64。 - - **length** (Variable) – 指定每个子序列的长度,数据类型为int32或int64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:Variable(LoDTensor) 序列切片运算结果 - -返回类型:变量(Variable), 数据类型与 ``input`` 一致 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - seqs = fluid.layers.data(name='x', shape=[10, 5], - dtype='float32', lod_level=1) - offset = fluid.layers.assign(input=np.array([[0, 1]]).astype("int32")) - length = fluid.layers.assign(input=np.array([[2, 1]]).astype("int32")) - subseqs = fluid.layers.sequence_slice(input=seqs, offset=offset, - length=length) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_softmax_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_softmax_cn.rst deleted file mode 100644 index e59c1fbc8d1925860cbe2f38eba343244f20ce68..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_softmax_cn.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. _cn_api_fluid_layers_sequence_softmax: - -sequence_softmax -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_softmax(input, use_cudnn=False, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -.. note:: - 该OP的输入只能是LoDTensor,如果要处理的输入是Tensor类型,请使用 :ref:`cn_api_fluid_layers_softmax` - -该OP根据LoD信息将输入的第0维度进行划分,在划分的每一个区间内部进行运算。 - -对第i个区间内的元素的计算公式如下: - -.. math:: - - Out\left ( X[lod[i]:lod[i+1]],: \right ) = \frac{exp(X[lod[i]:lod[i+1],:])}{\sum (exp(X[lod[i]:lod[i+1],:]))} - -输入Tensor的维度可为 :math:`[N,1]` 或者 :math:`[N]` ,推荐使用 :math:`[N]` 。 - -例如,对有6个样本的batch,每个样本的长度为3,2,4,1,2,3,其lod信息为[[0, 3, 5, 9, 10, 12, 15]],根据lod信息将第0维度划分为6份,在 :math:`X[0:3,:],X[3:5,:],X[5:9,:],X[9:10,:],X[10:12,:],X[12:15,:]` 中进行softmax运算。 - -:: - - 示例: - - 给定: - input.data = [0.7, 1, 0.6, - 1.5, 1.1, - 1.2, 0.2, 0.6, 1.9, - 3.1, - 2.5, 0.8, - 0.1, 2.4, 1.3] - input.lod = [[0, 3, 5, 9, 10, 12, 15]] - 则: - output.data = [0.30724832, 0.41474187, 0.2780098, - 0.59868765, 0.40131235, - 0.2544242, 0.09359743, 0.13963096, 0.5123474, - 1., - 0.84553474, 0.15446526, - 0.06995796, 0.69777346, 0.23226859] - output.lod = [[0, 3, 5, 9, 10, 12, 15]] - - -参数: - - **input** (Variable) - 维度为 :math:`[N, 1]` 或者 :math:`[N]` 的LoDTensor,推荐使用 :math:`[N]` 。支持的数据类型:float32,float64。 - - **use_cudnn** (bool,可选) - 是否用cudnn核,仅当安装cudnn版本的paddle库且使用gpu训练或推理的时候生效。支持的数据类型:bool型。默认值为False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:根据区间计算softmax之后的LoDTensor,其维度与input的维度一致,数据类型与input的数据类型一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[7, 1], - dtype='float32', lod_level=1) - x_sequence_softmax = fluid.layers.sequence_softmax(input=x) - - y = fluid.data(name='y', shape=[7], - dtype='float32', lod_level=1) - y_sequence_softmax = fluid.layers.sequence_softmax(input=y) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_unpad_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_unpad_cn.rst deleted file mode 100644 index 8a1587c733d3341dcc21009a72c700bfc9fe2fe3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_lod/sequence_unpad_cn.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. _cn_api_fluid_layers_sequence_unpad: - -sequence_unpad -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_unpad(x, length, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -.. note:: - 该OP的输入为Tensor,输出为LoDTensor。该OP用于移除填充元素,与之对应,还存在进行数据填充的OP sequence_pad,详情见: :ref:`cn_api_fluid_layers_sequence_pad` - -该OP根据length的信息,将input中padding(填充)元素移除,并且返回一个LoDTensor。 - -:: - - 示例: - - 给定输入变量 ``x`` : - x.data = [[ 1.0, 2.0, 3.0, 4.0, 5.0], - [ 6.0, 7.0, 8.0, 9.0, 10.0], - [11.0, 12.0, 13.0, 14.0, 15.0]], - - 其中包含 3 个被填充到长度为5的序列,实际长度由输入变量 ``length`` 指明,其中,x的维度为[3,4],length维度为[3],length的第0维与x的第0维一致: - - length.data = [2, 3, 4], - - 则去填充(unpad)后的输出变量为: - - out.data = [[1.0, 2.0, 6.0, 7.0, 8.0, 11.0, 12.0, 13.0, 14.0]] - out.lod = [[0, 2, 5, 9]] - - - -参数: - - **x** (Variable) – 包含填充元素的Tensor,其维度大小不能小于2,支持的数据类型:float32, float64,int32, int64。 - - **length** (Variable) – 存储每个样本实际长度信息的1D Tesnor,该Tensor维度的第0维必须与x维度的第0维一致。支持的数据类型:int64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:将输入的填充元素移除,并返回一个LoDTensor,其递归序列长度与length参数的信息一致,其数据类型和输入一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # example 1: - x = fluid.data(name='x', shape=[10, 5], dtype='float32') - len = fluid.data(name='length', shape=[10], dtype='int64') - out = fluid.layers.sequence_unpad(x=x, length=len) - - # example 2: - # 使用sequence_pad填充数据 - input = fluid.data(name='input', shape=[10, 5], dtype='float32', lod_level=1) - pad_value = fluid.layers.assign(input=numpy.array([0.0], dtype=numpy.float32)) - pad_data, len = fluid.layers.sequence_pad(x=input, pad_value=pad_value) - - #使用sequence_unpad移除填充数据 - unpad_data = fluid.layers.sequence_unpad(x=pad_data, length=len) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_mask_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_mask_cn.rst deleted file mode 100644 index ac7fafb2faa1728201dc7452da644c8449a6f728..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_mask_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_sequence_mask: - -sequence_mask -------------------------------- - -.. py:function:: paddle.fluid.layers.sequence_mask(x, maxlen=None, dtype='int64', name=None) - - - - -该层根据输入 ``x`` 和 ``maxlen`` 输出一个掩码,数据类型为 ``dtype`` 。 - -假设 x 是一个形状为 ``[d_1, d_2,…, d_n]`` 的张量, 则输出 y 是一个形状为 ``[d_1, d_2,… ,d_n, maxlen]`` 的掩码,其中: - -.. math:: - - y(i_1, i_2,..., i_n, j) = (j < x(i_1, i_2,..., i_n)) - -范例如下: - -:: - - 给定输入: - x = [3, 1, 1, 0] maxlen = 4 - - 得到输出张量: - mask = [[1, 1, 1, 0], - [1, 0, 0, 0], - [1, 0, 0, 0], - [0, 0, 0, 0]] - - - - - -参数: - - **x** (Variable) - 输入张量,其元素是小于等于 ``maxlen`` 的整数,形状为 ``[d_1, d_2,…, d_n]`` 的Tensor或LoDTensor。 - - **maxlen** (int,可选) - 序列的最大长度。默认为空,此时 ``maxlen`` 取 ``x`` 中所有元素的最大值。 - - **dtype** (np.dtype|core.VarDesc.VarType|str,可选) - 输出的数据类型,默认为 ``int64`` 。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: mask张量,Tensor或LoDTensor,形状为 ``[d_1, d_2,… ,d_n, maxlen]`` ,数据类型由 ``dtype`` 指定,支持float32、float64、int32和int64,默认为int64。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - x = fluid.data(name='x', shape=[10], dtype='float32', lod_level=1) - mask = layers.sequence_mask(x=x) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_pad_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_pad_cn.rst deleted file mode 100644 index 12ddf6eb2ecd59afe5700187479a636d33cd7fe7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_pad_cn.rst +++ /dev/null @@ -1,91 +0,0 @@ -.. _cn_api_fluid_layers_sequence_pad: - -sequence_pad -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_pad(x,pad_value,maxlen=None,name=None) - -:api_attr: 声明式编程模式(静态图) - - - -序列填充操作符(Sequence Pad Operator),该OP将同一batch中的序列填充到一个一致的长度(由 ``maxlen`` 指定)。填充的新元素的值具体由输入 ``pad_value`` 指定,并会添加到每一个序列的末尾,使得他们最终的长度保持一致。最后返回一个Python tuple ``(Out, Length)`` ,其中LodTensor ``Out`` 为填充后的序列,LodTensor ``Length`` 为填充前的原序列长度信息。 - -注意,该OP的输入 ``x`` 只能是LodTensor。 - -范例如下: - -:: - - 例1: - 给定输入1-level LoDTensor x: - x.lod = [[0, 2, 5]] #输入的两个序列长度是2和3 - x.data = [[a],[b],[c],[d],[e]] - 和输入 pad_value: - pad_value.data = [0] - 设置 maxlen = 4 - - 得到得到tuple (Out, Length): - Out.data = [[[a],[b],[0],[0]],[[c],[d],[e],[0]]] - Length.data = [2, 3] #原序列长度是2和3 - -:: - - 例2: - 给定输入1-level LoDTensor x: - x.lod = [[0, 2, 5]] - x.data = [[a1,a2],[b1,b2],[c1,c2],[d1,d2],[e1,e2]] - 和输入 pad_value: - pad_value.data = [0] - 默认 maxlen = None, (根据x的形状,此例中实际长度为3) - - 得到得到tuple (Out, Length): - Out.data = [[[a1,a2],[b1,b2],[0,0]],[[c1,c2],[d1,d2],[e1,e2]]] - Length.data = [2, 3] - -:: - - 例3: - 给定输入1-level LoDTensor x: - x.lod = [[0, 2, 5]] - x.data = [[a1,a2],[b1,b2],[c1,c2],[d1,d2],[e1,e2]] - 和输入 pad_value: - pad_value.data = [p1,p2] - 默认 maxlen = None, (根据x的形状,此例中实际长度为3) - - 得到tuple (Out, Length): - Out.data = [[[a1,a2],[b1,b2],[p1,p2]],[[c1,c2],[d1,d2],[e1,e2]]] - Length.data = [2, 3] - - -参数: - - **x** (Vairable) - 输入,维度为 ``[M, K]`` 的LoDTensor,仅支持lod_level为1。lod所描述的序列数量,作为要填充的batch_size。数据类型为int32,int64,float32或float64。 - - **pad_value** (Variable) - 填充值,可以是标量或长度为 ``K`` 的一维Tensor。如果是标量,则自动广播为Tensor。数据类型需与 ``x`` 相同。 - - **maxlen** (int,可选) - 填充序列的长度。默认为None,此时以序列中最长序列的长度为准,其他所有序列填充至该长度。当是某个特定的正整数,最大长度必须大于最长初始序列的长度。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:元素为两个LoDTensor的Python tuple。第一个元素为填充后的变量 ``Out`` ,形状为 ``[batch_size, maxlen, K]`` ,lod level为0的LoDTensor,数据类型与输入 ``x`` 相同。第二个元素为填充前的原序列长度信息 ``Length`` ,lod level为0的一维LoDTensor,长度等于batch_size,数据类型为int64。 - -返回类型:tuple - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - x = fluid.layers.data(name='y', shape=[10, 5], - dtype='float32', lod_level=1) - pad_value = fluid.layers.assign( - input=numpy.array([0.0], dtype=numpy.float32)) - out = fluid.layers.sequence_pad(x=x, pad_value=pad_value) - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_pool_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_pool_cn.rst deleted file mode 100644 index 480bc75c92f9d5412861391bbcb5ce94361a1701..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_pool_cn.rst +++ /dev/null @@ -1,99 +0,0 @@ -.. _cn_api_fluid_layers_sequence_pool: - -sequence_pool -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_pool(input, pool_type, is_test=False, pad_value=0.0) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用pool2d函数(fluid.layers.** :ref:`cn_api_fluid_layers_pool2d` **)。** - -该OP **仅支持LoDTensor类型的输入** ,将对输入的LoDTensor进行指定方式的池化(pooling)操作。通过指定pool_type参数,将输入的每个序列(sequence)在最后一层lod_level上或时间步(time-step)上对特征进行诸如sum、average、sqrt等池化操作。 - -支持六种pool_type: - -- **average**: :math:`Out[i] = \frac{\sum_{i}X_{i}}{N}` -- **sum**: :math:`Out[i] = \sum _{j}X_{ij}` -- **sqrt**: :math:`Out[i] = \frac{ \sum _{j}X_{ij}}{\sqrt{len(\sqrt{X_{i}})}}` -- **max**: :math:`Out[i] = max(X_{i})` -- **last**: :math:`Out[i] = X_{N\_i}` -- **first**: :math:`Out[i] = X_{0}` - -其中 ``N_i`` 为待池化第i个输入序列的长度。 - -:: - - Case 1: - - input是1-level的LoDTensor, 且pad_value = 0.0: - input.lod = [[0, 2, 5, 7, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - 输出为LoDTensor: - out.shape = [4, 1] - 其中 out.shape[0] == len(x.lod[-1]) == 4 - 对于不同的pool_type: - average: out.data = [[2.], [4.], [3.], [0.0]], where 2.=(1. + 3.)/2, 4.=(2. + 4. + 6.)/3, 3.=(5. + 1.)/2 - sum : out.data = [[4.], [12.], [6.], [0.0]], where 4.=1. + 3., 12.=2. + 4. + 6., 6.=5. + 1. - sqrt : out.data = [[2.82], [6.93], [4.24], [0.0]], where 2.82=(1. + 3.)/sqrt(2), 6.93=(2. + 4. + 6.)/sqrt(3), 4.24=(5. + 1.)/sqrt(2) - max : out.data = [[3.], [6.], [5.], [0.0]], where 3.=max(1., 3.), 6.=max(2., 4., 6.), 5.=max(5., 1.) - last : out.data = [[3.], [6.], [1.], [0.0]], where 3.=last(1., 3.), 6.=last(2., 4., 6.), 1.=last(5., 1.) - first : out.data = [[1.], [2.], [5.], [0.0]], where 1.=first(1., 3.), 2.=first(2., 4., 6.), 5.=first(5., 1.) - - 上述out.data中的最后一个[0.0]均为填充的数据。 - - Case 2: - - input是2-level的LoDTensor, 包含3个长度分别为[2, 0, 3]的序列,其中中间的0表示序列为空。 - 第一个长度为2的序列包含2个长度分别为[1, 2]的子序列; - 最后一个长度为3的序列包含3个长度分别为[1, 0, 3]的子序列。 - input.lod = [[0, 2, 2, 5], [0, 1, 3, 4, 4, 7]] - input.data = [[1.], [3.], [2.], [4.], [6.], [5.], [1.]] - input.shape = [7, 1] - - 以pool_type取值为sum为例,将根据最后一层的lod信息[0, 1, 3, 4, 4, 7]进行池化操作,且pad_value = 0.0 - 输出为LoDTensor: - out.shape= [5, 1] - out.lod = [[0, 2, 2, 5]] - 其中 out.shape[0] == len(x.lod[-1]) == 5 - sum: out.data = [[1.], [5.], [4.], [0.0], [12.]] - where 1.=1., 5.=3. + 2., 4.=4., 0.0=pad_value, 12.=6. + 5. + 1. - - -参数: - - **input** (Variable) - 类型为LoDTensor的输入序列,仅支持lod_level不超过2的LoDTensor,数据类型为float32。 - - **pool_type** (str) - 池化类型,支持average,sum,sqrt,max,last和first池化操作。 - - **is_test** (bool) - 仅在pool_type取值为max时生效。当is_test为False时,则在池化操作过程中会创建maxIndex临时Tenosr,以记录最大特征值对应的索引信息,用于训练阶段的反向梯度计算。默认为False。 - - **pad_value** (float) - 用于填充输入序列为空时的池化结果,默认为0.0。 - -返回:经过指定类型池化后的LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.layers.data(name='x', shape=[7, 1], append_batch_size=False, - dtype='float32', lod_level=1) - avg_x = fluid.layers.sequence_pool(input=x, pool_type='average') - sum_x = fluid.layers.sequence_pool(input=x, pool_type='sum') - sqrt_x = fluid.layers.sequence_pool(input=x, pool_type='sqrt') - max_x = fluid.layers.sequence_pool(input=x, pool_type='max') - last_x = fluid.layers.sequence_pool(input=x, pool_type='last') - first_x = fluid.layers.sequence_pool(input=x, pool_type='first') - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_reshape_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_reshape_cn.rst deleted file mode 100644 index 78385efd975cc5c88768fe787c552b782688e6cb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_reshape_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_sequence_reshape: - -sequence_reshape -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_reshape(input, new_dim) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用reshape函数(fluid.layers.** :ref:`cn_api_fluid_layers_reshape` **)。** - -**该OP仅支持LoDTensor** ,在指定 ``new_dim`` 参数下,通过序列原始长度、和原始shape计算出新的shape,以输出包含新维度(new_dim)下的LoDTensor。目前仅支持1-level LoDTensor,请确保(原长度*原维数)可以除以新的维数,且每个序列没有余数。 - -:: - - input是一个LoDTensor: - input.lod = [[0, 2, 6]] - input.data = [[1, 2], [3, 4], - [5, 6], [7, 8], - [9, 10], [11, 12]] - input.shape = [6, 2] - 设置 new_dim = 4 - 输出为LoDTensor: - out.lod = [[0, 1, 3]] - - out.data = [[1, 2, 3, 4], - [5, 6, 7, 8], - [9, 10, 11, 12]] - out.shape = [3, 4] - - - -参数: - - **input** (Variable) - 维度为 :math:`[M, K]` 的二维LoDTensor,且仅支持lod_level为1。数据类型为int32,int64,float32或float64。 - - **new_dim** (int)- 指定reshape后的新维度,即对输入LoDTensor重新reshape后的新维度。 - -返回:根据新维度重新reshape后的LoDTensor,数据类型和输入一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 6], append_batch_size=False, dtype='float32', lod_level=1) - x_reshaped = fluid.layers.sequence_reshape(input=x, new_dim=4) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_reverse_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_reverse_cn.rst deleted file mode 100644 index 2bad60302dc081653322dee0bbc23a6c20cc84e9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_reverse_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_sequence_reverse: - -sequence_reverse -------------------------------- - -.. py:function:: paddle.fluid.layers.sequence_reverse(x, name=None) - - - - -**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用reverse函数(fluid.layers.** :ref:`cn_api_fluid_layers_reverse` **)。** - -**该OP仅支持LoDTensor** ,对于输入的LoDTensor,在每个序列(sequence)上进行反转。目前仅支持对LoD层次(LoD level)为1的LoDTensor进行反转。该OP在构建反向 :ref:`cn_api_fluid_layers_DynamicRNN` 网络时十分有用。 - -:: - - 输入x是一个LoDTensor: - x.lod = [[0, 2, 5]] - x.data = [[1, 2, 3, 4], - [5, 6, 7, 8], - [9, 10, 11, 12], - [13,14, 15, 16], - [17,18, 19, 20]] - x.shape = [5, 4] - - 输出out与x具有同样的shape和LoD信息: - out.lod = [[0, 2, 5]] - out.data = [[5, 6, 7, 8], - [1, 2, 3, 4], - [17,18, 19, 20], - [13,14, 15, 16], - [9, 10, 11, 12]] - out.shape = [5, 4] - - -参数: - - **x** (Variable) – 输入是LoD level为1的LoDTensor。目前仅支持对LoD层次(LoD level)为1的LoDTensor进行反转。数据类型为float32,float64,int8,int32或int64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出在每个序列上反转后的LoDTensor,数据类型和输入类型一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 6], dtype='float32') - x_reversed = fluid.layers.sequence_reverse(x) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_scatter_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_scatter_cn.rst deleted file mode 100644 index aaae0735e5ac837e744f7c87a3c7447a894e8e4c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_scatter_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_sequence_scatter: - -sequence_scatter -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_scatter(input, index, updates, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -.. note:: - 该OP的输入index,updates必须是LoDTensor。 - -该OP根据index提供的位置将updates中的信息更新到输出中。 - -该OP先使用input初始化output,然后通过output[instance_index][index[pos]] += updates[pos]方式,将updates的信息更新到output中,其中instance_idx是pos对应的在batch中第k个样本。 - -output[i][j]的值取决于能否在index中第i+1个区间中找到对应的数据j,若能找到out[i][j] = input[i][j] + update[m][n],否则 out[i][j] = input[i][j]。 - -例如,在下面样例中,index的lod信息分为了3个区间。其中,out[0][0]能在index中第1个区间中找到对应数据0,所以,使用updates对应位置的值进行更新,out[0][0] = input[0][0]+updates[0][0]。out[2][1]不能在index中第3个区间找到对应数据1,所以,它等于输入对应位置的值,out[2][1] = input[2][1]。 - -**样例**: - -:: - - 输入: - - input.data = [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]] - input.dims = [3, 6] - - index.data = [[0], [1], [2], [5], [4], [3], [2], [1], [3], [2], [5], [4]] - index.lod = [[0, 3, 8, 12]] - - updates.data = [[0.3], [0.3], [0.4], [0.1], [0.2], [0.3], [0.4], [0.0], [0.2], [0.3], [0.1], [0.4]] - updates.lod = [[ 0, 3, 8, 12]] - - 输出: - - out.data = [[1.3, 1.3, 1.4, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.4, 1.3, 1.2, 1.1], - [1.0, 1.0, 1.3, 1.2, 1.4, 1.1]] - out.dims = X.dims = [3, 6] - - -参数: - - **input** (Variable) - 维度为 :math:`[N, k_1 ... k_n]` 的Tensor, 支持的数据类型:float32,float64,int32,int64。 - - **index** (Variable) - 包含index信息的LoDTensor,lod level必须等于1,支持的数据类型:int32,int64。 - - **updates** (Variable) - 包含updates信息的LoDTensor,lod level和index一致,数据类型与input的数据类型一致。支持的数据类型:float32,float64,int32,int64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:在input的基础上使用updates进行更新后得到的Tensor,它与input有相同的维度和数据类型。 - -返回类型:Variable - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - input = fluid.data( name="x", shape=[3, 6], dtype='float32' ) - index = fluid.data( name='index', shape=[12, 1], dtype='int64', lod_level=1) - updates = fluid.data( name='updates', shape=[12, 1], dtype='float32', lod_level=1) - output = fluid.layers.sequence_scatter(input, index, updates) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_slice_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_slice_cn.rst deleted file mode 100644 index 4281741274a644ed90949de219105be69e5729b8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_slice_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_layers_sequence_slice: - -sequence_slice -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_slice(input, offset, length, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**实现Sequence Slice(序列切片)运算** - -**该OP输入只能是LoDTensor, 如果您需要处理的是Tensor类型,请使用 :ref:`cn_api_fluid_layers_slice` 。** -该层从给定序列中截取子序列。截取依据为所给的开始 ``offset`` (偏移量) 和子序列长 ``length`` 。 - -:: - 输入变量: - (1) input (LoDTensor): - input.data = [[a1, a2], [b1, b2], [c1, c2], [d1, d2], [e1, e2]], - input.lod = [[3, 2]], - input.dims = (5, 2), - - (2) offset (Variable): - offset.data = [[0], [1]] - (3) length (Variable): - length.data = [[2], [1]] - (4) name (str|None) - - 输出变量为LoDTensor: - - out.data = [[a1, a2], [b1, b2], [e1, e2]], - out.lod = [[2, 1]], - out.dims = (3, 2). - -.. 注意:: - ``input`` , ``offset`` , ``length`` 的第一维大小应相同。 - ``offset`` 从0开始。 - -参数: - - **input** (Variable) – 输入变量,类型为LoDTensor,承载着完整的序列。数据类型为float32,float64,int32或int64。 - - **offset** (Variable) – 指定每个序列切片的起始索引,数据类型为int32或int64。 - - **length** (Variable) – 指定每个子序列的长度,数据类型为int32或int64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:Variable(LoDTensor) 序列切片运算结果 - -返回类型:变量(Variable), 数据类型与 ``input`` 一致 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - seqs = fluid.layers.data(name='x', shape=[10, 5], - dtype='float32', lod_level=1) - offset = fluid.layers.assign(input=np.array([[0, 1]]).astype("int32")) - length = fluid.layers.assign(input=np.array([[2, 1]]).astype("int32")) - subseqs = fluid.layers.sequence_slice(input=seqs, offset=offset, - length=length) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_softmax_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_softmax_cn.rst deleted file mode 100644 index e59c1fbc8d1925860cbe2f38eba343244f20ce68..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_softmax_cn.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. _cn_api_fluid_layers_sequence_softmax: - -sequence_softmax -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_softmax(input, use_cudnn=False, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -.. note:: - 该OP的输入只能是LoDTensor,如果要处理的输入是Tensor类型,请使用 :ref:`cn_api_fluid_layers_softmax` - -该OP根据LoD信息将输入的第0维度进行划分,在划分的每一个区间内部进行运算。 - -对第i个区间内的元素的计算公式如下: - -.. math:: - - Out\left ( X[lod[i]:lod[i+1]],: \right ) = \frac{exp(X[lod[i]:lod[i+1],:])}{\sum (exp(X[lod[i]:lod[i+1],:]))} - -输入Tensor的维度可为 :math:`[N,1]` 或者 :math:`[N]` ,推荐使用 :math:`[N]` 。 - -例如,对有6个样本的batch,每个样本的长度为3,2,4,1,2,3,其lod信息为[[0, 3, 5, 9, 10, 12, 15]],根据lod信息将第0维度划分为6份,在 :math:`X[0:3,:],X[3:5,:],X[5:9,:],X[9:10,:],X[10:12,:],X[12:15,:]` 中进行softmax运算。 - -:: - - 示例: - - 给定: - input.data = [0.7, 1, 0.6, - 1.5, 1.1, - 1.2, 0.2, 0.6, 1.9, - 3.1, - 2.5, 0.8, - 0.1, 2.4, 1.3] - input.lod = [[0, 3, 5, 9, 10, 12, 15]] - 则: - output.data = [0.30724832, 0.41474187, 0.2780098, - 0.59868765, 0.40131235, - 0.2544242, 0.09359743, 0.13963096, 0.5123474, - 1., - 0.84553474, 0.15446526, - 0.06995796, 0.69777346, 0.23226859] - output.lod = [[0, 3, 5, 9, 10, 12, 15]] - - -参数: - - **input** (Variable) - 维度为 :math:`[N, 1]` 或者 :math:`[N]` 的LoDTensor,推荐使用 :math:`[N]` 。支持的数据类型:float32,float64。 - - **use_cudnn** (bool,可选) - 是否用cudnn核,仅当安装cudnn版本的paddle库且使用gpu训练或推理的时候生效。支持的数据类型:bool型。默认值为False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:根据区间计算softmax之后的LoDTensor,其维度与input的维度一致,数据类型与input的数据类型一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[7, 1], - dtype='float32', lod_level=1) - x_sequence_softmax = fluid.layers.sequence_softmax(input=x) - - y = fluid.data(name='y', shape=[7], - dtype='float32', lod_level=1) - y_sequence_softmax = fluid.layers.sequence_softmax(input=y) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sequence_unpad_cn.rst b/doc/paddle/api/paddle/fluid/layers/sequence_unpad_cn.rst deleted file mode 100644 index 8a1587c733d3341dcc21009a72c700bfc9fe2fe3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sequence_unpad_cn.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. _cn_api_fluid_layers_sequence_unpad: - -sequence_unpad -------------------------------- - - -.. py:function:: paddle.fluid.layers.sequence_unpad(x, length, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -.. note:: - 该OP的输入为Tensor,输出为LoDTensor。该OP用于移除填充元素,与之对应,还存在进行数据填充的OP sequence_pad,详情见: :ref:`cn_api_fluid_layers_sequence_pad` - -该OP根据length的信息,将input中padding(填充)元素移除,并且返回一个LoDTensor。 - -:: - - 示例: - - 给定输入变量 ``x`` : - x.data = [[ 1.0, 2.0, 3.0, 4.0, 5.0], - [ 6.0, 7.0, 8.0, 9.0, 10.0], - [11.0, 12.0, 13.0, 14.0, 15.0]], - - 其中包含 3 个被填充到长度为5的序列,实际长度由输入变量 ``length`` 指明,其中,x的维度为[3,4],length维度为[3],length的第0维与x的第0维一致: - - length.data = [2, 3, 4], - - 则去填充(unpad)后的输出变量为: - - out.data = [[1.0, 2.0, 6.0, 7.0, 8.0, 11.0, 12.0, 13.0, 14.0]] - out.lod = [[0, 2, 5, 9]] - - - -参数: - - **x** (Variable) – 包含填充元素的Tensor,其维度大小不能小于2,支持的数据类型:float32, float64,int32, int64。 - - **length** (Variable) – 存储每个样本实际长度信息的1D Tesnor,该Tensor维度的第0维必须与x维度的第0维一致。支持的数据类型:int64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:将输入的填充元素移除,并返回一个LoDTensor,其递归序列长度与length参数的信息一致,其数据类型和输入一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # example 1: - x = fluid.data(name='x', shape=[10, 5], dtype='float32') - len = fluid.data(name='length', shape=[10], dtype='int64') - out = fluid.layers.sequence_unpad(x=x, length=len) - - # example 2: - # 使用sequence_pad填充数据 - input = fluid.data(name='input', shape=[10, 5], dtype='float32', lod_level=1) - pad_value = fluid.layers.assign(input=numpy.array([0.0], dtype=numpy.float32)) - pad_data, len = fluid.layers.sequence_pad(x=input, pad_value=pad_value) - - #使用sequence_unpad移除填充数据 - unpad_data = fluid.layers.sequence_unpad(x=pad_data, length=len) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sigmoid_cn.rst b/doc/paddle/api/paddle/fluid/layers/sigmoid_cn.rst deleted file mode 100755 index fb5ccd21da695a2f3c840663797b66a5ccaff54c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sigmoid_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_sigmoid: - -sigmoid -------------------------------- - -.. py:function:: paddle.fluid.layers.sigmoid(x, name=None) - - - - -sigmoid激活函数 - -.. math:: - out = \frac{1}{1 + e^{-x}} - - -参数: - - - **x** (Tensor|LoDTensor)- 数据类型为float32,float64。激活函数的输入值。 - - **name** (str|None) - 该层名称(可选)。若为空,则自动为该层命名。默认:None - -返回:激活函数的输出值 - -返回类型:Variable(Tensor),数据类型为float32的Tensor。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name="input", shape=[-1, 3]) - result = fluid.layers.sigmoid(data) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(3, 3) - output= exe.run(feed={"input": x}, - fetch_list=[result[0]]) - print(output) - """ - output: - [array([0.50797188, 0.71353652, 0.5452265 ])] - """ - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sin_cn.rst b/doc/paddle/api/paddle/fluid/layers/sin_cn.rst deleted file mode 100644 index 97d3fec0fdae36058f1403c054a8cbfa21587faa..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sin_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_tensor_sin: - -sin -------------------------------- - -.. py:function:: paddle.sin(x, name=None, out=None) - -:alias_main: paddle.sin -:alias: paddle.sin,paddle.tensor.sin,paddle.tensor.math.sin -:update_api: paddle.fluid.layers.sin - - - -计算输入的正弦值。 - -.. math:: - out = sin(x) - -参数: - - **x** (Variable) - 支持任意维度的Tensor。数据类型为float32,float64或float16。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **out** (Variable, 可选) – 指定存储运算结果的Tensor。如果设置为None或者不设置,将创建新的Tensor存储运算结果,默认值为None。 - -返回:返回类型为Variable(Tensor|LoDTensor), 数据类型同输入一致。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - inputs = fluid.layers.data(name="x", shape = [3], dtype='float32') - output = paddle.sin(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([0, 45, 90]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) - # [array([0. , 0.8509035 , 0.89399666], dtype=float32)] diff --git a/doc/paddle/api/paddle/fluid/layers/size_cn.rst b/doc/paddle/api/paddle/fluid/layers/size_cn.rst deleted file mode 100644 index 6082053be65007c49e2b1e4e41e8a7cf7164035c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/size_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_size: - -size -------------------------------- - -.. py:function:: paddle.fluid.layers.size(input) - - - - -返回张量的单元数量,是一个shape为[1]的int64的张量。 - -参数: - - **input** (Variable)- 输入变量 - -返回:(Variable)。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid.layers as layers - - input = layers.data( - name="input", shape=[3, 100], dtype="float32", append_batch_size=False) - rank = layers.size(input) # 300 - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/spectral_norm_cn.rst b/doc/paddle/api/paddle/fluid/layers/spectral_norm_cn.rst deleted file mode 100644 index 9ca240e3c7758177fba78b97db6b27d046091340..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/spectral_norm_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_spectral_norm: - -spectral_norm -------------------------------- - - -.. py:function:: paddle.fluid.layers.spectral_norm(weight, dim=0, power_iters=1, eps=1e-12, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -**Spectral Normalization Layer** - -该OP用于计算了fc、conv1d、conv2d、conv3d层的权重参数的谱正则值,输入权重参数应分别为2-D, 3-D, 4-D, 5-D张量,输出张量与输入张量shape相同。谱特征值计算方式如下。 - -步骤1:生成形状为[H]的向量U,以及形状为[W]的向量V,其中H是输入权重张量的第 ``dim`` 个维度,W是剩余维度的乘积。 - -步骤2: ``power_iters`` 应该是一个正整数,用U和V迭代计算 ``power_iters`` 轮,迭代步骤如下。 - -.. math:: - - \mathbf{v} &:= \frac{\mathbf{W}^{T} \mathbf{u}}{\|\mathbf{W}^{T} \mathbf{u}\|_2}\\ - \mathbf{u} &:= \frac{\mathbf{W}^{T} \mathbf{v}}{\|\mathbf{W}^{T} \mathbf{v}\|_2} - -步骤3:计算 :math:`\sigma(\mathbf{W})` 并特征值值归一化。 - -.. math:: - \sigma(\mathbf{W}) &= \mathbf{u}^{T} \mathbf{W} \mathbf{v}\\ - \mathbf{W} &= \frac{\mathbf{W}}{\sigma(\mathbf{W})} - -可参考: `Spectral Normalization `_ - -参数: - - **weight** (Variable) - spectral_norm算子的输入权重张量,可以是2-D, 3-D, 4-D, 5-D Tensor,它是fc、conv1d、conv2d、conv3d层的权重,数据类型为float32或float64。 - - **dim** (int) - 将输入(weight)重塑为矩阵之前应排列到第一个的维度索引,如果input(weight)是fc层的权重,则应设置为0;如果input(weight)是conv层的权重,则应设置为1,默认为0。 - - **power_iters** (int) - 将用于计算spectral norm的功率迭代次数,默认值1 - - **eps** (float) - epsilon用于保证计算规范中的数值稳定性,分母会加上 ``eps`` 防止除零,默认1e-12 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - -返回:Variable(Tensor) 谱正则化后权重张量,维度与输入 ``weight`` 一致。 - -返回类型:变量(Variable),数据类型与输入 ``weight`` 一致。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - weight = fluid.data(name='weight', shape=[2, 8, 32, 32], dtype='float32') - x = fluid.layers.spectral_norm(weight=weight, dim=1, power_iters=2) - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/split_cn.rst b/doc/paddle/api/paddle/fluid/layers/split_cn.rst deleted file mode 100644 index 52f85fcccef62b2dc97d34bb4626b8fbefa1435b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/split_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_paddle_tensor_split -split -------------------------------- - -.. py:function:: paddle.tensor.split(x, num_or_sections, axis=0, name=None) - - - -该OP将输入Tensor分割成多个子Tensor。 - -**参数**: - - **x** (Tensor) - 输入变量,数据类型为bool, float16, float32,float64,int32,int64的多维Tensor。 - - **num_or_sections** (int|list|tuple) - 如果 ``num_or_sections`` 是一个整数,则表示Tensor平均划分为相同大小子Tensor的数量。如果 ``num_or_sections`` 是一个list或tuple,那么它的长度代表子Tensor的数量,它的元素可以是整数或者形状为[1]的Tensor,依次代表子Tensor需要分割成的维度的大小。list或tuple的长度不能超过输入Tensor待分割的维度的大小。在list或tuple中,至多有一个元素值为-1,表示该值是由 ``x`` 的维度和其他 ``num_or_sections`` 中元素推断出来的。例如对一个维度为[4,6,6]Tensor的第三维进行分割时,指定 ``num_or_sections=[2,-1,1]`` ,输出的三个Tensor维度分别为:[4,6,2],[4,6,3],[4,6,1]。 - - **axis** (int|Tensor,可选) - 整数或者形状为[1]的Tensor,数据类型为int32或int64。表示需要分割的维度。如果 ``axis < 0`` ,则划分的维度为 ``rank(x) + axis`` 。默认值为0。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:分割后的Tensor列表。 - -抛出异常: - - :code:`TypeError`:``x`` 的数据类型不是float16、float32、float64、int32或int64时 。 - - :code:`TypeError`:``num_or_sections`` 不是int、list 或 tuple时。 - - :code:`TypeError`:``axis`` 不是 int 或 Tensor时。当 ``axis`` 为Tensor,其数据类型不是int32或int64时。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - - paddle.enable_imperative() - # x is a Tensor which shape is [3, 9, 5] - x_np = np.random.random([3, 9, 5]).astype("int32") - x = paddle.imperative.to_variable(x_np) - - out0, out1, out22 = paddle.split(x, num_or_sections=3, axis=1) - # out0.shape [3, 3, 5] - # out1.shape [3, 3, 5] - # out2.shape [3, 3, 5] - - out0, out1, out2 = paddle.split(x, num_or_sections=[2, 3, 4], axis=1) - # out0.shape [3, 2, 5] - # out1.shape [3, 3, 5] - # out2.shape [3, 4, 5] - - out0, out1, out2 = paddle.split(x, num_or_sections=[2, 3, -1], axis=1) - # out0.shape [3, 2, 5] - # out1.shape [3, 3, 5] - # out2.shape [3, 4, 5] - - # axis is negative, the real axis is (rank(x) + axis) which real - # value is 1. - out0, out1, out2 = paddle.split(x, num_or_sections=3, axis=-2) - # out0.shape [3, 3, 5] - # out1.shape [3, 3, 5] - # out2.shape [3, 3, 5] diff --git a/doc/paddle/api/paddle/fluid/layers/sqrt_cn.rst b/doc/paddle/api/paddle/fluid/layers/sqrt_cn.rst deleted file mode 100644 index fd64d0cb368dfbbd30dc741f50dacab64428a484..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sqrt_cn.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. _cn_api_tensor_sqrt: - -sqrt -------------------------------- - -.. py:function:: paddle.sqrt(x, name=None, out=None) - -:alias_main: paddle.sqrt -:alias: paddle.sqrt,paddle.tensor.sqrt,paddle.tensor.math.sqrt -:update_api: paddle.fluid.layers.sqrt - - - -计算输入的算数平方根。 - -.. math:: - out=\sqrt x=x^{1/2} - -.. note:: - 请确保输入中的数值是非负数。 - -参数: - - - **x** (Variable) - 支持任意维度的Tensor。数据类型为float32,float64或float16。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **out** (Variable, 可选) – 指定存储运算结果的Tensor。如果设置为None或者不设置,将创建新的Tensor存储运算结果,默认值为None。 - -返回:返回类型为Variable(Tensor|LoDTensor), 数据类型同输入一致。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - inputs = fluid.layers.data(name="x", shape = [3], dtype='float32') - output = paddle.sqrt(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([0, 9, 36]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) - # [array([0., 3., 6.], dtype=float32)] diff --git a/doc/paddle/api/paddle/fluid/layers/squeeze_cn.rst b/doc/paddle/api/paddle/fluid/layers/squeeze_cn.rst deleted file mode 100644 index 026f38455ff2e877cb13952e0c446427196ee83a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/squeeze_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_layers_squeeze: - -squeeze -------------------------------- - -.. py:function:: paddle.fluid.layers.squeeze(input, axes, name=None) - - - - -该OP会根据axes压缩输入Tensor的维度。如果指定了axes,则会删除axes中指定的维度,axes指定的维度要等于1。如果没有指定axes,那么所有等于1的维度都会被删除。 - -- 例1: - -.. code-block:: python - - 输入: - X.shape = [1,3,1,5] - axes = [0] - 输出; - Out.shape = [3,1,5] -- 例2: - -.. code-block:: python - - 输入: - X.shape = [1,3,1,5] - axes = [] - 输出: - Out.shape = [3,5] -- 例3: - -.. code-block:: python - - 输入: - X.shape = [1,3,1,5] - axes = [-2] - 输出: - Out.shape = [1,3,5] - -参数: - - **input** (Variable) - 输入任意维度的Tensor。 支持的数据类型:float32,float64,int8,int32,int64。 - - **axes** (list) - 输入一个或一列整数,代表要压缩的轴。axes的范围: :math:`[-rank(input), rank(input))` 。 axes为负数时, :math:`axes=axes+rank(input)` 。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 返回对维度进行压缩后的Tensor。数据类型与输入Tensor一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - x = layers.data(name='x', shape=[5, 1, 10]) - y = layers.squeeze(input=x, axes=[1]) #y.shape=[5, 10] - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/stack_cn.rst b/doc/paddle/api/paddle/fluid/layers/stack_cn.rst deleted file mode 100644 index 2c2a88e6845d7d507f2b8274cf0b6247eb79aaef..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/stack_cn.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. _cn_api_fluid_layers_stack: - -stack -------------------------------- - -.. py:function:: paddle.fluid.layers.stack(x, axis=0) - - - - - -该OP沿 ``axis`` 轴对输入 ``x`` 进行堆叠操作。 - -- 例1: - -.. code-block:: python - - 输入: - x[0].shape = [1, 2] - x[0].data = [ [1.0 , 2.0 ] ] - x[1].shape = [1, 2] - x[1].data = [ [3.0 , 4.0 ] ] - x[2].shape = [1, 2] - x[2].data = [ [5.0 , 6.0 ] ] - - 参数: - axis = 0 #沿着第0维对输入x进行堆叠操作。 - - 输出: - Out.shape = [3, 1, 2] - Out.data = [ [ [1.0, 2.0] ], - [ [3.0, 4.0] ], - [ [5.0, 6.0] ] ] - - -- 例2: - -.. code-block:: python - - 输入: - x[0].shape = [1, 2] - x[0].data = [ [1.0 , 2.0 ] ] - x[1].shape = [1, 2] - x[1].data = [ [3.0 , 4.0 ] ] - x[2].shape = [1, 2] - x[2].data = [ [5.0 , 6.0 ] ] - - 参数: - axis = 1 or axis = -2 #沿着第1维对输入进行堆叠操作。 - - 输出: - Out.shape = [1, 3, 2] - Out.data = [ [ [1.0, 2.0] - [3.0, 4.0] - [5.0, 6.0] ] ] - -参数: - - **x** (Variable|list(Variable)) – 输入 x 可以是单个Tensor,或是多个Tensor组成的列表。如果 x 是一个列表,那么这些Tensor的维度必须相同。 假设输入是N维Tensor :math:`[d_0,d_1,...,d_{n−1}]`,则输出变量的维度为N+1维 :math:`[d_0,d_1,...d_{axis-1},len(x),d_{axis}...,d_{n−1}]` 。支持的数据类型: float32,float64,int32,int64。 - - **axis** (int, 可选) – 指定对输入Tensor进行堆叠运算的轴,有效 ``axis`` 的范围是: :math:`[-(R+1), R+1)`,R是输入中第一个Tensor的rank。如果 ``axis`` < 0,则 :math:`axis=axis+rank(x[0])+1` 。axis默认值为0。 - -返回: 堆叠运算后的Tensor,数据类型与输入Tensor相同。输出维度等于 :math:`rank(x[0])+1` 维。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - x1 = layers.data(name='x1', shape=[1, 2], dtype='int32') - x2 = layers.data(name='x2', shape=[1, 2], dtype='int32') - #对Tensor List进行堆叠 - data = layers.stack([x1,x2]) # 沿着第0轴进行堆叠,data.shape=[2, 1, 2] - - data = layers.stack([x1,x2], axis=1) # 沿着第1轴进行堆叠,data.shape=[1, 2, 2] - - #单个Tensor的堆叠 - data = layers.stack(x1) # 沿着第0轴进行堆叠,data.shape=[1, 1, 2] - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/sum_cn.rst b/doc/paddle/api/paddle/fluid/layers/sum_cn.rst deleted file mode 100644 index 89825e0b4254f68efd155310f7db1edbd391c82e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/sum_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_tensor_sum: - -sum -------------------------------- - -.. py:function:: paddle.sum(input, dim=None, dtype=None, keep_dim=False, name=None) - -:alias_main: paddle.sum -:alias: paddle.sum,paddle.tensor.sum,paddle.tensor.math.sum -:update_api: paddle.fluid.layers.reduce_sum - - - -该OP是对指定维度上的Tensor元素进行求和运算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)- 求和运算的维度。如果为None,则计算所有元素的和并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **dtype** (str , 可选)- 输出变量的数据类型。若参数为空,则输出变量的数据类型和输入变量相同,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行求和运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - out1 = paddle.sum(x) # [3.5] - out2 = paddle.sum(x, dim=0) # [0.3, 0.5, 1.1, 1.6] - out3 = paddle.sum(x, dim=-1) # [1.9, 1.6] - out4 = paddle.sum(x, dim=1, keep_dim=True) # [[1.9], [1.6]] - - # y 是一个shape为[2, 2, 2]的Tensor元素如下: - # [[[1, 2], [3, 4]], - # [[5, 6], [7, 8]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - out5 = paddle.sum(y, dim=[1, 2]) # [10, 26] - out6 = paddle.sum(y, dim=[0, 1]) # [16, 20] diff --git a/doc/paddle/api/paddle/fluid/layers/tanh_cn.rst b/doc/paddle/api/paddle/fluid/layers/tanh_cn.rst deleted file mode 100644 index 84e295cb73c3be0d40d43ca571500232d0dbc7ac..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tanh_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_tensor_tanh: - -tanh -------------------------------- - -.. py:function:: paddle.tanh(x, name=None, out=None) - -:alias_main: paddle.tanh -:alias: paddle.tanh,paddle.tensor.tanh,paddle.tensor.math.tanh -:update_api: paddle.fluid.layers.tanh - - - -tanh 激活函数 - -.. math:: - out = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} - - -参数: - - - **x** (Variable) - 支持任意维度的Tensor。数据类型为float32,float64或float16。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **out** (Variable, 可选) – 指定存储运算结果的Tensor。如果设置为None或者不设置,将创建新的Tensor存储运算结果,默认值为None。 - -返回:返回类型为Variable(Tensor|LoDTensor), 数据类型同输入一致。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - inputs = fluid.layers.data(name="x", shape = [3], dtype='float32') - output = paddle.tanh(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([0, 0.5, 0.3]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) - # [array([0., 0.46211717, 0.2913126], dtype=float32)] diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/argmax_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/argmax_cn.rst deleted file mode 100644 index 2b3a7857b80b29ecffbccb5f697267ef05afd81b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/argmax_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_tensor_argmax: - -argmax -------------------------------- - -.. py:function:: paddle.argmax(input, axis=None, dtype=None, out=None, keepdims=False, name=None) - -:alias_main: paddle.argmax -:alias: paddle.argmax,paddle.tensor.argmax,paddle.tensor.search.argmax -:update_api: paddle.fluid.layers.argmax - - - - -该OP沿 ``axis`` 计算输入 ``input`` 的最大元素的索引。 - -参数: - - **input** (Variable) - 输入的多维 ``Tensor`` ,支持的数据类型:float32、float64、int8、int16、int32、int64。 - - **axis** (int,可选) - 指定对输入Tensor进行运算的轴, ``axis`` 的有效范围是[-R, R),R是输入 ``input`` 的Rank, ``axis`` -R与绝对值相同的R等价。默认值为0。 - - **dtype** (np.dtype|core.VarDesc.VarType|str)- 输出Tensor的数据类型,可选值为int32,int64,默认值为None,将返回int64类型的结果。 - - **out** (Variable, 可选) – 指定存储运算结果的Tensor。如果设置为None或者不设置,将创建新的Tensor存储运算结果,默认值为None。 - - **keepdims** (bool,可选)- 是否保留进行max index操作的维度,默认值为False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: ``Tensor`` ,数据类型int64 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[[5,8,9,5], - [0,0,1,7], - [6,9,2,4]], - [[5,2,4,2], - [4,7,7,9], - [1,7,0,6]]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(in1) - out1 = paddle.argmax(input=x, axis=-1) - out2 = paddle.argmax(input=x, axis=0) - out3 = paddle.argmax(input=x, axis=1) - out4 = paddle.argmax(input=x, axis=2) - out5 = paddle.argmax(input=x, axis=2, keepdims=True) - print(out1.numpy()) - # [[2 3 1] - # [0 3 1]] - print(out2.numpy()) - # [[0 0 0 0] - # [1 1 1 1] - # [0 0 0 1]] - print(out3.numpy()) - # [[2 2 0 1] - # [0 1 1 1]] - print(out4.numpy()) - # [[2 3 1] - # [0 3 1]] - print(out5.numpy()) - #array([[[2], - # [3], - # [1]], - # [[0], - # [3], - # [1]]]) diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/argmin_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/argmin_cn.rst deleted file mode 100644 index 74ba5fbc52a2cc285cd9d1a370246e028ec0b14c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/argmin_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_argmin: - -argmin -------------------------------- - -.. py:function:: paddle.fluid.layers.argmin(x, axis=0) - -:alias_main: paddle.argmin -:alias: paddle.argmin,paddle.tensor.argmin,paddle.tensor.search.argmin -:old_api: paddle.fluid.layers.argmin - - - -**argmin** - -该OP沿 ``axis`` 计算输入 ``x`` 的最小元素的索引。 - -参数: - - **x** (Variable) - 输入的多维 ``Tensor`` ,支持的数据类型:float32、float64、int8、int16、int32、int64。 - - **axis** (int,可选) - 指定对输入Tensor进行运算的轴, ``axis`` 的有效范围是[-R, R),R是输入 ``x`` 的Rank, ``axis`` 为负时与 ``axis`` +R 等价。默认值为0。 - -返回: ``Tensor`` ,数据类型int64 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[[5,8,9,5], - [0,0,1,7], - [6,9,2,4]], - [[5,2,4,2], - [4,7,7,9], - [1,7,0,6]]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(in1) - out1 = fluid.layers.argmin(x=x, axis=-1) - out2 = fluid.layers.argmin(x=x, axis=0) - out3 = fluid.layers.argmin(x=x, axis=1) - out4 = fluid.layers.argmin(x=x, axis=2) - print(out1.numpy()) - # [[0 0 2] - # [1 0 2]] - print(out2.numpy()) - # [[0 1 1 1] - # [0 0 0 0] - # [1 1 1 0]] - print(out3.numpy()) - # [[1 1 1 2] - # [2 0 2 0]] - print(out4.numpy()) - # [[0 0 2] - # [1 0 2]] diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/argsort_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/argsort_cn.rst deleted file mode 100644 index a681b3beefadc7c601a42a23a958792b5bac9939..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/argsort_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_layers_argsort: - -argsort -------------------------------- - -.. py:function:: paddle.fluid.layers.argsort(input,axis=-1,descending=False,name=None) - -:alias_main: paddle.argsort -:alias: paddle.argsort,paddle.tensor.argsort,paddle.tensor.search.argsort -:old_api: paddle.fluid.layers.argsort - - - -对输入变量沿给定轴进行排序,输出排序好的数据和相应的索引,其维度和输入相同。**默认升序排列,如果需要降序排列设置** ``descending=True`` 。 - - -参数: - - **input** (Variable) - 输入的多维 ``Tensor`` ,支持的数据类型:float32、float64、int16、int32、int64、uint8。 - - **axis** (int,可选) - 指定对输入Tensor进行运算的轴, ``axis`` 的有效范围是[-R, R),R是输入 ``x`` 的Rank, ``axis`` 为负时与 ``axis`` +R 等价。默认值为0。 - - **descending** (bool,可选) - 指定算法排序的方向。如果设置为True,算法按照降序排序。如果设置为False或者不设置,按照升序排序。默认值为False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:一组已排序的输出(与 ``input`` 维度相同、数据类型相同)和索引(数据类型为int64)。 - -返回类型:tuple[Variable] - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[[5,8,9,5], - [0,0,1,7], - [6,9,2,4]], - [[5,2,4,2], - [4,7,7,9], - [1,7,0,6]]]).astype(np.float32) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(in1) - out1 = fluid.layers.argsort(input=x, axis=-1) # same as axis==2 - out2 = fluid.layers.argsort(input=x, axis=0) - out3 = fluid.layers.argsort(input=x, axis=1) - print(out1[0].numpy()) - # [[[5. 5. 8. 9.] - # [0. 0. 1. 7.] - # [2. 4. 6. 9.]] - # [[2. 2. 4. 5.] - # [4. 7. 7. 9.] - # [0. 1. 6. 7.]]] - print(out1[1].numpy()) - # [[[0 3 1 2] - # [0 1 2 3] - # [2 3 0 1]] - # [[1 3 2 0] - # [0 1 2 3] - # [2 0 3 1]]] - print(out2[0].numpy()) - # [[[5. 2. 4. 2.] - # [0. 0. 1. 7.] - # [1. 7. 0. 4.]] - # [[5. 8. 9. 5.] - # [4. 7. 7. 9.] - # [6. 9. 2. 6.]]] - print(out3[0].numpy()) - # [[[0. 0. 1. 4.] - # [5. 8. 2. 5.] - # [6. 9. 9. 7.]] - # [[1. 2. 0. 2.] - # [4. 7. 4. 6.] - # [5. 7. 7. 9.]]] diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/assign_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/assign_cn.rst deleted file mode 100644 index da7b3c8f146aa744735c464902f0d633364e8288..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/assign_cn.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _cn_api_fluid_layers_assign: - -assign -------------------------------- - -.. py:function:: paddle.fluid.layers.assign(input,output=None) - -:alias_main: paddle.nn.functional.assign -:alias: paddle.nn.functional.assign,paddle.nn.functional.common.assign -:old_api: paddle.fluid.layers.assign - - - -该OP将输入Tensor或numpy数组拷贝至输出Tensor。 - -参数: - - **input** (Variable|np.ndarray) - 输入Tensor或numpy数组,支持数据类型为float32, float64, int32, int64和bool。 - - **output** (Variable,可选) - 输出Tensor。如果为None,则创建一个新的Tensor作为输出Tensor,默认值为None。 - -返回:输出Tensor,形状、数据类型、数据值和 ``input`` 一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.fill_constant(shape=[3, 2], value=2.5, dtype='float64') # [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] - result1 = fluid.layers.create_tensor(dtype='float64') - fluid.layers.assign(data, result1) # result1 = [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] - result2 = fluid.layers.assign(data) # result2 = [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] - result3 = fluid.layers.assign(np.array([[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]], dtype='float32')) # result3 = [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/cast_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/cast_cn.rst deleted file mode 100644 index 8ce45cef9fe74a6016bf1d4f264696cde94d9e71..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/cast_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_cast: - -cast -------------------------------- - -.. py:function:: paddle.fluid.layers.cast(x,dtype) - -:alias_main: paddle.cast -:alias: paddle.cast,paddle.tensor.cast,paddle.tensor.manipulation.cast -:old_api: paddle.fluid.layers.cast - - - -该OP将 ``x`` 的数据类型转换为 ``dtype`` 并输出。支持输出和输入的数据类型相同。 - -参数: - - **x** (Variable) - 输入的多维Tensor或LoDTensor,支持的数据类型为:bool、float16、float32、float64、uint8、int32、int64。 - - **dtype** (str|np.dtype|core.VarDesc.VarType) - 输出Tensor的数据类型。支持的数据类型为:bool、float16、float32、float64、int8、int32、int64、uint8。 - -返回:Tensor或LoDTensor,维度与 ``x`` 相同,数据类型为 ``dtype`` - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - place = fluid.core.CPUPlace() - - # 构建网络 - x_lod = fluid.layers.data(name="x", shape=[1], lod_level=1) - cast_res1 = fluid.layers.cast(x=x_lod, dtype="uint8") - cast_res2 = fluid.layers.cast(x=x_lod, dtype=np.int32) - - # 创建CPU执行器 - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - x_i_lod = fluid.core.LoDTensor() - x_i_lod.set(np.array([[1.3,-2.4],[0,4]]).astype("float32"), place) - x_i_lod.set_recursive_sequence_lengths([[0,2]]) - res1 = exe.run(fluid.default_main_program(), feed={'x':x_i_lod}, fetch_list=[cast_res1], return_numpy=False) - res2 = exe.run(fluid.default_main_program(), feed={'x':x_i_lod}, fetch_list=[cast_res2], return_numpy=False) - print(np.array(res1[0]), np.array(res1[0]).dtype) - # [[ 1 254] - # [ 0 4]] uint8 - print(np.array(res2[0]), np.array(res2[0]).dtype) - # [[ 1 -2] - # [ 0 4]] int32 diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/concat_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/concat_cn.rst deleted file mode 100644 index aa36dd238d01ef6804bb8e4175650ab3b0244429..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/concat_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_tensor_concat: - -concat -------------------------------- - -.. py:function:: paddle.tensor.concat(x, axis=0, name=None) - - -该OP对输入沿 ``axis`` 轴进行联结,返回一个新的Tensor。 - -参数: - - **x** (list|tuple) - 待联结的Tensor list或者Tensor tuple ,支持的数据类型为:bool, float16, float32、float64、int32、int64, ``x`` 中所有Tensor的数据类型应该一致。 - - **axis** (int|Tensor,可选) - 指定对输入 ``x`` 进行运算的轴,可以是整数或者形状为[1]的Tensor,数据类型为int32或者int64。 ``axis`` 的有效范围是[-R, R),R是输入 ``x`` 中Tensor的维度, ``axis`` 为负值时与 :math:`axis + R` 等价。默认值为0。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:联结后的Tensor ,数据类型和 ``x`` 中的Tensor相同。 - -抛出异常: - - ``TypeError``: - 当输入 ``x`` 的类型不是list或者tuple时。 - - ``TypeError``: - 当输入 ``x`` 的数据类型不是 bool,float16, float32, float64, int32, int64时。 - - ``TypeError``: - 当 ``axis`` 的类型不是int或者Tensor时。 当 ``axis`` 是Tensor的时候其数据类型不是int32或者int64时。 - - ``TypeError``: - 当输入 ``x`` 中的Tensor存在数据类型不一致时。 - -**代码示例**: - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() # Now we are in imperative mode - in1 = np.array([[1, 2, 3], - [4, 5, 6]]) - in2 = np.array([[11, 12, 13], - [14, 15, 16]]) - in3 = np.array([[21, 22], - [23, 24]]) - x1 = paddle.imperative.to_variable(in1) - x2 = paddle.imperative.to_variable(in2) - x3 = paddle.imperative.to_variable(in3) - zero = paddle.full(shape=[1], dtype='int32', fill_value=0) - # When the axis is negative, the real axis is (axis + Rank(x)) - # As follow, axis is -1, Rank(x) is 2, the real axis is 1 - out1 = paddle.concat(x=[x1, x2, x3], axis=-1) - out2 = paddle.concat(x=[x1, x2], axis=0) - out3 = paddle.concat(x=[x1, x2], axis=zero) - # out1 - # [[ 1 2 3 11 12 13 21 22] - # [ 4 5 6 14 15 16 23 24]] - # out2 out3 - # [[ 1 2 3] - # [ 4 5 6] - # [11 12 13] - # [14 15 16]] diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/create_global_var_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/create_global_var_cn.rst deleted file mode 100644 index 97034b6dc1c6bc60e8be576cb2332deb1f1d77f7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/create_global_var_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_create_global_var: - -create_global_var -------------------------------- - -.. py:function:: paddle.fluid.layers.create_global_var(shape,value,dtype,persistable=False,force_cpu=False,name=None) - - - - -该OP在全局块中创建一个新的Tensor,Tensor的值为 ``value`` 。 - -参数: - - **shape** (list[int])- 指定输出Tensor的形状,它可以是一个整数列表。 - - **value** (float)- 变量的值,填充新创建的变量。 - - **dtype** (str|numpy.dtype,可选)– 初始化数据类型。 - - **persistable** (bool,可选)- 是否为永久变量,默认:False。 - - **force_cpu** (bool,可选)- 是否将该变量压入CPU,默认值为 False。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:创建的Tensor变量 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - var = layers.create_global_var(shape=[2,3], value=1.0, dtype='float32', - persistable=True, force_cpu=True, name='new_var') - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/create_parameter_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/create_parameter_cn.rst deleted file mode 100644 index 4176d7507f80e9767b32755f1169fbcbd502bb6a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/create_parameter_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_create_parameter: - -create_parameter -------------------------------- - - -.. py:function:: paddle.fluid.layers.create_parameter(shape,dtype,name=None,attr=None,is_bias=False,default_initializer=None) - -:api_attr: 声明式编程模式(静态图) - - - -该OP创建一个参数。该参数是一个可学习的变量, 拥有梯度并且可优化。 - -**注意:这是一个低级别的API。如果您希望自己创建新的op,这个API将非常有用,无需使用layers。** - -参数: - - **shape** (list[int]) - 指定输出Tensor的形状,它可以是一个整数列表。 - - **dtype** (str|numpy.dtype) – 初始化数据类型。可设置的字符串值有:"float16","float32","float64"。 - - **name** (str,可选) - 参数的名称。具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **attr** (ParamAttr,可选) - 指定参数的属性对象。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。默认值为None,表示将采用 ParamAttr 的默认方式初始化。 - - **is_bias** (bool,可选) - 当default_initializer为空,该值会对选择哪个默认初始化程序产生影响。如果is_bias为真,则使用initializer.Constant(0.0),否则使用Xavier(),默认值False。 - - **default_initializer** (Initializer,可选) - 参数的初始化程序,默认值为空。 - -返回:创建的Tensor变量。 - -返回类型:Variable。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - W = layers.create_parameter(shape=[784, 200], dtype='float32') - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/create_tensor_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/create_tensor_cn.rst deleted file mode 100644 index d00d67ebbe70f10d06e8d4bd1d96cfcb6ff7145a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/create_tensor_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_layers_create_tensor: - -create_tensor -------------------------------- - -.. py:function:: paddle.fluid.layers.create_tensor(dtype,name=None,persistable=False) - -:alias_main: paddle.create_tensor -:alias: paddle.create_tensor,paddle.tensor.create_tensor,paddle.tensor.creation.create_tensor -:old_api: paddle.fluid.layers.create_tensor - - - -创建数据类型为dtype的Tensor。 - -参数: - - **dtype** (str|numpy.dtype) - 创建的Tensor的数据类型,支持数据类型为bool, float16, float32, float64, int8, int16, int32, int64。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **persistable** (bool,可选) - 用于设置创建的Tensor的persistable属性,若不设置则默认设置为False。 - -返回: 创建的Tensor,数据类型为dtype。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - """ - 使用print(tensor)打印结果如下: - type { - type: LOD_TENSOR - lod_tensor { - tensor { - data_type: FP32 - } - } - } - persistable: false - """ - import paddle.fluid as fluid - tensor = fluid.layers.create_tensor(dtype='float32') diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/diag_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/diag_cn.rst deleted file mode 100644 index f08ae61e0e44c620ee20cadc979c91450aec9010..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/diag_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_diag: - -diag -------------------------------- - -.. py:function:: paddle.fluid.layers.diag(diagonal) - -:alias_main: paddle.diag -:alias: paddle.diag,paddle.tensor.diag,paddle.tensor.creation.diag -:old_api: paddle.fluid.layers.diag - - - -该OP创建一个方阵,使用输入diagonal来指定方阵的对角线元素的值。 - -参数: - - **diagonal** (Variable|numpy.ndarray) — 数据shape为 :math:`[N]` 一维Tensor,会把该Tensor的元素赋在方阵的对角线上。数据类型可以是 float32,float64,int32,int64。 - -返回:存储着方阵的Tensor,对角线值是输入Tensor diagonal的值, 数据shape为 :math:`[N, N]` 二维Tensor。 - -返回类型:Variable,数据类型和输入数据类型一致。 - -**代码示例**: - -.. code-block:: python - - # [3, 0, 0] - # [0, 4, 0] - # [0, 0, 5] - - import paddle.fluid as fluid - import numpy as np - diagonal = np.arange(3, 6, dtype='int32') - data = fluid.layers.diag(diagonal) - # diagonal.shape=(3,) data.shape=(3, 3) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/eye_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/eye_cn.rst deleted file mode 100644 index b0fb8b5ecb68711e3d196c92beaa87f9bb6e10fc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/eye_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_eye: - -eye -------------------------------- - -.. py:function:: paddle.fluid.layers.eye(num_rows, num_columns=None, batch_shape=None, dtype='float32', name=None) - - -该OP用来构建二维Tensor,或一个批次的二维Tensor。 - -参数: - - **num_rows** (int) - 该批次二维Tensor的行数,数据类型为非负int32。 - - **num_columns** (int, 可选) - 该批次二维Tensor的列数,数据类型为非负int32。若为None,则默认等于num_rows。 - - **batch_shape** (list(int), 可选) - 如若提供,则返回Tensor的主批次维度将为batch_shape。 - - **dtype** (np.dtype|core.VarDesc.VarType|str,可选) - 返回Tensor的数据类型,可为int32,int64,float16,float32,float64,默认数据类型为float32。 - - **name** (str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: ``shape`` 为batch_shape + [num_rows, num_columns]的Tensor。 - - -抛出异常: - - ``TypeError``: - 如果 ``dtype`` 的类型不是float16, float32, float64, int32, int64其中之一。 - - ``TypeError``: - 如果 ``num_columns`` 不是非负整数或者 ``num_rows`` 不是非负整数。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.eye(3, dtype='int32') - # [[1, 0, 0] - # [0, 1, 0] - # [0, 0, 1]] - - data = fluid.layers.eye(2, 3, dtype='int32') - # [[1, 0, 0] - # [0, 1, 0]] - - data = fluid.layers.eye(2, batch_shape=[3]) - # Construct a batch of 3 identity tensors, each 2 x 2. - # data[i, :, :] is a 2 x 2 identity tensor, i = 0, 1, 2. - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/fill_constant_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/fill_constant_cn.rst deleted file mode 100644 index f7af206495c0640ef87b2806666fdf919015463e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/fill_constant_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_fill_constant: - -fill_constant -------------------------------- - -.. py:function:: paddle.fluid.layers.fill_constant(shape,dtype,value,force_cpu=False,out=None) - -:alias_main: paddle.fill_constant -:alias: paddle.fill_constant,paddle.tensor.fill_constant,paddle.tensor.creation.fill_constant -:old_api: paddle.fluid.layers.fill_constant - - - -该OP创建一个形状为shape并且数据类型为dtype的Tensor,同时用 ``value`` 中提供的常量初始化该Tensor。 - -创建的Tensor的stop_gradient属性默认为True。 - -参数: - - **shape** (tuple|list|Variable)- 要创建的LoDTensor或者SelectedRows的形状。 数据类型为int32或int64。 如果shape是一个列表或元组,则其元素应该是形状为[1]的整数或Tensor。 如果shape是Variable,则它应该是一维Tensor。 - - **dtype** (np.dtype|core.VarDesc.VarType|str)- 创建LoDTensor或者SelectedRows的数据类型,支持数据类型为float16, float32, float64, int32, int64。 - - **value** (float|int)- 用于初始化输出LoDTensor或者SelectedRows的常量数据的值。 - - **force_cpu** (bool)- 用于标志LoDTensor或者SelectedRows是否创建在CPU上,默认值为False,若设为true,则数据必须在CPU上。 - - **out** (Variable,可选)- 用于存储创建的LoDTensor或者SelectedRows,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - -返回: 根据shape和dtype创建的Tensor。 - -返回类型:变量(Variable) - -抛出异常: - - :code:`TypeError`: dtype必须是bool,float16,float32,float64,int32和int64之一,输出Tensor的数据类型必须与dtype相同。 - - :code:`TypeError`: 当 `shape` 的数据类型不是list、tuple、Variable。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data1 = fluid.layers.fill_constant(shape=[2,1], value=0, dtype='int64') #data1=[[0],[0]] - data2 = fluid.layers.fill_constant(shape=[2,1], value=5, dtype='int64', out=data1) - #data1=[[5],[5]] data2=[[5],[5]] - - # attr shape is a list which contains Variable Tensor. - positive_2 = fluid.layers.fill_constant([1], "int32", 2) - data3 = fluid.layers.fill_constant(shape=[1, positive_2], dtype='float32', value=1.5) # data3=[1.5, 1.5] - - # attr shape is a Variable Tensor. - shape = fluid.layers.fill_constant([1,2], "int32", 2) # shape=[2,2] - data4 = fluid.layers.fill_constant(shape=shape, dtype='bool', value=True) # data4=[[True,True],[True,True]] diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/has_inf_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/has_inf_cn.rst deleted file mode 100644 index 8bf1cb7b8bfcdb7e1547f75566f0b641d745baf6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/has_inf_cn.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _cn_api_fluid_layers_has_inf: - -has_inf -------------------------------- - -.. py:function:: paddle.fluid.layers.has_inf(x) - -:alias_main: paddle.has_inf -:alias: paddle.has_inf,paddle.tensor.has_inf,paddle.tensor.search.has_inf -:old_api: paddle.fluid.layers.has_inf - - - -检查输入的变量(x)中是否包含无穷数(inf)。 - -参数: - - **x** (Variable) - 被检查的变量Tensor/LoDTensor。 - -返回:Variable(Tensor)变量存储输出值,包含一个bool型数值,指明输入中是否包含无穷数(inf)。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[4, 32, 32], dtype="float32") - res = fluid.layers.has_inf(data) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/has_nan_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/has_nan_cn.rst deleted file mode 100644 index 0f66985af75a733ba985155c6fd06255ce46b8cc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/has_nan_cn.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. _cn_api_fluid_layers_has_nan: - -has_nan -------------------------------- - -.. py:function:: paddle.fluid.layers.has_nan(x) - -:alias_main: paddle.has_nan -:alias: paddle.has_nan,paddle.tensor.has_nan,paddle.tensor.search.has_nan -:old_api: paddle.fluid.layers.has_nan - - - -检查输入的变量(x)中是否包含NAN。 - -参数: - - **x** (Variable) - 被检查的变量Tensor/LoDTensor。 - -返回:Variable(Tensor)变量存储输出值,包含一个bool型数值,指明输入中是否包含NAN。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[4, 32, 32], dtype="float32") - res = fluid.layers.has_nan(data) - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/isfinite_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/isfinite_cn.rst deleted file mode 100644 index c9b5474e809b248141ad4632e5a5aedd1e11fec9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/isfinite_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_isfinite: - -isfinite -------------------------------- - -.. py:function:: paddle.fluid.layers.isfinite(x) - -:alias_main: paddle.isfinite -:alias: paddle.isfinite,paddle.tensor.isfinite,paddle.tensor.logic.isfinite -:old_api: paddle.fluid.layers.isfinite - - - -``注意:此算子的输入 Tensor / LoDTensor 数据类型必须为 int32 / float / double 之一。`` - -测试 x 是否包含无穷值(即 nan 或 inf)。若元素均为有穷数,返回真;否则返回假。 - -参数: - - **x(variable)** : 变量,包含被测试的 Tensor / LoDTensor。 - -返回: - - Variable (Tensor / LoDTensor),此 Tensor 变量包含一个 bool 型结果。 - -返回类型 - - Variable (Tensor / LoDTensor),一个包含 Tensor 的变量。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - var = fluid.layers.data(name="data", shape=(4, 6), dtype="float32") - output = fluid.layers.isfinite(var) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - img = numpy.array((4, 6)).astype(numpy.float32) - res, = exe.run(fluid.default_main_program(), feed={'data':img}, fetch_list=[output]) - print(res) # Output Value: [ True] - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/linspace_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/linspace_cn.rst deleted file mode 100644 index 7c228c413e9f167ca92fd547a25c8aa3ad233aeb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/linspace_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_tensor_linspace: - -linspace -------------------------------- - -.. py:function:: paddle.linspace(start, stop, num, dtype=None, name=None) - -:alias_main: paddle.linspace -:alias: paddle.tensor.linspace, paddle.tensor.creation.linspace - - - -该OP返回一个Tensor,Tensor的值为在区间start和stop上均匀间隔的num个值,输出Tensor的长度为num。 - -**注意:该OP不进行梯度计算** - -参数: - - **start** (float|Tensor) – ``start`` 是区间开始的变量,可以是一个浮点标量,或是一个shape为[1]的Tensor,该Tensor的数据类型可以是float32或者是float64。 - - **stop** (float|Tensor) – ``end`` 是区间结束的变量,可以是一个浮点标量,或是一个shape为[1]的Tensor,该Tensor的数据类型可以是float32或者是float64。 - - **num** (int|Tensor) – ``num`` 是给定区间内需要划分的区间数,可以是一个整型标量,或是一个shape为[1]的Tensor,该Tensor的数据类型需为int32。 - - **dtype** (np.dtype|core.VarDesc.VarType|str,可选) – 输出Tensor的数据类型,可以是float32或者是float64。如果dtype为None,默认类型为float32。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出结果的数据类型是float32或float64,表示等间隔划分结果的1-D Tensor,该Tensor的shape大小为 :math:`[num]` ,在mum为1的情况下,仅返回包含start元素值的Tensor。 - -返回类型:Variable - -抛出异常: - - ``TypeError`` - 当start或者stop的数据类型不是float32或者float64。 - - ``TypeError`` - 当num的数据类型不是float32或者float64。 - - ``TypeError`` - 当dtype的类型不是float32或者float64。 - -**代码示例**: - -.. code-block:: python - - import paddle - data = paddle.linspace(0, 10, 5, dtype='float32') # [0.0, 2.5, 5.0, 7.5, 10.0] - data = paddle.linspace(0, 10, 1, dtype='float32') # [0.0] - diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/ones_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/ones_cn.rst deleted file mode 100644 index fa13c3412fd1d741d129987b415e4ac33a956557..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/ones_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_tensor_ones: - -ones -------------------------------- - -.. py:function:: paddle.ones(shape, dtype=None) - - - -该OP创建形状为 ``shape`` 、数据类型为 ``dtype`` 且值全为1的Tensor。 - -参数: - - **shape** (tuple|list|Tensor) - 输出Tensor的形状, ``shape`` 的数据类型为int32或者int64。 - - **dtype** (np.dtype|core.VarDesc.VarType|str, 可选) - 输出Tensor的数据类型,数据类型必须为bool、 float16、float32、float64、int32或int64。如果 ``dtype`` 为None,默认数据类型为float32。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:值全为1的Tensor,数据类型和 ``dtype`` 定义的类型一致。 - - -抛出异常: - - ``TypeError`` - 当 ``dtype`` 不是bool、 float16、float32、float64、int32、int64和None时。 - - ``TypeError`` - 当 ``shape`` 不是tuple、list、或者Tensor的时, 当 ``shape`` 为Tensor时,其数据类型不是int32或者int64。 - -**代码示例**: - -.. code-block:: python - - import paddle - - paddle.enable_imperative() - - #default dtype for ones OP - data1 = paddle.ones(shape=[3, 2]) - # [[1. 1.] - # [1. 1.] - # [1. 1.]] - data2 = paddle.ones(shape=[2, 2], dtype='int32') - # [[1 1] - # [1 1]] - - #attr shape is a Variable Tensor - shape = paddle.fill_constant(shape=[2], dtype='int32', value=2) - data3 = paddle.ones(shape=shape, dtype='int32') - # [[1 1] - # [1 1]] - diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/ones_like_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/ones_like_cn.rst deleted file mode 100644 index 33b189c7aaeebf5cc9f54f9f3d4fca38cb5de752..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/ones_like_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_tensor_ones_like: - -ones_like -------------------------------- - -.. py:function:: paddle.ones_like(x, dtype=None, name=None) - -:alias_main: paddle.ones_like -:alias: paddle.tensor.ones_like, paddle.tensor.creation.ones_like - -该OP返回一个和 ``x`` 具有相同形状的数值都为1的Tensor,数据类型为 ``dtype`` 或者和 ``x`` 相同。 - -参数 -:::::::::: - - **x** (Tensor) – 输入的Tensor,数据类型可以是bool,float16, float32,float64,int32,int64。输出Tensor的形状和 ``x`` 相同。如果 ``dtype`` 为None,则输出Tensor的数据类型与 ``x`` 相同。 - - **dtype** (str|np.dtype|core.VarDesc.VarType, 可选) - 输出Tensor的数据类型,支持bool,float16, float32,float64,int32,int64。当该参数值为None时, 输出Tensor的数据类型与 ``x`` 相同。默认值为None. - - **name** (str, 可选) - 输出的名字。一般无需设置,默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回 -:::::::::: - Tensor:和 ``x`` 具有相同形状的数值都为1的Tensor,数据类型为 ``dtype`` 或者和 ``x`` 相同。 - -抛出异常 -:::::::::: - - ``TypeError`` - 如果 ``dtype`` 不是bool、float16、float32、float64、int32、int64。 - -代码示例 -:::::::::: - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - - x = paddle.imperative.to_variable(np.array([1,2,3], dtype='float32')) - out1 = paddle.ones_like(x) # [1., 1., 1.] - out2 = paddle.ones_like(x, dtype='int32') # [1, 1, 1] diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/range_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/range_cn.rst deleted file mode 100644 index 519f5e76f72b649cb924adc6c00342b7b5c54929..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/range_cn.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _cn_api_fluid_layers_range: - -range -------------------------------- - -.. py:function:: paddle.fluid.layers.range(start, end, step, dtype, name=None) - - -注意:推荐使用 paddle.arange - -该OP返回以步长 ``step`` 均匀分隔给定数值区间[``start``, ``end``)的1-D Tensor,数据类型为 ``dtype``。 - -当 ``dtype`` 表示浮点类型时,为了避免浮点计算误差,建议给 ``end`` 加上一个极小值epsilon,使边界可以更加明确。 - -参数: - - **start** (float|int|Tensor) - 区间起点(且区间包括此值)。当 ``start`` 类型是Tensor时,是形状为[1]且数据类型为int32、int64、float32、float64的Tensor。 - - **end** (float|int|Tensor) - 区间终点(且通常区间不包括此值)。当 ``end`` 类型是Tensor时,是形状为[1]且数据类型为int32、int64、float32、float64的Tensor。 - - **step** (float|int|Tensor) - 均匀分割的步长。当 ``step`` 类型是Tensor时,是形状为[1]且数据类型为int32、int64、float32、float64的Tensor。 - - **dtype** (str|np.dtype|core.VarDesc.VarType) - 输出Tensor的数据类型,支持int32、int64、float32、float64。 - - **name** (str, 可选) - 输出的名字。一般无需设置,默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: - Tensor: 以步长 ``step`` 均匀分割给定数值区间[``start``, ``end``)后得到的1-D Tensor, 数据类型为 ``dtype`` 。 - -抛出异常: - - ``TypeError`` - 如果 ``dtype`` 不是int32、int64、float32、float64。 - -代码示例: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.range(0, 10, 2, 'int32') - # [0, 2, 4, 6, 8] diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/reverse_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/reverse_cn.rst deleted file mode 100644 index a4a552705b1dfc6bb389434a3f0cc771232f91c3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/reverse_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_layers_reverse: - -reverse -------------------------------- - -.. py:function:: paddle.fluid.layers.reverse(x,axis) - -:alias_main: paddle.reverse -:alias: paddle.reverse,paddle.tensor.reverse,paddle.tensor.manipulation.reverse -:old_api: paddle.fluid.layers.reverse - - - -**reverse** - -该OP对输入Tensor ``x`` 在指定轴 ``axis`` 上进行数据的逆序操作。 - -:: - - 示例1: - 输入是 LoDTensor 类型: - x = [[0, 1, 2], [3, 4, 5], [6, 7, 8]] - axis = [0, 1] - - 输出: - output = [[8, 7, 6], [5, 4, 3], [2, 1, 0]] - - 示例2: - 输入是 LoDTensorArray 类型: - x = {[[0, 1], [2, 3]], - [[4, 5, 6]], - [[7], [8], [9]]} - axis = 0 - - 输出: - output = {[[7], [8], [9]], - [[4, 5, 6]], - [[0, 1], [2, 3]]} - -参数: - - **x** (Variable) - 输入为Tensor或LoDTensorArray,数据类型支持bool,int8,int32,int64,float32和float64。若输入是LoDTensorArray类型,则返回一个逆序的LoDTensorArray,其内部Tensor元素的次序保持不变。 - - **axis** (int|tuple|list) - 指定逆序运算的轴,取值范围是[-R, R),R是输入 ``x`` 的Rank, ``axis`` 为负时与 ``axis`` +R 等价。如果 ``axis`` 是一个元组或列表,则在 ``axis`` 每个元素值所指定的轴上进行逆序运算。如果输入是LoDTensorArray类型,axis须是值为0的int,或shape为[1]的list ``[0]`` 、元组 ``(0,)`` 。 -返回:逆序后的Tensor,形状、数据类型和 ``x`` 一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.assign(np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]], dtype='float32')) # [[0., 1., 2.], [3., 4., 5.], [6., 7., 8.]] - result1 = fluid.layers.reverse(data, 0) # [[6., 7., 8.], [3., 4., 5.], [0., 1., 2.]] - result2 = fluid.layers.reverse(data, [0, 1]) # [[8., 7., 6.], [5., 4., 3.], [2., 1., 0.]] - - # 输入为LoDTensorArray时 - data1 = fluid.layers.assign(np.array([[0, 1, 2]], dtype='float32')) - data2 = fluid.layers.assign(np.array([[3, 4, 5]], dtype='float32')) - tensor_array = fluid.layers.create_array(dtype='float32') - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=0) - fluid.layers.array_write(data1, i, tensor_array) - fluid.layers.array_write(data2, i+1, tensor_array) - - reversed_tensor_array = fluid.layers.reverse(tensor_array, 0) # {[[3, 4, 5]], [[0, 1, 2]]} diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/sums_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/sums_cn.rst deleted file mode 100644 index 7bec1960d2a080198cf59f74ca997883cb935e94..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/sums_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_sums: - -sums -------------------------------- - -.. py:function:: paddle.fluid.layers.sums(input,out=None) - -:alias_main: paddle.sums -:alias: paddle.sums,paddle.tensor.sums,paddle.tensor.math.sums -:old_api: paddle.fluid.layers.sums - - - -该OP计算多个输入Tensor逐个元素相加的和。 - -- 示例:3个Tensor求和 - -.. code-block:: python - - 输入: - x0.shape = [2, 3] - x0.data = [[1., 2., 3.], - [4., 5., 6.]] - x1.shape = [2, 3] - x1.data = [[10., 20., 30.], - [40., 50., 60.]] - x2.shape = [2, 3] - x2.data = [[100., 200., 300.], - [400., 500., 600.]] - - 输出: - out.shape = [2, 3] - out.data = [[111., 222., 333.], - [444., 555., 666.]] - - -参数: - - **input** (list) - 多个维度相同的Tensor组成的元组。支持的数据类型:float32,float64,int32,int64。 - - **out** (Variable,可选) - 指定求和的结果Tensor,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - -返回:输入的和,数据类型和维度与输入Tensor相同。若 ``out`` 为 ``None`` ,返回值是一个新的Variable;否则,返回值就是 ``out`` 。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - x0 = fluid.layers.fill_constant(shape=[16, 32], dtype='int64', value=1) - x1 = fluid.layers.fill_constant(shape=[16, 32], dtype='int64', value=2) - x2 = fluid.layers.fill_constant(shape=[16, 32], dtype='int64', value=3) - x3 = fluid.layers.fill_constant(shape=[16, 32], dtype='int64', value=0) - - # 多个Tensor求和,结果保存在一个新建的Variable sum0,即sum0=x0+x1+x2,值为[[6, ..., 6], ..., [6, ..., 6]] - sum0 = fluid.layers.sums(input=[x0, x1, x2]) - - # 多个Tensor求和,sum1和x3是同一个Variable,相当于x3=x0+x1+x2,值为[[6, ..., 6], ..., [6, ..., 6]] - sum1 = fluid.layers.sums(input=[x0, x1, x2], out=x3) diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/tensor_array_to_tensor_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/tensor_array_to_tensor_cn.rst deleted file mode 100644 index 777b9a572d2177368b3d2b0f9b091ac426a4d9b6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/tensor_array_to_tensor_cn.rst +++ /dev/null @@ -1,83 +0,0 @@ -.. _cn_api_fluid_layers_tensor_array_to_tensor: - -tensor_array_to_tensor -------------------------------- - -.. py:function:: paddle.fluid.layers.tensor_array_to_tensor(input, axis=1, name=None, use_stack=False) - - - - -该OP将 ``input`` 这个LoDTensorArray中的所有Tensor沿 ``axis`` 指定的轴进行拼接(concat)或堆叠(stack)。 - -示例: - -:: - - - 案例 1: - - 给定: - - input.data = {[[0.6, 0.1, 0.3], - [0.5, 0.3, 0.2]], - [[1.3], - [1.8]], - [[2.3, 2.1], - [2.5, 2.4]]} - - axis = 1, use_stack = False - - 结果: - - output.data = [[0.6, 0.1, 0.3, 1.3, 2.3, 2.1], - [0.5, 0.3, 0.2, 1.8, 2.5, 2.4]] - - output_index.data = [3, 1, 2] - - - 案例 2: - - 给定: - - input.data = {[[0.6, 0.1], - [0.5, 0.3]], - [[0.3, 1.3], - [0.2, 1.8]], - [[2.3, 2.1], - [2.5, 2.4]]} - - axis = 1, use_stack = False - - 结果: - - output.data = [[[0.6, 0.1] - [0.3, 1.3] - [2.3, 2.1], - [[0.5, 0.3] - [0.2, 1.8] - [2.5, 2.4]]] - - output_index.data = [2, 2, 2] - -参数: - - **input** (Variable) - 输入的LoDTensorArray。支持的数据类型为:float32、float64、int32、int64。 - - **axis** (int,可选) - 指定对输入Tensor进行运算的轴, ``axis`` 的有效范围是[-R, R),R是输入 ``input`` 中Tensor的Rank,``axis`` 为负时与 ``axis`` +R 等价。默认值为1。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **use_stack** (bool,可选) – 指明使用stack或concat进行运算,若为stack模式,要求LoDTensorArray中的所有Tensor具有相同的形状。默认值为False。 - -返回:Variable的二元组, 包含了两个Tensor。第一个Tensor表示对数组内的元素进行stack或concat的输出结果,数据类型与数组中的Tensor相同;第二个Tensor包含了数组中各Tensor在 `axis` 维度的大小,数据类型为int32。 - -返回类型: tuple - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x0 = fluid.layers.assign(np.random.rand(2, 2).astype("float32")) - x1 = fluid.layers.assign(np.random.rand(2, 2).astype("float32")) - i = fluid.layers.fill_constant(shape=[1], dtype="int64", value=0) - array = fluid.layers.create_array(dtype='float32') - fluid.layers.array_write(x0, i, array) - fluid.layers.array_write(x1, i + 1, array) - output, output_index = fluid.layers.tensor_array_to_tensor(input=array) diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/zeros_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/zeros_cn.rst deleted file mode 100644 index cf3b97866f44d2e3b8684d1058d25592928617b5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/zeros_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_tensor_zeros: - -zeros -------------------------------- - -.. py:function:: paddle.zeros(shape, dtype=None, name=None) - - - -该OP创建形状为 ``shape`` 、数据类型为 ``dtype`` 且值全为0的Tensor。 - -参数: - - **shape** (tuple|list|Tensor) - 输出Tensor的形状, ``shape`` 的数据类型为int32或者int64。 - - **dtype** (np.dtype|core.VarDesc.VarType|str) - 输出Tensor的数据类型,数据类型必须为bool、float16、float32、float64、int32或int64。 - -返回:值全为0的Tensor,数据类型和 ``dtype`` 定义的类型一致。 - -抛出异常: - - ``TypeError`` - 当 ``dtype`` 不是bool、 float16、float32、float64、int32、int64和None时。 - - ``TypeError`` - 当 ``shape`` 不是tuple、list、或者Tensor时, 当 ``shape`` 为Tensor,其数据类型不是int32或者int64时。 - -**代码示例**: - -.. code-block:: python - - import paddle - paddle.enable_imperative() # Now we are in imperative mode - data = paddle.zeros(shape=[3, 2], dtype='float32') - # [[0. 0.] - # [0. 0.] - # [0. 0.]] - - data = paddle.zeros(shape=[2, 2]) - # [[0. 0.] - # [0. 0.]] - - # shape is a Tensor - shape = paddle.fill_constant(shape=[2], dtype='int32', value=2) - data3 = paddle.ones(shape=shape, dtype='int32') - # [[0 0] - # [0 0]] - diff --git a/doc/paddle/api/paddle/fluid/layers/tensor/zeros_like_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor/zeros_like_cn.rst deleted file mode 100644 index 7cdacfeb44ff8553cc98230f10e309340dab5cd7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor/zeros_like_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_tensor_zeros_like: - -zeros_like -------------------------------- - -.. py:function:: paddle.zeros_like(x, dtype=None, name=None) - -:alias_main: paddle.zeros_like -:alias: paddle.tensor.zeros_like, paddle.tensor.creation.zeros_like -:update_api: paddle.fluid.layers.zeros_like - -该OP返回一个和 ``x`` 具有相同的形状的全零Tensor,数据类型为 ``dtype`` 或者和 ``x`` 相同。 - -参数 -:::::::::: - - **x** (Tensor) – 输入的多维Tensor,数据类型可以是bool,float16, float32,float64,int32,int64。输出Tensor的形状和 ``x`` 相同。如果 ``dtype`` 为None,则输出Tensor的数据类型与 ``x`` 相同。 - - **dtype** (str|np.dtype|core.VarDesc.VarType, 可选) - 输出Tensor的数据类型,支持bool,float16, float32,float64,int32,int64。当该参数值为None时, 输出Tensor的数据类型与 ``x`` 相同。默认值为None. - - **name** (str, 可选) - 输出的名字。一般无需设置,默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回 -:::::::::: - Tensor:和 ``x`` 具有相同的形状全零Tensor,数据类型为 ``dtype`` 或者和 ``x`` 相同。 - -抛出异常 -:::::::::: - - ``TypeError`` - 如果 ``dtype`` 不是bool、float16、float32、float64、int32、int64。 - -代码示例 -:::::::::: - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - - x = paddle.imperative.to_variable(np.array([1,2,3], dtype='float32')) - out1 = paddle.zeros_like(x) # [0., 0., 0.] - out2 = paddle.zeros_like(x, dtype='int32') # [0, 0, 0] diff --git a/doc/paddle/api/paddle/fluid/layers/tensor_array_to_tensor_cn.rst b/doc/paddle/api/paddle/fluid/layers/tensor_array_to_tensor_cn.rst deleted file mode 100644 index 777b9a572d2177368b3d2b0f9b091ac426a4d9b6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/tensor_array_to_tensor_cn.rst +++ /dev/null @@ -1,83 +0,0 @@ -.. _cn_api_fluid_layers_tensor_array_to_tensor: - -tensor_array_to_tensor -------------------------------- - -.. py:function:: paddle.fluid.layers.tensor_array_to_tensor(input, axis=1, name=None, use_stack=False) - - - - -该OP将 ``input`` 这个LoDTensorArray中的所有Tensor沿 ``axis`` 指定的轴进行拼接(concat)或堆叠(stack)。 - -示例: - -:: - - - 案例 1: - - 给定: - - input.data = {[[0.6, 0.1, 0.3], - [0.5, 0.3, 0.2]], - [[1.3], - [1.8]], - [[2.3, 2.1], - [2.5, 2.4]]} - - axis = 1, use_stack = False - - 结果: - - output.data = [[0.6, 0.1, 0.3, 1.3, 2.3, 2.1], - [0.5, 0.3, 0.2, 1.8, 2.5, 2.4]] - - output_index.data = [3, 1, 2] - - - 案例 2: - - 给定: - - input.data = {[[0.6, 0.1], - [0.5, 0.3]], - [[0.3, 1.3], - [0.2, 1.8]], - [[2.3, 2.1], - [2.5, 2.4]]} - - axis = 1, use_stack = False - - 结果: - - output.data = [[[0.6, 0.1] - [0.3, 1.3] - [2.3, 2.1], - [[0.5, 0.3] - [0.2, 1.8] - [2.5, 2.4]]] - - output_index.data = [2, 2, 2] - -参数: - - **input** (Variable) - 输入的LoDTensorArray。支持的数据类型为:float32、float64、int32、int64。 - - **axis** (int,可选) - 指定对输入Tensor进行运算的轴, ``axis`` 的有效范围是[-R, R),R是输入 ``input`` 中Tensor的Rank,``axis`` 为负时与 ``axis`` +R 等价。默认值为1。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **use_stack** (bool,可选) – 指明使用stack或concat进行运算,若为stack模式,要求LoDTensorArray中的所有Tensor具有相同的形状。默认值为False。 - -返回:Variable的二元组, 包含了两个Tensor。第一个Tensor表示对数组内的元素进行stack或concat的输出结果,数据类型与数组中的Tensor相同;第二个Tensor包含了数组中各Tensor在 `axis` 维度的大小,数据类型为int32。 - -返回类型: tuple - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x0 = fluid.layers.assign(np.random.rand(2, 2).astype("float32")) - x1 = fluid.layers.assign(np.random.rand(2, 2).astype("float32")) - i = fluid.layers.fill_constant(shape=[1], dtype="int64", value=0) - array = fluid.layers.create_array(dtype='float32') - fluid.layers.array_write(x0, i, array) - fluid.layers.array_write(x1, i + 1, array) - output, output_index = fluid.layers.tensor_array_to_tensor(input=array) diff --git a/doc/paddle/api/paddle/fluid/layers/unbind_cn.rst b/doc/paddle/api/paddle/fluid/layers/unbind_cn.rst deleted file mode 100644 index 1ed191175d7e85592225ffc3c19c8faeda8c83d2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/unbind_cn.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _cn_api_paddle_tensor_unbind -unbind -------------------------------- - -.. py:function:: paddle.tensor.unbind(input, axis=0) - -:alias_main: paddle.unbind -:alias: paddle.unbind,paddle.tensor.unbind,paddle.tensor.manipulation.unbind - - - -该OP将输入Tensor按照指定的维度分割成多个子Tensor。 - -**参数**: - - **input** (Variable) - 输入变量,数据类型为float32,float64,int32,int64的多维Tensor。 - - **axis** (int32|int64,可选) - 数据类型为int32或int64,表示需要分割的维度。如果axis < 0,则划分的维度为rank(input) + axis。默认值为0。 - -**返回**:分割后的Tensor列表。 - -**返回类型**:列表(Variable),数据类型为int32,int64,float32,float64。 - -**代码示例**: - -.. code-block:: python - - import paddle - # input is a variable which shape is [3, 4, 5] - input = paddle.fluid.data( - name="input", shape=[3, 4, 5], dtype="float32") - [x0, x1, x2] = paddle.tensor.unbind(input, axis=0) - # x0.shape [4, 5] - # x1.shape [4, 5] - # x2.shape [4, 5] - [x0, x1, x2, x3] = paddle.tensor.unbind(input, axis=1) - # x0.shape [3, 5] - # x1.shape [3, 5] - # x2.shape [3, 5] - # x3.shape [3, 5] diff --git a/doc/paddle/api/paddle/fluid/layers/uniform_random_cn.rst b/doc/paddle/api/paddle/fluid/layers/uniform_random_cn.rst deleted file mode 100644 index 14e921926463fb4f02aa1b1bf133e2bc2f8c9bd7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/uniform_random_cn.rst +++ /dev/null @@ -1,75 +0,0 @@ -.. _cn_api_fluid_layers_uniform_random: - -uniform_random -------------------------------- - -.. py:function:: paddle.fluid.layers.uniform_random(shape, dtype='float32', min=-1.0, max=1.0, seed=0, name=None) - - - - -该OP返回数值服从范围[``min``, ``max``)内均匀分布的随机Tensor,形状为 ``shape``,数据类型为 ``dtype``。 - -:: - - 示例1: - 给定: - shape=[1,2] - 则输出为: - result=[[0.8505902, 0.8397286]] - -参数: - - **shape** (list|tuple|Tensor) - 生成的随机Tensor的形状。如果 ``shape`` 是list、tuple,则其中的元素可以是int,或者是形状为[1]且数据类型为int32、int64的Tensor。如果 ``shape`` 是Tensor,则是数据类型为int32、int64的1-D Tensor。 - - **dtype** (str|np.dtype|core.VarDesc.VarType, 可选) - 输出Tensor的数据类型,支持float32、float64。默认值为float32。 - - **min** (float|int,可选) - 要生成的随机值范围的下限,min包含在范围中。支持的数据类型:float、int。默认值为-1.0。 - - **max** (float|int,可选) - 要生成的随机值范围的上限,max不包含在范围中。支持的数据类型:float、int。默认值为1.0。 - - **seed** (int,可选) - 随机种子,用于生成样本。0表示使用系统生成的种子。注意如果种子不为0,该操作符每次都生成同样的随机数。支持的数据类型:int。默认为 0。 - - **name** (str, 可选) - 输出的名字。一般无需设置,默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: - Tensor:数值服从范围[``min``, ``max``)内均匀分布的随机Tensor,形状为 ``shape``,数据类型为 ``dtype``。 - -抛出异常: - - ``TypeError`` - 如果 ``shape`` 的类型不是list、tuple、Tensor。 - - ``TypeError`` - 如果 ``dtype`` 不是float32、float64。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - startup_program = fluid.Program() - train_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - # example 1: - # attr shape is a list which doesn't contain Tensor. - result_1 = fluid.layers.uniform_random(shape=[3, 4]) - - # example 2: - # attr shape is a list which contains Tensor. - dim_1 = fluid.layers.fill_constant([1],"int64",3) - dim_2 = fluid.layers.fill_constant([1],"int32",5) - result_2 = fluid.layers.uniform_random(shape=[dim_1, dim_2]) - - # example 3: - # attr shape is a Tensor, the data type must be int32 or int64 - var_shape = fluid.data(name='var_shape', shape=[2], dtype="int64") - result_3 = fluid.layers.uniform_random(var_shape) - var_shape_int32 = fluid.data(name='var_shape_int32', shape=[2], dtype="int32") - result_4 = fluid.layers.uniform_random(var_shape_int32) - shape_1 = np.array([3,4]).astype("int64") - shape_2 = np.array([3,4]).astype("int32") - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(startup_program) - outs = exe.run(train_program, feed = {'var_shape':shape_1, 'var_shape_int32':shape_2}, - fetch_list=[result_1, result_2, result_3, result_4]) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/layers/unsqueeze_cn.rst b/doc/paddle/api/paddle/fluid/layers/unsqueeze_cn.rst deleted file mode 100644 index 3290bebea17c0e989232238b6f5c6c79639467fd..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/unsqueeze_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_unsqueeze: - -unsqueeze -------------------------------- - -.. py:function:: paddle.fluid.layers.unsqueeze(input, axes, name=None) - - - - -该OP向输入(input)的shape中一个或多个位置(axes)插入维度。 - -- 示例: - -.. code-block:: python - - 输入: - X.shape = [2, 3] - X.data = [[1, 2, 3], - [4,5,6]] - axes = [0, 2] - 输出(在X的第0维和第2维插入新维度): - Out.shape = [1, 2, 1, 3] - Out.data = [[[[1, 2, 3]], - [[4, 5, 6]]]] - -参数: - - **input** (Variable)- 多维 ``Tensor``,数据类型为 ``float32``, ``float64``, ``int8``, ``int32``,或 ``int64``。 - - **axes** (int|list|tuple|Variable) - 表示要插入维度的位置。数据类型是 ``int32`` 。如果 ``axes`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 。如果 ``axes`` 的类型是 ``Variable``,则是1-D ``Tensor``。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:扩展维度后的多维Tensor - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[5, 10]) - y = fluid.layers.unsqueeze(input=x, axes=[1]) - # y.shape is [5, 1, 10] diff --git a/doc/paddle/api/paddle/fluid/layers/where_cn.rst b/doc/paddle/api/paddle/fluid/layers/where_cn.rst deleted file mode 100644 index bcfabfab33a23f1e56e23bc922c59b965564155e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/where_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_tensor_where: - -where -------------------------------- - -.. py:function:: paddle.where(condition, x, y, name=None) - -:alias_main: paddle.where -:alias: paddle.where,paddle.tensor.where,paddle.tensor.search.where -:update_api: paddle.fluid.layers.cond - - - -该OP返回一个根据输入 ``condition``, 选择 ``x`` 或 ``y`` 的元素组成的多维 ``Tensor`` : - -.. math:: - Out_i = - \left\{ - \begin{aligned} - &X_i, & & if \ cond_i \ is \ True \\ - &Y_i, & & if \ cond_i \ is \ False \\ - \end{aligned} - \right. - -参数: - - **condition** (Variable)- 选择 ``x`` 或 ``y`` 元素的条件 。 - - **x** (Variable)- 多维 ``Tensor`` ,数据类型为 ``float32`` 或 ``float64`` 或 ``int32`` 或 ``int64`` 。 - - **y** (Variable)- 多维 ``Tensor`` ,数据类型为 ``float32`` 或 ``float64`` 或 ``int32`` 或 ``int64`` 。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:数据类型与 ``x`` 相同的 ``Tensor`` 。 - -返回类型:Variable。 - - -**代码示例:** - -.. code-block:: python - - import paddle - import numpy as np - import paddle.fluid as fluid - - x_i = np.array([0.9383, 0.1983, 3.2, 1.2]).astype("float32") - y_i = np.array([1.0, 1.0, 1.0, 1.0]).astype("float32") - - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(x_i) - y = fluid.dygraph.to_variable(y_i) - out = paddle.where(x>1, x, y) - - print(out.numpy()) - #out: [1.0, 1.0, 3.2, 1.2] diff --git a/doc/paddle/api/paddle/fluid/layers/zeros_cn.rst b/doc/paddle/api/paddle/fluid/layers/zeros_cn.rst deleted file mode 100644 index cf3b97866f44d2e3b8684d1058d25592928617b5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/zeros_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_tensor_zeros: - -zeros -------------------------------- - -.. py:function:: paddle.zeros(shape, dtype=None, name=None) - - - -该OP创建形状为 ``shape`` 、数据类型为 ``dtype`` 且值全为0的Tensor。 - -参数: - - **shape** (tuple|list|Tensor) - 输出Tensor的形状, ``shape`` 的数据类型为int32或者int64。 - - **dtype** (np.dtype|core.VarDesc.VarType|str) - 输出Tensor的数据类型,数据类型必须为bool、float16、float32、float64、int32或int64。 - -返回:值全为0的Tensor,数据类型和 ``dtype`` 定义的类型一致。 - -抛出异常: - - ``TypeError`` - 当 ``dtype`` 不是bool、 float16、float32、float64、int32、int64和None时。 - - ``TypeError`` - 当 ``shape`` 不是tuple、list、或者Tensor时, 当 ``shape`` 为Tensor,其数据类型不是int32或者int64时。 - -**代码示例**: - -.. code-block:: python - - import paddle - paddle.enable_imperative() # Now we are in imperative mode - data = paddle.zeros(shape=[3, 2], dtype='float32') - # [[0. 0.] - # [0. 0.] - # [0. 0.]] - - data = paddle.zeros(shape=[2, 2]) - # [[0. 0.] - # [0. 0.]] - - # shape is a Tensor - shape = paddle.fill_constant(shape=[2], dtype='int32', value=2) - data3 = paddle.ones(shape=shape, dtype='int32') - # [[0 0] - # [0 0]] - diff --git a/doc/paddle/api/paddle/fluid/layers/zeros_like_cn.rst b/doc/paddle/api/paddle/fluid/layers/zeros_like_cn.rst deleted file mode 100644 index 7cdacfeb44ff8553cc98230f10e309340dab5cd7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers/zeros_like_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_tensor_zeros_like: - -zeros_like -------------------------------- - -.. py:function:: paddle.zeros_like(x, dtype=None, name=None) - -:alias_main: paddle.zeros_like -:alias: paddle.tensor.zeros_like, paddle.tensor.creation.zeros_like -:update_api: paddle.fluid.layers.zeros_like - -该OP返回一个和 ``x`` 具有相同的形状的全零Tensor,数据类型为 ``dtype`` 或者和 ``x`` 相同。 - -参数 -:::::::::: - - **x** (Tensor) – 输入的多维Tensor,数据类型可以是bool,float16, float32,float64,int32,int64。输出Tensor的形状和 ``x`` 相同。如果 ``dtype`` 为None,则输出Tensor的数据类型与 ``x`` 相同。 - - **dtype** (str|np.dtype|core.VarDesc.VarType, 可选) - 输出Tensor的数据类型,支持bool,float16, float32,float64,int32,int64。当该参数值为None时, 输出Tensor的数据类型与 ``x`` 相同。默认值为None. - - **name** (str, 可选) - 输出的名字。一般无需设置,默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回 -:::::::::: - Tensor:和 ``x`` 具有相同的形状全零Tensor,数据类型为 ``dtype`` 或者和 ``x`` 相同。 - -抛出异常 -:::::::::: - - ``TypeError`` - 如果 ``dtype`` 不是bool、float16、float32、float64、int32、int64。 - -代码示例 -:::::::::: - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - - x = paddle.imperative.to_variable(np.array([1,2,3], dtype='float32')) - out1 = paddle.zeros_like(x) # [0., 0., 0.] - out2 = paddle.zeros_like(x, dtype='int32') # [0, 0, 0] diff --git a/doc/paddle/api/paddle/fluid/layers_cn.rst b/doc/paddle/api/paddle/fluid/layers_cn.rst deleted file mode 100644 index 513c6212058877c8f80afe079df9dae03d8199e4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/layers_cn.rst +++ /dev/null @@ -1,325 +0,0 @@ -.. _cn_api_fluid_layers: - -======================= -fluid.layers -======================= - - - - -.. toctree:: - :maxdepth: 1 - - layers_cn/abs_cn.rst - layers_cn/accuracy_cn.rst - layers_cn/acos_cn.rst - layers_cn/adaptive_pool2d_cn.rst - layers_cn/adaptive_pool3d_cn.rst - layers_cn/add_position_encoding_cn.rst - layers_cn/affine_channel_cn.rst - layers_cn/affine_grid_cn.rst - layers_cn/anchor_generator_cn.rst - layers_cn/argmax_cn.rst - layers_cn/argmin_cn.rst - layers_cn/argsort_cn.rst - layers_cn/array_length_cn.rst - layers_cn/array_read_cn.rst - layers_cn/array_write_cn.rst - layers_cn/asin_cn.rst - layers_cn/assign_cn.rst - layers_cn/atan_cn.rst - layers_cn/auc_cn.rst - layers_cn/autoincreased_step_counter_cn.rst - layers_cn/batch_norm_cn.rst - layers_cn/beam_search_cn.rst - layers_cn/beam_search_decode_cn.rst - layers_cn/bilinear_tensor_product_cn.rst - layers_cn/bipartite_match_cn.rst - layers_cn/box_clip_cn.rst - layers_cn/box_coder_cn.rst - layers_cn/box_decoder_and_assign_cn.rst - layers_cn/bpr_loss_cn.rst - layers_cn/brelu_cn.rst - layers_cn/BeamSearchDecoder_cn.rst - layers_cn/case_cn.rst - layers_cn/cast_cn.rst - layers_cn/Categorical_cn.rst - layers_cn/ceil_cn.rst - layers_cn/center_loss_cn.rst - layers_cn/chunk_eval_cn.rst - layers_cn/clip_by_norm_cn.rst - layers_cn/clip_cn.rst - layers_cn/collect_fpn_proposals_cn.rst - layers_cn/concat_cn.rst - layers_cn/cond_cn.rst - layers_cn/continuous_value_model_cn.rst - layers_cn/conv2d_cn.rst - layers_cn/conv2d_transpose_cn.rst - layers_cn/conv3d_cn.rst - layers_cn/conv3d_transpose_cn.rst - layers_cn/cos_cn.rst - layers_cn/cos_sim_cn.rst - layers_cn/cosine_decay_cn.rst - layers_cn/create_array_cn.rst - layers_cn/create_global_var_cn.rst - layers_cn/create_parameter_cn.rst - layers_cn/create_py_reader_by_data_cn.rst - layers_cn/create_tensor_cn.rst - layers_cn/crf_decoding_cn.rst - layers_cn/crop_cn.rst - layers_cn/crop_tensor_cn.rst - layers_cn/cross_entropy_cn.rst - layers_cn/ctc_greedy_decoder_cn.rst - layers_cn/cumsum_cn.rst - layers_cn/data_cn.rst - layers_cn/data_norm_cn.rst - layers_cn/deformable_conv_cn.rst - layers_cn/deformable_roi_pooling_cn.rst - layers_cn/density_prior_box_cn.rst - layers_cn/detection_output_cn.rst - layers_cn/diag_cn.rst - layers_cn/dice_loss_cn.rst - layers_cn/distribute_fpn_proposals_cn.rst - layers_cn/double_buffer_cn.rst - layers_cn/dropout_cn.rst - layers_cn/dynamic_gru_cn.rst - layers_cn/dynamic_lstm_cn.rst - layers_cn/dynamic_lstmp_cn.rst - layers_cn/dynamic_decode_cn.rst - layers_cn/Decoder_cn.rst - layers_cn/DynamicRNN_cn.rst - layers_cn/edit_distance_cn.rst - layers_cn/elementwise_add_cn.rst - layers_cn/elementwise_div_cn.rst - layers_cn/elementwise_floordiv_cn.rst - layers_cn/elementwise_max_cn.rst - layers_cn/elementwise_min_cn.rst - layers_cn/elementwise_mod_cn.rst - layers_cn/elementwise_mul_cn.rst - layers_cn/elementwise_pow_cn.rst - layers_cn/elementwise_sub_cn.rst - layers_cn/elu_cn.rst - layers_cn/embedding_cn.rst - layers_cn/equal_cn.rst - layers_cn/erf_cn.rst - layers_cn/exp_cn.rst - layers_cn/expand_cn.rst - layers_cn/expand_as_cn.rst - layers_cn/exponential_decay_cn.rst - layers_cn/eye_cn.rst - layers_cn/fc_cn.rst - layers_cn/fill_constant_cn.rst - layers_cn/filter_by_instag_cn.rst - layers_cn/flatten_cn.rst - layers_cn/floor_cn.rst - layers_cn/fsp_matrix_cn.rst - layers_cn/gather_cn.rst - layers_cn/gather_nd_cn.rst - layers_cn/gather_tree_cn.rst - layers_cn/gaussian_random_cn.rst - layers_cn/gelu_cn.rst - layers_cn/generate_mask_labels_cn.rst - layers_cn/generate_proposal_labels_cn.rst - layers_cn/generate_proposals_cn.rst - layers_cn/get_tensor_from_selected_rows_cn.rst - layers_cn/greater_equal_cn.rst - layers_cn/greater_than_cn.rst - layers_cn/grid_sampler_cn.rst - layers_cn/group_norm_cn.rst - layers_cn/gru_unit_cn.rst - layers_cn/GRUCell_cn.rst - layers_cn/hard_shrink_cn.rst - layers_cn/hard_sigmoid_cn.rst - layers_cn/hard_swish_cn.rst - layers_cn/has_inf_cn.rst - layers_cn/has_nan_cn.rst - layers_cn/hash_cn.rst - layers_cn/hsigmoid_cn.rst - layers_cn/huber_loss_cn.rst - layers_cn/IfElse_cn.rst - layers_cn/im2sequence_cn.rst - layers_cn/image_resize_cn.rst - layers_cn/image_resize_short_cn.rst - layers_cn/increment_cn.rst - layers_cn/inverse_time_decay_cn.rst - layers_cn/instance_norm_cn.rst - layers_cn/iou_similarity_cn.rst - layers_cn/is_empty_cn.rst - layers_cn/isfinite_cn.rst - layers_cn/kldiv_loss_cn.rst - layers_cn/l2_normalize_cn.rst - layers_cn/label_smooth_cn.rst - layers_cn/layer_norm_cn.rst - layers_cn/leaky_relu_cn.rst - layers_cn/less_equal_cn.rst - layers_cn/less_than_cn.rst - layers_cn/linear_chain_crf_cn.rst - layers_cn/linear_lr_warmup_cn.rst - layers_cn/linspace_cn.rst - layers_cn/load_cn.rst - layers_cn/lod_append_cn.rst - layers_cn/lod_reset_cn.rst - layers_cn/log_cn.rst - layers_cn/log_loss_cn.rst - layers_cn/logical_and_cn.rst - layers_cn/logical_not_cn.rst - layers_cn/logical_or_cn.rst - layers_cn/logical_xor_cn.rst - layers_cn/logsigmoid_cn.rst - layers_cn/lrn_cn.rst - layers_cn/lstm_cn.rst - layers_cn/lstm_unit_cn.rst - layers_cn/LSTMCell_cn.rst - layers_cn/margin_rank_loss_cn.rst - layers_cn/masked_select_cn.rst - layers_cn/matmul_cn.rst - layers_cn/maxout_cn.rst - layers_cn/mean_cn.rst - layers_cn/mean_iou_cn.rst - layers_cn/merge_selected_rows_cn.rst - layers_cn/mse_loss_cn.rst - layers_cn/mul_cn.rst - layers_cn/multi_box_head_cn.rst - layers_cn/multiclass_nms_cn.rst - layers_cn/multiplex_cn.rst - layers_cn/MultivariateNormalDiag_cn.rst - layers_cn/natural_exp_decay_cn.rst - layers_cn/nce_cn.rst - layers_cn/noam_decay_cn.rst - layers_cn/Normal_cn.rst - layers_cn/not_equal_cn.rst - layers_cn/npair_loss_cn.rst - layers_cn/one_hot_cn.rst - layers_cn/ones_cn.rst - layers_cn/ones_like_cn.rst - layers_cn/pad_cn.rst - layers_cn/pad_constant_like_cn.rst - layers_cn/pad2d_cn.rst - layers_cn/piecewise_decay_cn.rst - layers_cn/pixel_shuffle_cn.rst - layers_cn/polygon_box_transform_cn.rst - layers_cn/polynomial_decay_cn.rst - layers_cn/pool2d_cn.rst - layers_cn/pool3d_cn.rst - layers_cn/pow_cn.rst - layers_cn/prelu_cn.rst - layers_cn/Print_cn.rst - layers_cn/prior_box_cn.rst - layers_cn/prroi_pool_cn.rst - layers_cn/psroi_pool_cn.rst - layers_cn/py_func_cn.rst - layers_cn/py_reader_cn.rst - layers_cn/random_crop_cn.rst - layers_cn/range_cn.rst - layers_cn/rank_cn.rst - layers_cn/rank_loss_cn.rst - layers_cn/read_file_cn.rst - layers_cn/reciprocal_cn.rst - layers_cn/reduce_all_cn.rst - layers_cn/reduce_any_cn.rst - layers_cn/reduce_max_cn.rst - layers_cn/reduce_mean_cn.rst - layers_cn/reduce_min_cn.rst - layers_cn/reduce_prod_cn.rst - layers_cn/reduce_sum_cn.rst - layers_cn/relu_cn.rst - layers_cn/relu6_cn.rst - layers_cn/reorder_lod_tensor_by_rank_cn.rst - layers_cn/reshape_cn.rst - layers_cn/resize_bilinear_cn.rst - layers_cn/resize_nearest_cn.rst - layers_cn/resize_trilinear_cn.rst - layers_cn/retinanet_detection_output_cn.rst - layers_cn/retinanet_target_assign_cn.rst - layers_cn/reverse_cn.rst - layers_cn/rnn_cn.rst - layers_cn/roi_align_cn.rst - layers_cn/roi_perspective_transform_cn.rst - layers_cn/roi_pool_cn.rst - layers_cn/round_cn.rst - layers_cn/row_conv_cn.rst - layers_cn/rpn_target_assign_cn.rst - layers_cn/rsqrt_cn.rst - layers_cn/RNNCell_cn.rst - layers_cn/sampled_softmax_with_cross_entropy_cn.rst - layers_cn/sampling_id_cn.rst - layers_cn/scale_cn.rst - layers_cn/scatter_cn.rst - layers_cn/scatter_nd_add_cn.rst - layers_cn/scatter_nd_cn.rst - layers_cn/selu_cn.rst - layers_cn/sequence_concat_cn.rst - layers_cn/sequence_conv_cn.rst - layers_cn/sequence_enumerate_cn.rst - layers_cn/sequence_expand_as_cn.rst - layers_cn/sequence_expand_cn.rst - layers_cn/sequence_first_step_cn.rst - layers_cn/sequence_last_step_cn.rst - layers_cn/sequence_mask_cn.rst - layers_cn/sequence_pad_cn.rst - layers_cn/sequence_pool_cn.rst - layers_cn/sequence_reshape_cn.rst - layers_cn/sequence_reverse_cn.rst - layers_cn/sequence_scatter_cn.rst - layers_cn/sequence_slice_cn.rst - layers_cn/sequence_softmax_cn.rst - layers_cn/sequence_unpad_cn.rst - layers_cn/shape_cn.rst - layers_cn/shard_index_cn.rst - layers_cn/shuffle_channel_cn.rst - layers_cn/shuffle_cn.rst - layers_cn/sigmoid_cn.rst - layers_cn/sigmoid_cross_entropy_with_logits_cn.rst - layers_cn/sigmoid_focal_loss_cn.rst - layers_cn/sign_cn.rst - layers_cn/similarity_focus_cn.rst - layers_cn/sin_cn.rst - layers_cn/slice_cn.rst - layers_cn/smooth_l1_cn.rst - layers_cn/soft_relu_cn.rst - layers_cn/softmax_cn.rst - layers_cn/softmax_with_cross_entropy_cn.rst - layers_cn/softplus_cn.rst - layers_cn/softshrink_cn.rst - layers_cn/softsign_cn.rst - layers_cn/space_to_depth_cn.rst - layers_cn/spectral_norm_cn.rst - layers_cn/split_cn.rst - layers_cn/sqrt_cn.rst - layers_cn/square_cn.rst - layers_cn/square_error_cost_cn.rst - layers_cn/squeeze_cn.rst - layers_cn/ssd_loss_cn.rst - layers_cn/stack_cn.rst - layers_cn/stanh_cn.rst - layers_cn/StaticRNN_cn.rst - layers_cn/strided_slice_cn.rst - layers_cn/sum_cn.rst - layers_cn/sums_cn.rst - layers_cn/swish_cn.rst - layers_cn/Switch_cn.rst - layers_cn/switch_case_cn.rst - layers_cn/tanh_cn.rst - layers_cn/tanh_shrink_cn.rst - layers_cn/target_assign_cn.rst - layers_cn/teacher_student_sigmoid_loss_cn.rst - layers_cn/temporal_shift_cn.rst - layers_cn/tensor_array_to_tensor_cn.rst - layers_cn/thresholded_relu_cn.rst - layers_cn/topk_cn.rst - layers_cn/transpose_cn.rst - layers_cn/unfold_cn.rst - layers_cn/Uniform_cn.rst - layers_cn/uniform_random_cn.rst - layers_cn/unique_cn.rst - layers_cn/unique_with_counts_cn.rst - layers_cn/unsqueeze_cn.rst - layers_cn/unstack_cn.rst - layers_cn/warpctc_cn.rst - layers_cn/where_cn.rst - layers_cn/While_cn.rst - layers_cn/while_loop_cn.rst - layers_cn/yolo_box_cn.rst - layers_cn/yolov3_loss_cn.rst - layers_cn/zeros_cn.rst - layers_cn/zeros_like_cn.rst diff --git a/doc/paddle/api/paddle/fluid/load_cn.rst b/doc/paddle/api/paddle/fluid/load_cn.rst deleted file mode 100644 index f001976971c5e84eb93c62fa5a5d77c8f2a9a335..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/load_cn.rst +++ /dev/null @@ -1,168 +0,0 @@ -.. _cn_api_fluid_dygraph_jit_load: - -load ------------------ - -.. py:function:: paddle.fluid.dygraph.jit.load(model_path, configs=None) - -:api_attr: 命令式编程模式(动态图) - -将接口 :ref:`cn_api_fluid_dygraph_jit_save` 或者 :ref:`cn_api_fluid_io_save_inference_model` 存储的模型载入为 :ref:`cn_api_fluid_dygraph_TranslatedLayer` ,用于预测推理或者fine-tune训练。 - -.. note:: - 由于一些历史原因,如果载入的模型是通过 :ref:`cn_api_fluid_io_save_inference_model` 存储的, - 在使用它进行fine-tune训练时会存在一些局限: - 1. 命令式编程模式不支持 ``LoDTensor`` ,所有原先输入变量或者参数依赖于LoD信息的模型暂时无法使用; - 2. 所有存储模型的feed变量都需要被传入 ``Translatedlayer`` 的forward方法; - 3. 原模型变量的 ``stop_gradient`` 信息已丢失且无法准确恢复; - 4. 原模型参数的 ``trainable`` 信息已丢失且无法准确恢复。 - -参数: - - **model_path** (str) - 存储模型的目录。 - - **configs** (SaveLoadConfig, 可选) - 用于指定额外配置选项的 :ref:`cn_api_fluid_dygraph_jit_SaveLoadConfig` 对象。默认为 ``None``。 - -返回:TranslatedLayer - 一个能够执行存储模型的 ``Layer`` 对象。 - -**示例代码** - -1. 载入由接口 :ref:`cn_api_fluid_dygraph_jit_save` 存储的模型进行预测推理及fine-tune训练。 - - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - class LinearNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(LinearNet, self).__init__() - self._linear = Linear(in_size, out_size) - @declarative - def forward(self, x): - return self._linear(x) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 1. 训练存储模型. - # 创建网络 - net = LinearNet(784, 1) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # 训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - net.clear_gradients() - model_path = "linear.example.model" - fluid.dygraph.jit.save( - layer=net, - model_path=model_path, - input_spec=[img]) - # 2. 载入模型 & 预测 - # 载入模型 - infer_net = fluid.dygraph.jit.load(model_path) - # 预测 - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = infer_net(x) - # 3. 载入模型 & fine-tune训练 - # 载入模型 - train_net = fluid.dygraph.jit.load(model_path) - train_net.train() - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=train_net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # fine-tune训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = train_net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - train_net.clear_gradients() - - -2. 载入由接口 :ref:`cn_api_fluid_io_save_inference_model` 存储的模型进行预测推理及fine-tune训练。 - - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - img = fluid.data(name='img', shape=[None, 784], dtype='float32') - label = fluid.data(name='label', shape=[None, 1], dtype='int64') - pred = fluid.layers.fc(input=img, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=pred, label=label) - avg_loss = fluid.layers.mean(loss) - optimizer = fluid.optimizer.SGD(learning_rate=0.001) - optimizer.minimize(avg_loss) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - loader = fluid.io.DataLoader.from_generator( - feed_list=[img, label], capacity=5, iterable=True) - loader.set_batch_generator(random_batch_reader(), places=place) - # 1. 训练 & 存储预测模型 - for data in loader(): - exe.run( - fluid.default_main_program(), - feed=data, - fetch_list=[avg_loss]) - model_path = "fc.example.model" - fluid.io.save_inference_model( - model_path, ["img"], [pred], exe) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 2. 载入模型 & 预测 - fc = fluid.dygraph.jit.load(model_path) - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = fc(x) - # 3. 载入模型 & fine-tune训练 - fc = fluid.dygraph.jit.load(model_path) - fc.train() - sgd = fluid.optimizer.SGD(learning_rate=0.001, - parameter_list=fc.parameters()) - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator( - random_batch_reader(), places=place) - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = fc(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - sgd.minimize(avg_loss) diff --git a/doc/paddle/api/paddle/fluid/load_op_library_cn.rst b/doc/paddle/api/paddle/fluid/load_op_library_cn.rst deleted file mode 100644 index 944b78dc4e9cc84a2cabc3951d3091969f3dc763..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/load_op_library_cn.rst +++ /dev/null @@ -1,26 +0,0 @@ -.. _cn_api_fluid_load_op_library: - -load_op_library -------------------------------- - -.. py:class:: paddle.fluid.load_op_library - -:api_attr: 声明式编程模式(静态图) - - - -``load_op_library`` 用于自定义C++算子中,用来加载算子动态共享库。加载库后,注册好的算子及其Kernel实现将在PaddlePaddle主进程中可以被调用。 请注意,自定义算子的类型不能与框架中的现有算子类型相同。 - -参数: - - **lib_filename** (str) – 动态共享库的名字。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - #fluid.load_op_library('custom_op.so') - - - - diff --git a/doc/paddle/api/paddle/fluid/lod_tensor/create_lod_tensor_cn.rst b/doc/paddle/api/paddle/fluid/lod_tensor/create_lod_tensor_cn.rst deleted file mode 100644 index 386b0632f1a0256e8cad62c2143a05c7684ded1d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/lod_tensor/create_lod_tensor_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_create_lod_tensor: - - -create_lod_tensor -------------------------------- - -.. py:function:: paddle.fluid.create_lod_tensor(data, recursive_seq_lens, place) - - - - -从一个numpy数组、list或LoDTensor创建一个新的LoDTensor。 - -具体实现方法如下: - -1. 检查基于序列长度的LoD(length-based LoD),即参数中的 :code:`recursive_seq_lens` 是否正确。 - -2. 将 :code:`recursive_seq_lens` 转换为基于偏移量的LoD(offset-based LoD)。 - -3. 根据place参数,把所提供的 :code:`data` (numpy数组、list或LoDTensor)的数据复制到CPU或GPU上。 - -4. 将基于偏移量的LoD设置到输出的LoDTensor中。 - -假设我们想创建一个LoDTensor表示词的序列,其中每个词用一个整数id表示。若待创建的LoDTensor表示2个句子,其中一个句子包含2个单词,另一个句子包含3个单词。 - -那么, :code:`data` 为一个维度为(5, 1)的numpy整数数组; :code:`recursive_seq_lens` 为[[2, 3]],表示每个句子含的单词个数。在该接口内部,基于序列长度的 -:code:`recursive_seq_lens` [[2, 3]]会转换为为基于偏移量的LoD [[0, 2, 5]]。 - -请查阅 :ref:`cn_user_guide_lod_tensor` 了解更多关于LoD的介绍。 - -参数: - - **data** (numpy.ndarray|list|LoDTensor) - 表示LoDTensor数据的numpy数组、list或LoDTensor。 - - **recursive_seq_lens** (list[list[int]]) - 基于序列长度的LoD信息。 - - **place** (CPUPlace|CUDAPlace) - 表示返回的LoDTensor存储在CPU或GPU place中。 - -返回: 包含数据信息和序列长度信息的LoDTensor。 - -返回类型: LoDTensor - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - t = fluid.create_lod_tensor(np.ndarray([5, 30]), [[2, 3]], fluid.CPUPlace()) - - diff --git a/doc/paddle/api/paddle/fluid/lod_tensor/create_random_int_lodtensor_cn.rst b/doc/paddle/api/paddle/fluid/lod_tensor/create_random_int_lodtensor_cn.rst deleted file mode 100644 index afe15fe1d4c92d7422d497cecc29ed10c2f4b14f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/lod_tensor/create_random_int_lodtensor_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_create_random_int_lodtensor: - - -create_random_int_lodtensor -------------------------------- - - -.. py:function:: paddle.fluid.create_random_int_lodtensor(recursive_seq_lens, base_shape, place, low, high) - -:api_attr: 声明式编程模式(静态图) - - - -创建一个包含随机整数的LoDTensor。 - -具体实现方法如下: - -1. 基于序列长度 :code:`recursive_seq_lens` 和 :code:`base_shape` 产生返回值的维度。返回值的第一维等于序列总长度,其余维度为 :code:`base_shape` 。 - -2. 创建一个包含随机整数的numpy数组,并作为 :code:`data` 参数传入 :ref:`cn_api_fluid_create_lod_tensor` 接口中创建LoDTensor返回。 - -假设我们想创建一个LoDTensor表示序列信息,共包含2个序列,维度分别为[2, 30]和[3, 30],那么序列长度 :code:`recursive_seq_lens` 传入[[2, 3]],:code:`base_shape` 传入[30](即除了序列长度以外的维度)。 -最后返回的LoDTensor的维度为[5, 30],其中第一维5为序列总长度,其余维度为 :code:`base_shape` 。 - -参数: - - **recursive_seq_lens** (list[list[int]]) - 基于序列长度的LoD信息。 - - **base_shape** (list[int]) - 除第一维以外输出结果的维度信息。 - - **place** (CPUPlace|CUDAPlace) - 表示返回的LoDTensor存储在CPU或GPU place中。 - - **low** (int) - 随机整数的下限值。 - - **high** (int) - 随机整数的上限值,必须大于或等于low。 - -返回: 包含随机整数数据信息和序列长度信息的LoDTensor,数值范围在[low, high]之间。 - -返回类型: LoDTensor - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - t = fluid.create_random_int_lodtensor(recursive_seq_lens=[[2, 3]],base_shape=[30], place=fluid.CPUPlace(), low=0, high=10) - print(t.shape()) # [5, 30] - diff --git a/doc/paddle/api/paddle/fluid/memory_optimize_cn.rst b/doc/paddle/api/paddle/fluid/memory_optimize_cn.rst deleted file mode 100644 index d9a5a2b023fc6f1d578d254b5057a9c01d6940b9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/memory_optimize_cn.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _cn_api_fluid_transpiler_memory_optimize: - -memory_optimize -------------------------------- - - -.. py:function:: paddle.fluid.transpiler.memory_optimize(input_program, skip_opt_set=None, print_log=False, level=0, skip_grads=True) - -:api_attr: 声明式编程模式(静态图) - - - -**从1.6版本开始此接口不再推荐使用,请不要在新写的代码中使用它,1.6+版本已默认开启更优的存储优化策略** \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/metrics/Accuracy_cn.rst b/doc/paddle/api/paddle/fluid/metrics/Accuracy_cn.rst deleted file mode 100644 index 0cb6ea087033b21afd2cea5838f6d1366868b92f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/metrics/Accuracy_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_metrics_Accuracy: - -Accuracy -------------------------------- -.. py:class:: paddle.fluid.metrics.Accuracy(name=None) - - - - -该接口用来计算多个mini-batch的平均准确率。Accuracy对象有两个状态value和weight。Accuracy的定义参照 https://en.wikipedia.org/wiki/Accuracy_and_precision 。 - -参数: - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:初始化后的 ``Accuracy`` 对象 - -返回类型:Accuracy - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 假设有batch_size = 128 - batch_size=128 - accuracy_manager = fluid.metrics.Accuracy() - # 假设第一个batch的准确率为0.9 - batch1_acc = 0.9 - accuracy_manager.update(value = batch1_acc, weight = batch_size) - print("expect accuracy: %.2f, get accuracy: %.2f" % (batch1_acc, accuracy_manager.eval())) - # 假设第二个batch的准确率为0.8 - batch2_acc = 0.8 - accuracy_manager.update(value = batch2_acc, weight = batch_size) - #batch1和batch2的联合准确率为(batch1_acc * batch_size + batch2_acc * batch_size) / batch_size / 2 - print("expect accuracy: %.2f, get accuracy: %.2f" % ((batch1_acc * batch_size + batch2_acc * batch_size) / batch_size / 2, accuracy_manager.eval())) - #重置accuracy_manager - accuracy_manager.reset() - #假设第三个batch的准确率为0.8 - batch3_acc = 0.8 - accuracy_manager.update(value = batch3_acc, weight = batch_size) - print("expect accuracy: %.2f, get accuracy: %.2f" % (batch3_acc, accuracy_manager.eval())) - -.. py:method:: update(value, weight) - -该函数使用输入的(value, weight)来累计更新Accuracy对象的对应状态,更新方式如下: - - .. math:: - \\ \begin{array}{l}{\text { self. value }+=\text { value } * \text { weight }} \\ {\text { self. weight }+=\text { weight }}\end{array} \\ - -参数: - - **value** (float|numpy.array) – mini-batch的正确率 - - **weight** (int|float) – mini-batch的大小 - -返回:无 - -.. py:method:: eval() - -该函数计算并返回累计的mini-batches的平均准确率。 - -返回:累计的mini-batches的平均准确率 - -返回类型:float或numpy.array - diff --git a/doc/paddle/api/paddle/fluid/metrics/Auc_cn.rst b/doc/paddle/api/paddle/fluid/metrics/Auc_cn.rst deleted file mode 100644 index 8e6b7bfea5ec381b7af051ba39fc080291b4fcba..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/metrics/Auc_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_metrics_Auc: - -Auc -------------------------------- -.. py:class:: paddle.fluid.metrics.Auc(name, curve='ROC', num_thresholds=4095) - - - - -**注意**:目前只用Python实现Auc,可能速度略慢 - -该接口计算Auc,在二分类(binary classification)中广泛使用。相关定义参考 https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve 。 - -该接口创建四个局部变量true_positives, true_negatives, false_positives和false_negatives,用于计算Auc。为了离散化AUC曲线,使用临界值的线性间隔来计算召回率和准确率的值。用false positive的召回值高度计算ROC曲线面积,用recall的准确值高度计算PR曲线面积。 - -参数: - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **curve** (str) - 将要计算的曲线名的详情,曲线包括ROC(默认)或者PR(Precision-Recall-curve)。 - -返回:初始化后的 ``Auc`` 对象 - -返回类型:Auc - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - # 初始化auc度量 - auc_metric = fluid.metrics.Auc("ROC") - - # 假设batch_size为128 - batch_num = 100 - batch_size = 128 - - for batch_id in range(batch_num): - - class0_preds = np.random.random(size = (batch_size, 1)) - class1_preds = 1 - class0_preds - - preds = np.concatenate((class0_preds, class1_preds), axis=1) - - labels = np.random.randint(2, size = (batch_size, 1)) - auc_metric.update(preds = preds, labels = labels) - - # 应为一个接近0.5的值,因为preds是随机指定的 - print("auc for iteration %d is %.2f" % (batch_id, auc_metric.eval())) - -.. py:method:: update(preds, labels) - -用给定的预测值和标签更新Auc曲线。 - -参数: - - **preds** (numpy.array) - 维度为[batch_size, 2],preds[i][j]表示将实例i划分为类别j的概率。 - - **labels** (numpy.array) - 维度为[batch_size, 1],labels[i]为0或1,代表实例i的标签。 - -返回:无 - -.. py:method:: eval() - -该函数计算并返回Auc值。 - -返回:Auc值 - -返回类型:float - diff --git a/doc/paddle/api/paddle/fluid/metrics/ChunkEvaluator_cn.rst b/doc/paddle/api/paddle/fluid/metrics/ChunkEvaluator_cn.rst deleted file mode 100644 index c289db61aed83e2e4a33f8603e70c280a63b2fb2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/metrics/ChunkEvaluator_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_fluid_metrics_ChunkEvaluator: - -ChunkEvaluator -------------------------------- - -.. py:class:: paddle.fluid.metrics.ChunkEvaluator(name=None) - - - -该接口使用mini-batch的chunk_eval累计的counter numbers,来计算准确率、召回率和F1值。ChunkEvaluator有三个状态num_infer_chunks,num_label_chunks和num_correct_chunks,分别对应语块数目、标签中的语块数目、正确识别的语块数目。对于chunking的基础知识,请参考 https://www.aclweb.org/anthology/N01-1025 。ChunkEvalEvaluator计算块检测(chunk detection)的准确率,召回率和F1值,支持IOB, IOE, IOBES和IO标注方案。 - -参数: - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:初始化后的 ``ChunkEvaluator`` 对象 - -返回类型:ChunkEvaluator - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - # 初始化chunck-level的评价管理。 - metric = fluid.metrics.ChunkEvaluator() - - # 假设模型预测10个chuncks,其中8个为正确,且真值有9个chuncks。 - num_infer_chunks = 10 - num_label_chunks = 9 - num_correct_chunks = 8 - - metric.update(num_infer_chunks, num_label_chunks, num_correct_chunks) - numpy_precision, numpy_recall, numpy_f1 = metric.eval() - - print("precision: %.2f, recall: %.2f, f1: %.2f" % (numpy_precision, numpy_recall, numpy_f1)) - - # 下一个batch,完美地预测了3个正确的chuncks。 - num_infer_chunks = 3 - num_label_chunks = 3 - num_correct_chunks = 3 - - metric.update(num_infer_chunks, num_label_chunks, num_correct_chunks) - numpy_precision, numpy_recall, numpy_f1 = metric.eval() - - print("precision: %.2f, recall: %.2f, f1: %.2f" % (numpy_precision, numpy_recall, numpy_f1)) - -.. py:method:: update(num_infer_chunks, num_label_chunks, num_correct_chunks) - -该函数使用输入的(num_infer_chunks, num_label_chunks, num_correct_chunks)来累计更新ChunkEvaluator对象的对应状态,更新方式如下: - - .. math:: - \\ \begin{array}{l}{\text { self. num_infer_chunks }+=\text { num_infer_chunks }} \\ {\text { self. num_Label_chunks }+=\text { num_label_chunks }} \\ {\text { self. num_correct_chunks }+=\text { num_correct_chunks }}\end{array} \\ - -参数: - - **num_infer_chunks** (int|numpy.array) – 给定mini-batch的语块数目。 - - **num_label_chunks** (int|numpy.array) - 给定mini-batch的标签中的语块数目。 - - **num_correct_chunks** (int|numpy.array)— 给定mini-batch的正确识别的语块数目。 - -返回:无 - -.. py:method:: eval() - -该函数计算并返回准确率,召回率和F1值。 - -返回:准确率,召回率和F1值 - -返回类型:float - diff --git a/doc/paddle/api/paddle/fluid/metrics/CompositeMetric_cn.rst b/doc/paddle/api/paddle/fluid/metrics/CompositeMetric_cn.rst deleted file mode 100644 index 2b9382f7870ca4a104a6e63fb0e0ddb5e67b64d0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/metrics/CompositeMetric_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_metrics_CompositeMetric: - -CompositeMetric -------------------------------- - -.. py:class:: paddle.fluid.metrics.CompositeMetric(name=None) - - - - -创建一个可以容纳若干个评价指标(如F1, accuracy, recall等)的容器,评价指标添加完成后,通过调用eval()方法可自动计算该容器内的所有评价指标。 - -**注意,只有输入参数列表完全相同的评价指标才可被加入到同一个CompositeMetric实例内。** - -继承自:MetricBase - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - preds = [[0.1], [0.7], [0.8], [0.9], [0.2], - [0.2], [0.3], [0.5], [0.8], [0.6]] - labels = [[0], [1], [1], [1], [1], - [0], [0], [0], [0], [0]] - preds = np.array(preds) - labels = np.array(labels) - - comp = fluid.metrics.CompositeMetric() - precision = fluid.metrics.Precision() - recall = fluid.metrics.Recall() - comp.add_metric(precision) - comp.add_metric(recall) - - comp.update(preds=preds, labels=labels) - numpy_precision, numpy_recall = comp.eval() - print("expect precision: %.2f, got %.2f" % ( 3. / 5, numpy_precision ) ) - print("expect recall: %.2f, got %.2f" % (3. / 4, numpy_recall ) ) - - -.. py:method:: add_metric(metric) - -向容器内添加一个新的评价指标。注意新添加的评价指标的输入参数列表必须与容器里已有的其他指标保持一致。 - -参数: - - **metric** (MetricBase) – 评价指标对象,一个MetricBase的实例。 - -返回:无 - - -.. py:method:: update(preds, labels) - -更新容器中的每个评价指标。 - -参数: - - **preds** (numpy.array) - 当前mini-batch的预测结果,输入的shape和dtype应与该容器内添加的评价指标的要求保持一致。 - - **labels** (numpy.array) - 当前mini-batch的真实标签,输入的shape和dtype应与该容器内添加的评价指标的要求保持一致 - -返回:无 - -.. py:method:: eval() - -按照添加顺序计算出各个评价指标。 - -参数: 无 - -返回: 列表存储的各个评价指标的计算结果。每个计算结果的数据类型和shape取决于被添加的评价指标的定义 - -返回类型: list - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/metrics/DetectionMAP_cn.rst b/doc/paddle/api/paddle/fluid/metrics/DetectionMAP_cn.rst deleted file mode 100644 index 44d3700e5535c485a78361ba82c97c7c5b81ca87..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/metrics/DetectionMAP_cn.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. _cn_api_fluid_metrics_DetectionMAP: - -DetectionMAP -------------------------------- - -.. py:class:: paddle.fluid.metrics.DetectionMAP(input, gt_label, gt_box, gt_difficult=None, class_num=None, background_label=0, overlap_threshold=0.5, evaluate_difficult=True, ap_version='integral') - - - - -该OP用于计算检测网络的平均精度(mAP)。 mAP是衡量object detectors精度的指标,比如 Faster R-CNN,SSD等。它不同于召回率,它是最大精度的平均值。 - -通常步骤如下: - -1. 根据检测器中的输入和label,计算True Positive(TP)真正例 和 False Positive(FP)假正例 -2. 计算map,支持 ``11 point`` 和 ``integral`` 模式 - -请从以下文章中获取更多信息: - - https://sanchom.wordpress.com/tag/average-precision/ - - https://arxiv.org/abs/1512.0232 - -参数: - - **input** (Variable) – detection的输出结果,一个 shape=[M, 6] 的 LoDtensor。布局为[label, confidence, xmin, ymin, xmax, ymax],label为类别标签,confidence为置信度,xmin,ymin为检测框左上点坐标,xmax,ymax为检测框右下点坐标,数据类型为float32或float64。 - - **gt_label** (Variable) – ground truth label 的索引,它是一个形状为[N, 1]的LoDtensor,数据类型为float32或float64。 - - **gt_box** (Variable) – ground truth bounds box (bbox),是一个具有形状的LoD张量[N, 4]。布局是[xmin, ymin, xmax, ymax],数据类型为float32或float64。 - - **gt_difficult** (Variable|None, 可选) – 指定这个ground truth是否是一个difficult bounding bbox,它可以是一个 shape=[N, 1]的LoDTensor,也可以不被指定。默认设置为None,表示所有的ground truth标签都不是difficult bbox,数据类型为float32或float64。 - - **class_num** (int) – 检测类别的数目。 - - **background_label** (int) – 背景标签的索引,背景标签将被忽略。如果设置为-1,则所有类别将被考虑,默认为0。 - - **overlap_threshold** (float) – 判断真假阳性的阈值,默认为0.5。 - - **evaluate_difficult** (bool) – 是否考虑 difficult ground truth 进行评价,默认为 True。当 gt_difficult 为 None 时,这个参数不起作用。 - - **ap_version** (str) – 平均精度的计算方法,必须是 "integral" 或 "11point"。详情请查看 https://sanchom.wordpress.com/tag/average-precision/。 其中,11point为:11-point 插值平均精度。积分: precision-recall曲线的自然积分。 - -返回:变量(Variable) 计算mAP的结果,其中数据类型为float32或float64。 - -返回类型:变量(Variable) - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - batch_size = -1 # 可以为任意大小 - image_boxs_num = 10 - bounding_bboxes_num = 21 - - pb = fluid.data(name='prior_box', shape=[image_boxs_num, 4], - dtype='float32') - - pbv = fluid.data(name='prior_box_var', shape=[image_boxs_num, 4], - dtype='float32') - - loc = fluid.data(name='target_box', shape=[batch_size, bounding_bboxes_num, 4], - dtype='float32') - - scores = fluid.data(name='scores', shape=[batch_size, bounding_bboxes_num, image_boxs_num], - dtype='float32') - - nmsed_outs = fluid.layers.detection_output(scores=scores, - loc=loc, prior_box=pb, prior_box_var=pbv) - - gt_box = fluid.data(name="gt_box", shape=[batch_size, 4], dtype="float32") - gt_label = fluid.data(name="gt_label", shape=[batch_size, 1], dtype="float32") - difficult = fluid.data(name="difficult", shape=[batch_size, 1], dtype="float32") - - exe = fluid.Executor(fluid.CUDAPlace(0)) - map_evaluator = fluid.metrics.DetectionMAP(nmsed_outs, gt_label, gt_box, difficult, class_num = 3) - cur_map, accum_map = map_evaluator.get_map_var() - - - -.. py:method:: get_map_var() - -返回:当前 mini-batch 的 mAP 变量和不同 mini-batch 的 mAP 累加和 - -.. py:method:: reset(executor, reset_program=None) - -在指定的 batch 结束或者用户指定的开始时重置度量状态。 - -参数: - - **executor** (Executor) – 执行reset_program的执行程序 - - **reset_program** (Program|None, 可选) – 单个program 的 reset 过程。如果设置为 None,将创建一个 program - - - diff --git a/doc/paddle/api/paddle/fluid/metrics/EditDistance_cn.rst b/doc/paddle/api/paddle/fluid/metrics/EditDistance_cn.rst deleted file mode 100644 index 9ffd2a0165d7e718d1cf08d15be5e90f64cf916b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/metrics/EditDistance_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_metrics_EditDistance: - -EditDistance -------------------------------- - -.. py:class:: paddle.fluid.metrics.EditDistance(name) - - - - -用于管理字符串的编辑距离。编辑距离是通过计算将一个字符串转换为另一个字符串所需的最小编辑操作数(添加、删除或替换)来量化两个字符串(例如单词)彼此不相似的程度一种方法。 参考 https://en.wikipedia.org/wiki/Edit_distance。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # 假设batch_size为128 - batch_size = 128 - - # 初始化编辑距离管理器 - distance_evaluator = fluid.metrics.EditDistance("EditDistance") - # 生成128个序列对间的编辑距离,此处的最大距离是10 - edit_distances_batch0 = np.random.randint(low = 0, high = 10, size = (batch_size, 1)) - seq_num_batch0 = batch_size - - distance_evaluator.update(edit_distances_batch0, seq_num_batch0) - avg_distance, wrong_instance_ratio = distance_evaluator.eval() - print("the average edit distance for batch0 is %.2f and the wrong instance ratio is %.2f " % (avg_distance, wrong_instance_ratio)) - edit_distances_batch1 = np.random.randint(low = 0, high = 10, size = (batch_size, 1)) - seq_num_batch1 = batch_size - - distance_evaluator.update(edit_distances_batch1, seq_num_batch1) - avg_distance, wrong_instance_ratio = distance_evaluator.eval() - print("the average edit distance for batch0 and batch1 is %.2f and the wrong instance ratio is %.2f " % (avg_distance, wrong_instance_ratio)) - - -.. py:method:: reset() - -清空存储结果。 - -参数:无 - -返回:无 - - -.. py:method:: update(distances, seq_num) - -更新存储结果 - -参数: - - **distances** – 一个形状为(batch_size, 1)的numpy.array,每个元素代表两个序列间的距离。 - - **seq_num** – 一个整型/浮点型值,代表序列对的数量。 - -返回:无 - -.. py:method:: eval() - -返回两个浮点数: -avg_distance:使用更新函数更新的所有序列对的平均距离。 -avg_instance_error:编辑距离不为零的序列对的比例。 - - - - - diff --git a/doc/paddle/api/paddle/fluid/metrics/MetricBase_cn.rst b/doc/paddle/api/paddle/fluid/metrics/MetricBase_cn.rst deleted file mode 100644 index 91cfa45e4f86514a1873576088dc10bb30af03d9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/metrics/MetricBase_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_metrics_MetricBase: - -MetricBase -------------------------------- - -.. py:class:: paddle.fluid.metrics.MetricBase(name) - - - - -在评估神经网络效果的时候,由于我们常常需要把测试数据切分成mini-batch,并逐次将每个mini-batch送入神经网络进行预测和评估,因此我们每次只能获得当前batch下的评估结果,而并不能一次性获得整个测试集的评估结果。paddle.fluid.metrics正是为了解决这些问题而设计的,大部分paddle.fluid.metrics下的类都具有如下功能: - -1. 接受模型对一个batch的预测结果(numpy.array)和这个batch的原始标签(numpy.array)作为输入,并进行特定的计算(如计算准确率,召回率等)。 - -2. 将当前batch评估结果和历史评估结果累计起来,以获取目前处理过的所有batch的整体评估结果。 - -MetricBase是所有paddle.fluid.metrics下定义的所有python类的基类,它定义了一组接口,并需要所有继承他的类实现具体的计算逻辑,包括: - -1. update(preds, labels):给定当前计算当前batch的预测结果(preds)和标签(labels),计算这个batch的评估结果。 - -2. eval():合并当前累积的每个batch的评估结果,并返回整体评估结果。 - -3. reset():清空累积的每个batch的评估结果。 - -.. py:method:: __init__(name) - -构造函数,参数name表示当前创建的评估器的名字。 - -参数: - - **name** (str) - 当前创建的评估器的名字,用于区分不同的评估器,例如准确率(accuracy)或者其他自定义名字(如,my_evaluator)。 - -返回:一个python对象,表示一个具体的评估器。 - -返回类型:python对象 - -.. py:method:: reset() - -空累积的每个batch的评估结果。 - -返回:无 - -.. py:method:: update(preds,labels) - -给定当前计算当前batch的预测结果(preds)和标签(labels),计算这个batch的评估结果,并将这个评估结果在评估器内部记录下来,注意update函数并不会返回评估结果。 - -参数: - - **preds** (numpy.array) - 当前minibatch的预测结果。 - - **labels** (numpy.array) - 当前minibatch的标签。 - -返回:无 - -.. py:method:: eval() - -合并当前累积的每个batch的评估结果,并返回整体评估结果。 - -返回:当前累积batch的整体评估结果。 - -返回类型:float|list(float)|numpy.array - -.. py:method:: get_config() - -获取当前评估器的状态,特指评估器内部没有 ``_`` 前缀的所有成员变量。 - -返回:一个python字典,包含了当前评估器内部的状态。 - -返回类型:python字典(dict) - diff --git a/doc/paddle/api/paddle/fluid/metrics/Precision_cn.rst b/doc/paddle/api/paddle/fluid/metrics/Precision_cn.rst deleted file mode 100644 index 29a1cb89a9ebc7185c8ddb596fe8e1494ece800d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/metrics/Precision_cn.rst +++ /dev/null @@ -1,62 +0,0 @@ -.. _cn_api_fluid_metrics_Precision: - -Precision -------------------------------- - -.. py:class:: paddle.fluid.metrics.Precision(name=None) - - - - -精确率Precision(也称为 positive predictive value,正预测值)是被预测为正样例中实际为正的比例。 https://en.wikipedia.org/wiki/Evaluation_of_binary_classifiers 该类管理二分类任务的precision分数。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - metric = fluid.metrics.Precision() - - # 生成预测值和标签 - - preds = [[0.1], [0.7], [0.8], [0.9], [0.2], - [0.2], [0.3], [0.5], [0.8], [0.6]] - - labels = [[0], [1], [1], [1], [1], - [0], [0], [0], [0], [0]] - - preds = np.array(preds) - labels = np.array(labels) - - metric.update(preds=preds, labels=labels) - precision = metric.eval() - - print("expected precision: %.2f and got %.2f" % ( 3.0 / 5.0, precision)) - - - -.. py:method:: update(preds, labels) - -使用当前mini-batch的预测结果更新精确率的计算。 - -参数: - - **preds** (numpy.array) - 当前mini-batch的预测结果,二分类sigmoid函数的输出,shape为[batch_size, 1],数据类型为'float64'或'float32'。 - - **labels** (numpy.array) - 当前mini-batch的真实标签,输入的shape应与preds保持一致,shape为[batch_size, 1],数据类型为'int32'或'int64' - -返回:无 - - - -.. py:method:: eval() - -计算出最终的精确率。 - -参数:无 - -返回: 精确率的计算结果。标量输出,float类型 -返回类型:float - - diff --git a/doc/paddle/api/paddle/fluid/metrics/Recall_cn.rst b/doc/paddle/api/paddle/fluid/metrics/Recall_cn.rst deleted file mode 100644 index 3d4975fc55e42f251e983fd551c760511407f003..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/metrics/Recall_cn.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _cn_api_fluid_metrics_Recall: - -Recall -------------------------------- - -.. py:class:: paddle.fluid.metrics.Recall(name=None) - - - - -召回率Recall(也称为敏感度)是指得到的相关实例数占相关实例总数的比例。https://en.wikipedia.org/wiki/Precision_and_recall 该类管理二分类任务的召回率。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - metric = fluid.metrics.Recall() - # 生成预测值和标签 - preds = [[0.1], [0.7], [0.8], [0.9], [0.2], - [0.2], [0.3], [0.5], [0.8], [0.6]] - labels = [[0], [1], [1], [1], [1], - [0], [0], [0], [0], [0]] - - preds = np.array(preds) - labels = np.array(labels) - - metric.update(preds=preds, labels=labels) - recall = metric.eval() - - print("expected recall: %.2f and got %.2f" % ( 3.0 / 4.0, recall)) - - - -.. py:method:: update(preds, labels) - -使用当前mini-batch的预测结果更新召回率的计算。 - -参数: - - **preds** (numpy.array) - 当前mini-batch的预测结果,二分类sigmoid函数的输出,shape为[batch_size, 1],数据类型为'float64'或'float32'。 - - **labels** (numpy.array) - 当前mini-batch的真实标签,输入的shape应与preds保持一致,shape为[batch_size, 1],数据类型为'int32'或'int64' - -返回:无 - - - -.. py:method:: eval() - -计算出最终的召回率。 - -参数:无 - -返回:召回率的计算结果。标量输出,float类型 -返回类型:float - - - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/nets/glu_cn.rst b/doc/paddle/api/paddle/fluid/nets/glu_cn.rst deleted file mode 100644 index 7da9b516b272355ef2ca2825153cc4c604cc1a99..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/nets/glu_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_nets_glu: - -glu -------------------------------- - -.. py:function:: paddle.fluid.nets.glu(input, dim=-1) - -:api_attr: 声明式编程模式(静态图) - - - -门控线性单元 Gated Linear Units (GLU) 由 :ref:`cn_api_fluid_layers_split` ,:ref:`cn_api_fluid_layers_sigmoid` 和 :ref:`cn_api_fluid_layers_elementwise_mul` 组成。特定的,沿着给定维度将输入拆分成两个大小相同的部分,:math:`a` 和 :math:`b` ,按如下方式计算: - -.. math:: - GLU(a,b) = a \bigotimes \sigma (b) - - -参考论文: `Language Modeling with Gated Convolutional Networks `_ - -参数: - - **input** (Variable) - 输入变量,多维 Tensor 或 LoDTensor, 支持的数据类型为float32、float64 和 float16(GPU)。 - - **dim** (int) - 拆分的维度。如果 :math:`dim<0` ,拆分的维为 :math:`rank(input) + dim` 。默认为 -1,即最后一维。 - -返回: 计算结果,尺寸为输入大小的一半,数据类型与输入的数据类型相同 - -返回类型:变量(Variable) - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data( - name="words", shape=[-1, 6, 3, 9], dtype="float32") - # 输出的形状为[-1, 3, 3, 9] - output = fluid.nets.glu(input=data, dim=1) - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/nets/img_conv_group_cn.rst b/doc/paddle/api/paddle/fluid/nets/img_conv_group_cn.rst deleted file mode 100644 index 3647169f78351371afb57920f0b3d91b5dbdd3b6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/nets/img_conv_group_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_nets_img_conv_group: - -img_conv_group -------------------------------- - - -.. py:function:: paddle.fluid.nets.img_conv_group(input, conv_num_filter, pool_size, conv_padding=1, conv_filter_size=3, conv_act=None, param_attr=None, conv_with_batchnorm=False, conv_batchnorm_drop_rate=0.0, pool_stride=1, pool_type='max', use_cudnn=True) - -:api_attr: 声明式编程模式(静态图) - - - -Image Convolution Group由Convolution2d,BatchNorm,DropOut和Pool2d组成。根据输入参数,img_conv_group将使用Convolution2d,BatchNorm,DropOut对Input进行连续计算,得到最后结果。 - -参数: - - **input** (Variable) - 输入,格式为[N,C,H,W]的4-D Tensor。数据类型:float32和float64。 - - **conv_num_filter** (list | tuple) - 卷积中使用的滤波器数。 - - **pool_size** (int | list | tuple) - 池化层中池化核的大小。如果pool_size是列表或元组,则它必须包含两个整数(pool_size_height,pool_size_width)。否则,pool_size_height = pool_size_width = pool_size。 - - **conv_padding** (int | list | tuple) - 卷积层中的填充 ``padding`` 的大小。如果 ``padding`` 是列表或元组,则其长度必须等于 ``conv_num_filter`` 的长度。否则,所有卷积的 ``conv_padding`` 都是相同的。默认:1。 - - **conv_filter_size** (int | list | tuple) - 卷积层中滤波器大小。如果filter_size是列表或元组,则其长度必须等于 ``conv_num_filter`` 的长度。否则,所有卷积的 ``conv_filter_size`` 都是相同的。默认:3。 - - **conv_act** (str) - 卷积层之后接的的激活层类型, ``BatchNorm`` 后面没有。默认:None。 - - **param_attr** (ParamAttr|None) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv2d算子默认的权重初始化是Xavier。 - - **conv_with_batchnorm** (bool | list) - 表示在卷积层之后是否使用 ``BatchNorm`` 。如果 ``conv_with_batchnorm`` 是一个列表,则其长度必须等于 ``conv_num_filter`` 的长度。否则, ``conv_with_batchnorm`` 指示是否所有卷积层后都使用 ``BatchNorm`` 。默认:False。 - - **conv_batchnorm_drop_rate** (float | list) - 表示 ``BatchNorm`` 之后的 ``Dropout Layer`` 的 ``drop_rate`` 。如果 ``conv_batchnorm_drop_rate`` 是一个列表,则其长度必须等于 ``conv_num_filter`` 的长度。否则,所有 ``Dropout Layers`` 的 ``drop_rate`` 都是 ``conv_batchnorm_drop_rate`` 。默认:0.0。 - - **pool_stride** (int | list | tuple) - 池化层的池化步长。如果 ``pool_stride`` 是列表或元组,则它必须包含两个整数(pooling_stride_height,pooling_stride_width)。否则,pooling_stride_height = pooling_stride_width = pool_stride。默认:1。 - - **pool_type** (str) - 池化类型可以是最大池化的 ``max`` 和平均池化的 ``avg`` 。默认:max。 - - **use_cudnn** (bool) - 是否使用cudnn内核,仅在安装cudnn库时才有效。默认值:True - -返回: Tensor。使用Convolution2d,BatchNorm,DropOut和Pool2d进行串行计算后的最终结果。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - img = fluid.layers.data(name='img', shape=[1, 28, 28], dtype='float32') - conv_pool = fluid.nets.img_conv_group(input=img, - conv_padding=1, - conv_num_filter=[3, 3], - conv_filter_size=3, - conv_act="relu", - pool_size=2, - pool_stride=2) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(1, 1, 28, 28)).astype('float32') - output = exe.run(feed={"img": np_x}, fetch_list = [conv_pool]) - print(output) - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/nets/scaled_dot_product_attention_cn.rst b/doc/paddle/api/paddle/fluid/nets/scaled_dot_product_attention_cn.rst deleted file mode 100644 index 5356e1ebd230df40ef27786287d71cfeed5a4ff8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/nets/scaled_dot_product_attention_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_nets_scaled_dot_product_attention: - -scaled_dot_product_attention -------------------------------- - - -.. py:function:: paddle.fluid.nets.scaled_dot_product_attention(queries, keys, values, num_heads=1, dropout_rate=0.0) - -:api_attr: 声明式编程模式(静态图) - - - -该接口实现了的基于点积(并进行了缩放)的多头注意力(Multi-Head Attention)机制。attention可以表述为将一个查询(query)和一组键值对(key-value pair)映射为一个输出;Multi-Head Attention则是使用多路进行attention,而且对attention的输入进行了线性变换。公式如下: - - -.. math:: - - MultiHead(Q, K, V ) & = Concat(head_1, ..., head_h)\\ - where \ head_i & = Attention(QW_i^Q , KW_i^K , VW_i^V )\\ - Attention(Q, K, V) & = softmax(\frac{QK^\mathrm{T}}{\sqrt{d_k}})V\\ - -其中, :math:`Q, K, V` 分别对应 ``queries``、 ``keys`` 和 ``values`` ,详细内容请参阅 `Attention Is All You Need `_ - -要注意该接口实现支持的是batch形式, :math:`Attention(Q, K, V)` 中使用的矩阵乘是batch形式的矩阵乘法,参考 fluid.layers. :ref:`cn_api_fluid_layers_matmul` 。 - -参数: - - **queries** (Variable) - 形状为 :math:`[N, L_q, d_k \times h]` 的三维Tensor,其中 :math:`N` 为batch_size, :math:`L_q` 为查询序列长度, :math:`d_k \times h` 为查询的特征维度大小,:math:`h` 为head数。数据类型为float32或float64。 - - **keys** (Variable) - 形状为 :math:`[N, L_k, d_k \times h]` 的三维Tensor,其中 :math:`N` 为batch_size, :math:`L_k` 为键值序列长度, :math:`d_k \times h` 为键的特征维度大小,:math:`h` 为head数。数据类型与 ``queries`` 相同。 - - **values** (Variable) - 形状为 :math:`[N, L_k, d_v \times h]` 的三维Tensor,其中 :math:`N` 为batch_size, :math:`L_k` 为键值序列长度, :math:`d_v \times h` 为值的特征维度大小,:math:`h` 为head数。数据类型与 ``queries`` 相同。 - - **num_heads** (int) - 指明所使用的head数。head数为1时不对输入进行线性变换。默认值为1。 - - **dropout_rate** (float) - 以指定的概率对要attention到的内容进行dropout。默认值为0,即不使用dropout。 - -返回: 形状为 :math:`[N, L_q, d_v * h]` 的三维Tensor,其中 :math:`N` 为batch_size, :math:`L_q` 为查询序列长度, :math:`d_v * h` 为值的特征维度大小。与输入具有相同的数据类型。表示Multi-Head Attention的输出。 - -返回类型: Variable - -抛出异常: - - :code:`ValueError`: ``queries`` 、 ``keys`` 和 ``values`` 必须都是三维。 - - :code:`ValueError`: ``queries`` 和 ``keys`` 的最后一维(特征维度)大小必须相同。 - - :code:`ValueError`: ``keys`` 和 ``values`` 的第二维(长度维度)大小必须相同。 - - :code:`ValueError`: ``keys`` 的最后一维(特征维度)大小必须是 ``num_heads`` 的整数倍。 - - :code:`ValueError`: ``values`` 的最后一维(特征维度)大小必须是 ``num_heads`` 的整数倍。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - queries = fluid.data(name="queries", shape=[3, 5, 9], dtype="float32") - keys = fluid.data(name="keys", shape=[3, 6, 9], dtype="float32") - values = fluid.data(name="values", shape=[3, 6, 10], dtype="float32") - contexts = fluid.nets.scaled_dot_product_attention(queries, keys, values) - contexts.shape # [3, 5, 10] - - diff --git a/doc/paddle/api/paddle/fluid/nets/sequence_conv_pool_cn.rst b/doc/paddle/api/paddle/fluid/nets/sequence_conv_pool_cn.rst deleted file mode 100644 index 2caeffc74a7adf7552ca5cff63f90b20320dfcc3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/nets/sequence_conv_pool_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_nets_sequence_conv_pool: - -sequence_conv_pool -------------------------------- - - -.. py:function:: paddle.fluid.nets.sequence_conv_pool(input, num_filters, filter_size, param_attr=None, act='sigmoid', pool_type='max', bias_attr=None) - -:api_attr: 声明式编程模式(静态图) - - - -**注意:该OP的输入** ``input`` **必须是2维LoDTensor, lod_level为1,如果输入是Tensor,建议使用** :ref:`cn_api_fluid_nets_simple_img_conv_pool` **代替** - -该接口由序列卷积( :ref:`cn_api_fluid_layers_sequence_conv` )和池化( :ref:`cn_api_fluid_layers_sequence_pool` )组成 - -参数: - - **input** (Variable) - sequence_conv的输入,LoDTensor, lod_level为1,支持时间长度可变的输入序列。当前输入为shape为(T,N)的矩阵,T是mini-batch中的总时间步数,N是input_hidden_size。数据类型为float32或者float64 - - **num_filters** (int)- 卷积核的数目,整数 - - **filter_size** (int)- 卷积核的大小,整数 - - **param_attr** (ParamAttr,可选) - sequence_conv层的参数属性,类型是ParamAttr或者None。默认值为None - - **act** (str|None,可选) - sequence_conv层的激活函数类型,字符串,可以是'relu', 'softmax', 'sigmoid'等激活函数的类型。如果设置为None,则不使用激活。默认值为'sigmoid' - - **pool_type** (str,可选) - 池化类型,字符串。可以是'max', 'average', 'sum'或者'sqrt'。默认值为'max' - - **bias_attr** (ParamAttr|bool,可选) – sequence_conv偏置的参数属性,类型可以是bool,ParamAttr或者None。如果设置为False,则不会向输出单元添加偏置。如果将参数设置为ParamAttr的None或one属性,sequence_conv将创建ParamAttr作为bias_attr。如果未设置bias_attr的初始化器,则初始化偏差为零。默认值为None - - **name** (str|None,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None - -返回:经过sequence_conv和sequence_pool两个操作之后的结果所表示的Tensor,数据类型与 ``input`` 相同 - - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input_dim = 100 #len(word_dict) - emb_dim = 128 - hid_dim = 512 - data = fluid.layers.data( name="words", shape=[1], dtype="int64", lod_level=1) - emb = fluid.layers.embedding(input=data, size=[input_dim, emb_dim], is_sparse=True) - seq_conv = fluid.nets.sequence_conv_pool(input=emb, - num_filters=hid_dim, - filter_size=3, - act="tanh", - pool_type="sqrt") - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/nets/simple_img_conv_pool_cn.rst b/doc/paddle/api/paddle/fluid/nets/simple_img_conv_pool_cn.rst deleted file mode 100644 index 0b48604e608f30ec5631df02a9795434749e1bca..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/nets/simple_img_conv_pool_cn.rst +++ /dev/null @@ -1,62 +0,0 @@ -.. _cn_api_fluid_nets_simple_img_conv_pool: - -simple_img_conv_pool -------------------------------- - - -.. py:function:: paddle.fluid.nets.simple_img_conv_pool(input, num_filters, filter_size, pool_size, pool_stride, pool_padding=0, pool_type='max', global_pooling=False, conv_stride=1, conv_padding=0, conv_dilation=1, conv_groups=1, param_attr=None, bias_attr=None, act=None, use_cudnn=True) - -:api_attr: 声明式编程模式(静态图) - - - - ``simple_img_conv_pool`` 由一个conv2d( :ref:`cn_api_fluid_layers_conv2d` )和一个pool2d( :ref:`cn_api_fluid_layers_pool2d` ) OP组成。 - -参数: - - **input** (Variable) - 输入图像, 4-D Tensor, 格式为[N,C,H,W]。数据类型是float32或者float64 - - **num_filters** (int) - 卷积核的数目,整数。 - - **filter_size** (int | list | tuple) - conv2d卷积核大小,整数或者整型列表或者整型元组。如果 ``filter_size`` 是列表或元组,则它必须包含两个整数(filter_size_H,filter_size_W)。如果是整数,则filter_size_H = filter_size_W = filter_size。 - - **pool_size** (int | list | tuple) - pool2d池化层大小,整数或者整型列表或者整型元组。如果pool_size是列表或元组,则它必须包含两个整数(pool_size_H,pool_size_W)。如果是整数,则pool_size_H = pool_size_W = pool_size。 - - **pool_stride** (int | list | tuple) - pool2d池化层步长,整数或者整型列表或者整型元组。如果pool_stride是列表或元组,则它必须包含两个整数(pooling_stride_H,pooling_stride_W)。如果是整数,pooling_stride_H = pooling_stride_W = pool_stride。 - - **pool_padding** (int | list | tuple,可选) - pool2d池化层的padding,整数或者整型列表或者整型元组。如果pool_padding是列表或元组,则它必须包含两个整数(pool_padding_H,pool_padding_W)。如果是整数,pool_padding_H = pool_padding_W = pool_padding。默认值为0。 - - **pool_type** (str,可选) - 池化类型,字符串,可以是 ``max`` 或者 ``avg`` ,分别对应最大池化和平均池化。默认 ``max`` 。 - - **global_pooling** (bool,可选)- 是否使用全局池化。如果global_pooling = true,则忽略pool_size和pool_padding。默认为False - - **conv_stride** (int | list | tuple,可选) - conv2d Layer的卷积步长,整数或者整型列表或者整型元组。如果conv_stride是列表或元组,则它必须包含两个整数,(conv_stride_H,conv_stride_W)。如果是整数,conv_stride_H = conv_stride_W = conv_stride。默认值:conv_stride = 1。 - - **conv_padding** (int | list | tuple,可选) - conv2d Layer的padding大小,整数或者整型列表或者整型元组。如果conv_padding是列表或元组,则它必须包含两个整数(conv_padding_H,conv_padding_W)。如果是整数,conv_padding_H = conv_padding_W = conv_padding。默认值:conv_padding = 0。 - - **conv_dilation** (int | list | tuple,可选) - conv2d Layer的dilation大小,整数或者整型列表或者整型元。如果conv_dilation是列表或元组,则它必须包含两个整数(conv_dilation_H,conv_dilation_W)。如果是整数,conv_dilation_H = conv_dilation_W = conv_dilation。默认值:conv_dilation = 1。 - - **conv_groups** (int,可选) - conv2d Layer的组数,整数。根据Alex Krizhevsky的Deep CNN论文中的分组卷积:当group = 2时,前半部分滤波器仅连接到输入通道的前半部分,而后半部分滤波器仅连接到后半部分输入通道。默认值:conv_groups = 1。 - - **param_attr** (ParamAttr,可选) - conv2d的weights参数属性。如果将其设置为None或ParamAttr的一个属性,则conv2d将创建ParamAttr作为param_attr。如果未设置param_attr的初始化,则使用 :math:`Normal(0.0,std)` 初始化参数,并且 ``std`` 为 :math:`(\frac{2.0 }{filter\_elem\_num})^{0.5}` 。默认值:None - - **bias_attr** (ParamAttr | bool | None,可选) - conv2d的bias参数属性。如果设置为False,则不会向输出单元添加bias。如果将其设置为None或ParamAttr的一个属性,则conv2d将创建ParamAttr作为bias_attr。如果设置bias_attr为None,则将其初始化为零。默认值:None - - **act** (str,可选) - conv2d的激活类型,字符串,可以是'relu', 'softmax', 'sigmoid'等激活函数的类型。如果设置为None,则不附加激活。默认值:None。 - - **use_cudnn** (bool,可选) - 是否使用cudnn内核,仅在安装cudnn库时才有效。默认值:True。 - - **name** (str|None,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None - -返回: 输入input经过conv2d和pool2d之后输入的结果,数据类型与input相同 - -返回类型: Variable - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - # 输入 img.shape = [-1, 1, 28, 28] - # 使用该接口带如下参数的操作之后,输出conv_pool.shape = [-1, 20, 12, 12] - img = fluid.layers.data(name='img', shape=[1, 28, 28], dtype='float32') - conv_pool = fluid.nets.simple_img_conv_pool(input=img, - filter_size=5, - num_filters=20, - pool_size=2, - pool_stride=2, - act="relu") - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/nets_cn.rst b/doc/paddle/api/paddle/fluid/nets_cn.rst deleted file mode 100644 index 1ede5020af14b3b28272fc3b8b27d6e472dd2b87..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/nets_cn.rst +++ /dev/null @@ -1,15 +0,0 @@ -======================= -fluid.nets -======================= - - - - -.. toctree:: - :maxdepth: 1 - - nets_cn/glu_cn.rst - nets_cn/img_conv_group_cn.rst - nets_cn/scaled_dot_product_attention_cn.rst - nets_cn/sequence_conv_pool_cn.rst - nets_cn/simple_img_conv_pool_cn.rst diff --git a/doc/paddle/api/paddle/fluid/optimizer/AdadeltaOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/AdadeltaOptimizer_cn.rst deleted file mode 100644 index e1d5168744d910a7b930eb1f2ff1dc532707dd49..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/AdadeltaOptimizer_cn.rst +++ /dev/null @@ -1,196 +0,0 @@ -.. _cn_api_fluid_optimizer_AdadeltaOptimizer: - -AdadeltaOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.AdadeltaOptimizer(learning_rate, epsilon=1.0e-6, rho=0.95, parameter_list=None, regularization=None, grad_clip=None, name=None) - - - - -**注意:此接口不支持稀疏参数更新。** - -Adadelta优化器,具体细节可参考论文 `ADADELTA: AN ADAPTIVE LEARNING RATE METHOD `_ 。 - -更新公式如下: - -.. math:: - - E(g_t^2) &= \rho * E(g_{t-1}^2) + (1-\rho) * g^2\\ - learning\_rate &= \sqrt{ ( E(dx_{t-1}^2) + \epsilon ) / ( E(g_t^2) + \epsilon ) }\\ - E(dx_t^2) &= \rho * E(dx_{t-1}^2) + (1-\rho) * (-g*learning\_rate)^2 - - -参数: - - **learning_rate** (float|Variable) - 全局学习率。 - - **epsilon** (float) - 维持数值稳定性的浮点型值,默认值为1.0e-6。 - - **rho** (float) - 算法中的衰减率,默认值为0.95。 - - **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为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,表示没有正则化。 - - **grad_clip** (GradientClipBase, 可选) – 梯度裁剪的策略,支持三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 默认值为None,此时将不进行梯度裁剪。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - image = fluid.layers.data(name='image', shape=[28], dtype='float32') - fc = fluid.layers.fc(image, size=10) - cost = fluid.layers.reduce_mean(fc) - optimizer = fluid.optimizer.AdadeltaOptimizer( - learning_rate=0.0003, epsilon=1.0e-6, rho=0.95) - optimizer_ops, params_grads = optimizer.minimize(cost) - - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - -为训练网络添加反向和参数优化部分,进而使损失最小化。 - -参数: - - **loss** (Variable) – 优化器的损失变量。 - - **startup_program** (Program,可选) – 参数所在的startup program。默认值为None,表示 :ref:`cn_api_fluid_default_startup_program` 。 - - **parameter_list** (list,可选) – 待更新的Parameter或者Parameter.name组成的列表。默认值为None,表示所有参数均需要更新。 - - **no_grad_set** (set,可选) – 不需要更新的Parameter或者Parameter.name组成的集合。默认值为None。 - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -返回类型: tuple - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - image = fluid.layers.data(name='image', shape=[28], dtype='float32') - fc = fluid.layers.fc(image, size=10) - cost = fluid.layers.reduce_mean(fc) - optimizer = fluid.optimizer.AdadeltaOptimizer( - learning_rate=0.0003, epsilon=1.0e-6, rho=0.95) - optimizer_ops, params_grads = optimizer.minimize(cost) - - -.. py:method:: clear_gradients() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -清除需要优化的参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - optimizer = fluid.optimizer.AdadeltaOptimizer(learning_rate=0.0003, epsilon=1.0e-6, rho=0.95, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - optimizer.minimize(out) - optimizer.clear_gradients() - -.. py:method:: set_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -手动设置当前 ``optimizer`` 的学习率。当使用LearningRateDecay时,无法使用该API手动设置学习率,因为这将导致冲突。 - -参数: - value (float|Variable) - 需要设置的学习率的值。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.dygraph.nn.Linear(10, 10) - adam = fluid.optimizer.Adam(0.1, parameter_list=linear.parameters()) - # 通过Python float数值手动设置学习率 - lr_list = [0.2, 0.3, 0.4, 0.5, 0.6] - for i in range(5): - adam.set_lr(lr_list[i]) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.2 - # current lr is 0.3 - # current lr is 0.4 - # current lr is 0.5 - # current lr is 0.6 - - - # 通过 框架的Variable 设置学习率 - lr_var = fluid.layers.create_global_var(shape=[1], value=0.7, dtype='float32') - adam.set_lr(lr_var) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.7 - - - -.. py:method:: current_step_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取当前步骤的学习率。当不使用LearningRateDecay时,每次调用的返回值都相同,否则返回当前步骤的学习率。 - -返回:当前步骤的学习率。 - -返回类型:float - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: LearningRateDecay is not used, return value is all the same - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - adam = fluid.optimizer.Adam(0.001, parameter_list = emb.parameters()) - lr = adam.current_step_lr() - print(lr) # 0.001 - - # example2: PiecewiseDecay is used, return the step learning rate - with fluid.dygraph.guard(): - inp = np.random.uniform(-0.1, 0.1, [10, 10]).astype("float32") - linear = fluid.dygraph.nn.Linear(10, 10) - inp = fluid.dygraph.to_variable(inp) - out = linear(inp) - loss = fluid.layers.reduce_mean(out) - - bd = [2, 4, 6, 8] - value = [0.2, 0.4, 0.6, 0.8, 1.0] - adam = fluid.optimizer.Adam(fluid.dygraph.PiecewiseDecay(bd, value, 0), - parameter_list=linear.parameters()) - - # first step: learning rate is 0.2 - np.allclose(adam.current_step_lr(), 0.2, rtol=1e-06, atol=0.0) # True - - # learning rate for different steps - ret = [0.2, 0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0] - for i in range(12): - adam.minimize(loss) - lr = adam.current_step_lr() - np.allclose(lr, ret[i], rtol=1e-06, atol=0.0) # True - diff --git a/doc/paddle/api/paddle/fluid/optimizer/Adadelta_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/Adadelta_cn.rst deleted file mode 100644 index fabe7b81fa54401bea6e21de5cfa5cce4bc5a701..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/Adadelta_cn.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. _cn_api_fluid_optimizer_Adadelta: - -Adadelta -------------------------------- - -.. py:attribute:: paddle.fluid.optimizer.Adadelta - - - - -``AdadeltaOptimizer`` 的别名 - - - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/AdagradOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/AdagradOptimizer_cn.rst deleted file mode 100644 index 0837c86c5a6298dde6b75e9c937699fa7e2c91c8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/AdagradOptimizer_cn.rst +++ /dev/null @@ -1,215 +0,0 @@ -.. _cn_api_fluid_optimizer_AdagradOptimizer: - -AdagradOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.AdagradOptimizer(learning_rate, epsilon=1e-06, parameter_list=None, regularization=None, grad_clip=None, name=None, initial_accumulator_value=0.0) - - - - -Adaptive Gradient 优化器(自适应梯度优化器,简称Adagrad)可以针对不同参数样本数不平均的问题,自适应地为各个参数分配不同的学习率。 - -其参数更新的计算过程如下: - -.. math:: - - moment\_out &= moment + grad * grad\\param\_out - &= param - \frac{learning\_rate * grad}{\sqrt{moment\_out} + \epsilon} - - -相关论文:`Adaptive Subgradient Methods for Online Learning and Stochastic Optimization `_。 - -原始论文的算法中没有引入上述公式中的 ``epsilon`` 属性,此处引入该属性用于维持数值稳定性,避免除0错误发生。 - -引入epsilon参数依据:`Per-parameter adaptive learning rate methods `_。 - -参数: - - **learning_rate** (float|Variable) - 学习率,用于参数更新的计算。可以是一个浮点型值或者一个值为浮点型的Variable - - **epsilon** (float, 可选) - 维持数值稳定性的浮点型值,默认值为1e-06 - - **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为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,表示没有正则化。 - - **grad_clip** (GradientClipBase, 可选) – 梯度裁剪的策略,支持三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 默认值为None,此时将不进行梯度裁剪。 - - **name** (str, 可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None - - **initial_accumulator_value** (float, 可选) - moment累加器的初始值,默认值为0.0 - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - np_inp = np.array([[1.0, 2.0], [3.0, 4.0]], dtype=np.float32) - inp = fluid.layers.data( - name="inp", shape=[2, 2], append_batch_size=False) - out = fluid.layers.fc(inp, size=3) - out = fluid.layers.reduce_sum(out) - optimizer = fluid.optimizer.AdagradOptimizer(learning_rate=0.2) - optimizer.minimize(out) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - exe.run( - feed={"inp": np_inp}, - fetch_list=[out.name]) - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - -为网络添加反向计算过程,并根据反向计算所得的梯度,更新parameter_list中的Parameters,最小化网络损失值loss。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的集合。默认值为None - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -返回类型: tuple - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - inp = fluid.layers.data( - name="inp", shape=[2, 2], append_batch_size=False) - out = fluid.layers.fc(inp, size=3) - out = fluid.layers.reduce_sum(out) - optimizer = fluid.optimizer.AdagradOptimizer(learning_rate=0.2) - optimizer.minimize(out) - - np_inp = np.array([[1.0, 2.0], [3.0, 4.0]], dtype=np.float32) - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - exe.run( - feed={"inp": np_inp}, - fetch_list=[out.name]) - - -.. py:method:: clear_gradients() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -清除需要优化的参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - optimizer = fluid.optimizer.AdagradOptimizer(learning_rate=0.2, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - optimizer.minimize(out) - optimizer.clear_gradients() - -.. py:method:: set_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -手动设置当前 ``optimizer`` 的学习率。当使用LearningRateDecay时,无法使用该API手动设置学习率,因为这将导致冲突。 - -参数: - value (float|Variable) - 需要设置的学习率的值。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.dygraph.nn.Linear(10, 10) - adam = fluid.optimizer.Adam(0.1, parameter_list=linear.parameters()) - # 通过Python float数值手动设置学习率 - lr_list = [0.2, 0.3, 0.4, 0.5, 0.6] - for i in range(5): - adam.set_lr(lr_list[i]) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.2 - # current lr is 0.3 - # current lr is 0.4 - # current lr is 0.5 - # current lr is 0.6 - - - # 通过 框架的Variable 设置学习率 - lr_var = fluid.layers.create_global_var(shape=[1], value=0.7, dtype='float32') - adam.set_lr(lr_var) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.7 - - - -.. py:method:: current_step_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取当前步骤的学习率。当不使用LearningRateDecay时,每次调用的返回值都相同,否则返回当前步骤的学习率。 - -返回:当前步骤的学习率。 - -返回类型:float - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: LearningRateDecay is not used, return value is all the same - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - adam = fluid.optimizer.Adam(0.001, parameter_list = emb.parameters()) - lr = adam.current_step_lr() - print(lr) # 0.001 - - # example2: PiecewiseDecay is used, return the step learning rate - with fluid.dygraph.guard(): - inp = np.random.uniform(-0.1, 0.1, [10, 10]).astype("float32") - linear = fluid.dygraph.nn.Linear(10, 10) - inp = fluid.dygraph.to_variable(inp) - out = linear(inp) - loss = fluid.layers.reduce_mean(out) - - bd = [2, 4, 6, 8] - value = [0.2, 0.4, 0.6, 0.8, 1.0] - adam = fluid.optimizer.Adam(fluid.dygraph.PiecewiseDecay(bd, value, 0), - parameter_list=linear.parameters()) - - # first step: learning rate is 0.2 - np.allclose(adam.current_step_lr(), 0.2, rtol=1e-06, atol=0.0) # True - - # learning rate for different steps - ret = [0.2, 0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0] - for i in range(12): - adam.minimize(loss) - lr = adam.current_step_lr() - np.allclose(lr, ret[i], rtol=1e-06, atol=0.0) # True - diff --git a/doc/paddle/api/paddle/fluid/optimizer/Adagrad_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/Adagrad_cn.rst deleted file mode 100644 index f4304ba8b4d89f0d1b446cf31e487e6c9ebb4c34..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/Adagrad_cn.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. _cn_api_fluid_optimizer_Adagrad: - -Adagrad -------------------------------- - -.. py:attribute:: paddle.fluid.optimizer.Adagrad - - - - -``AdagradOptimizer`` 的别名 - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/AdamOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/AdamOptimizer_cn.rst deleted file mode 100644 index 8e07f80b205f836e3d08f5af4989d6246e988769..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/AdamOptimizer_cn.rst +++ /dev/null @@ -1,289 +0,0 @@ -.. _cn_api_fluid_optimizer_AdamOptimizer: - -AdamOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.AdamOptimizer(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, parameter_list=None, regularization=None, grad_clip=None, name=None, lazy_mode=False) - - - - -Adam优化器出自 `Adam论文 `_ 的第二节,能够利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。 - -其参数更新的计算公式如下: - -.. math:: - \\t = t + 1 -.. math:: - moment\_1\_out=\beta_1∗moment\_1+(1−\beta_1)∗grad -.. math:: - moment\_2\_out=\beta_2∗moment\_2+(1−\beta_2)∗grad*grad -.. math:: - learning\_rate=learning\_rate*\frac{\sqrt{1-\beta_2^t}}{1-\beta_1^t} -.. math:: - param\_out=param-learning\_rate*\frac{moment\_1}{\sqrt{moment\_2}+\epsilon}\\ - -相关论文:`Adam: A Method for Stochastic Optimization `_ - -参数: - - **learning_rate** (float|Variable,可选) - 学习率,用于参数更新的计算。可以是一个浮点型值或者一个值为浮点型的Variable,默认值为0.001 - - **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。 - - **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_L1Decay` 、 - :ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略; - 如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。 - - **grad_clip** (GradientClipBase, 可选) – 梯度裁剪的策略,支持三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 默认值为None,此时将不进行梯度裁剪。 - - **name** (str, 可选)- 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None - - **lazy_mode** (bool, 可选) - 设为True时,仅更新当前具有梯度的元素。官方Adam算法有两个移动平均累加器(moving-average accumulators)。累加器在每一步都会更新。在密集模式和稀疏模式下,两条移动平均线的每个元素都会更新。如果参数非常大,那么更新可能很慢。 lazy mode仅更新当前具有梯度的元素,所以它会更快。但是这种模式与原始的算法有不同的描述,可能会导致不同的结果,默认为False - - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - - place = fluid.CPUPlace() - main = fluid.Program() - with fluid.program_guard(main): - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_cost = fluid.layers.mean(cost) - adam_optimizer = fluid.optimizer.AdamOptimizer(0.01) - adam_optimizer.minimize(avg_cost) - - fetch_list = [avg_cost] - train_reader = paddle.batch( - paddle.dataset.uci_housing.train(), batch_size=1) - feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in train_reader(): - exe.run(main, feed=feeder.feed(data), fetch_list=fetch_list) - -.. code-block:: python - - # Adam with beta1/beta2 as Variable - import paddle - import paddle.fluid as fluid - import paddle.fluid.layers.learning_rate_scheduler as lr_scheduler - - place = fluid.CPUPlace() - main = fluid.Program() - with fluid.program_guard(main): - x = fluid.data(name='x', shape=[None, 13], dtype='float32') - y = fluid.data(name='y', shape=[None, 1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_cost = fluid.layers.mean(cost) - - # define beta decay variable - def get_decayed_betas(beta1_init, beta2_init, decay_steps, decay_rate): - global_step = lr_scheduler._decay_step_counter() - - beta1 = fluid.layers.create_global_var( - shape=[1], - value=float(beta1_init), - dtype='float32', - # set persistable for save checkpoints and resume - persistable=True, - name="beta1") - beta2 = fluid.layers.create_global_var( - shape=[1], - value=float(beta2_init), - dtype='float32', - # set persistable for save checkpoints and resume - persistable=True, - name="beta2") - - div_res = global_step / decay_steps - decayed_beta1 = beta1_init * (decay_rate**div_res) - decayed_beta2 = beta2_init * (decay_rate**div_res) - fluid.layers.assign(decayed_beta1, beta1) - fluid.layers.assign(decayed_beta2, beta2) - - return beta1, beta2 - - beta1, beta2 = get_decayed_betas(0.9, 0.99, 1e5, 0.9) - adam_optimizer = fluid.optimizer.AdamOptimizer( - learning_rate=0.01, - beta1=beta1, - beta2=beta2) - adam_optimizer.minimize(avg_cost) - - fetch_list = [avg_cost] - train_reader = paddle.batch( - paddle.dataset.uci_housing.train(), batch_size=1) - feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in train_reader(): - exe.run(main, feed=feeder.feed(data), fetch_list=fetch_list) - - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - -为网络添加反向计算过程,并根据反向计算所得的梯度,更新parameter_list中的Parameters,最小化网络损失值loss。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的集合,默认值为None - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -返回类型: tuple - -**代码示例** - -.. code-block:: python - - import numpy - import paddle.fluid as fluid - - x = fluid.layers.data(name='X', shape=[13], dtype='float32') - y = fluid.layers.data(name='Y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - loss = fluid.layers.mean(cost) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.2) - adam.minimize(loss) - - place = fluid.CPUPlace() # fluid.CUDAPlace(0) - exe = fluid.Executor(place) - - x = numpy.random.random(size=(10, 13)).astype('float32') - y = numpy.random.random(size=(10, 1)).astype('float32') - exe.run(fluid.default_startup_program()) - outs = exe.run(program=fluid.default_main_program(), - feed={'X': x, 'Y': y}, - fetch_list=[loss.name]) - - -.. py:method:: clear_gradients() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -清除需要优化的参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - optimizer = fluid.optimizer.Adam(learning_rate=0.02, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - optimizer.minimize(out) - optimizer.clear_gradients() - -.. py:method:: set_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -手动设置当前 ``optimizer`` 的学习率。当使用LearningRateDecay时,无法使用该API手动设置学习率,因为这将导致冲突。 - -参数: - value (float|Variable) - 需要设置的学习率的值。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.dygraph.nn.Linear(10, 10) - adam = fluid.optimizer.Adam(0.1, parameter_list=linear.parameters()) - # 通过Python float数值手动设置学习率 - lr_list = [0.2, 0.3, 0.4, 0.5, 0.6] - for i in range(5): - adam.set_lr(lr_list[i]) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.2 - # current lr is 0.3 - # current lr is 0.4 - # current lr is 0.5 - # current lr is 0.6 - - - # 通过 框架的Variable 设置学习率 - lr_var = fluid.layers.create_global_var(shape=[1], value=0.7, dtype='float32') - adam.set_lr(lr_var) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.7 - - - -.. py:method:: current_step_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取当前步骤的学习率。当不使用LearningRateDecay时,每次调用的返回值都相同,否则返回当前步骤的学习率。 - -返回:当前步骤的学习率。 - -返回类型:float - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: LearningRateDecay is not used, return value is all the same - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - adam = fluid.optimizer.Adam(0.001, parameter_list = emb.parameters()) - lr = adam.current_step_lr() - print(lr) # 0.001 - - # example2: PiecewiseDecay is used, return the step learning rate - with fluid.dygraph.guard(): - inp = np.random.uniform(-0.1, 0.1, [10, 10]).astype("float32") - linear = fluid.dygraph.nn.Linear(10, 10) - inp = fluid.dygraph.to_variable(inp) - out = linear(inp) - loss = fluid.layers.reduce_mean(out) - - bd = [2, 4, 6, 8] - value = [0.2, 0.4, 0.6, 0.8, 1.0] - adam = fluid.optimizer.Adam(fluid.dygraph.PiecewiseDecay(bd, value, 0), - parameter_list=linear.parameters()) - - # first step: learning rate is 0.2 - np.allclose(adam.current_step_lr(), 0.2, rtol=1e-06, atol=0.0) # True - - # learning rate for different steps - ret = [0.2, 0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0] - for i in range(12): - adam.minimize(loss) - lr = adam.current_step_lr() - np.allclose(lr, ret[i], rtol=1e-06, atol=0.0) # True - diff --git a/doc/paddle/api/paddle/fluid/optimizer/Adam_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/Adam_cn.rst deleted file mode 100644 index 2c8f8e567ab30678e7e346733c4f9b2928df4623..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/Adam_cn.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _cn_api_fluid_optimizer_Adam: - -Adam -------------------------------- - -.. py:attribute:: paddle.fluid.optimizer.Adam - - - - -``AdamOptimizer`` 的别名 - - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/AdamaxOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/AdamaxOptimizer_cn.rst deleted file mode 100644 index 1260ec166e3ac646520e7e20da85ff1712d96448..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/AdamaxOptimizer_cn.rst +++ /dev/null @@ -1,229 +0,0 @@ -.. _cn_api_fluid_optimizer_AdamaxOptimizer: - -AdamaxOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.AdamaxOptimizer(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, parameter_list=None, regularization=None, grad_clip=None, name=None) - - - - -Adamax优化器是参考 `Adam论文 `_ 第7节Adamax优化相关内容所实现的。Adamax算法是基于无穷大范数的 `Adam `_ 算法的一个变种,使学习率更新的算法更加稳定和简单。 - -其参数更新的计算公式如下: - -.. math:: - \\t = t + 1 -.. math:: - moment\_out=\beta_1∗moment+(1−\beta_1)∗grad -.. math:: - inf\_norm\_out=\max{(\beta_2∗inf\_norm+\epsilon, \left|grad\right|)} -.. math:: - learning\_rate=\frac{learning\_rate}{1-\beta_1^t} -.. math:: - param\_out=param−learning\_rate*\frac{moment\_out}{inf\_norm\_out}\\ - -相关论文:`Adam: A Method for Stochastic Optimization `_ - -论文中没有 ``epsilon`` 参数。但是,为了保持数值稳定性, 避免除0错误, 此处增加了这个参数。 - -参数: - - **learning_rate** (float|Variable,可选) - 学习率,用于参数更新的计算。可以是一个浮点型值或者一个值为浮点型的Variable,默认值为0.001 - - **beta1** (float, 可选) - 一阶矩估计的指数衰减率,默认值为0.9 - - **beta2** (float, 可选) - 二阶矩估计的指数衰减率,默认值为0.999 - - **epsilon** (float, 可选) - 保持数值稳定性的短浮点类型值,默认值为1e-08 - - **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为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,表示没有正则化。 - - **grad_clip** (GradientClipBase, 可选) – 梯度裁剪的策略,支持三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 默认值为None,此时将不进行梯度裁剪。 - - **name** (str, 可选)- 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None - -.. note:: - 目前 ``AdamaxOptimizer`` 不支持 Sparse Parameter Optimization(稀疏参数优化)。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # First create the Executor. - place = fluid.CPUPlace() # fluid.CUDAPlace(0) - exe = fluid.Executor(place) - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - adam = fluid.optimizer.AdamaxOptimizer(learning_rate=0.2) - adam.minimize(loss) - - # Run the startup program once and only once. - exe.run(startup_program) - - x = numpy.random.random(size=(10, 1)).astype('float32') - outs = exe.run(program=train_program, - feed={'X': x}, - fetch_list=[loss.name]) - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - -为网络添加反向计算过程,并根据反向计算所得的梯度,更新parameter_list中的Parameters,最小化网络损失值loss。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成集合,默认值为None - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -**代码示例**: - -.. code-block:: python - - import numpy - import paddle.fluid as fluid - - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - adam = fluid.optimizer.Adamax(learning_rate=0.2) - adam.minimize(loss) - - place = fluid.CPUPlace() # fluid.CUDAPlace(0) - exe = fluid.Executor(place) - - x = numpy.random.random(size=(10, 1)).astype('float32') - exe.run(fluid.default_startup_program()) - outs = exe.run(program=fluid.default_main_program(), - feed={'X': x}, - fetch_list=[loss.name]) - - - -.. py:method:: clear_gradients() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -清除需要优化的参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - optimizer = fluid.optimizer.AdamaxOptimizer(learning_rate=0.2, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - optimizer.minimize(out) - optimizer.clear_gradients() - -.. py:method:: set_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -手动设置当前 ``optimizer`` 的学习率。当使用LearningRateDecay时,无法使用该API手动设置学习率,因为这将导致冲突。 - -参数: - value (float|Variable) - 需要设置的学习率的值。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.dygraph.nn.Linear(10, 10) - adam = fluid.optimizer.Adam(0.1, parameter_list=linear.parameters()) - # 通过Python float数值手动设置学习率 - lr_list = [0.2, 0.3, 0.4, 0.5, 0.6] - for i in range(5): - adam.set_lr(lr_list[i]) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.2 - # current lr is 0.3 - # current lr is 0.4 - # current lr is 0.5 - # current lr is 0.6 - - - # 通过 框架的Variable 设置学习率 - lr_var = fluid.layers.create_global_var(shape=[1], value=0.7, dtype='float32') - adam.set_lr(lr_var) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.7 - - - -.. py:method:: current_step_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取当前步骤的学习率。当不使用LearningRateDecay时,每次调用的返回值都相同,否则返回当前步骤的学习率。 - -返回:当前步骤的学习率。 - -返回类型:float - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: LearningRateDecay is not used, return value is all the same - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - adam = fluid.optimizer.Adam(0.001, parameter_list = emb.parameters()) - lr = adam.current_step_lr() - print(lr) # 0.001 - - # example2: PiecewiseDecay is used, return the step learning rate - with fluid.dygraph.guard(): - inp = np.random.uniform(-0.1, 0.1, [10, 10]).astype("float32") - linear = fluid.dygraph.nn.Linear(10, 10) - inp = fluid.dygraph.to_variable(inp) - out = linear(inp) - loss = fluid.layers.reduce_mean(out) - - bd = [2, 4, 6, 8] - value = [0.2, 0.4, 0.6, 0.8, 1.0] - adam = fluid.optimizer.Adam(fluid.dygraph.PiecewiseDecay(bd, value, 0), - parameter_list=linear.parameters()) - - # first step: learning rate is 0.2 - np.allclose(adam.current_step_lr(), 0.2, rtol=1e-06, atol=0.0) # True - - # learning rate for different steps - ret = [0.2, 0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0] - for i in range(12): - adam.minimize(loss) - lr = adam.current_step_lr() - np.allclose(lr, ret[i], rtol=1e-06, atol=0.0) # True - diff --git a/doc/paddle/api/paddle/fluid/optimizer/Adamax_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/Adamax_cn.rst deleted file mode 100644 index 0413d5b109548833548752b8b9e22934633e5d42..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/Adamax_cn.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. _cn_api_fluid_optimizer_Adamax: - -Adamax -------------------------------- - -.. py:attribute:: paddle.fluid.optimizer.Adamax - - - - -``AdamaxOptimizer`` 的别名 - - - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/DGCMomentumOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/DGCMomentumOptimizer_cn.rst deleted file mode 100644 index f3b97033584826804284250a97d134650b813b17..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/DGCMomentumOptimizer_cn.rst +++ /dev/null @@ -1,155 +0,0 @@ -.. _cn_api_fluid_optimizer_DGCMomentumOptimizer: - -DGCMomentumOptimizer -------------------------------- - - -.. py:class:: paddle.fluid.optimizer.DGCMomentumOptimizer(learning_rate, momentum, rampup_begin_step, rampup_step=1, sparsity=[0.999], use_nesterov=False, local_grad_clip_norm=None, num_trainers=None, regularization=None, grad_clip=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -DGC(深度梯度压缩)Momentum 优化器。原始论文: https://arxiv.org/abs/1712.01887 - -DGC通过只传送重要梯度(稀疏更新)的方式,即只发送大于给定阈值的梯度,来减少通信带宽使用。 - -DGC会在本地累加剩余梯度以避免信息的丢失。最终这些梯度会大到足以传输。 - -因此,DGC只会立即发送大梯度,但随时间流逝所有梯度终将发送出去。 - -为确保精度不会损失,DGC在梯度稀疏化之上采用动量修正和局部梯度修剪(clip)来维持模型性能。 - -DGC还使用动量因子掩藏(momentum factor masking)和预训练(warm-up)来克服由于规约(reduced)通信而导致的数据陈旧性(staleness)问题。 - -这个优化器会执行如下操作: - -1. 从张量中获取的前TopK个重要梯度进行压缩,并将其用于allreduce通信以减少网络带宽使用。 -2. 调用momentum来优化代价函数。 - -参数: - - **learning_rate** (float | Variable) - 用于更新参数的学习率。可以是浮点值或由一个浮点型数据组成的Variable。 - - **momentum** (float) - 动量因子。 - - **rampup_begin_step** (int) - 进行梯度压缩的起步点。 - - **rampup_step** (int) - 使用稀疏预热的时间步长。默认值为1。例如:如果稀疏度为[0.75,0.9375,0.984375,0.996,0.999],并且rampup_step为100,则在0~19步时使用0.75,在20~39步时使用0.9375,依此类推。当到达sparsity数组末尾时,此后将会使用0.999。 - - **sparsity** (list [float]) - 从梯度张量中获取top个重要元素,比率为(1-当前稀疏度)。默认值为[0.999]。例如:如果sparsity为[0.99, 0.999],则将传输top [1%, 0.1%]的重要元素。 - - **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_L1Decay` 、 - :ref:`cn_api_fluid_regularizer_L2Decay` 。如果一个参数已经在 :ref:`cn_api_fluid_ParamAttr` 中设置了正则化,这里的正则化设置将被忽略; - 如果没有在 :ref:`cn_api_fluid_ParamAttr` 中设置正则化,这里的设置才会生效。默认值为None,表示没有正则化。 - - **grad_clip** (GradientClipByNorm, 可选) – 梯度裁剪的策略,``DGCMomentumOptimizer`` 仅支持 :ref:`cn_api_fluid_clip_GradientClipByNorm` 裁剪策略,如果不为该类型,将会抛出类型异常。默认值为None,此时将不进行梯度裁剪。 - - **name** (str,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - optimizer = fluid.optimizer.DGCMomentumOptimizer( - learning_rate=0.0001, - momentum=0.9, - rampup_step=1000, - rampup_begin_step=1252, - sparsity=[0.999, 0.999]) - - - - -.. py:method:: apply_gradients(params_grads) - -为给定的params_grads对附加优化算子,为minimize过程的第二步 - -参数: - - **params_grads** (list)- 用于优化的(param, grad)对组成的列表 - -返回: 附加在当前Program的算子组成的列表 - -返回类型: list - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - def network(): - x = fluid.layers.data(name='x', shape=[1], dtype='int64', lod_level=0) - y = fluid.layers.data(name='y', shape=[1], dtype='int64', lod_level=0) - emb_x = fluid.layers.embedding( - input=x, - size=[10, 2], - is_sparse=False) - emb_y = fluid.layers.embedding( - input=y, - size=[10, 2], - is_sparse=False) - - concat = fluid.layers.concat([emb_x, emb_y], axis=1) - - fc = fluid.layers.fc(input=concat, - name="fc", - size=1, - num_flatten_dims=1, - bias_attr=False) - loss = fluid.layers.reduce_mean(fc) - return loss - - loss = network() - optimizer = fluid.optimizer.SGD(learning_rate=0.1) - params_grads = optimizer.backward(loss) - # you may append operations for params_grads here - # ... - optimizer.apply_gradients(params_grads) - - -.. py:method:: apply_optimize(loss, startup_program, params_grads) - -为给定的params_grads对附加优化算子,为minimize过程的第二步。 - -参数: - - **loss** (Variable) – 用于优化过程的损失值变量 - - **startup_program** (Program) – 用于初始化在parameter_list中参数的startup_program - - **params_grads** (list)- 用于优化的(param, grad)对组成的列表 - -返回: 附加在当前Program的算子组成的列表 - -返回类型: list - -.. py:method:: backward(loss, startup_program=None, parameter_list=None, no_grad_set=None, callbacks=None) - -自动做diff来向当前program附加反向算子,为minimize过程的第一步。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的集合,默认值为None - - **callbacks** (list, 可选) – 当为某参数附加反向算子时所要运行的callables组成的列表 - -返回: 附加在当前Program的算子组成的列表 - -返回类型: list - -**代码示例** - -详见apply_gradients的示例 - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - - -通过更新parameter_list来添加操作,进而使损失最小化。 - -该算子相当于backward()和apply_gradients()功能的合体。 - -参数: - - **loss** (Variable) – 用于优化过程的损失值变量 - - **startup_program** (Program) – 用于初始化在parameter_list中参数的startup_program - - **parameter_list** (list) – 待更新的Variables组成的列表 - - **no_grad_set** (set|None) – 应该被无视的Variables集合 - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -返回类型: tuple - diff --git a/doc/paddle/api/paddle/fluid/optimizer/DecayedAdagradOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/DecayedAdagradOptimizer_cn.rst deleted file mode 100644 index 7777b674d3aa0c0cebd4f3a39c3a53f00634e239..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/DecayedAdagradOptimizer_cn.rst +++ /dev/null @@ -1,209 +0,0 @@ -.. _cn_api_fluid_optimizer_DecayedAdagradOptimizer: - -DecayedAdagradOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.DecayedAdagradOptimizer(learning_rate, decay=0.95, epsilon=1e-06, parameter_list=None, regularization=None, grad_clip=None, name=None) - - - - -Decayed Adagrad优化器,可以看做是引入了衰减率的 `Adagrad `_ 算法,用于解决使用 :ref:`cn_api_fluid_optimizer_AdagradOptimizer` 优化器时,在模型训练中后期学习率急剧下降的问题。 - -其参数更新的计算公式如下: - -.. math:: - moment\_out = decay*moment+(1-decay)*grad*grad -.. math:: - param\_out = param-\frac{learning\_rate*grad}{\sqrt{moment\_out}+\epsilon } - -在原论文中没有 ``epsilon`` 参数。但是,为了保持数值稳定性, 防止除0错误, 此处增加了这个参数。 - -相关论文:`Adaptive Subgradient Methods for Online Learning and Stochastic Optimization `_ - - -参数: - - **learning_rate** (float|Variable) - 学习率,用于参数更新的计算。可以是一个浮点型值或者一个值为浮点型的Variable - - **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。 - - **decay** (float,可选) – 衰减率,默认值为0.95 - - **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,表示没有正则化。 - - **grad_clip** (GradientClipBase, 可选) – 梯度裁剪的策略,支持三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 默认值为None,此时将不进行梯度裁剪。 - - **epsilon** (float,可选) - 保持数值稳定性的短浮点类型值,默认值为1e-06 - - **name** (str, 可选)- 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None - -.. note:: - 当前, ``DecayedAdagradOptimizer`` 不支持Sparse Parameter Optimization(稀疏参数优化) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - from paddle.fluid.optimizer import DecayedAdagrad - - x = layers.data( name='x', shape=[-1, 10], dtype='float32' ) - trans = layers.fc( x, 100 ) - cost = layers.reduce_mean( trans ) - optimizer = fluid.optimizer.DecayedAdagradOptimizer(learning_rate=0.2) - optimizer.minimize(cost) - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - -为网络添加反向计算过程,并根据反向计算所得的梯度,更新parameter_list中的Parameters,最小化网络损失值loss。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的集合,默认值为None - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -返回类型: tuple - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - inp = fluid.layers.data( - name="inp", shape=[2, 2], append_batch_size=False) - out = fluid.layers.fc(inp, size=3) - out = fluid.layers.reduce_sum(out) - optimizer = fluid.optimizer.DecayedAdagrad(learning_rate=0.2) - optimizer.minimize(out) - - np_inp = np.array([[1.0, 2.0], [3.0, 4.0]], dtype=np.float32) - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - exe.run( - feed={"inp": np_inp}, - fetch_list=[out.name]) - - -.. py:method:: clear_gradients() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -清除需要优化的参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - optimizer = fluid.optimizer.DecayedAdagradOptimizer(learning_rate=0.02, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - optimizer.minimize(out) - optimizer.clear_gradients() - -.. py:method:: set_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -手动设置当前 ``optimizer`` 的学习率。当使用LearningRateDecay时,无法使用该API手动设置学习率,因为这将导致冲突。 - -参数: - value (float|Variable) - 需要设置的学习率的值。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.dygraph.nn.Linear(10, 10) - adam = fluid.optimizer.Adam(0.1, parameter_list=linear.parameters()) - # 通过Python float数值手动设置学习率 - lr_list = [0.2, 0.3, 0.4, 0.5, 0.6] - for i in range(5): - adam.set_lr(lr_list[i]) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.2 - # current lr is 0.3 - # current lr is 0.4 - # current lr is 0.5 - # current lr is 0.6 - - - # 通过 框架的Variable 设置学习率 - lr_var = fluid.layers.create_global_var(shape=[1], value=0.7, dtype='float32') - adam.set_lr(lr_var) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.7 - - - -.. py:method:: current_step_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取当前步骤的学习率。当不使用LearningRateDecay时,每次调用的返回值都相同,否则返回当前步骤的学习率。 - -返回:当前步骤的学习率。 - -返回类型:float - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: LearningRateDecay is not used, return value is all the same - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - adam = fluid.optimizer.Adam(0.001, parameter_list = emb.parameters()) - lr = adam.current_step_lr() - print(lr) # 0.001 - - # example2: PiecewiseDecay is used, return the step learning rate - with fluid.dygraph.guard(): - inp = np.random.uniform(-0.1, 0.1, [10, 10]).astype("float32") - linear = fluid.dygraph.nn.Linear(10, 10) - inp = fluid.dygraph.to_variable(inp) - out = linear(inp) - loss = fluid.layers.reduce_mean(out) - - bd = [2, 4, 6, 8] - value = [0.2, 0.4, 0.6, 0.8, 1.0] - adam = fluid.optimizer.Adam(fluid.dygraph.PiecewiseDecay(bd, value, 0), - parameter_list=linear.parameters()) - - # first step: learning rate is 0.2 - np.allclose(adam.current_step_lr(), 0.2, rtol=1e-06, atol=0.0) # True - - # learning rate for different steps - ret = [0.2, 0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0] - for i in range(12): - adam.minimize(loss) - lr = adam.current_step_lr() - np.allclose(lr, ret[i], rtol=1e-06, atol=0.0) # True - diff --git a/doc/paddle/api/paddle/fluid/optimizer/DecayedAdagrad_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/DecayedAdagrad_cn.rst deleted file mode 100644 index 215758e1f13843b4f60d299c229bac6b7721c5c4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/DecayedAdagrad_cn.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _cn_api_fluid_optimizer_DecayedAdagrad: - -DecayedAdagrad -------------------------------- - -.. py:attribute:: paddle.fluid.optimizer.DecayedAdagrad - - - - -``DecayedAdagradOptimizer`` 的别名 - - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/DpsgdOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/DpsgdOptimizer_cn.rst deleted file mode 100644 index 6bfeeec2248ee46f5f118aa73905996fd2982bac..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/DpsgdOptimizer_cn.rst +++ /dev/null @@ -1,100 +0,0 @@ -.. _cn_api_fluid_optimizer_DpsgdOptimizer: - -DpsgdOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.DpsgdOptimizer(learning_rate=0.001, clip=0.9, batch_size=0.999, sigma=1e-8) - - - - -Dpsgd优化器是参考CCS16论文 `《Deep Learning with Differential Privacy》 `_ 相关内容实现的。 - -其参数更新的计算公式如下: - -.. math:: - g\_clip_t = \frac{g_t}{\max{(1, \frac{||g_t||^2}{clip})}}\\ -.. math:: - g\_noise_t = g\_clip_t + \frac{gaussian\_noise(\sigma)}{batch\_size}\\ -.. math:: - param\_out=param−learning\_rate*g\_noise_t - - -参数: - - **learning_rate** (float|Variable,可选) - 学习率,用于参数更新的计算。可以是一个浮点型值或者一个值为浮点型的Variable,默认值为0.001 - - **clip** (float, 可选) - 裁剪梯度的L2正则项值的阈值下界,若梯度L2正则项值小于clip,则取clip作为梯度L2正则项值,默认值为0.9 - - **batch_size** (float, 可选) - 每个batch训练的样本数,默认值为0.999 - - **sigma** (float, 可选) - 参数更新时,会在梯度后添加一个满足高斯分布的噪声。此为高斯噪声的方差,默认值为1e-08 - -.. note:: - 目前 ``DpsgdOptimizer`` 不支持 Sparse Parameter Optimization(稀疏参数优化)。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # First create the Executor. - place = fluid.CPUPlace() # fluid.CUDAPlace(0) - exe = fluid.Executor(place) - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - optimizer = fluid.optimizer.Dpsgd(learning_rate=0.01, clip=10.0, batch_size=16.0, sigma=1.0) - optimizer.minimize(loss) - - # Run the startup program once and only once. - exe.run(startup_program) - - x = numpy.random.random(size=(10, 1)).astype('float32') - outs = exe.run(program=train_program, - feed={'X': x}, - fetch_list=[loss.name]) - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - -为网络添加反向计算过程,并根据反向计算所得的梯度,更新parameter_list中的Parameters,最小化网络损失值loss。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成集合,默认值为None - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -**代码示例**: - -.. code-block:: python - - import numpy - import paddle.fluid as fluid - - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - adam = fluid.optimizer.Dpsgd(learning_rate=0.2) - adam.minimize(loss) - - place = fluid.CPUPlace() # fluid.CUDAPlace(0) - exe = fluid.Executor(place) - - x = numpy.random.random(size=(10, 1)).astype('float32') - exe.run(fluid.default_startup_program()) - outs = exe.run(program=fluid.default_main_program(), - feed={'X': x}, - fetch_list=[loss.name]) - - - - - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/Dpsgd_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/Dpsgd_cn.rst deleted file mode 100644 index a6fde680ba5c3c0e82913e85b1bac83aa8d7623c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/Dpsgd_cn.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. _cn_api_fluid_optimizer_Dpsgd: - -Dpsgd -------------------------------- - -.. py:attribute:: paddle.fluid.optimizer.Dpsgd - - - - -``DpsgdOptimizer`` 的别名 - - - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/ExponentialMovingAverage_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/ExponentialMovingAverage_cn.rst deleted file mode 100644 index f2e6bfa7d4533a26c8c7d83f4b15f72fead6b459..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/ExponentialMovingAverage_cn.rst +++ /dev/null @@ -1,110 +0,0 @@ -.. _cn_api_fluid_optimizer_ExponentialMovingAverage: - -ExponentialMovingAverage -------------------------------- - - -.. py:class:: paddle.fluid.optimizer.ExponentialMovingAverage(decay=0.999, thres_steps=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -用指数衰减计算参数的滑动平均值。给定参数 :math:`\theta` ,它的指数滑动平均值 (exponential moving average, EMA) 为 - -.. math:: - \begin{align}\begin{aligned}\text{EMA}_0 & = 0\\\text{EMA}_t & = \text{decay} * \text{EMA}_{t-1} + (1 - \text{decay}) * \theta_t\end{aligned}\end{align} - - -用 ``update()`` 方法计算出的平均结果将保存在由实例化对象创建和维护的临时变量中,并且可以通过调用 ``apply()`` 方法把结果应用于当前模型的参数。同时,可用 ``restore()`` 方法恢复原始参数。 - -**偏置校正** 所有的滑动平均均初始化为 :math:`0` ,因此它们相对于零是有偏的,可以通过除以因子 :math:`(1 - \text{decay}^t)` 来校正,因此在调用 ``apply()`` 方法时,作用于参数的真实滑动平均值将为: - -.. math:: - \widehat{\text{EMA}}_t = \frac{\text{EMA}_t}{1 - \text{decay}^t} - -**衰减率调节** 一个非常接近于1的很大的衰减率将会导致平均值滑动得很慢。更优的策略是,开始时设置一个相对较小的衰减率。参数 ``thres_steps`` 允许用户传递一个变量以设置衰减率,在这种情况下, -真实的衰减率变为 : - -.. math:: - \min(\text{decay}, \frac{1 + \text{thres_steps}}{10 + \text{thres_steps}}) - -通常 ``thres_steps`` 可以是全局的训练迭代步数。 - - -参数: - - **decay** (float) – 指数衰减率,通常接近1,如0.999,0.9999,…… - - **thres_steps** (Variable, 可选) – 调节衰减率的阈值步数,默认值为 None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - -**代码示例** - -.. code-block:: python - - import numpy - import paddle - import paddle.fluid as fluid - - data = fluid.layers.data(name='x', shape=[5], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - cost = fluid.layers.mean(hidden) - - test_program = fluid.default_main_program().clone(for_test=True) - - optimizer = fluid.optimizer.Adam(learning_rate=0.001) - optimizer.minimize(cost) - - global_steps = fluid.layers.learning_rate_scheduler._decay_step_counter() - ema = fluid.optimizer.ExponentialMovingAverage(0.999, thres_steps=global_steps) - ema.update() - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - for pass_id in range(3): - for batch_id in range(6): - data = numpy.random.random(size=(10, 5)).astype('float32') - exe.run(program=fluid.default_main_program(), - feed={'x': data}, - fetch_list=[cost.name]) - - # usage 1 - with ema.apply(exe): - data = numpy.random.random(size=(10, 5)).astype('float32') - exe.run(program=test_program, - feed={'x': data}, - fetch_list=[hidden.name]) - - - # usage 2 - with ema.apply(exe, need_restore=False): - data = numpy.random.random(size=(10, 5)).astype('float32') - exe.run(program=test_program, - feed={'x': data}, - fetch_list=[hidden.name]) - ema.restore(exe) - - -.. py:method:: update() - -更新指数滑动平均,在训练过程中需调用此方法。 - -.. py:method:: apply(executor, need_restore=True) - -模型评测时,将滑动平均的结果作用在参数上。 - -参数: - - **executor** (Executor) – 将滑动平均值作用在参数上的执行器。 - - **need_restore** (bool) –是否在结束后恢复原始参数,默认值为 ``True`` 。 - -.. py:method:: restore(executor) - -恢复参数。 - -参数: - - **executor** (Executor) – 执行恢复动作的执行器。 - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/FtrlOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/FtrlOptimizer_cn.rst deleted file mode 100644 index 149c890ea37a12d5983a34d3a6ee0a677d7ad65a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/FtrlOptimizer_cn.rst +++ /dev/null @@ -1,219 +0,0 @@ -.. _cn_api_fluid_optimizer_FtrlOptimizer: - -FtrlOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.FtrlOptimizer(learning_rate, l1=0.0, l2=0.0, lr_power=-0.5, parameter_list=None, regularization=None, grad_clip=None, name=None) - - - - -该接口实现FTRL (Follow The Regularized Leader) Optimizer. - -FTRL 原始论文: ( `https://www.eecs.tufts.edu/~dsculley/papers/ad-click-prediction.pdf `_) - - -.. math:: - &\qquad new\_accum=squared\_accum+grad^2\\\\ - &\qquad if(lr\_power==−0.5):\\ - &\qquad \qquad linear\_accum+=grad-\frac{\sqrt{new\_accum}-\sqrt{squared\_accum}}{learning\_rate*param}\\ - &\qquad else:\\ - &\qquad \qquad linear\_accum+=grad-\frac{new\_accum^{-lr\_power}-accum^{-lr\_power}}{learning\_rate*param}\\\\ - &\qquad x=l1*sign(linear\_accum)−linear\_accum\\\\ - &\qquad if(lr\_power==−0.5):\\ - &\qquad \qquad y=\frac{\sqrt{new\_accum}}{learning\_rate}+(2*l2)\\ - &\qquad \qquad pre\_shrink=\frac{x}{y}\\ - &\qquad \qquad param=(abs(linear\_accum)>l1).select(pre\_shrink,0.0)\\ - &\qquad else:\\ - &\qquad \qquad y=\frac{new\_accum^{-lr\_power}}{learning\_rate}+(2*l2)\\ - &\qquad \qquad pre\_shrink=\frac{x}{y}\\ - &\qquad \qquad param=(abs(linear\_accum)>l1).select(pre\_shrink,0.0)\\\\ - &\qquad squared\_accum+=grad^2 - - -参数: - - **learning_rate** (float|Variable)- 全局学习率。 - - **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。 - - **l1** (float,可选) - L1 regularization strength,默认值0.0。 - - **l2** (float,可选) - L2 regularization strength,默认值0.0。 - - **lr_power** (float,可选) - 学习率降低指数,默认值-0.5。 - - **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,表示没有正则化。 - - **grad_clip** (GradientClipBase, 可选) – 梯度裁剪的策略,支持三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 默认值为None,此时将不进行梯度裁剪。 - - **name** (str, 可选) - 可选的名称前缀,一般无需设置,默认值为None。 - -抛出异常: - - ``ValueError`` - 如果 ``learning_rate`` , ``rho`` , ``epsilon`` , ``momentum`` 为 None. - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - place = fluid.CPUPlace() - main = fluid.Program() - with fluid.program_guard(main): - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_cost = fluid.layers.mean(cost) - - ftrl_optimizer = fluid.optimizer.Ftrl(learning_rate=0.1) - ftrl_optimizer.minimize(avg_cost) - - fetch_list = [avg_cost] - train_reader = paddle.batch( - paddle.dataset.uci_housing.train(), batch_size=1) - feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in train_reader(): - exe.run(main, feed=feeder.feed(data), fetch_list=fetch_list) - - -**注意:目前, FtrlOptimizer 不支持 sparse parameter optimization。** - - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - - -通过更新parameter_list来添加操作,进而使损失最小化。 - -该算子相当于backward()和apply_gradients()功能的合体。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的集合,默认值为None - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -返回类型: tuple - - -.. py:method:: clear_gradients() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -清除需要优化的参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - optimizer = fluid.optimizer.FtrlOptimizer(learning_rate=0.02, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - optimizer.minimize(out) - optimizer.clear_gradients() - -.. py:method:: set_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -手动设置当前 ``optimizer`` 的学习率。当使用LearningRateDecay时,无法使用该API手动设置学习率,因为这将导致冲突。 - -参数: - value (float|Variable) - 需要设置的学习率的值。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.dygraph.nn.Linear(10, 10) - adam = fluid.optimizer.Adam(0.1, parameter_list=linear.parameters()) - # 通过Python float数值手动设置学习率 - lr_list = [0.2, 0.3, 0.4, 0.5, 0.6] - for i in range(5): - adam.set_lr(lr_list[i]) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.2 - # current lr is 0.3 - # current lr is 0.4 - # current lr is 0.5 - # current lr is 0.6 - - - # 通过 框架的Variable 设置学习率 - lr_var = fluid.layers.create_global_var(shape=[1], value=0.7, dtype='float32') - adam.set_lr(lr_var) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.7 - - -.. py:method:: current_step_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取当前步骤的学习率。当不使用LearningRateDecay时,每次调用的返回值都相同,否则返回当前步骤的学习率。 - -返回:当前步骤的学习率。 - -返回类型:float - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: LearningRateDecay is not used, return value is all the same - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - adam = fluid.optimizer.Adam(0.001, parameter_list = emb.parameters()) - lr = adam.current_step_lr() - print(lr) # 0.001 - - # example2: PiecewiseDecay is used, return the step learning rate - with fluid.dygraph.guard(): - inp = np.random.uniform(-0.1, 0.1, [10, 10]).astype("float32") - linear = fluid.dygraph.nn.Linear(10, 10) - inp = fluid.dygraph.to_variable(inp) - out = linear(inp) - loss = fluid.layers.reduce_mean(out) - - bd = [2, 4, 6, 8] - value = [0.2, 0.4, 0.6, 0.8, 1.0] - adam = fluid.optimizer.Adam(fluid.dygraph.PiecewiseDecay(bd, value, 0), - parameter_list=linear.parameters()) - - # first step: learning rate is 0.2 - np.allclose(adam.current_step_lr(), 0.2, rtol=1e-06, atol=0.0) # True - - # learning rate for different steps - ret = [0.2, 0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0] - for i in range(12): - adam.minimize(loss) - lr = adam.current_step_lr() - np.allclose(lr, ret[i], rtol=1e-06, atol=0.0) # True - diff --git a/doc/paddle/api/paddle/fluid/optimizer/Ftrl_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/Ftrl_cn.rst deleted file mode 100644 index 51856bf25d8165751d74df062408e21a517af929..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/Ftrl_cn.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. _cn_api_fluid_optimizer_Ftrl: - -Ftrl -------------------------------- - -.. py:attribute:: paddle.fluid.optimizer.Ftrl - - - - -``FtrlOptimizer`` 的别名 - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/LarsMomentumOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/LarsMomentumOptimizer_cn.rst deleted file mode 100644 index 63f22d05a09267924e4e5081fec6d2e4b757910d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/LarsMomentumOptimizer_cn.rst +++ /dev/null @@ -1,196 +0,0 @@ -.. _cn_api_fluid_optimizer_LarsMomentumOptimizer: - -LarsMomentumOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.LarsMomentumOptimizer(learning_rate, momentum, lars_coeff=0.001, lars_weight_decay=0.0005, parameter_list=None, regularization=None, grad_clip=None, name=None) - - - - -该接口实现LARS支持的Momentum优化器 - -公式作如下更新: - -.. math:: - - & local\_learning\_rate = learning\_rate * lars\_coeff * \ - \frac{||param||}{||gradient|| + lars\_weight\_decay * ||param||}\\ - & velocity = mu * velocity + local\_learning\_rate * (gradient + lars\_weight\_decay * param)\\ - & param = param - velocity - -参数: - - **learning_rate** (float|Variable) - 学习率,用于参数更新。作为数据参数,可以是浮点型值或含有一个浮点型值的变量。 - - **momentum** (float) - 动量因子。 - - **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。 - - **lars_coeff** (float,可选) - 定义LARS本地学习率的权重,默认值0.001。 - - **lars_weight_decay** (float,可选) - 使用LARS进行衰减的权重衰减系数,默认值0.0005。 - - **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,表示没有正则化。 - - **grad_clip** (GradientClipBase, 可选) – 梯度裁剪的策略,支持三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 默认值为None,此时将不进行梯度裁剪。 - - **name** (str, 可选) - 可选的名称前缀,一般无需设置,默认值为None。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - np_inp = np.array([[1.0, 2.0], [3.0, 4.0]], dtype=np.float32) - inp = fluid.layers.data( - name="inp", shape=[2, 2], append_batch_size=False) - out = fluid.layers.fc(inp, size=3) - out = fluid.layers.reduce_sum(out) - optimizer = fluid.optimizer.LarsMomentumOptimizer(learning_rate=0.001, momentum=0.9) - optimizer.minimize(out) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - exe.run( - feed={"inp": np_inp}, - fetch_list=[out.name]) - - - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - - -通过更新parameter_list来添加操作,进而使损失最小化。 - -该算子相当于backward()和apply_gradients()功能的合体。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的的集合,默认值为None - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -返回类型: tuple - - -.. py:method:: clear_gradients() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -清除需要优化的参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - optimizer = fluid.optimizer.LarsMomentumOptimizer(learning_rate=0.001, momentum=0.9, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - optimizer.minimize(out) - optimizer.clear_gradients() - -.. py:method:: set_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -手动设置当前 ``optimizer`` 的学习率。当使用LearningRateDecay时,无法使用该API手动设置学习率,因为这将导致冲突。 - -参数: - value (float|Variable) - 需要设置的学习率的值。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.dygraph.nn.Linear(10, 10) - adam = fluid.optimizer.Adam(0.1, parameter_list=linear.parameters()) - # 通过Python float数值手动设置学习率 - lr_list = [0.2, 0.3, 0.4, 0.5, 0.6] - for i in range(5): - adam.set_lr(lr_list[i]) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.2 - # current lr is 0.3 - # current lr is 0.4 - # current lr is 0.5 - # current lr is 0.6 - - - # 通过 框架的Variable 设置学习率 - lr_var = fluid.layers.create_global_var(shape=[1], value=0.7, dtype='float32') - adam.set_lr(lr_var) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.7 - - - -.. py:method:: current_step_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取当前步骤的学习率。当不使用LearningRateDecay时,每次调用的返回值都相同,否则返回当前步骤的学习率。 - -返回:当前步骤的学习率。 - -返回类型:float - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: LearningRateDecay is not used, return value is all the same - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - adam = fluid.optimizer.Adam(0.001, parameter_list = emb.parameters()) - lr = adam.current_step_lr() - print(lr) # 0.001 - - # example2: PiecewiseDecay is used, return the step learning rate - with fluid.dygraph.guard(): - inp = np.random.uniform(-0.1, 0.1, [10, 10]).astype("float32") - linear = fluid.dygraph.nn.Linear(10, 10) - inp = fluid.dygraph.to_variable(inp) - out = linear(inp) - loss = fluid.layers.reduce_mean(out) - - bd = [2, 4, 6, 8] - value = [0.2, 0.4, 0.6, 0.8, 1.0] - adam = fluid.optimizer.Adam(fluid.dygraph.PiecewiseDecay(bd, value, 0), - parameter_list=linear.parameters()) - - # first step: learning rate is 0.2 - np.allclose(adam.current_step_lr(), 0.2, rtol=1e-06, atol=0.0) # True - - # learning rate for different steps - ret = [0.2, 0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0] - for i in range(12): - adam.minimize(loss) - lr = adam.current_step_lr() - np.allclose(lr, ret[i], rtol=1e-06, atol=0.0) # True - diff --git a/doc/paddle/api/paddle/fluid/optimizer/LarsMomentum_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/LarsMomentum_cn.rst deleted file mode 100644 index d5d4db1b2d8fc6eb306b40ab6d24a58418aa69e2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/LarsMomentum_cn.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _cn_api_fluid_optimizer_LarsMomentum: - -LarsMomentum -------------------------------- - -.. py:attribute:: paddle.fluid.optimizer.LarsMomentum - - - - -``fluid.optimizer.LarsMomentumOptimizer`` 的别名 - - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/LookaheadOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/LookaheadOptimizer_cn.rst deleted file mode 100644 index 2ea449f453bdeecc0e2d9e9e473218b04cfb767e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/LookaheadOptimizer_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_optimizer_LookaheadOptimizer: - -LookaheadOptimizer -------------------------------- - - -.. py:class:: paddle.fluid.optimizer.LookaheadOptimizer(inner_optimizer, alpha=0.5, k=5) - -:api_attr: 声明式编程模式(静态图) - - - -本类实现了Lookahead优化算法:https://arxiv.org/abs/1907.08610。Lookahead优化算法在内存中保存两部分参数:快参数和慢参数。每个训练步次,inner_optimizer都更新快参数;每隔k个训练步次,Lookahead更新慢参数,如下: - -.. math:: - - & slow\_param_t = slow\_param_{t-1} + \alpha * (fast\_param_{t-1} - slow\_param_{t-1}) - - & fast\_param_t = slow\_param_t - -参数: - - **inner_optimizer** (Optimizer) - 基础优化器,如SGD - - **alpha** (float) - Lookahead 的学习率 - - **k** (int) - 慢参数更新的频率:k次一更新 - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy.random as random - - x = fluid.layers.data(name='x', shape=[2], dtype='float32') - label = fluid.layers.data(name="label", shape=[1], dtype="int64") - y = fluid.layers.fc(input=[x], size=2, act="softmax") - loss = fluid.layers.cross_entropy(input=y, label=label) - loss = fluid.layers.mean(x=loss) - sgd = fluid.optimizer.SGD(learning_rate=0.01) - optimizer = fluid.optimizer.LookaheadOptimizer(sgd, - alpha=0.5, - k=5) - optimizer.minimize(loss) - main_program = fluid.default_main_program() - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - def train_reader(limit=5): - for i in range(limit): - yield random.random([2]).astype('float32'), random.random([1]).astype('int64') - - feeder = fluid.DataFeeder(feed_list=[x, label], place=place) - reader = paddle.batch(paddle.reader.shuffle(train_reader, buf_size=50000),batch_size=1) - - for batch_data in reader(): - exe.run(fluid.default_main_program(), - feed=feeder.feed(batch_data)) - diff --git a/doc/paddle/api/paddle/fluid/optimizer/ModelAverage_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/ModelAverage_cn.rst deleted file mode 100644 index 9ef6dfeae328669f5f385d7db0bb8a2249f5f2ad..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/ModelAverage_cn.rst +++ /dev/null @@ -1,173 +0,0 @@ -.. _cn_api_fluid_optimizer_ModelAverage: - -ModelAverage -------------------------------- - - -.. py:class:: paddle.fluid.optimizer.ModelAverage(average_window_rate, min_average_window=10000, max_average_window=10000, regularization=None, name=None) - -:api_attr: 声明式编程模式(静态图) - - - -ModelAverage优化器,在训练过程中累积特定连续的历史Parameters,累积的历史范围可以用传入的average_window参数来控制,在预测时使用平均后的Parameters,通常可以提高预测的精度。 - -在滑动窗口中累积Parameters的平均值,将结果将保存在临时变量中,通过调用 ``apply()`` 方法可应用于当前模型的Parameters,使用 ``restore()`` 方法恢复当前模型Parameters的值。 - -计算平均值的窗口大小由 ``average_window_rate`` , ``min_average_window`` , ``max_average_window`` 以及当前Parameters更新次数(num_updates)共同决定。 - -累积次数(num_accumulates)大于特定窗口阈值(average_window)时,将累积的Parameters临时变量置为0.0,这几个参数的作用通过以下示例代码说明: - -.. code-block:: python - - if num_accumulates >= min_average_window and num_accumulates >= min(max_average_window, num_updates * average_window_rate): - num_accumulates = 0 - -上述条件判断语句中,num_accumulates表示当前累积的次数,可以抽象理解为累积窗口的长度,窗口长度至少要达到min_average_window参数设定的长度,并且不能超过max_average_window参数或者num_updates * average_window_rate规定的长度,其中num_updates表示当前Parameters更新的次数,average_window_rate是一个计算窗口长度的系数。 - -参数: - - **average_window_rate** (float) – 相对于Parameters更新次数的窗口长度计算比率 - - **min_average_window** (int, 可选) – 平均值计算窗口长度的最小值,默认值为10000 - - **max_average_window** (int, 可选) – 平均值计算窗口长度的最大值,推荐设置为一轮训练中mini-batchs的数目,默认值为10000 - - **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 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # 首先创建执行引擎 - place = fluid.CPUPlace() # fluid.CUDAPlace(0) - exe = fluid.Executor(place) - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - # 构建net - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - optimizer = fluid.optimizer.Momentum(learning_rate=0.2, momentum=0.1) - optimizer.minimize(loss) - - # 构建ModelAverage优化器 - model_average = fluid.optimizer.ModelAverage(0.15, - min_average_window=10000, - max_average_window=12500) - exe.run(startup_program) - for i in range(12500): - x = numpy.random.random(size=(10, 1)).astype('float32') - outs = exe.run(program=train_program, - feed={'X': x}, - fetch_list=[loss.name]) - # 应用ModelAverage - with model_average.apply(exe): - x = numpy.random.random(size=(10, 1)).astype('float32') - exe.run(program=train_program, - feed={'X': x}, - fetch_list=[loss.name]) - - -.. py:method:: apply(executor, need_restore=True) - -将累积Parameters的平均值应用于当前网络的Parameters。 - -参数: - - **executor** (fluid.Executor) – 当前网络的执行器 - - **need_restore** (bool) – 恢复标志变量,设为True时,执行完成后会将网络的Parameters恢复为网络默认的值,设为False将不会恢复,默认值True - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # 首先创建执行引擎 - place = fluid.CPUPlace() # fluid.CUDAPlace(0) - exe = fluid.Executor(place) - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - # 构建net - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - optimizer = fluid.optimizer.Momentum(learning_rate=0.2, momentum=0.1) - optimizer.minimize(loss) - - # 构建ModelAverage优化器 - model_average = fluid.optimizer.ModelAverage(0.15, - min_average_window=10000, - max_average_window=12500) - exe.run(startup_program) - for i in range(12500): - x = numpy.random.random(size=(10, 1)).astype('float32') - outs = exe.run(program=train_program, - feed={'X': x}, - fetch_list=[loss.name]) - - # 应用ModelAverage - with model_average.apply(exe): - x = numpy.random.random(size=(10, 1)).astype('float32') - exe.run(program=train_program, - feed={'X': x}, - fetch_list=[loss.name]) - -.. py:method:: restore(executor) - -恢复当前网络的Parameters值 - -参数: - - **executor** (fluid.Executor) – 当前网络的执行器 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # 首先创建执行引擎 - place = fluid.CPUPlace() # fluid.CUDAPlace(0) - exe = fluid.Executor(place) - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - # 构建net - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - optimizer = fluid.optimizer.Momentum(learning_rate=0.2, momentum=0.1) - optimizer.minimize(loss) - - # 构建ModelAverage优化器 - model_average = fluid.optimizer.ModelAverage(0.15, - min_average_window=10000, - max_average_window=12500) - exe.run(startup_program) - for i in range(12500): - x = numpy.random.random(size=(10, 1)).astype('float32') - outs = exe.run(program=train_program, - feed={'X': x}, - fetch_list=[loss.name]) - - # 应用ModelAverage - with model_average.apply(exe, False): - x = numpy.random.random(size=(10, 1)).astype('float32') - exe.run(program=train_program, - feed={'X': x}, - fetch_list=[loss.name]) - # 恢复网络Parameters - model_average.restore(exe) diff --git a/doc/paddle/api/paddle/fluid/optimizer/MomentumOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/MomentumOptimizer_cn.rst deleted file mode 100644 index c2c39c5a8fad49c25a80ba2668eb0a332698dda7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/MomentumOptimizer_cn.rst +++ /dev/null @@ -1,229 +0,0 @@ -.. _cn_api_fluid_optimizer_MomentumOptimizer: - -MomentumOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.MomentumOptimizer(learning_rate, momentum, parameter_list=None, use_nesterov=False, regularization=None, grad_clip=None, name=None) - - - - -该接口实现含有速度状态的Simple Momentum 优化器 - -该优化器含有牛顿动量标志,公式更新如下: - -.. math:: - & velocity = mu * velocity + gradient\\ - & if (use\_nesterov):\\ - &\quad param = param - (gradient + mu * velocity) * learning\_rate\\ - & else:\\&\quad param = param - learning\_rate * velocity - -参数: - - **learning_rate** (float|Variable) - 学习率,用于参数更新。作为数据参数,可以是浮点型值或含有一个浮点型值的变量。 - - **momentum** (float) - 动量因子。 - - **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。 - - **use_nesterov** (bool,可选) - 赋能牛顿动量,默认值False。 - - **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,表示没有正则化。 - - **grad_clip** (GradientClipBase, 可选) – 梯度裁剪的策略,支持三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 默认值为None,此时将不进行梯度裁剪。 - - **name** (str, 可选) - 可选的名称前缀,一般无需设置,默认值为None。 - -**代码示例**: - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - place = fluid.CPUPlace() - main = fluid.Program() - with fluid.program_guard(main): - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_cost = fluid.layers.mean(cost) - - moment_optimizer = fluid.optimizer.MomentumOptimizer(learning_rate=0.001, momentum=0.9) - moment_optimizer.minimize(avg_cost) - - fetch_list = [avg_cost] - train_reader = paddle.batch( - paddle.dataset.uci_housing.train(), batch_size=1) - feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in train_reader(): - exe.run(main, feed=feeder.feed(data), fetch_list=fetch_list) - - - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - -为网络添加反向计算过程,并根据反向计算所得的梯度,更新parameter_list中的Parameters,最小化网络损失值loss。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的集合,默认值为None - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -返回类型: tuple - -**代码示例**: - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - place = fluid.CPUPlace() - main = fluid.Program() - with fluid.program_guard(main): - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_cost = fluid.layers.mean(cost) - - moment_optimizer = fluid.optimizer.MomentumOptimizer(learning_rate=0.001, momentum=0.9) - moment_optimizer.minimize(avg_cost) - - fetch_list = [avg_cost] - train_reader = paddle.batch( - paddle.dataset.uci_housing.train(), batch_size=1) - feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in train_reader(): - exe.run(main, feed=feeder.feed(data), fetch_list=fetch_list) - - - -.. py:method:: clear_gradients() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -清除需要优化的参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - optimizer = fluid.optimizer.MomentumOptimizer(learning_rate=0.001, momentum=0.9, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - optimizer.minimize(out) - optimizer.clear_gradients() - - -.. py:method:: set_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -手动设置当前 ``optimizer`` 的学习率。当使用LearningRateDecay时,无法使用该API手动设置学习率,因为这将导致冲突。 - -参数: - value (float|Variable) - 需要设置的学习率的值。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.dygraph.nn.Linear(10, 10) - adam = fluid.optimizer.Adam(0.1, parameter_list=linear.parameters()) - # 通过Python float数值手动设置学习率 - lr_list = [0.2, 0.3, 0.4, 0.5, 0.6] - for i in range(5): - adam.set_lr(lr_list[i]) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.2 - # current lr is 0.3 - # current lr is 0.4 - # current lr is 0.5 - # current lr is 0.6 - - - # 通过 框架的Variable 设置学习率 - lr_var = fluid.layers.create_global_var(shape=[1], value=0.7, dtype='float32') - adam.set_lr(lr_var) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.7 - - - -.. py:method:: current_step_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取当前步骤的学习率。当不使用LearningRateDecay时,每次调用的返回值都相同,否则返回当前步骤的学习率。 - -返回:当前步骤的学习率。 - -返回类型:float - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: LearningRateDecay is not used, return value is all the same - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - adam = fluid.optimizer.Adam(0.001, parameter_list = emb.parameters()) - lr = adam.current_step_lr() - print(lr) # 0.001 - - # example2: PiecewiseDecay is used, return the step learning rate - with fluid.dygraph.guard(): - inp = np.random.uniform(-0.1, 0.1, [10, 10]).astype("float32") - linear = fluid.dygraph.nn.Linear(10, 10) - inp = fluid.dygraph.to_variable(inp) - out = linear(inp) - loss = fluid.layers.reduce_mean(out) - - bd = [2, 4, 6, 8] - value = [0.2, 0.4, 0.6, 0.8, 1.0] - adam = fluid.optimizer.Adam(fluid.dygraph.PiecewiseDecay(bd, value, 0), - parameter_list=linear.parameters()) - - # first step: learning rate is 0.2 - np.allclose(adam.current_step_lr(), 0.2, rtol=1e-06, atol=0.0) # True - - # learning rate for different steps - ret = [0.2, 0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0] - for i in range(12): - adam.minimize(loss) - lr = adam.current_step_lr() - np.allclose(lr, ret[i], rtol=1e-06, atol=0.0) # True - diff --git a/doc/paddle/api/paddle/fluid/optimizer/Momentum_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/Momentum_cn.rst deleted file mode 100644 index 80e940e19f2fbc1a92e60f20fe32a3200c8ba94b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/Momentum_cn.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _cn_api_fluid_optimizer_Momentum: - -Momentum -------------------------------- - -.. py:attribute:: paddle.fluid.optimizer.Momentum - - - - -``MomentumOptimizer`` 的别名 - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/RMSPropOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/RMSPropOptimizer_cn.rst deleted file mode 100644 index ac30efa78236c14772c6e5df08cec327e2abede1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/RMSPropOptimizer_cn.rst +++ /dev/null @@ -1,245 +0,0 @@ -.. _cn_api_fluid_optimizer_RMSPropOptimizer: - -RMSPropOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.RMSPropOptimizer(learning_rate, rho=0.95, epsilon=1e-06, momentum=0.0, centered=False, parameter_list=None, regularization=None, grad_clip=None, name=None) - - - - -该接口实现均方根传播(RMSProp)法,是一种未发表的,自适应学习率的方法。原演示幻灯片中提出了RMSProp:[http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf]中的第29张。等式如下所示: - -.. math:: - r(w, t) & = \rho r(w, t-1) + (1 - \rho)(\nabla Q_{i}(w))^2\\ - w & = w - \frac{\eta} {\sqrt{r(w,t) + \epsilon}} \nabla Q_{i}(w) - -第一个等式计算每个权重平方梯度的移动平均值,然后将梯度除以 :math:`sqrtv(w,t)` 。 - -.. math:: - r(w, t) & = \rho r(w, t-1) + (1 - \rho)(\nabla Q_{i}(w))^2\\ - v(w, t) & = \beta v(w, t-1) +\frac{\eta} {\sqrt{r(w,t) +\epsilon}} \nabla Q_{i}(w)\\ - w & = w - v(w, t) - -如果居中为真: - -.. math:: - r(w, t) & = \rho r(w, t-1) + (1 - \rho)(\nabla Q_{i}(w))^2\\ - g(w, t) & = \rho g(w, t-1) + (1 -\rho)\nabla Q_{i}(w)\\ - v(w, t) & = \beta v(w, t-1) + \frac{\eta} {\sqrt{r(w,t) - (g(w, t))^2 +\epsilon}} \nabla Q_{i}(w)\\ - w & = w - v(w, t) - -其中, :math:`ρ` 是超参数,典型值为0.9,0.95等。 :math:`beta` 是动量术语。 :math:`epsilon` 是一个平滑项,用于避免除零,通常设置在1e-4到1e-8的范围内。 - -参数: - - **learning_rate** (float) - 全局学习率。 - - **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为None,这时所有的参数都将被优化。 - - **rho** (float,可选) - rho是等式中的 :math:`rho` ,默认值0.95。 - - **epsilon** (float,可选) - 等式中的epsilon是平滑项,避免被零除,默认值1e-6。 - - **momentum** (float,可选) - 方程中的β是动量项,默认值0.0。 - - **centered** (bool,可选) - 如果为True,则通过梯度的估计方差,对梯度进行归一化;如果False,则由未centered的第二个moment归一化。将此设置为True有助于模型训练,但会消耗额外计算和内存资源。默认为False。 - - **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,表示没有正则化。 - - **grad_clip** (GradientClipBase, 可选) – 梯度裁剪的策略,支持三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 默认值为None,此时将不进行梯度裁剪。 - - **name** (str, 可选) - 可选的名称前缀,一般无需设置,默认值为None。 - -抛出异常: - - ``ValueError`` -如果 ``learning_rate`` , ``rho`` , ``epsilon`` , ``momentum`` 为None。 - -**示例代码** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - place = fluid.CPUPlace() - main = fluid.Program() - with fluid.program_guard(main): - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_cost = fluid.layers.mean(cost) - - rms_optimizer = fluid.optimizer.RMSProp(learning_rate=0.1) - rms_optimizer.minimize(avg_cost) - - fetch_list = [avg_cost] - train_reader = paddle.batch( - paddle.dataset.uci_housing.train(), batch_size=1) - feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in train_reader(): - exe.run(main, feed=feeder.feed(data), fetch_list=fetch_list) - - - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - -为网络添加反向计算过程,并根据反向计算所得的梯度,更新parameter_list中的Parameters,最小化网络损失值loss。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的集合,默认值为None - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 - -返回类型: tuple - -**示例代码** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - place = fluid.CPUPlace() - main = fluid.Program() - with fluid.program_guard(main): - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_cost = fluid.layers.mean(cost) - - rms_optimizer = fluid.optimizer.RMSProp(learning_rate=0.1) - rms_optimizer.minimize(avg_cost) - - fetch_list = [avg_cost] - train_reader = paddle.batch( - paddle.dataset.uci_housing.train(), batch_size=1) - feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in train_reader(): - exe.run(main, feed=feeder.feed(data), fetch_list=fetch_list) - - - -.. py:method:: clear_gradients() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -清除需要优化的参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - optimizer = fluid.optimizer.RMSPropOptimizer(learning_rate=0.01, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - optimizer.minimize(out) - optimizer.clear_gradients() - -.. py:method:: set_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -手动设置当前 ``optimizer`` 的学习率。当使用LearningRateDecay时,无法使用该API手动设置学习率,因为这将导致冲突。 - -参数: - value (float|Variable) - 需要设置的学习率的值。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.dygraph.nn.Linear(10, 10) - adam = fluid.optimizer.Adam(0.1, parameter_list=linear.parameters()) - # 通过Python float数值手动设置学习率 - lr_list = [0.2, 0.3, 0.4, 0.5, 0.6] - for i in range(5): - adam.set_lr(lr_list[i]) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.2 - # current lr is 0.3 - # current lr is 0.4 - # current lr is 0.5 - # current lr is 0.6 - - - # 通过 框架的Variable 设置学习率 - lr_var = fluid.layers.create_global_var(shape=[1], value=0.7, dtype='float32') - adam.set_lr(lr_var) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.7 - - -.. py:method:: current_step_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取当前步骤的学习率。当不使用LearningRateDecay时,每次调用的返回值都相同,否则返回当前步骤的学习率。 - -返回:当前步骤的学习率。 - -返回类型:float - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: LearningRateDecay is not used, return value is all the same - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - adam = fluid.optimizer.Adam(0.001, parameter_list = emb.parameters()) - lr = adam.current_step_lr() - print(lr) # 0.001 - - # example2: PiecewiseDecay is used, return the step learning rate - with fluid.dygraph.guard(): - inp = np.random.uniform(-0.1, 0.1, [10, 10]).astype("float32") - linear = fluid.dygraph.nn.Linear(10, 10) - inp = fluid.dygraph.to_variable(inp) - out = linear(inp) - loss = fluid.layers.reduce_mean(out) - - bd = [2, 4, 6, 8] - value = [0.2, 0.4, 0.6, 0.8, 1.0] - adam = fluid.optimizer.Adam(fluid.dygraph.PiecewiseDecay(bd, value, 0), - parameter_list=linear.parameters()) - - # first step: learning rate is 0.2 - np.allclose(adam.current_step_lr(), 0.2, rtol=1e-06, atol=0.0) # True - - # learning rate for different steps - ret = [0.2, 0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0] - for i in range(12): - adam.minimize(loss) - lr = adam.current_step_lr() - np.allclose(lr, ret[i], rtol=1e-06, atol=0.0) # True - diff --git a/doc/paddle/api/paddle/fluid/optimizer/RecomputeOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/RecomputeOptimizer_cn.rst deleted file mode 100644 index d521b74471a50245f85085500ca9f716e9ba5d62..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/RecomputeOptimizer_cn.rst +++ /dev/null @@ -1,196 +0,0 @@ -.. _cn_api_fluid_optimizer_RecomputeOptimizer: - -RecomputeOptimizer -------------------------------- - - -.. py:class:: paddle.fluid.optimizer.RecomputeOptimizer(optimizer) - -:api_attr: 声明式编程模式(静态图) - - - -通常来讲,一个深度学习的训练流程包含了三个子步骤:首先,运行前向算子来计算Variable和loss的值;其次,运行反向算子来计算参数的梯度;最后,应用优化算法以更新参数值。 - -在前向运算过程中,反向运算会用到的Variable都会保存在内存中,当模型深度很深时,这会占用大量的内存。 - -重计算将深度学习网络切分为k个部分(segments)。在每个segment,运行反向运算时会首先运算前向计算。在重计算模式下,前向计算除了checkpoint和一些必须存储在内存中的特殊Variable,其他临时Variable都会被释放,这对节省内存非常有益。 - -把一个深度学习网络切分为k个segments的Variables被称为checkpoints。用户在使用运行RecomputeOptimizer之前需要先设置checkpoints。 - -参数: - - **optimizer** (Optimizer)-内部优化器 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return {"x": np.random.random(size=(32, 32)).astype('float32'), - "y": np.random.randint(2, size=(32, 1)).astype('int64')} - def mlp(input_x, input_y, hid_dim=128, label_dim=2): - print(input_x) - fc_1 = fluid.layers.fc(input=input_x, size=hid_dim) - prediction = fluid.layers.fc(input=[fc_1], size=label_dim, act='softmax') - cost = fluid.layers.cross_entropy(input=prediction, label=input_y) - sum_cost = fluid.layers.reduce_mean(cost) - return sum_cost, fc_1, prediction - input_x = fluid.layers.data(name="x", shape=[32], dtype='float32') - input_y = fluid.layers.data(name="y", shape=[1], dtype='int64') - cost, fc_1, pred = mlp(input_x, input_y) - - sgd = fluid.optimizer.Adam(learning_rate=0.01) - sgd = fluid.optimizer.RecomputeOptimizer(sgd) - sgd._set_checkpoints([fc_1, pred]) - sgd.minimize(cost) - - print("Finished optimize") - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - step = 10 - - for i in range(step): - cost_val = exe.run(feed=gen_data(), - program=fluid.default_main_program(), - fetch_list=[cost.name]) - print("step=%d cost=%f" % (i, cost_val[0])) - - -.. py:method:: apply_gradients(params_grads) - -调用self.apply_gradients - -参数: - - **params_grads** (list)- 用于优化的(param, grad)对组成的列表 - -返回: 附加在当前Program的优化算子组成的列表 - -返回类型: list - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.framework as framework - - def mlp(input_x, input_y, hid_dim=128, label_dim=2): - fc_1 = fluid.layers.fc(input=input_x, size=hid_dim) - prediction = fluid.layers.fc(input=[fc_1], size=label_dim, act='softmax') - cost = fluid.layers.cross_entropy(input=prediction, label=input_y) - sum_cost = fluid.layers.reduce_mean(cost) - return sum_cost, fc_1, prediction - - - input_x = fluid.layers.data(name="x", shape=[32], dtype='float32') - input_y = fluid.layers.data(name="y", shape=[1], dtype='int64') - cost, fc_1, pred = mlp(input_x, input_y) - print("Finished FF") - - sgd = fluid.optimizer.Adam(learning_rate=0.01) - sgd = fluid.optimizer.RecomputeOptimizer(sgd) - params_grads = sgd.backward( - cost, - startup_program=None, - parameter_list=None, - no_grad_set=None) - - program = cost.block.program - with framework.program_guard(program, None): - optimize_ops = sgd.apply_gradients(params_grads) - - print("Finished apply gradients") - -.. py:method:: apply_optimize(loss, startup_program, params_grads) - -调用self._optimizer的apply_optimize函数 - -参数: - - **loss** (Variable) – 用于优化过程的损失值变量 - - **startup_program** (Program) – 用于初始化在parameter_list中参数的startup_program - - **params_grads** (list)- 用于优化的(param, grad)对组成的列表 - -返回: 附加在当前Program的算子组成的列表 - -返回类型: list - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - def mlp(input_x, input_y, hid_dim=128, label_dim=2): - fc_1 = fluid.layers.fc(input=input_x, size=hid_dim) - prediction = fluid.layers.fc(input=[fc_1], size=label_dim, act='softmax') - cost = fluid.layers.cross_entropy(input=prediction, label=input_y) - sum_cost = fluid.layers.reduce_mean(cost) - return sum_cost, fc_1, prediction - - input_x = fluid.layers.data(name="x", shape=[32], dtype='float32') - input_y = fluid.layers.data(name="y", shape=[1], dtype='int64') - cost, fc_1, pred = mlp(input_x, input_y) - print("Finished FF") - - sgd = fluid.optimizer.Adam(learning_rate=0.01) - sgd = fluid.optimizer.RecomputeOptimizer(sgd) - params_grads = sgd.backward( - cost, - startup_program=None, - parameter_list=None, - no_grad_set=None) - - optimize_ops = sgd.apply_optimize( - cost, startup_program=None, params_grads=params_grads) - - print("Finished apply_optimize") - -.. py:method:: backward(loss, startup_program=None, parameter_list=None, no_grad_set=None, callbacks=None) - -带checkpoint的backward函数 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的的集合,默认值为None - - **callbacks** (list, 可选) – 当为某参数附加反向算子时所要运行的callables组成的列表 - - **checkpoints** (list, 可选) – 一批作为checkpoints的Variables - -返回: 由(param, grad)对构成的列表,其中param是参数,grad是其对应的梯度 - -返回类型: list - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - def mlp(input_x, input_y, hid_dim=128, label_dim=2): - fc_1 = fluid.layers.fc(input=input_x, size=hid_dim) - prediction = fluid.layers.fc(input=[fc_1], size=label_dim, act='softmax') - cost = fluid.layers.cross_entropy(input=prediction, label=input_y) - sum_cost = fluid.layers.reduce_mean(cost) - return sum_cost, fc_1, prediction - - - input_x = fluid.layers.data(name="x", shape=[32], dtype='float32') - input_y = fluid.layers.data(name="y", shape=[1], dtype='int64') - cost, fc_1, pred = mlp(input_x, input_y) - print("Finished FF") - - sgd = fluid.optimizer.Adam(learning_rate=0.01) - sgd = fluid.optimizer.RecomputeOptimizer(sgd) - params_grads = sgd.backward( - cost, - startup_program=None, - parameter_list=None, - no_grad_set=None) - print("Finished backward") - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer/SGDOptimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/SGDOptimizer_cn.rst deleted file mode 100644 index 582c590bb04393acd13add208c5b75b2032d0167..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/SGDOptimizer_cn.rst +++ /dev/null @@ -1,221 +0,0 @@ -.. _cn_api_fluid_optimizer_SGDOptimizer: - -SGDOptimizer -------------------------------- - -.. py:class:: paddle.fluid.optimizer.SGDOptimizer(learning_rate, parameter_list=None, regularization=None, grad_clip=None, name=None) - - - - -该接口实现随机梯度下降算法的优化器 - -.. math:: - \\param\_out=param-learning\_rate*grad\\ - - -参数: - - **learning_rate** (float|Variable) - 用于更新参数的学习率。可以是浮点值,也可以是具有一个浮点值作为数据元素的变量。 - - **parameter_list** (list, 可选) - 指定优化器需要优化的参数。在动态图模式下必须提供该参数;在静态图模式下默认值为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,表示没有正则化。 - - **grad_clip** (GradientClipBase, 可选) – 梯度裁剪的策略,支持三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - 默认值为None,此时将不进行梯度裁剪。 - - **name** (str, 可选) - 可选的名称前缀,一般无需设置,默认值为None。 - - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - place = fluid.CPUPlace() - main = fluid.Program() - with fluid.program_guard(main): - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_cost = fluid.layers.mean(cost) - - sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001) - sgd_optimizer.minimize(avg_cost) - - fetch_list = [avg_cost] - train_reader = paddle.batch( - paddle.dataset.uci_housing.train(), batch_size=1) - feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in train_reader(): - exe.run(main, feed=feeder.feed(data), fetch_list=fetch_list) - - - -.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None) - -为网络添加反向计算过程,并根据反向计算所得的梯度,更新parameter_list中的Parameters,最小化网络损失值loss。 - -参数: - - **loss** (Variable) – 需要最小化的损失值变量 - - **startup_program** (Program, 可选) – 用于初始化parameter_list中参数的 :ref:`cn_api_fluid_Program` , 默认值为None,此时将使用 :ref:`cn_api_fluid_default_startup_program` - - **parameter_list** (list, 可选) – 待更新的Parameter或者Parameter.name组成的列表, 默认值为None,此时将更新所有的Parameter - - **no_grad_set** (set, 可选) – 不需要更新的Parameter或者Parameter.name组成的集合,默认值为None - -返回: tuple(optimize_ops, params_grads),其中optimize_ops为参数优化OP列表;param_grads为由(param, param_grad)组成的列表,其中param和param_grad分别为参数和参数的梯度。该返回值可以加入到 ``Executor.run()`` 接口的 ``fetch_list`` 参数中,若加入,则会重写 ``use_prune`` 参数为True,并根据 ``feed`` 和 ``fetch_list`` 进行剪枝,详见 ``Executor`` 的文档。 -返回类型: tuple - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - place = fluid.CPUPlace() - main = fluid.Program() - with fluid.program_guard(main): - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_cost = fluid.layers.mean(cost) - - sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001) - sgd_optimizer.minimize(avg_cost) - - fetch_list = [avg_cost] - train_reader = paddle.batch( - paddle.dataset.uci_housing.train(), batch_size=1) - feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for data in train_reader(): - exe.run(main, feed=feeder.feed(data), fetch_list=fetch_list) - - - -.. py:method:: clear_gradients() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - - -清除需要优化的参数的梯度。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - value = np.arange(26).reshape(2, 13).astype("float32") - a = fluid.dygraph.to_variable(value) - linear = fluid.Linear(13, 5, dtype="float32") - optimizer = fluid.optimizer.SGDOptimizer(learning_rate=0.01, - parameter_list=linear.parameters()) - out = linear(a) - out.backward() - optimizer.minimize(out) - optimizer.clear_gradients() - -.. py:method:: set_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -手动设置当前 ``optimizer`` 的学习率。当使用LearningRateDecay时,无法使用该API手动设置学习率,因为这将导致冲突。 - -参数: - value (float|Variable) - 需要设置的学习率的值。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - with fluid.dygraph.guard(): - linear = fluid.dygraph.nn.Linear(10, 10) - adam = fluid.optimizer.Adam(0.1, parameter_list=linear.parameters()) - # 通过Python float数值手动设置学习率 - lr_list = [0.2, 0.3, 0.4, 0.5, 0.6] - for i in range(5): - adam.set_lr(lr_list[i]) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.2 - # current lr is 0.3 - # current lr is 0.4 - # current lr is 0.5 - # current lr is 0.6 - - - # 通过 框架的Variable 设置学习率 - lr_var = fluid.layers.create_global_var(shape=[1], value=0.7, dtype='float32') - adam.set_lr(lr_var) - print("current lr is {}".format(adam.current_step_lr())) - # 打印结果: - # current lr is 0.7 - - -.. py:method:: current_step_lr() - -**注意:** - - **1. 该API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效** - -获取当前步骤的学习率。当不使用LearningRateDecay时,每次调用的返回值都相同,否则返回当前步骤的学习率。 - -返回:当前步骤的学习率。 - -返回类型:float - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # example1: LearningRateDecay is not used, return value is all the same - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - adam = fluid.optimizer.Adam(0.001, parameter_list = emb.parameters()) - lr = adam.current_step_lr() - print(lr) # 0.001 - - # example2: PiecewiseDecay is used, return the step learning rate - with fluid.dygraph.guard(): - inp = np.random.uniform(-0.1, 0.1, [10, 10]).astype("float32") - linear = fluid.dygraph.nn.Linear(10, 10) - inp = fluid.dygraph.to_variable(inp) - out = linear(inp) - loss = fluid.layers.reduce_mean(out) - - bd = [2, 4, 6, 8] - value = [0.2, 0.4, 0.6, 0.8, 1.0] - adam = fluid.optimizer.Adam(fluid.dygraph.PiecewiseDecay(bd, value, 0), - parameter_list=linear.parameters()) - - # first step: learning rate is 0.2 - np.allclose(adam.current_step_lr(), 0.2, rtol=1e-06, atol=0.0) # True - - # learning rate for different steps - ret = [0.2, 0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0] - for i in range(12): - adam.minimize(loss) - lr = adam.current_step_lr() - np.allclose(lr, ret[i], rtol=1e-06, atol=0.0) # True - diff --git a/doc/paddle/api/paddle/fluid/optimizer/SGD_cn.rst b/doc/paddle/api/paddle/fluid/optimizer/SGD_cn.rst deleted file mode 100644 index 8810f79d267ab312ae682332240e047ad10771e6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer/SGD_cn.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. _cn_api_fluid_optimizer_SGD: - -SGD -------------------------------- - -.. py:attribute:: paddle.fluid.optimizer.SGD - - - - -``SGDOptimizer`` 的别名 - - - - - - diff --git a/doc/paddle/api/paddle/fluid/optimizer_cn.rst b/doc/paddle/api/paddle/fluid/optimizer_cn.rst deleted file mode 100644 index 766c9d885ef84841eb9ceb1dc17cb90870ee9b35..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/optimizer_cn.rst +++ /dev/null @@ -1,37 +0,0 @@ -======================= -paddle.optimizer -======================= - - - - -.. toctree:: - :maxdepth: 1 - - optimizer_cn/Adadelta_cn.rst - optimizer_cn/AdadeltaOptimizer_cn.rst - optimizer_cn/Adagrad_cn.rst - optimizer_cn/AdagradOptimizer_cn.rst - optimizer_cn/Adam_cn.rst - optimizer_cn/Adamax_cn.rst - optimizer_cn/AdamaxOptimizer_cn.rst - optimizer_cn/AdamOptimizer_cn.rst - optimizer_cn/DecayedAdagrad_cn.rst - optimizer_cn/DecayedAdagradOptimizer_cn.rst - optimizer_cn/DGCMomentumOptimizer_cn.rst - optimizer_cn/Dpsgd_cn.rst - optimizer_cn/DpsgdOptimizer_cn.rst - optimizer_cn/ExponentialMovingAverage_cn.rst - optimizer_cn/Ftrl_cn.rst - optimizer_cn/FtrlOptimizer_cn.rst - optimizer_cn/LambOptimizer_cn.rst - optimizer_cn/LarsMomentum_cn.rst - optimizer_cn/LarsMomentumOptimizer_cn.rst - optimizer_cn/LookaheadOptimizer_cn.rst - optimizer_cn/ModelAverage_cn.rst - optimizer_cn/Momentum_cn.rst - optimizer_cn/MomentumOptimizer_cn.rst - optimizer_cn/RecomputeOptimizer_cn.rst - optimizer_cn/RMSPropOptimizer_cn.rst - optimizer_cn/SGD_cn.rst - optimizer_cn/SGDOptimizer_cn.rst diff --git a/doc/paddle/api/paddle/fluid/param_attr/ParamAttr_cn.rst b/doc/paddle/api/paddle/fluid/param_attr/ParamAttr_cn.rst deleted file mode 100644 index 641ed94ab2d0b52e9ef2de4cdd783f61e5df672f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/param_attr/ParamAttr_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_ParamAttr: - - -ParamAttr -------------------------------- - - -.. py:class:: paddle.fluid.ParamAttr(name=None, initializer=None, learning_rate=1.0, regularizer=None, trainable=True, do_model_average=False) - - - - -.. note:: - 该类中的 ``gradient_clip`` 属性在2.0版本会废弃,推荐在初始化 ``optimizer`` 时设置梯度裁剪。共有三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 - :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - -创建一个参数属性对象,用户可设置参数的名称、初始化方式、学习率、正则化规则、是否需要训练、梯度裁剪方式、是否做模型平均等属性。 - -参数: - - **name** (str,可选) - 参数的名称。默认值为None,表示框架自动创建参数的名称。 - - **initializer** (Initializer,可选) - 参数的初始化方式。默认值为None,表示权重参数采用Xavier初始化方式,偏置参数采用全0初始化方式。 - - **learning_rate** (float) - 参数的学习率。实际参数的学习率等于全局学习率乘以参数的学习率,再乘以learning rate schedule的系数。 - - **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,表示不做模型平均。 - -返回: 表示参数属性的对象。 - -返回类型: ParamAttr - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - w_param_attrs = fluid.ParamAttr(name="fc_weight", - learning_rate=0.5, - regularizer=fluid.regularizer.L2Decay(1.0), - trainable=True) - print(w_param_attrs.name) # "fc_weight" - x = fluid.layers.data(name='X', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=10, param_attr=w_param_attrs) - - diff --git a/doc/paddle/api/paddle/fluid/profiler/cuda_profiler_cn.rst b/doc/paddle/api/paddle/fluid/profiler/cuda_profiler_cn.rst deleted file mode 100644 index ff292887d1b39cf7d11cd06569a22f18ae8d1505..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/profiler/cuda_profiler_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_profiler_cuda_profiler: - -cuda_profiler -------------------------------- - -.. py:function:: paddle.fluid.profiler.cuda_profiler(output_file, output_mode=None, config=None) - - - - - -CUDA性能分析器。该分析器通过调用CUDA运行时编程接口,对CUDA程序进行性能分析,并将分析结果写入输出文件output_file。输出格式由output_mode参数控制,性能分析配置选项由config参数控制。得到输出文件后,用户可使用 `NVIDIA Visual Profiler `_ 工具来加载这个输出文件以获得可视化结果。 - - -参数: - - **output_file** (str) – 输出文件名称, 输出结果将会写入该文件。 - - **output_mode** (str,可选) – 输出格式,有两种可以选择,分别是 key-value 键值对格式'kvp' 和 逗号分割的格式'csv'(默认格式)。 - - **config** (list, 可选) – NVIDIA性能分析配置列表,默认值为None时会选择以下配置:['gpustarttimestamp', 'gpuendtimestamp', 'gridsize3d', 'threadblocksize', 'streamid', 'enableonstart 0', 'conckerneltrace']。上述每个配置的含义和更多配置选项,请参考 `Compute Command Line Profiler User Guide `_ 。 - -抛出异常: - - ``ValueError`` - 如果输出格式output_mode不是'kvp'、'csv'两者之一,会抛出异常。 - -返回: 无 - -**代码示例** - - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.profiler as profiler - import numpy as np - - epoc = 8 - dshape = [4, 3, 28, 28] - data = fluid.data(name='data', shape=[None, 3, 28, 28], dtype='float32') - conv = fluid.layers.conv2d(data, 20, 3, stride=[1, 1], padding=[1, 1]) - - place = fluid.CUDAPlace(0) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - output_file = 'cuda_profiler.txt' - with profiler.cuda_profiler(output_file, 'csv') as nvprof: - for i in range(epoc): - input = np.random.random(dshape).astype('float32') - exe.run(fluid.default_main_program(), feed={'data': input}) - - # 之后可以使用 NVIDIA Visual Profile 可视化结果 diff --git a/doc/paddle/api/paddle/fluid/profiler/profiler_cn.rst b/doc/paddle/api/paddle/fluid/profiler/profiler_cn.rst deleted file mode 100644 index c3ae718c596611f11731ad4cef6b993f66bfaf62..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/profiler/profiler_cn.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. _cn_api_fluid_profiler_profiler: - -profiler -------------------------------- - -.. py:function:: paddle.fluid.profiler.profiler(state, sorted_key=None, profile_path='/tmp/profile', tracer_option='Default') - - - - -通用性能分析器 。与 :ref:`cn_api_fluid_profiler_cuda_profiler` 不同,此分析器可用于分析CPU和GPU程序。 - -参数: - - **state** (str) – 性能分析状态, 取值为 'CPU' 或 'GPU' 或 'All'。'CPU'表示只分析CPU上的性能;'GPU'表示同时分析CPU和GPU上的性能;'All'表示除了同时分析CPU和GPU上的性能外,还将生成 `性能分析的时间轴信息 <../../advanced_usage/development/profiling/timeline_cn.html>`_ 。 - - **sorted_key** (str,可选) – 性能分析结果的打印顺序,取值为None、'call'、'total'、'max'、'min'、'ave'之一。默认值为None,表示按照第一次结束时间顺序打印;'call'表示按调用的数量进行排序;'total'表示按总执行时间排序;'max'表示按最大执行时间排序;'min'表示按最小执行时间排序;'ave'表示按平均执行时间排序。 - - **profile_path** (str,可选) – 如果性能分析状态为'All', 将生成的时间轴信息写入profile_path,默认输出文件为 ``/tmp/profile`` 。 - - **tracer_option** (str,可选) – 性能分析选项取值为 'Default' 或 'OpDetail' 或 'AllOpDetail', 此选项用于设置性能分析层次并打印不同层次的性能分析结果, `Default` 选项打印不同Op类型的性能分析结果, `OpDetail` 则会打印不同OP类型更详细的性能分析结果,比如compute和data transform。 `AllOpDetail` 和 `OpDetail` 类似,但是打印的是不同Op名字的性能分析结果。 - -抛出异常: - - ``ValueError`` – 如果state取值不在 ['CPU', 'GPU', 'All']中,或sorted_key取值不在 [None, 'calls', 'total', 'max', 'min', 'ave']中,则抛出异常。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.profiler as profiler - import numpy as np - - epoc = 8 - dshape = [4, 3, 28, 28] - data = fluid.layers.data(name='data', shape=[3, 28, 28], dtype='float32') - conv = fluid.layers.conv2d(data, 20, 3, stride=[1, 1], padding=[1, 1]) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - with profiler.profiler('CPU', 'total', '/tmp/profile') as prof: - for i in range(epoc): - input = np.random.random(dshape).astype('float32') - exe.run(fluid.default_main_program(), feed={'data': input}) - -**结果示例** - -.. code-block:: text - - #### sorted_key = 'total', 'calls', 'max', 'min', 'ave' 结果 #### - # 示例结果中,除了Sorted by number of xxx in descending order in the same thread 这句随着sorted_key变化而不同,其余均相同。 - # 原因是,示例结果中,上述5列都已经按从大到小排列了。 - -------------------------> Profiling Report <------------------------- - - Place: CPU - Time unit: ms - Sorted by total time in descending order in the same thread - #Sorted by number of calls in descending order in the same thread - #Sorted by number of max in descending order in the same thread - #Sorted by number of min in descending order in the same thread - #Sorted by number of avg in descending order in the same thread - - Event Calls Total Min. Max. Ave. Ratio. - thread0::conv2d 8 129.406 0.304303 127.076 16.1758 0.983319 - thread0::elementwise_add 8 2.11865 0.193486 0.525592 0.264832 0.016099 - thread0::feed 8 0.076649 0.006834 0.024616 0.00958112 0.000582432 - - #### sorted_key = None 结果 #### - # 示例结果中,是按照Op结束时间顺序打印,因此打印顺序为feed->conv2d->elementwise_add - -------------------------> Profiling Report <------------------------- - - Place: CPU - Time unit: ms - Sorted by event first end time in descending order in the same thread - - Event Calls Total Min. Max. Ave. Ratio. - thread0::feed 8 0.077419 0.006608 0.023349 0.00967738 0.00775934 - thread0::conv2d 8 7.93456 0.291385 5.63342 0.99182 0.795243 - thread0::elementwise_add 8 1.96555 0.191884 0.518004 0.245693 0.196998 diff --git a/doc/paddle/api/paddle/fluid/profiler/reset_profiler_cn.rst b/doc/paddle/api/paddle/fluid/profiler/reset_profiler_cn.rst deleted file mode 100644 index 575f408a74a153885468fb0ef527972273f1d049..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/profiler/reset_profiler_cn.rst +++ /dev/null @@ -1,23 +0,0 @@ -.. _cn_api_fluid_profiler_reset_profiler: - -reset_profiler -------------------------------- - -.. py:function:: paddle.fluid.profiler.reset_profiler() - - - - -清除之前的性能分析记录。此接口不能和 :ref:`cn_api_fluid_profiler_cuda_profiler` 一起使用 ,但它可以和 :ref:`cn_api_fluid_profiler_start_profiler` 、:ref:`cn_api_fluid_profiler_stop_profiler` 和 :ref:`cn_api_fluid_profiler_profiler` 一起使用。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.profiler as profiler - with profiler.profiler('CPU', 'total', '/tmp/profile'): - for iter in range(10): - if iter == 2: - profiler.reset_profiler() - # ... diff --git a/doc/paddle/api/paddle/fluid/profiler/start_profiler_cn.rst b/doc/paddle/api/paddle/fluid/profiler/start_profiler_cn.rst deleted file mode 100644 index 0eaca4a57366e23575b8d4bf0cc9752f4e10ce4d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/profiler/start_profiler_cn.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. _cn_api_fluid_profiler_start_profiler: - -start_profiler -------------------------------- - -.. py:function:: paddle.fluid.profiler.start_profiler(state, tracer_option='Default') - - - - -激活使用性能分析器。除了 :ref:`cn_api_fluid_profiler_profiler` 外,用户还可以使用 :ref:`cn_api_fluid_profiler_start_profiler` 和 :ref:`cn_api_fluid_profiler_stop_profiler` 来激活和停止使用性能分析器。 - -参数: - - **state** (str) – 性能分析状态, 取值为 'CPU' 或 'GPU' 或 'All'。'CPU'表示只分析CPU上的性能;'GPU'表示同时分析CPU和GPU上的性能;'All'表示除了同时分析CPU和GPU上的性能外,还将生成性能分析的时间轴信息 :ref:`fluid_timeline` 。 - - **tracer_option** (str,可选) – 性能分析选项取值为 'Default' 或 'OpDetail' 或 'AllOpDetail', 此选项用于设置性能分析层次并打印不同层次的性能分析结果, `Default` 选项打印不同Op类型的性能分析结果, `OpDetail` 则会打印不同OP类型更详细的性能分析结果,比如compute和data transform。 `AllOpDetail` 和 `OpDetail` 类似,但是打印的是不同Op名字的性能分析结果。 - -抛出异常: - - ``ValueError`` – 如果state取值不在 ['CPU', 'GPU', 'All']中或者tracer_option取值不在['Default', 'OpDetail', 'AllOpDetail']中,则抛出异常 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.profiler as profiler - - profiler.start_profiler('GPU') - for iter in range(10): - if iter == 2: - profiler.reset_profiler() - # except each iteration - profiler.stop_profiler('total', '/tmp/profile') diff --git a/doc/paddle/api/paddle/fluid/profiler/stop_profiler_cn.rst b/doc/paddle/api/paddle/fluid/profiler/stop_profiler_cn.rst deleted file mode 100644 index 85f2cbb116cc88d9adfcfb830d6b9f0d203292c5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/profiler/stop_profiler_cn.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. _cn_api_fluid_profiler_stop_profiler: - -stop_profiler -------------------------------- - -.. py:function:: paddle.fluid.profiler.stop_profiler(sorted_key=None, profile_path='/tmp/profile') - - - - -停止使用性能分析器。除了 :ref:`cn_api_fluid_profiler_profiler` 外,用户还可以使用 :ref:`cn_api_fluid_profiler_start_profiler` 和 :ref:`cn_api_fluid_profiler_stop_profiler` 来激活和停止使用性能分析器。 - -参数: - - **sorted_key** (str,可选) – 性能分析结果的打印顺序,取值为None、'call'、'total'、'max'、'min'、'ave'之一。默认值为None,表示按照第一次结束时间顺序打印;'call'表示按调用的数量进行排序;'total'表示按总执行时间排序;'max'表示按最大执行时间排序;'min'表示按最小执行时间排序;'ave'表示按平均执行时间排序。 - - **profile_path** (str,可选) – 如果性能分析状态为'All', 将生成的时间轴信息写入profile_path,默认输出文件为 ``/tmp/profile`` 。 - - -抛出异常: - - ``ValueError`` – 如果sorted_key取值不在 [None, 'calls', 'total', 'max', 'min', 'ave']中,则抛出异常。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.profiler as profiler - - profiler.start_profiler('GPU') - for iter in range(10): - if iter == 2: - profiler.reset_profiler() - # except each iteration - profiler.stop_profiler('total', '/tmp/profile') diff --git a/doc/paddle/api/paddle/fluid/profiler_cn.rst b/doc/paddle/api/paddle/fluid/profiler_cn.rst deleted file mode 100644 index c3ae718c596611f11731ad4cef6b993f66bfaf62..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/profiler_cn.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. _cn_api_fluid_profiler_profiler: - -profiler -------------------------------- - -.. py:function:: paddle.fluid.profiler.profiler(state, sorted_key=None, profile_path='/tmp/profile', tracer_option='Default') - - - - -通用性能分析器 。与 :ref:`cn_api_fluid_profiler_cuda_profiler` 不同,此分析器可用于分析CPU和GPU程序。 - -参数: - - **state** (str) – 性能分析状态, 取值为 'CPU' 或 'GPU' 或 'All'。'CPU'表示只分析CPU上的性能;'GPU'表示同时分析CPU和GPU上的性能;'All'表示除了同时分析CPU和GPU上的性能外,还将生成 `性能分析的时间轴信息 <../../advanced_usage/development/profiling/timeline_cn.html>`_ 。 - - **sorted_key** (str,可选) – 性能分析结果的打印顺序,取值为None、'call'、'total'、'max'、'min'、'ave'之一。默认值为None,表示按照第一次结束时间顺序打印;'call'表示按调用的数量进行排序;'total'表示按总执行时间排序;'max'表示按最大执行时间排序;'min'表示按最小执行时间排序;'ave'表示按平均执行时间排序。 - - **profile_path** (str,可选) – 如果性能分析状态为'All', 将生成的时间轴信息写入profile_path,默认输出文件为 ``/tmp/profile`` 。 - - **tracer_option** (str,可选) – 性能分析选项取值为 'Default' 或 'OpDetail' 或 'AllOpDetail', 此选项用于设置性能分析层次并打印不同层次的性能分析结果, `Default` 选项打印不同Op类型的性能分析结果, `OpDetail` 则会打印不同OP类型更详细的性能分析结果,比如compute和data transform。 `AllOpDetail` 和 `OpDetail` 类似,但是打印的是不同Op名字的性能分析结果。 - -抛出异常: - - ``ValueError`` – 如果state取值不在 ['CPU', 'GPU', 'All']中,或sorted_key取值不在 [None, 'calls', 'total', 'max', 'min', 'ave']中,则抛出异常。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.profiler as profiler - import numpy as np - - epoc = 8 - dshape = [4, 3, 28, 28] - data = fluid.layers.data(name='data', shape=[3, 28, 28], dtype='float32') - conv = fluid.layers.conv2d(data, 20, 3, stride=[1, 1], padding=[1, 1]) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - with profiler.profiler('CPU', 'total', '/tmp/profile') as prof: - for i in range(epoc): - input = np.random.random(dshape).astype('float32') - exe.run(fluid.default_main_program(), feed={'data': input}) - -**结果示例** - -.. code-block:: text - - #### sorted_key = 'total', 'calls', 'max', 'min', 'ave' 结果 #### - # 示例结果中,除了Sorted by number of xxx in descending order in the same thread 这句随着sorted_key变化而不同,其余均相同。 - # 原因是,示例结果中,上述5列都已经按从大到小排列了。 - -------------------------> Profiling Report <------------------------- - - Place: CPU - Time unit: ms - Sorted by total time in descending order in the same thread - #Sorted by number of calls in descending order in the same thread - #Sorted by number of max in descending order in the same thread - #Sorted by number of min in descending order in the same thread - #Sorted by number of avg in descending order in the same thread - - Event Calls Total Min. Max. Ave. Ratio. - thread0::conv2d 8 129.406 0.304303 127.076 16.1758 0.983319 - thread0::elementwise_add 8 2.11865 0.193486 0.525592 0.264832 0.016099 - thread0::feed 8 0.076649 0.006834 0.024616 0.00958112 0.000582432 - - #### sorted_key = None 结果 #### - # 示例结果中,是按照Op结束时间顺序打印,因此打印顺序为feed->conv2d->elementwise_add - -------------------------> Profiling Report <------------------------- - - Place: CPU - Time unit: ms - Sorted by event first end time in descending order in the same thread - - Event Calls Total Min. Max. Ave. Ratio. - thread0::feed 8 0.077419 0.006608 0.023349 0.00967738 0.00775934 - thread0::conv2d 8 7.93456 0.291385 5.63342 0.99182 0.795243 - thread0::elementwise_add 8 1.96555 0.191884 0.518004 0.245693 0.196998 diff --git a/doc/paddle/api/paddle/fluid/reader/DataLoader_cn.rst b/doc/paddle/api/paddle/fluid/reader/DataLoader_cn.rst deleted file mode 100644 index e8e1b68d3aadb0c9f5e3f958f4b096313e60c6e5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/reader/DataLoader_cn.rst +++ /dev/null @@ -1,249 +0,0 @@ -.. _cn_api_fluid_io_DataLoader: - -DataLoader -------------------------------- - -.. py:class:: paddle.fluid.io.DataLoader - - - - - -.. py:method:: from_generator(feed_list=None, capacity=None, use_double_buffer=True, iterable=True, return_list=False, use_multiprocess=False, drop_last=True) - -.. note:: - 框架保证DataLoader的数据加载顺序与用户提供的数据源读取顺序一致。 - -创建一个DataLoader对象用于加载Python生成器产生的数据。数据会由Python线程预先读取,并异步送入一个队列中。 - -本方法创建的DataLoader对象提供了3个方法设置数据源,分别是 :code:`set_sample_generator` , :code:`set_sample_list_generator` 和 -:code:`set_batch_generator` 。请查阅下述示例代码了解它们的使用方法。 - -如果iterable = True,本方法创建的DataLoader对象时一个Python生成器,可以for-range的方法循环迭代。 - -如果iterable = False,本方法创建的DataLoader对象提供 :code:`start()` 和 :code:`reset()` 方法控制数据读取过程。此模式用于兼容 -``fluid.layers.py_reader`` 的使用方式。用户可使用iterable = False模式,方便地将 ``fluid.layers.py_reader`` 的代码迁移至 -``fluid.io.DataLoader`` 。 - -参数: - - **feed_list** (list(Variable)|tuple(Variable)) - feed变量列表,由 ``fluid.layers.data()`` 创建。 - - **capacity** (int) - DataLoader对象内部维护队列的容量大小。单位是batch数量。若reader读取速度较快,建议设置较大的capacity值。 - - **use_double_buffer** (bool) - 是否使用 ``double_buffer_reader`` 。若use_double_buffer=True,DataLoader会异步地预读取下一个batch的数据,可加速数据读取过程,但同时会占用少量的CPU/GPU存储,即一个batch输入数据的存储空间。 - - **iterable** (bool) - 所创建的DataLoader对象是否可迭代。 - - **return_list** (bool) - 每个设备上的数据是否以list形式返回。仅在iterable = True模式下有效。若return_list = False,每个设备上的返回数据均是str -> LoDTensor的映射表,其中映射表的key是每个输入变量的名称。若return_list = True,则每个设备上的返回数据均是list(LoDTensor)。推荐在静态图模式下使用return_list = False,在动态图模式下使用return_list = True。 - - **use_multiprocess** (bool) - 设置是否是用多进程加速动态图的数据载入过程。注意:该参数的设置仅在动态图模式下有效, 在静态图模式下,该参数设置与否均无任何影响。默认值为False。 - - **drop_last** (bool): 是否丢弃最后的不足CPU/GPU设备数的批次。默认值为True。在网络训练时,用户不能设置drop_last=False,此时所有CPU/GPU设备均应从DataLoader中读取到数据。在网络预测时,用户可以设置drop_last=False,此时最后不足CPU/GPU设备数的批次可以进行预测。 - -返回: 被创建的DataLoader对象 - -返回类型: loader (DataLoader) - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - BATCH_NUM = 10 - BATCH_SIZE = 16 - EPOCH_NUM = 4 - - CLASS_NUM = 10 - - ITERABLE = True # whether the created DataLoader object is iterable - USE_GPU = False # whether to use GPU - - DATA_FORMAT = 'batch_generator' # data format of data source user provides - - def simple_net(image, label): - fc_tmp = fluid.layers.fc(image, size=CLASS_NUM) - cross_entropy = fluid.layers.softmax_with_cross_entropy(image, label) - loss = fluid.layers.reduce_mean(cross_entropy) - sgd = fluid.optimizer.SGD(learning_rate=1e-3) - sgd.minimize(loss) - return loss - - def get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - - # If the data generator yields one sample each time, - # use DataLoader.set_sample_generator to set the data source. - def sample_generator_creator(): - def __reader__(): - for _ in range(BATCH_NUM * BATCH_SIZE): - image, label = get_random_images_and_labels([784], [1]) - yield image, label - - return __reader__ - - # If the data generator yield list of samples each time, - # use DataLoader.set_sample_list_generator to set the data source. - def sample_list_generator_creator(): - def __reader__(): - for _ in range(BATCH_NUM): - sample_list = [] - for _ in range(BATCH_SIZE): - image, label = get_random_images_and_labels([784], [1]) - sample_list.append([image, label]) - - yield sample_list - - return __reader__ - - # If the data generator yields a batch each time, - # use DataLoader.set_batch_generator to set the data source. - def batch_generator_creator(): - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = get_random_images_and_labels([BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - - return __reader__ - - # If DataLoader is iterable, use for loop to train the network - def train_iterable(exe, prog, loss, loader): - for _ in range(EPOCH_NUM): - for data in loader(): - exe.run(prog, feed=data, fetch_list=[loss]) - - # If DataLoader is not iterable, use start() and reset() method to control the process - def train_non_iterable(exe, prog, loss, loader): - for _ in range(EPOCH_NUM): - loader.start() # call DataLoader.start() before each epoch starts - try: - while True: - exe.run(prog, fetch_list=[loss]) - except fluid.core.EOFException: - loader.reset() # call DataLoader.reset() after catching EOFException - - def set_data_source(loader, places): - if DATA_FORMAT == 'sample_generator': - loader.set_sample_generator(sample_generator_creator(), batch_size=BATCH_SIZE, drop_last=True, places=places) - elif DATA_FORMAT == 'sample_list_generator': - loader.set_sample_list_generator(sample_list_generator_creator(), places=places) - elif DATA_FORMAT == 'batch_generator': - loader.set_batch_generator(batch_generator_creator(), places=places) - else: - raise ValueError('Unsupported data format') - - image = fluid.layers.data(name='image', shape=[784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - - # Define DataLoader - loader = fluid.io.DataLoader.from_generator(feed_list=[image, label], capacity=16, iterable=ITERABLE) - - # Define network - loss = simple_net(image, label) - - # Set data source of DataLoader - # - # If DataLoader is iterable, places must be given and the number of places must be the same with device number. - # - If you are using GPU, call `fluid.cuda_places()` to get all GPU places. - # - If you are using CPU, call `fluid.cpu_places()` to get all CPU places. - # - # If DataLoader is not iterable, places can be None. - places = fluid.cuda_places() if USE_GPU else fluid.cpu_places() - set_data_source(loader, places) - - exe = fluid.Executor(places[0]) - exe.run(fluid.default_startup_program()) - - prog = fluid.CompiledProgram(fluid.default_main_program()).with_data_parallel(loss_name=loss.name) - - if loader.iterable: - train_iterable(exe, prog, loss, loader) - else: - train_non_iterable(exe, prog, loss, loader) - - - ''' - Users can use return_list = True in dygraph mode. - ''' - with fluid.dygraph.guard(places[0]): - loader = fluid.io.DataLoader.from_generator(capacity=2, return_list=True) - set_data_source(loader, places[0]) - for image, label in loader(): - relu = fluid.layers.relu(image) - assert image.shape == [BATCH_SIZE, 784] - assert label.shape == [BATCH_SIZE, 1] - assert relu.shape == [BATCH_SIZE, 784] - - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - import os - - # We use 2 CPU cores to run inference network - os.environ['CPU_NUM'] = '2' - - # The data source has only 3 batches, which can not be - # divided evenly to each CPU core - def batch_generator(): - for i in range(3): - yield np.array([i+1]).astype('float32'), - - x = fluid.data(name='x', shape=[None], dtype='float32') - y = x * x - - def run_inference(drop_last): - loader = fluid.io.DataLoader.from_generator(feed_list=[x], - capacity=8, drop_last=drop_last) - loader.set_batch_generator(batch_generator, fluid.cpu_places()) - - exe = fluid.Executor(fluid.CPUPlace()) - prog = fluid.CompiledProgram(fluid.default_main_program()) - prog = prog.with_data_parallel() - - result = [] - for data in loader(): - each_ret, = exe.run(prog, feed=data, fetch_list=[y]) - result.extend(each_ret) - return result - - # Set drop_last to True, so that the last batch whose - # number is less than CPU core number would be discarded. - print(run_inference(drop_last=True)) # [1.0, 4.0] - - # Set drop_last to False, so that the last batch whose - # number is less than CPU core number can be tested. - print(run_inference(drop_last=False)) # [1.0, 4.0, 9.0] - - -.. py:method:: from_dataset(dataset, places, drop_last=True) - -创建一个DataLoader对象用于加载Dataset产生的数据。目前,Dataset仅支持Linux系统下使用。 - -参数: - - **dataset** (InMemoryDataset|QueueDataset) - Dataset对象。 - - **places** (list(CUDAPlace)|list(CPUPlace)) - DataLoader对象返回数据所在的place。 - - **drop_last** (bool) - 是否丢弃最后样本数量不足batch size的batch。若drop_last = True则丢弃,若drop_last = False则不丢弃。 - -返回: 被创建的DataLoader对象,可以for-range的方式循环迭代 - -返回类型: loader (DataLoader) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - image = fluid.layers.data(name='image', shape=[784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - - dataset = fluid.DatasetFactory().create_dataset("QueueDataset") - dataset.set_batch_size(32) - dataset.set_filelist(['a.txt', 'b.txt', 'c.txt']) - dataset.set_use_var([image, label]) - dataset.set_pipe_command('cat') - - loader = fluid.io.DataLoader.from_dataset(dataset, fluid.cpu_places()) - - diff --git a/doc/paddle/api/paddle/fluid/reader/PyReader_cn.rst b/doc/paddle/api/paddle/fluid/reader/PyReader_cn.rst deleted file mode 100644 index 10920cb264f87170a5394d4a4be70a74596c6c02..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/reader/PyReader_cn.rst +++ /dev/null @@ -1,389 +0,0 @@ -.. _cn_api_fluid_io_PyReader: - -PyReader -------------------------------- - -.. py:class:: paddle.fluid.io.PyReader(feed_list=None, capacity=None, use_double_buffer=True, iterable=True, return_list=False) - - - - - -在python中为数据输入创建一个reader对象。将使用python线程预取数据,并将其异步插入队列。当调用Executor.run(…)时,将自动提取队列中的数据。 - -参数: - - **feed_list** (list(Variable)|tuple(Variable)) - feed变量列表,由 ``fluid.layers.data()`` 创建。 - - **capacity** (int) - PyReader对象内部维护队列的容量大小。单位是batch数量。若reader读取速度较快,建议设置较大的capacity值。 - - **use_double_buffer** (bool) - 是否使用 ``double_buffer_reader`` 。若use_double_buffer=True,PyReader会异步地预读取下一个batch的数据,可加速数据读取过程,但同时会占用少量的CPU/GPU存储,即一个batch输入数据的存储空间。 - - **iterable** (bool) - 所创建的DataLoader对象是否可迭代。 - - **return_list** (bool) - 每个设备上的数据是否以list形式返回。仅在iterable = True模式下有效。若return_list = False,每个设备上的返回数据均是str -> LoDTensor的映射表,其中映射表的key是每个输入变量的名称。若return_list = True,则每个设备上的返回数据均是list(LoDTensor)。推荐在静态图模式下使用return_list = False,在动态图模式下使用return_list = True。 - - -返回: 被创建的reader对象 - -返回类型: reader (Reader) - - -**代码示例** - -1.如果iterable=False,则创建的PyReader对象几乎与 ``fluid.layers.py_reader()`` 相同。算子将被插入program中。用户应该在每个epoch之前调用 ``start()`` ,并在epoch结束时捕获 ``Executor.run()`` 抛出的 ``fluid.core.EOFException`` 。一旦捕获到异常,用户应该调用 ``reset()`` 手动重置reader。 - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 5 - BATCH_SIZE = 3 - - def network(image, label): - # 用户定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - def reader_creator_random_image_and_label(height, width): - def reader(): - for i in range(ITER_NUM): - fake_image = np.random.uniform(low=0, - high=255, - size=[height, width]) - fake_label = np.ones([1]) - yield fake_image, fake_label - return reader - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - - reader = fluid.io.PyReader(feed_list=[image, label], - capacity=4, - iterable=False) - - user_defined_reader = reader_creator_random_image_and_label(784, 784) - reader.decorate_sample_list_generator( - paddle.batch(user_defined_reader, batch_size=BATCH_SIZE)) - - loss = network(image, label) - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - for i in range(EPOCH_NUM): - reader.start() - while True: - try: - executor.run(feed=None) - except fluid.core.EOFException: - reader.reset() - break - - -2.如果iterable=True,则创建的PyReader对象与程序分离。程序中不会插入任何算子。在本例中,创建的reader是一个python生成器,它是可迭代的。用户应将从PyReader对象生成的数据输入 ``Executor.run(feed=...)`` 。 - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 5 - BATCH_SIZE = 10 - - def network(image, label): - # 用户定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - def reader_creator_random_image(height, width): - def reader(): - for i in range(ITER_NUM): - fake_image = np.random.uniform(low=0, high=255, size=[height, width]), - fake_label = np.ones([1]) - yield fake_image, fake_label - return reader - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True, return_list=False) - - user_defined_reader = reader_creator_random_image(784, 784) - reader.decorate_sample_list_generator( - paddle.batch(user_defined_reader, batch_size=BATCH_SIZE), - fluid.core.CPUPlace()) - loss = network(image, label) - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - - for _ in range(EPOCH_NUM): - for data in reader(): - executor.run(feed=data, fetch_list=[loss]) - -3. return_list=True,返回值将用list表示而非dict,通常用于动态图模式中。 - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 5 - BATCH_SIZE = 10 - - def reader_creator_random_image(height, width): - def reader(): - for i in range(ITER_NUM): - yield np.random.uniform(low=0, high=255, size=[height, width]), \ - np.random.random_integers(low=0, high=9, size=[1]) - return reader - - place = fluid.CPUPlace() - with fluid.dygraph.guard(place): - py_reader = fluid.io.PyReader(capacity=2, return_list=True) - user_defined_reader = reader_creator_random_image(784, 784) - py_reader.decorate_sample_list_generator( - paddle.batch(user_defined_reader, batch_size=BATCH_SIZE), - place) - for image, label in py_reader(): - relu = fluid.layers.relu(image) - -.. py:method:: start() - -启动数据输入线程。只能在reader对象不可迭代时调用。 - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - BATCH_SIZE = 10 - - def generator(): - for i in range(5): - yield np.random.uniform(low=0, high=255, size=[784, 784]), - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - reader = fluid.io.PyReader(feed_list=[image], capacity=4, iterable=False) - reader.decorate_sample_list_generator( - paddle.batch(generator, batch_size=BATCH_SIZE)) - - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - for i in range(3): - reader.start() - while True: - try: - executor.run(feed=None) - except fluid.core.EOFException: - reader.reset() - break - -.. py:method:: reset() - -当 ``fluid.core.EOFException`` 抛出时重置reader对象。只能在reader对象不可迭代时调用。 - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - BATCH_SIZE = 10 - - def generator(): - for i in range(5): - yield np.random.uniform(low=0, high=255, size=[784, 784]), - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - reader = fluid.io.PyReader(feed_list=[image], capacity=4, iterable=False) - reader.decorate_sample_list_generator( - paddle.batch(generator, batch_size=BATCH_SIZE)) - - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - for i in range(3): - reader.start() - while True: - try: - executor.run(feed=None) - except fluid.core.EOFException: - reader.reset() - break - -.. py:method:: decorate_sample_generator(sample_generator, batch_size, drop_last=True, places=None) - -设置PyReader对象的数据源。 - -提供的 ``sample_generator`` 应该是一个python生成器,它生成的数据类型应为list(numpy.ndarray)。 - -当PyReader对象可迭代时,必须设置 ``places`` 。 - -如果所有的输入都没有LOD,这个方法比 ``decorate_sample_list_generator(paddle.batch(sample_generator, ...))`` 更快。 - -参数: - - **sample_generator** (generator) – Python生成器,yield 类型为list(numpy.ndarray) - - **batch_size** (int) – batch size,必须大于0 - - **drop_last** (bool) – 当样本数小于batch数量时,是否删除最后一个batch - - **places** (None|list(CUDAPlace)|list(CPUPlace)) – 位置列表。当PyReader可迭代时必须被提供 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 15 - BATCH_SIZE = 3 - - def network(image, label): - # 用户定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - def random_image_and_label_generator(height, width): - def generator(): - for i in range(ITER_NUM): - fake_image = np.random.uniform(low=0, - high=255, - size=[height, width]) - fake_label = np.array([1]) - yield fake_image, fake_label - return generator - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True) - - user_defined_generator = random_image_and_label_generator(784, 784) - reader.decorate_sample_generator(user_defined_generator, - batch_size=BATCH_SIZE, - places=[fluid.CPUPlace()]) - loss = network(image, label) - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - - for _ in range(EPOCH_NUM): - for data in reader(): - executor.run(feed=data, fetch_list=[loss]) - -.. py:method:: decorate_sample_list_generator(reader, places=None) - -设置PyReader对象的数据源。 - -提供的 ``reader`` 应该是一个python生成器,它生成列表(numpy.ndarray)类型的批处理数据。 - -当PyReader对象不可迭代时,必须设置 ``places`` 。 - -参数: - - **reader** (generator) – 返回列表(numpy.ndarray)类型的批处理数据的Python生成器 - - **places** (None|list(CUDAPlace)|list(CPUPlace)) – 位置列表。当PyReader可迭代时必须被提供 - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 15 - BATCH_SIZE = 3 - - def network(image, label): - # 用户定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - def random_image_and_label_generator(height, width): - def generator(): - for i in range(ITER_NUM): - fake_image = np.random.uniform(low=0, - high=255, - size=[height, width]) - fake_label = np.ones([1]) - yield fake_image, fake_label - return generator - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True) - - user_defined_generator = random_image_and_label_generator(784, 784) - reader.decorate_sample_list_generator( - paddle.batch(user_defined_generator, batch_size=BATCH_SIZE), - fluid.core.CPUPlace()) - loss = network(image, label) - executor = fluid.Executor(fluid.core.CPUPlace()) - executor.run(fluid.default_startup_program()) - - for _ in range(EPOCH_NUM): - for data in reader(): - executor.run(feed=data, fetch_list=[loss]) - -.. py:method:: decorate_batch_generator(reader, places=None) - -设置PyReader对象的数据源。 - -提供的 ``reader`` 应该是一个python生成器,它生成列表(numpy.ndarray)类型或LoDTensor类型的批处理数据。 - -当PyReader对象不可迭代时,必须设置 ``places`` 。 - -参数: - - **reader** (generator) – 返回LoDTensor类型的批处理数据的Python生成器 - - **places** (None|list(CUDAPlace)|list(CPUPlace)) – 位置列表。当PyReader可迭代时必须被提供 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - EPOCH_NUM = 3 - ITER_NUM = 15 - BATCH_SIZE = 3 - - def network(image, label): - # 用户定义网络,此处以softmax回归为例 - predict = fluid.layers.fc(input=image, size=10, act='softmax') - return fluid.layers.cross_entropy(input=predict, label=label) - - def random_image_and_label_generator(height, width): - def generator(): - for i in range(ITER_NUM): - batch_image = np.random.uniform(low=0, - high=255, - size=[BATCH_SIZE, height, width]) - batch_label = np.ones([BATCH_SIZE, 1]) - batch_image = batch_image.astype('float32') - batch_label = batch_label.astype('int64') - yield batch_image, batch_label - return generator - - image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True) - - user_defined_generator = random_image_and_label_generator(784, 784) - reader.decorate_batch_generator(user_defined_generator, fluid.CPUPlace()) - - loss = network(image, label) - executor = fluid.Executor(fluid.CPUPlace()) - executor.run(fluid.default_startup_program()) - - for _ in range(EPOCH_NUM): - for data in reader(): - executor.run(feed=data, fetch_list=[loss]) - - -.. py:method:: next() - -获取下一个数据。用户不应直接调用此方法。此方法用于PaddlePaddle框架内部实现Python 2.x的迭代器协议。 diff --git a/doc/paddle/api/paddle/fluid/regularizer/L1DecayRegularizer_cn.rst b/doc/paddle/api/paddle/fluid/regularizer/L1DecayRegularizer_cn.rst deleted file mode 100644 index 90ebd61ec981aaaf1889ed3f7b3a66949591f1b7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/regularizer/L1DecayRegularizer_cn.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _cn_api_fluid_regularizer_L1DecayRegularizer: - -L1DecayRegularizer -------------------------------- - -.. py:class:: paddle.fluid.regularizer.L1DecayRegularizer(regularization_coeff=0.0) - - - - -**注意:paddle.fluid.regularizer.L1DecayRegularizer是paddle.fluid.regularizer.L1Decay的别名,推荐使用paddle.fluid.regularizer.L1Decay。** - -详见 :ref:`cn_api_fluid_regularizer_L1Decay` 接口的使用文档。 - diff --git a/doc/paddle/api/paddle/fluid/regularizer/L1Decay_cn.rst b/doc/paddle/api/paddle/fluid/regularizer/L1Decay_cn.rst deleted file mode 100644 index d5b0dc6f548ce0708004df7adcf06522886fdc17..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/regularizer/L1Decay_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ - -.. _cn_api_fluid_regularizer_L1Decay: - -L1Decay -------------------------------- - -.. py:attribute:: paddle.fluid.regularizer.L1Decay(regularization_coeff=0.0) - - - - -L1Decay实现L1权重衰减正则化,用于模型训练,使得权重矩阵稀疏。 - -该类生成的实例对象,需要设置在 :ref:`cn_api_fluid_ParamAttr` 或者 ``optimizer`` -(例如 :ref:`cn_api_fluid_optimizer_SGDOptimizer` )中,在 ``ParamAttr`` 中设置时, -只对该网络层中的参数生效;在 ``optimizer`` 中设置时,会对所有的参数生效;如果同时设置, -在 ``ParamAttr`` 中设置的优先级会高于在 ``optimizer`` 中设置。 - -具体实现中,L1权重衰减正则化的计算公式如下: - -.. math:: - \\L1WeightDecay=reg\_coeff∗sign(parameter)\\ - -参数: - - **regularization_coeff** (float) – L1正则化系数,默认值为0.0。 - -**代码示例1** - -.. code-block:: python - - import paddle.fluid as fluid - - main_prog = fluid.Program() - startup_prog = fluid.Program() - with fluid.program_guard(main_prog, startup_prog): - data = fluid.layers.data(name='image', shape=[3, 28, 28], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - hidden = fluid.layers.fc(input=data, size=128, act='relu') - prediction = fluid.layers.fc(input=hidden, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=prediction, label=label) - avg_loss = fluid.layers.mean(loss) - optimizer = fluid.optimizer.Adagrad( - learning_rate=1e-4, - regularization=fluid.regularizer.L1Decay( - regularization_coeff=0.1)) - 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! - - diff --git a/doc/paddle/api/paddle/fluid/regularizer/L2DecayRegularizer_cn.rst b/doc/paddle/api/paddle/fluid/regularizer/L2DecayRegularizer_cn.rst deleted file mode 100644 index 6e72e53138d365fee1af9b07cb8bce36147999fe..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/regularizer/L2DecayRegularizer_cn.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. _cn_api_fluid_regularizer_L2DecayRegularizer: - -L2DecayRegularizer -------------------------------- - -.. py:class:: paddle.fluid.regularizer.L2DecayRegularizer(regularization_coeff=0.0) - - - - -**注意:paddle.fluid.regularizer.L2DecayRegularizer是paddle.fluid.regularizer.L2Decay的别名,推荐使用paddle.fluid.regularizer.L2Decay。** - -详见 :ref:`cn_api_fluid_regularizer_L2Decay` 接口的使用文档。 - - diff --git a/doc/paddle/api/paddle/fluid/regularizer/L2Decay_cn.rst b/doc/paddle/api/paddle/fluid/regularizer/L2Decay_cn.rst deleted file mode 100644 index d9c55c53f8c838965b7e5e588d9de4a2a6cce5d4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/regularizer/L2Decay_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_regularizer_L2Decay: - -L2Decay -------------------------------- - -.. py:attribute:: paddle.fluid.regularizer.L2Decay - - - - -L2Decay实现L2权重衰减正则化,用于模型训练,有助于防止模型对训练数据过拟合。 - -该类生成的实例对象,需要设置在 :ref:`cn_api_fluid_ParamAttr` 或者 ``optimizer`` -(例如 :ref:`cn_api_fluid_optimizer_SGDOptimizer` )中,在 ``ParamAttr`` 中设置时, -只对该网络层中的参数生效;在 ``optimizer`` 中设置时,会对所有的参数生效;如果同时设置, -在 ``ParamAttr`` 中设置的优先级会高于在 ``optimizer`` 中设置。 - -具体实现中,L2权重衰减正则化的计算公式如下: - -.. math:: - \\L2WeightDecay=reg\_coeff*parameter\\ - -参数: - - **regularization_coeff** (float) – 正则化系数,默认值为0.0。 - -**代码示例1** - -.. code-block:: python - - import paddle.fluid as fluid - - main_prog = fluid.Program() - startup_prog = fluid.Program() - with fluid.program_guard(main_prog, startup_prog): - data = fluid.layers.data(name='image', shape=[3, 28, 28], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - hidden = fluid.layers.fc(input=data, size=128, act='relu') - prediction = fluid.layers.fc(input=hidden, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=prediction, label=label) - avg_loss = fluid.layers.mean(loss) - optimizer = fluid.optimizer.Adagrad( - learning_rate=1e-4, - regularization=fluid.regularizer.L2Decay( - regularization_coeff=0.1)) - 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! - diff --git a/doc/paddle/api/paddle/fluid/regularizer_cn.rst b/doc/paddle/api/paddle/fluid/regularizer_cn.rst deleted file mode 100644 index 849e7e8ac0d6cfcd400ac0c81153cc0a5969a461..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/regularizer_cn.rst +++ /dev/null @@ -1,14 +0,0 @@ -======================= -fluid.regularizer -======================= - - - - -.. toctree:: - :maxdepth: 1 - - regularizer_cn/L1Decay_cn.rst - regularizer_cn/L1DecayRegularizer_cn.rst - regularizer_cn/L2Decay_cn.rst - regularizer_cn/L2DecayRegularizer_cn.rst diff --git a/doc/paddle/api/paddle/fluid/release_memory_cn.rst b/doc/paddle/api/paddle/fluid/release_memory_cn.rst deleted file mode 100644 index 724589bf79cd77f11c3ec9431019d31f08ffd74f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/release_memory_cn.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _cn_api_fluid_transpiler_release_memory: - -release_memory -------------------------------- - - -.. py:function:: paddle.fluid.transpiler.release_memory(input_program, skip_opt_set=None) - -:api_attr: 声明式编程模式(静态图) - - - -**从1.6版本开始此接口不再推荐使用,请不要在新写的代码中使用它,1.6+版本已默认开启更优的存储优化策略** \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/require_version_cn.rst b/doc/paddle/api/paddle/fluid/require_version_cn.rst deleted file mode 100644 index 19f14cb37fe9adc927141d647e61ddfa843bc3d2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/require_version_cn.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _cn_api_fluid_require_version: - -require_version -------------------------------- - -.. py:function:: paddle.fluid.require_version(min_version, max_version=None) - - - -该接口用于检查已安装的飞桨版本是否介于[``min_version``, ``max_version``]之间(包含 ``min_version`` 和 ``max_version`` ),如果已安装的版本低于 ``min_version`` 或者高于 ``max_version`` ,将会抛出异常。该接口无返回值。 - -参数: - - **min_version** (str) - 指定所需要的最低版本(如‘1.4.0’) - - **max_version** (str, optional) – 指定可接受的最高版本(如‘1.7.0’),默认值None,表示任意大于等于 ``min_version`` 的版本都可以接受。 - -返回:无 - -抛出异常: - - - ``TypeError`` – ``min_version`` 的类型不是str。 - - ``TypeError`` – ``max_version`` 的类型不是str或type(None)。 - - ``ValueError`` – ``min_version`` 的值不是正常的版本号格式。 - - ``ValueError`` – ``max_version`` 的值不是正常的版本号格式或None。 - - ``Exception`` – 已安装的版本低于 ``min_version`` 或者高于 ``max_version`` 。 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - # 任何大于等于0.1.0的版本都可以接受 - fluid.require_version('0.1.0') - - # 只接受介于0.1.0和10.0.0之间的版本(包含0.1.0和10.0.0) - fluid.require_version(min_version='0.1.0', max_version='10.0.0') - diff --git a/doc/paddle/api/paddle/fluid/set_flags_cn.rst b/doc/paddle/api/paddle/fluid/set_flags_cn.rst deleted file mode 100644 index a4f6fe1cd02bd2a691059b6732a04e757ab0304e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/set_flags_cn.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. _cn_api_fluid_set_flags: - -set_flags -------------------------------- - -.. py:function:: paddle.fluid.set_flags(flags) -用于设置Paddle框架中环境变量FLAGS的值。 - -参数: - - **flags** (dict) - 包含想要设置的环境变量FLAGS的名称和值的字典。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - fluid.set_flags({'FLAGS_eager_delete_tensor_gb': 1.0}) diff --git a/doc/paddle/api/paddle/fluid/transpiler/DistributeTranspilerConfig_cn.rst b/doc/paddle/api/paddle/fluid/transpiler/DistributeTranspilerConfig_cn.rst deleted file mode 100644 index 4a95daa6428ad1d9be20ae1edc6dd1a0a0549920..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/transpiler/DistributeTranspilerConfig_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_transpiler_DistributeTranspilerConfig: - -DistributeTranspilerConfig -------------------------------- - - -.. py:class:: paddle.fluid.transpiler.DistributeTranspilerConfig - -:api_attr: 声明式编程模式(静态图) - - - -单机任务切换为分布式任务的配置类,用户可根据需求进行配置,如指定同步/异步训练,指定节点个数及模型切分逻辑。 - -返回:None - -.. py:attribute:: slice_var_up (bool) - -是否为Pserver将张量切片, 默认为True, bool类型属性, 默认为True。该参数将指定是否将参数/梯度切分后均匀分布于多个PServer上。slice_var_up为True的情况下,会将参数均匀切分后分布于多个PServer端,使每个PServer的负载相对均衡。 - - -.. py:attribute:: split_method (PSDispatcher) - -参数分发的方式,当前支持的方法包括 :ref:`cn_api_fluid_transpiler_RoundRobin` 和 :ref:`cn_api_fluid_transpiler_HashName` 两种, 默认为RoundRobin。 - -注意: 尝试选择最佳方法来达到负载均衡。 - -.. py:attribute:: min_block_size (int) - -参数切片时,最小数据块的大小,默认为8192。 - -注意: 根据:https://github.com/PaddlePaddle/Paddle/issues/8638#issuecomment-369912156 , 当数据块大小超过2MB时,我们可以有效地使用带宽。如果你想更改它,请详细查看slice_variable函数。 - -**代码示例** - -.. code-block:: python - - from paddle.fluid.transpiler.ps_dispatcher import RoundRobin - import paddle.fluid as fluid - - config = fluid.DistributeTranspilerConfig() - config.slice_var_up = True - config.split_method = RoundRobin - config.min_block_size = 81920 - - - diff --git a/doc/paddle/api/paddle/fluid/transpiler/DistributeTranspiler_cn.rst b/doc/paddle/api/paddle/fluid/transpiler/DistributeTranspiler_cn.rst deleted file mode 100644 index 92ea6dfbfd198334767f5f0afc6c958dd38d23ea..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/transpiler/DistributeTranspiler_cn.rst +++ /dev/null @@ -1,226 +0,0 @@ -.. _cn_api_fluid_transpiler_DistributeTranspiler: - -DistributeTranspiler -------------------------------- - - -.. py:class:: paddle.fluid.transpiler.DistributeTranspiler (config=None) - -:api_attr: 声明式编程模式(静态图) - - - - -该类可以把fluid program转变为分布式数据并行计算的program, 有PServer和NCCL2两种模式。 -在Pserver(全称:parameter server)模式下, 通过 ``transpile`` 将用于单机训练的 ``program`` 转译为可用于parameter server的分布式架构(即PServer,参数服务器)来进行训练的program。 -在NCCL2模式下, 通过 ``transpile`` 将用于单机训练的 ``program`` 转译为可用于NCCL2的分布式架构来进行训练的program。在NCCL2模式下,transpiler会在 ``startup_program`` 中附加一个 ``NCCL_ID`` 广播算子(broadcasting operators)来实现在该集群中所有工作结点共享``NCCL_ID`` 。 调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``Executor`` 来启动NCCL2分布式模式。 - - -参数: - - **config** (DistributeTranspilerConfig) DistributeTranspiler属性配置实例,定义了program转变所需要的属性, 请参考:`DistributeTranspilerConfig` 相关文档。 - -返回:初始化后的DistributeTranspiler实例 - -返回类型:实例(DistributeTranspiler) - - -**代码示例** - -.. code-block:: python - - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_loss = fluid.layers.mean(cost) - - sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001) - sgd_optimizer.minimize(avg_loss) - - # pserver 模式下 - pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - current_endpoint = "192.168.0.1:6174" - trainer_id = 0 - trainers = 4 - role = "PSERVER" - t = fluid.DistributeTranspiler() - t.transpile( - trainer_id, pservers=pserver_endpoints, trainers=trainers) - if role == "PSERVER": - pserver_program = t.get_pserver_program(current_endpoint) - pserver_startup_program = t.get_startup_program(current_endpoint, - pserver_program) - elif role == "TRAINER": - trainer_program = t.get_trainer_program() - - # nccl2 模式下 - trainer_num = 2 - trainer_id = 0 - config = fluid.DistributeTranspilerConfig() - config.mode = "nccl2" - trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - t = fluid.DistributeTranspiler(config=config) - t.transpile(trainer_id=trainer_id, trainers=trainer_endpoints, current_endpoint="192.168.0.1:6174") - exe = fluid.ParallelExecutor( - use_cuda=True, - loss_name=avg_loss.name, - num_trainers=trainer_num, - trainer_id=trainer_id - ) - - - -.. py:method:: transpile(trainer_id, program=None, pservers='127.0.0.1:6174', trainers=1, sync_mode=True, startup_program=None, current_endpoint='127.0.0.1:6174') - -通过此方法,可根据用户配置将单机的program转换为当前节点可用的数据并行的分布式program。 - -参数: - - **trainer_id** (int) – 当前Trainer worker的id, 如果有n个Trainer worker, id 取值范围为0 ~ n-1 - - **program** (Program|None) – 待transpile(转译)的main program, 默认为 ``fluid.default_main_program()`` - - **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_startup_program()`` - - **current_endpoint** (str) – 当需要把program转译(transpile)至NCCL2模式时,需要将当前endpoint(终端)传入该参数。PServer模型下,当用户需要使用增量训练时,必须要指定该参数。 - -返回:None - - -**代码示例** - -.. code-block:: python - - transpiler = fluid.DistributeTranspiler() - t.transpile( - trainer_id=0, - pservers="127.0.0.1:7000,127.0.0.1:7001", - trainers=2, - sync_mode=False, - current_endpoint="127.0.0.1:7000") - - -.. py:method:: get_trainer_program(wait_port=True) - - -该方法可以得到Trainer侧的program。Trainer侧的program相较于原始的单机执行的program,主要有以下不同: - - - 删除了参数更新optimizer相关op,参数的更新由Pserver(参数服务器)执行 - - 在每个参数的反向梯度计算op后,添加了 ``Send_op`` 与 ``Recv_op`` ,用于发送参数的梯度与接受更新后的参数 - -参数: - - **wait_port** (bool,默认值True) - 是否等待参数服务器准备就绪后再返回program - -返回: Trainer侧的program - -返回类型: Program - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 这是一个示例,请根据你的情况更改endpoint - pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - trainer_id = 0 - trainers = 4 - t = fluid.DistributeTranspiler() - t.transpile(trainer_id, trainers=trainers, pservers=pserver_endpoints) - trainer_program = t.get_trainer_program() - - -.. py:method:: get_pserver_program(endpoint) - - -该方法可以得到Pserver(参数服务器)侧的program。Pserver侧的program相较于原始的单机执行的program,主要有以下不同: - - - 仅包含参数更新optimizer相关op,与分布式通信相关op - - 0号block仅包含变量的定义及 ``listen_and_serv_op`` - - Pserver为每个需要进行更新的参数新建了一个独立的block - -参数: - - **endpoint** (str) – 当前Pserver终端 - -返回: 当前Pserver需要执行的program - -返回类型: Program - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 这是一个示例,请根据你的情况更改endpoint - pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - current_endpoint = "192.168.0.1:6174" - trainer_id = 0 - trainers = 4 - t = fluid.DistributeTranspiler() - t.transpile( - trainer_id, pservers=pserver_endpoints, trainers=trainers) - pserver_program = t.get_pserver_program(current_endpoint) - - -.. py:method:: get_pserver_programs(endpoint) - - -该方法可以得到Pserver侧用于分布式训练的 ``main_program`` 和 ``startup_program`` 。该函数返回的 ``main_program`` 与函数 ``get_pserver_program`` 的返回值一致。 - -参数: - - **endpoint** (str) – 当前Pserver终端 - -返回: (main_program, startup_program), “Program”类型的元组 - -返回类型: tuple - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 这是一个示例,请根据你的情况更改endpoint - pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - current_endpoint = "192.168.0.1:6174" - trainer_id = 0 - trainers = 4 - t = fluid.DistributeTranspiler() - t.transpile( - trainer_id, pservers=pserver_endpoints, trainers=trainers) - pserver_program, pserver_startup_program = t.get_pserver_programs(current_endpoint) - - -.. 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 - -返回: Pserver侧的startup_program - -返回类型: Program - -**代码示例** - -.. code-block:: python - - pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174" - current_endpoint = "192.168.0.1:6174" - trainer_id = 0 - trainers = 4 - - t = fluid.DistributeTranspiler() - t.transpile(trainer_id, pservers=pserver_endpoints, trainers=trainers) - pserver_program = t.get_pserver_program(current_endpoint) - pserver_startup_program = t.get_startup_program(current_endpoint, - pserver_program) - - - diff --git a/doc/paddle/api/paddle/fluid/transpiler/HashName_cn.rst b/doc/paddle/api/paddle/fluid/transpiler/HashName_cn.rst deleted file mode 100644 index 9b4d019cbec11dba1a818c95afe81342e2e284b6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/transpiler/HashName_cn.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _cn_api_fluid_transpiler_HashName: - -HashName -------------------------------- - - -.. py:class:: paddle.fluid.transpiler.HashName(pserver_endpoints) - -:api_attr: 声明式编程模式(静态图) - - - -该方法使用 python ``Hash()`` 函数将变量散列到多个parameter server节点。 - -参数: - - **pserver_endpoints** (list) - endpoint (ip:port)的 list - -返回:实例化后的HashName的对象 - -返回类型:HashName - -**代码示例** - -.. code-block:: python - - import paddle.fluid.transpiler.HashName as HashName - - pserver_endpoints = [“127.0.0.1:6007”, “127.0.0.1:6008”] - vars = [“var1”,”var2”,”var3”,”var4”,”var5”] - rr = HashName(pserver_endpoints) - rr.dispatch(vars) - - -.. py:method:: reset() - -该方法将重置HashName内置的计数, 计数将重置为0。 - -返回:无。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid.transpiler.HashName as HashName - - pserver_endpoints = [“127.0.0.1:6007”, “127.0.0.1:6008”] - vars = [“var1”,”var2”,”var3”,”var4”,”var5”] - rr = HashName(pserver_endpoints) - rr.reset() - diff --git a/doc/paddle/api/paddle/fluid/transpiler/memory_optimize_cn.rst b/doc/paddle/api/paddle/fluid/transpiler/memory_optimize_cn.rst deleted file mode 100644 index d9a5a2b023fc6f1d578d254b5057a9c01d6940b9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/transpiler/memory_optimize_cn.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _cn_api_fluid_transpiler_memory_optimize: - -memory_optimize -------------------------------- - - -.. py:function:: paddle.fluid.transpiler.memory_optimize(input_program, skip_opt_set=None, print_log=False, level=0, skip_grads=True) - -:api_attr: 声明式编程模式(静态图) - - - -**从1.6版本开始此接口不再推荐使用,请不要在新写的代码中使用它,1.6+版本已默认开启更优的存储优化策略** \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/transpiler/release_memory_cn.rst b/doc/paddle/api/paddle/fluid/transpiler/release_memory_cn.rst deleted file mode 100644 index 724589bf79cd77f11c3ec9431019d31f08ffd74f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/transpiler/release_memory_cn.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _cn_api_fluid_transpiler_release_memory: - -release_memory -------------------------------- - - -.. py:function:: paddle.fluid.transpiler.release_memory(input_program, skip_opt_set=None) - -:api_attr: 声明式编程模式(静态图) - - - -**从1.6版本开始此接口不再推荐使用,请不要在新写的代码中使用它,1.6+版本已默认开启更优的存储优化策略** \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/transpiler_cn.rst b/doc/paddle/api/paddle/fluid/transpiler_cn.rst deleted file mode 100644 index ebf4661d09d8b21dba989e162e13fed5a9bda454..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/transpiler_cn.rst +++ /dev/null @@ -1,15 +0,0 @@ -======================= -fluid.transpiler -======================= - - - - -.. toctree:: - :maxdepth: 1 - - transpiler_cn/DistributeTranspiler_cn.rst - transpiler_cn/DistributeTranspilerConfig_cn.rst - transpiler_cn/HashName_cn.rst - transpiler_cn/memory_optimize_cn.rst - transpiler_cn/release_memory_cn.rst diff --git a/doc/paddle/api/paddle/fluid/unique_name/generate_cn.rst b/doc/paddle/api/paddle/fluid/unique_name/generate_cn.rst deleted file mode 100644 index 4eb8a68c09bf029f5363f04ff9461b5e5aa9ecff..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/unique_name/generate_cn.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. _cn_api_fluid_unique_name_generate: - -generate -------------------------------- - -.. py:function:: paddle.fluid.unique_name.generate(key) - - - - -该接口产生以前缀key开头的唯一名称。目前,Paddle通过从0开始的编号对相同前缀key的名称进行区分。例如,使用key=fc连续调用该接口会产生fc_0, fc_1, fc_2等不同名称。 - -参数: - - **key** (str) - 产生的唯一名称的前缀。 - -返回:含前缀key的唯一名称。 - -返回类型:str。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - name1 = fluid.unique_name.generate('fc') - name2 = fluid.unique_name.generate('fc') - print(name1, name2) # fc_0, fc_1 - - diff --git a/doc/paddle/api/paddle/fluid/unique_name/guard_cn.rst b/doc/paddle/api/paddle/fluid/unique_name/guard_cn.rst deleted file mode 100644 index 7c457eb15118baf6823be9e404fc2fa053b6a2f6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/unique_name/guard_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_unique_name_guard: - -guard -------------------------------- - -.. py:function:: paddle.fluid.unique_name.guard(new_generator=None) - - - - -该接口用于更改命名空间,与with语句一起使用。使用后,在with语句的上下文中使用新的命名空间,调用generate接口时相同前缀的名称将从0开始重新编号。 - -参数: - - **new_generator** (str|bytes, 可选) - 新命名空间的名称。请注意,Python2中的str在Python3中被区分为str和bytes两种,因此这里有两种类型。 缺省值为None,若不为None,new_generator将作为前缀添加到generate接口产生的唯一名称中。 - -返回: 无。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - with fluid.unique_name.guard(): - name_1 = fluid.unique_name.generate('fc') - with fluid.unique_name.guard(): - name_2 = fluid.unique_name.generate('fc') - print(name_1, name_2) # fc_0, fc_0 - - with fluid.unique_name.guard('A'): - name_1 = fluid.unique_name.generate('fc') - with fluid.unique_name.guard('B'): - name_2 = fluid.unique_name.generate('fc') - print(name_1, name_2) # Afc_0, Bfc_0 - - diff --git a/doc/paddle/api/paddle/fluid/unique_name/switch_cn.rst b/doc/paddle/api/paddle/fluid/unique_name/switch_cn.rst deleted file mode 100644 index 93da7cc1dd97162fbc09b6ae811c2a8f0f11a958..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/unique_name/switch_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_unique_name_switch: - -switch -------------------------------- - -.. py:function:: paddle.fluid.unique_name.switch(new_generator=None) - - - - -该接口将当前上下文的命名空间切换到新的命名空间。该接口与guard接口都可用于更改命名空间,推荐使用guard接口,配合with语句管理命名空间上下文。 - -参数: - - **new_generator** (UniqueNameGenerator, 可选) - 要切换到的新命名空间,一般无需设置。缺省值为None,表示切换到一个匿名的新命名空间。 - -返回:先前的命名空间,一般无需操作该返回值。 - -返回类型:UniqueNameGenerator。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - name1 = fluid.unique_name.generate('fc') - name2 = fluid.unique_name.generate('fc') - print(name1, name2) # fc_0, fc_1 - - pre_generator = fluid.unique_name.switch() # 切换到新命名空间 - name2 = fluid.unique_name.generate('fc') - print(name2) # fc_0 - - fluid.unique_name.switch(pre_generator) # 切换回原命名空间 - name3 = fluid.unique_name.generate('fc') - print(name3) # fc_2, 因为原命名空间已生成fc_0, fc_1 diff --git a/doc/paddle/api/paddle/fluid/unique_name_cn.rst b/doc/paddle/api/paddle/fluid/unique_name_cn.rst deleted file mode 100644 index f70286eee6666416b11b080159f26042cfea295a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/fluid/unique_name_cn.rst +++ /dev/null @@ -1,13 +0,0 @@ -======================= -fluid.unique_name -======================= - - - - -.. toctree:: - :maxdepth: 1 - - unique_name_cn/generate_cn.rst - unique_name_cn/guard_cn.rst - unique_name_cn/switch_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/BackwardStrategy_cn.rst b/doc/paddle/api/paddle/framework/BackwardStrategy_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/BackwardStrategy_cn.rst rename to doc/paddle/api/paddle/framework/BackwardStrategy_cn.rst diff --git a/doc/paddle/api/paddle/framework/BuildStrategy_cn.rst b/doc/paddle/api/paddle/framework/BuildStrategy_cn.rst deleted file mode 100644 index 2d6f2fa0586898b53490af9f7a5bbb0a481a3aaa..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/BuildStrategy_cn.rst +++ /dev/null @@ -1,198 +0,0 @@ -.. _cn_api_fluid_BuildStrategy: - -BuildStrategy -------------------------------- - - -.. py:class:: paddle.fluid.BuildStrategy - -:api_attr: 声明式编程模式(静态图) - - - -``BuildStrategy`` 使用户更方便地控制 :ref:`cn_api_fluid_ParallelExecutor` 中计算图的建造方法,可通过设置 ``ParallelExecutor`` 中的 ``BuildStrategy`` 成员来实现此功能。 - -**代码示例** - -.. code-block:: python - - import os - import numpy as np - import paddle.fluid as fluid - - os.environ["CPU_NUM"] = '2' - places = fluid.cpu_places() - - data = fluid.layers.data(name="x", shape=[1], dtype="float32") - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - fluid.optimizer.SGD(learning_rate=0.01).minimize(loss) - - build_strategy = fluid.BuildStrategy() - build_strategy.enable_inplace = True - build_strategy.memory_optimize = True - build_strategy.reduce_strategy = fluid.BuildStrategy.ReduceStrategy.Reduce - program = fluid.compiler.CompiledProgram(fluid.default_main_program()) - program = program.with_data_parallel(loss_name=loss.name, - build_strategy=build_strategy, - places=places) - - -.. py:attribute:: debug_graphviz_path - -str类型。表示以graphviz格式向文件中写入计算图的路径,有利于调试。默认值为空字符串。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - build_strategy = fluid.BuildStrategy() - build_strategy.debug_graphviz_path = "./graph" - - -.. py:attribute:: enable_sequential_execution - -bool类型。如果设置为True,则算子的执行顺序将与算子定义的执行顺序相同。默认为False。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - build_strategy = fluid.BuildStrategy() - build_strategy.enable_sequential_execution = True - - -.. py:attribute:: fuse_broadcast_ops - -bool类型。表明是否融合(fuse) broadcast ops。该选项指在Reduce模式下有效,使程序运行更快。默认为False。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - build_strategy = fluid.BuildStrategy() - build_strategy.fuse_broadcast_ops = True - - -.. py:attribute:: fuse_elewise_add_act_ops - -bool类型。表明是否融合(fuse) elementwise_add_op和activation_op。这会使整体执行过程更快。默认为False。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - build_strategy = fluid.BuildStrategy() - build_strategy.fuse_elewise_add_act_ops = True - - -.. py:attribute:: fuse_relu_depthwise_conv - -bool类型。表明是否融合(fuse) relu和depthwise_conv2d,节省GPU内存并可能加速执行过程。此选项仅适用于GPU设备。默认为False。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - build_strategy = fluid.BuildStrategy() - build_strategy.fuse_relu_depthwise_conv = True - -.. py:attribute:: gradient_scale_strategy - -``fluid.BuildStrategy.GradientScaleStrategy`` 类型。在 ``ParallelExecutor`` 中,存在三种定义loss对应梯度( *loss@grad* )的方式,分别为 ``CoeffNumDevice``, ``One`` 与 ``Customized``。默认情况下, ``ParallelExecutor`` 根据设备数目来设置 *loss@grad* 。如果用户需要自定义 *loss@grad* ,可以选择 ``Customized`` 方法。默认为 ``CoeffNumDevice`` 。 - -**代码示例** - -.. code-block:: python - - import os - import numpy as np - import paddle.fluid as fluid - import paddle.fluid.compiler as compiler - - use_cuda = True - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - exe = fluid.Executor(place) - - # NOTE: 如果你使用CPU计算,需要指定CPU_NUM, 否则,fluid - # 将使用所有的核的数目作为CPU_NUM, - # 这种情况下,输入的batch size应该大于CPU_NUM, 否则, - # 进程将会因为异常而失败。 - if not use_cuda: - os.environ['CPU_NUM'] = str(2) - places = fluid.cpu_places() - else: - places = places = fluid.cuda_places() - - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - fluid.optimizer.SGD(learning_rate=0.01).minimize(loss) - - fluid.default_startup_program().random_seed=1 - exe.run(fluid.default_startup_program()) - - build_strategy = fluid.BuildStrategy() - build_strategy.gradient_scale_strategy = \ - fluid.BuildStrategy.GradientScaleStrategy.Customized - compiled_prog = compiler.CompiledProgram( - fluid.default_main_program()).with_data_parallel( - loss_name=loss.name, build_strategy=build_strategy, - places = places) - - dev_count = len(places) - x = np.random.random(size=(10, 1)).astype('float32') - loss_grad = np.ones((dev_count)).astype("float32") * 0.01 - loss_grad_name = loss.name+"@GRAD" - loss_data = exe.run(compiled_prog, - feed={"X": x, loss_grad_name : loss_grad}, - fetch_list=[loss.name, loss_grad_name]) - -.. py:attribute:: memory_optimize - -bool类型或None。设为True时可用于减少总内存消耗,False表示不使用,None表示框架会自动选择使用或者不使用优化策略。当前,None意味着当GC不能使用时,优化策略将被使用。默认为None。 - -.. py:attribute:: reduce_strategy - -``fluid.BuildStrategy.ReduceStrategy`` 类型。在 ``ParallelExecutor`` 中,存在两种参数梯度聚合策略,即 ``AllReduce`` 和 ``Reduce`` 。如果用户需要在所有执行设备上独立地进行参数更新,可以使用 ``AllReduce`` 。如果使用 ``Reduce`` 策略,所有参数的优化将均匀地分配给不同的执行设备,随之将优化后的参数广播给其他执行设备。 -默认值为 ``AllReduce`` 。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - build_strategy = fluid.BuildStrategy() - build_strategy.reduce_strategy = fluid.BuildStrategy.ReduceStrategy.Reduce - -.. py:attribute:: remove_unnecessary_lock - -bool类型。设置True会去除GPU操作中的一些锁操作, ``ParallelExecutor`` 将运行得更快,默认为True。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - build_strategy = fluid.BuildStrategy() - build_strategy.remove_unnecessary_lock = True - - -.. py:attribute:: sync_batch_norm - -bool类型。表示是否使用同步的批正则化,即在训练阶段通过多个设备同步均值和方差。当前的实现不支持FP16训练和CPU。并且目前**仅支持**仅在一台机器上进行同步式批正则。默认为 False。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - build_strategy = fluid.BuildStrategy() - build_strategy.sync_batch_norm = True - - diff --git a/doc/paddle/api/paddle/framework/CompiledProgram_cn.rst b/doc/paddle/api/paddle/framework/CompiledProgram_cn.rst deleted file mode 100644 index c6576c63468cac361d12294eb06eb8063d33814f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/CompiledProgram_cn.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _cn_api_fluid_CompiledProgram: - -CompiledProgram -------------------------------- - - -.. py:class:: paddle.fluid.CompiledProgram(program_or_graph, build_strategy=None) - -:api_attr: 声明式编程模式(静态图) - - - -CompiledProgram根据 `build_strategy` 的配置将输入的Program或Graph进行转换和优化,例如:计算图中算子融合、计算图执行过程中开启内存/显存优化等,关于build_strategy更多信息。请参阅 ``fluid.BuildStrategy`` 。 - -参数: - - **program_or_graph** (Graph|Program): 该参数为被执行的Program或Graph。 - - **build_strategy** (BuildStrategy): 通过配置build_strategy,对计算图进行转换和优化,例如:计算图中算子融合、计算图执行过程中开启内存/显存优化等。关于build_strategy更多信息,请参阅 ``fluid.BuildStrategy`` 。 默认为None。 - -返回:初始化后的 ``CompiledProgram`` 对象 - -返回类型:CompiledProgram - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - place = fluid.CUDAPlace(0) # fluid.CPUPlace() - exe = fluid.Executor(place) - - data = fluid.data(name='X', shape=[None, 1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - fluid.optimizer.SGD(learning_rate=0.01).minimize(loss) - - exe.run(fluid.default_startup_program()) - compiled_prog = fluid.CompiledProgram( - fluid.default_main_program()) - - x = numpy.random.random(size=(10, 1)).astype('float32') - loss_data, = exe.run(compiled_prog, - feed={"X": x}, - fetch_list=[loss.name]) - - -.. py:method:: with_data_parallel(loss_name=None, build_strategy=None, exec_strategy=None, share_vars_from=None, places=None) - -该接口用于将输入的Program或Graph进行转换,以便通过数据并行模式运行该模型。用户可以通过 `build_strategy` 和 `exec_strategy` 设置计算图构建和计算图执行过程中可以进行的一些优化,例如:将梯度聚合的AllReduce操作进行融合、指定计算图运行过程中使用的线程池大小等。**注意:如果在构建CompiledProgram和调用with_data_parallel时都指定了build_strategy,在CompiledProgram中的build_strategy会被复写,因此,如果是数据并行训练,建议在调用with_data_parallel接口时设置build_strategy**。 - -参数: - - **loss_name** (str) - 该参数为模型最后得到的损失变量的名字,**注意:如果是模型训练,必须设置loss_name,否则计算结果可能会有问题。** 默认为:None。 - - **build_strategy** (BuildStrategy): 通过配置build_strategy,对计算图进行转换和优化,例如:计算图中算子融合、计算图执行过程中开启内存/显存优化等。关于build_strategy更多的信息,请参阅 ``fluid.BuildStrategy`` 。 默认为:None。 - - **exec_strategy** (ExecutionStrategy) - 通过exec_strategy指定执行计算图过程可以调整的选项,例如线程池大小等。 关于exec_strategy更多信息,请参阅 ``fluid.ExecutionStrategy`` 。 默认为:None。 - - **share_vars_from** (CompiledProgram) - 如果设置了share_vars_from,当前的CompiledProgram将与share_vars_from指定的CompiledProgram共享参数值。需要设置该参数的情况:模型训练过程中需要进行模型测试,并且训练和测试都是采用数据并行模式,那么测试对应的CompiledProgram在调用with_data_parallel时,需要将share_vars_from设置为训练对应的CompiledProgram。由于CompiledProgram只有在第一次执行时才会将变量分发到其他设备上,因此share_vars_from指定的CompiledProgram必须在当前CompiledProgram之前运行。默认为:None。 - - **places** (list(CUDAPlace)|list(CPUPlace)) - 该参数指定模型运行所在的设备。如果希望在GPU0和GPU1上运行,places为[fluid.CUDAPlace(0), fluid.CUDAPlace(1)];如果希望使用2个CPU运行,places为[fluid.CPUPlace()] * 2。 如果没有设置该参数,即该参数为None,模型执行时,将从环境变量中获取可用的设备:如果使用GPU,模型执行时,从环境变量FLAGS_selected_gpus或CUDA_VISIBLE_DEVICES中获取当前可用的设备ID;如果使用CPU,模型执行时,从环境变量CPU_NUM中获取当前可利用的CPU个数。例如:export CPU_NUM=4,如果没有设置该环境变量,执行器会在环境变量中添加该变量,并将其值设为1。默认为:None。 - -返回:配置之后的 ``CompiledProgram`` 对象 - -返回类型:CompiledProgram - -.. note:: - 1. 如果只是进行多卡测试,不需要设置loss_name以及share_vars_from。 - 2. 如果程序中既有模型训练又有模型测试,则构建模型测试所对应的CompiledProgram时必须设置share_vars_from,否则模型测试和模型训练所使用的参数是不一致。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - import os - - use_cuda = True - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - parallel_places = [fluid.CUDAPlace(0), fluid.CUDAPlace(1)] if use_cuda else [fluid.CPUPlace()] * 2 - - # 注意:如果你使用CPU运行程序,需要具体设置CPU_NUM, - # 否则fluid会把逻辑核的所有数目设为CPU_NUM, - # 在这种情况下,输入的batch size应大于CPU_NUM, - # 否则程序会异常中断。 - if not use_cuda: - os.environ['CPU_NUM'] = str(2) - - exe = fluid.Executor(place) - - data = fluid.data(name='X', shape=[None, 1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - - test_program = fluid.default_main_program().clone(for_test=True) - fluid.optimizer.SGD(learning_rate=0.01).minimize(loss) - - exe.run(fluid.default_startup_program()) - compiled_train_prog = fluid.CompiledProgram( - fluid.default_main_program()).with_data_parallel( - loss_name=loss.name, places=parallel_places) - # 注意:如果此处不设置share_vars_from=compiled_train_prog, - # 测试过程中用的参数与训练使用的参数是不一致 - compiled_test_prog = fluid.CompiledProgram( - test_program).with_data_parallel( - share_vars_from=compiled_train_prog, - places=parallel_places) - - train_data = numpy.random.random(size=(10, 1)).astype('float32') - loss_data, = exe.run(compiled_train_prog, - feed={"X": train_data}, - fetch_list=[loss.name]) - test_data = numpy.random.random(size=(10, 1)).astype('float32') - loss_data, = exe.run(compiled_test_prog, - feed={"X": test_data}, - fetch_list=[loss.name]) \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/dygraph/CosineDecay_cn.rst b/doc/paddle/api/paddle/framework/CosineDecay_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/CosineDecay_cn.rst rename to doc/paddle/api/paddle/framework/CosineDecay_cn.rst diff --git a/doc/paddle/api/paddle/framework/ExecutionStrategy_cn.rst b/doc/paddle/api/paddle/framework/ExecutionStrategy_cn.rst deleted file mode 100644 index 25b623fbffda98bd12aea2579d882f5e33d97a43..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/ExecutionStrategy_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_ExecutionStrategy: - -ExecutionStrategy -------------------------------- - - -.. py:class:: paddle.fluid.ExecutionStrategy - -:api_attr: 声明式编程模式(静态图) - - - -通过设置 ``ExecutionStrategy`` 中的选项,用户可以对执行器的执行配置进行调整,比如设置执行器中线程池的大小等。 - -返回:初始化后的ExecutionStrategy的实例 - -返回类型:ExecutionStrategy - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[13], dtype='float32') - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) - - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_loss = fluid.layers.mean(cost) - - sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001) - sgd_optimizer.minimize(avg_loss) - - exec_strategy = fluid.ExecutionStrategy() - exec_strategy.num_threads = 4 - - train_exe = fluid.ParallelExecutor(use_cuda=False, - loss_name=avg_loss.name, - exec_strategy=exec_strategy) - - -.. py:attribute:: num_iteration_per_drop_scope - -int型成员。该选项表示间隔多少次迭代之后清理一次临时变量。模型运行过程中,生成的中间临时变量将被放到local execution scope中,为了避免对临时变量频繁的申请与释放,通常将其设为较大的值(比如10或者100)。默认值为100。 - - -.. py:attribute:: num_iteration_per_run - -int型成员。它配置了当用户在python脚本中调用pe.run()时执行器会执行的迭代次数。Executor每次调用,会进行num_iteration_per_run次训练,它会使整体执行过程更快。 - -.. py:attribute:: num_threads - -int型成员。该选项表示当前 ``Executor`` 的线程池(thread pool)的大小, 此线程池可用来并发执行program中的operator(算子,运算)。如果 :math:`num\_threads=1` ,则所有的operator将一个接一个地执行,但在不同的program重复周期(iterations)中执行顺序可能不同。如果该选项没有被设置,则在 ``Executor`` 中,它会依据设备类型(device type)、设备数目(device count)而设置为相应值。对GPU,:math:`num\_threads=device\_count∗4` ;对CPU, :math:`num\_threads=CPU\_NUM∗4` 。在 ``Executor`` 中有关于 :math:`CPU\_NUM` 的详细解释。如果没有设置 :math:`CPU\_NUM` ,则设置默认值为1, 并提示用户进行 :math:`CPU\_NUM` 的设置。 - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/framework/Executor_cn.rst b/doc/paddle/api/paddle/framework/Executor_cn.rst deleted file mode 100644 index 7a2053a891c88a99d7336528f33b7ef87bb25f11..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/Executor_cn.rst +++ /dev/null @@ -1,272 +0,0 @@ -.. _cn_api_fluid_executor: - -Executor -------------------------------- - - - -.. py:class:: paddle.fluid.Executor (place=None) - -:api_attr: 声明式编程模式(静态图) - - - -Executor支持单GPU、多GPU以及CPU运行。 - -参数: - - **place** (fluid.CPUPlace()|fluid.CUDAPlace(N)|None) – 该参数表示Executor执行所在的设备,这里的N为GPU对应的ID。当该参数为 `None` 时,PaddlePaddle会根据其安装版本设置默认的运行设备。当安装的Paddle为CPU版时,默认运行设置会设置成 `CPUPlace()` ,而当Paddle为GPU版时,默认运行设备会设置成 `CUDAPlace(0)` 。默认值为None。 - -返回:初始化后的 ``Executor`` 对象 - -返回类型:Executor - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.compiler as compiler - import numpy - import os - - # 显式设置运行设备 - # use_cuda = True - # place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - # exe = fluid.Executor(place) - - # 如果不显示设置运行设备,PaddlePaddle会设置默认运行设备 - exe = fluid.Executor() - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - fluid.optimizer.SGD(learning_rate=0.01).minimize(loss) - - # 仅运行一次startup program - # 不需要优化/编译这个startup program - startup_program.random_seed=1 - exe.run(startup_program) - - # 无需编译,直接运行main program - x = numpy.random.random(size=(10, 1)).astype('float32') - loss_data, = exe.run(train_program, - feed={"X": x}, - fetch_list=[loss.name]) - - # 另一种方法是,编译这个main program然后运行。 - # 参考CompiledProgram以获取更多信息。 - # 注意:如果你使用CPU运行程序,需要具体设置CPU_NUM, - # 否则fluid会把逻辑核的所有数目设为CPU_NUM, - # 在这种情况下,输入的batch size应大于CPU_NUM, - # 否则程序会异常中断。 - - # 显式设置运行设备 - # if not use_cuda: - # os.environ['CPU_NUM'] = str(2) - - # 未显示设置运行设备且安装的Paddle为CPU版本 - os.environ['CPU_NUM'] = str(2) - - compiled_prog = compiler.CompiledProgram( - train_program).with_data_parallel( - loss_name=loss.name) - loss_data, = exe.run(compiled_prog, - feed={"X": x}, - fetch_list=[loss.name]) - -.. py:method:: close() - - -关闭执行器。该接口主要用于对于分布式训练,调用该接口后不可以再使用该执行器。该接口会释放在PServers上和目前Trainer有关联的资源。 - -返回:无 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - cpu = fluid.CPUPlace() - exe = fluid.Executor(cpu) - # 执行训练或测试过程 - exe.close() - - -.. py:method:: run(program=None, feed=None, fetch_list=None, feed_var_name='feed', fetch_var_name='fetch', scope=None, return_numpy=True, use_program_cache=False, return_merged=True) - -执行指定的Program或者CompiledProgram。需要注意的是,执行器会执行Program或CompiledProgram中的所有算子,而不会根据fetch_list对Program或CompiledProgram中的算子进行裁剪。同时,需要传入运行该模型用到的scope,如果没有指定scope,执行器将使用全局scope,即fluid.global_scope()。 - -参数: - - **program** (Program|CompiledProgram) – 该参数为被执行的Program或CompiledProgram,如果未提供该参数,即该参数为None,在该接口内,main_program将被设置为fluid.default_main_program()。默认为:None。 - - **feed** (list|dict) – 该参数表示模型的输入变量。如果是单卡训练,``feed`` 为 ``dict`` 类型,如果是多卡训练,参数 ``feed`` 可以是 ``dict`` 或者 ``list`` 类型变量,如果该参数类型为 ``dict`` ,feed中的数据将会被分割(split)并分送给多个设备(CPU/GPU),即输入数据被均匀分配到不同设备上;如果该参数类型为 ``list`` ,则列表中的各个元素都会直接分别被拷贝到各设备中。默认为:None。 - - **fetch_list** (list) – 该参数表示模型运行之后需要返回的变量。默认为:None。 - - **feed_var_name** (str) – 该参数表示数据输入算子(feed operator)的输入变量名称。默认为:"feed"。 - - **fetch_var_name** (str) – 该参数表示结果获取算子(fetch operator)的输出变量名称。默认为:"fetch"。 - - **scope** (Scope) – 该参数表示执行当前program所使用的作用域,用户可以为不同的program指定不同的作用域。默认值:fluid.global_scope()。 - - **return_numpy** (bool) – 该参数表示是否将返回的计算结果(fetch list中指定的变量)转化为numpy;如果为False,则每个变量返回的类型为LoDTensor,否则返回变量的类型为numpy.ndarray。默认为:True。 - - **use_program_cache** (bool) – 该参数表示是否对输入的Program进行缓存。如果该参数为True,在以下情况时,模型运行速度可能会更快:输入的program为 ``fluid.Program`` ,并且模型运行过程中,调用该接口的参数(program、 feed变量名和fetch_list变量)名始终不变。默认为:False。 - - **return_merged** (bool) – 该参数表示是否按照执行设备维度将返回的计算结果(fetch list中指定的变量)进行合并。如果 ``return_merged`` 设为False,返回值类型是一个Tensor的二维列表( ``return_numpy`` 设为Fasle时)或者一个numpy.ndarray的二维列表( ``return_numpy`` 设为True时)。如果 ``return_merged`` 设为True,返回值类型是一个Tensor的一维列表( ``return_numpy`` 设为Fasle时)或者一个numpy.ndarray的一维列表( ``return_numpy`` 设为True时)。更多细节请参考示例代码2。如果返回的计算结果是变长的,请设置 ``return_merged`` 为False,即不按照执行设备维度合并返回的计算结果。该参数的默认值为True,但这仅是为了兼容性考虑,在未来的版本中默认值可能会更改为False。 - -返回:返回fetch_list中指定的变量值 - -返回类型:List - -.. note:: - 1. 如果是多卡训练,并且feed参数为dict类型,输入数据将被均匀分配到不同的卡上,例如:使用2块GPU训练,输入样本数为3,即[0, 1, 2],经过拆分之后,GPU0上的样本数为1,即[0],GPU1上的样本数为2,即[1, 2]。如果样本数少于设备数,程序会报错,因此运行模型时,应额外注意数据集的最后一个batch的样本数是否少于当前可用的CPU核数或GPU卡数,如果是少于,建议丢弃该batch。 - 2. 如果可用的CPU核数或GPU卡数大于1,则fetch出来的结果为不同设备上的相同变量值(fetch_list中的变量)在第0维拼接在一起。 - - -**示例代码1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - #首先创建执行引擎 - place = fluid.CPUPlace() # fluid.CUDAPlace(0) - exe = fluid.Executor(place) - - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - adam = fluid.optimizer.Adam() - adam.minimize(loss) - - #仅运行startup程序一次 - exe.run(fluid.default_startup_program()) - - x = numpy.random.random(size=(10, 1)).astype('float32') - outs = exe.run(feed={'X': x}, - fetch_list=[loss.name]) - - -**示例代码2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - # 创建Executor对象 - place = fluid.CUDAPlace(0) - exe = fluid.Executor(place) - data = fluid.data(name='X', shape=[None, 1], dtype='float32') - class_dim = 2 - prediction = fluid.layers.fc(input=data, size=class_dim) - loss = fluid.layers.mean(prediction) - adam = fluid.optimizer.Adam() - adam.minimize(loss) - # 运行且仅运行一次startup program - exe.run(fluid.default_startup_program()) - build_strategy = fluid.BuildStrategy() - binary = fluid.CompiledProgram(fluid.default_main_program()).with_data_parallel( - loss_name=loss.name, build_strategy=build_strategy) - batch_size = 6 - x = np.random.random(size=(batch_size, 1)).astype('float32') - # 1) 设置 return_merged 参数为False以获取不合并的计算结果: - unmerged_prediction, = exe.run(binary, feed={'X': x}, - fetch_list=[prediction.name], - return_merged=False) - # 如果用户使用两个GPU卡来运行此python代码示例,输出结果将为(2, 3, class_dim)。 - # 输出结果中第一个维度值代表所使用的GPU卡数,而第二个维度值代表batch_size和所使用 - # 的GPU卡数之商。 - print("The unmerged prediction shape: {}".format(np.array(unmerged_prediction).shape)) - print(unmerged_prediction) - # 2) 设置 return_merged 参数为True以获取合并的计算结果: - merged_prediction, = exe.run(binary, feed={'X': x}, - fetch_list=[prediction.name], - return_merged=True) - # 如果用户使用两个GPU卡来运行此python代码示例,输出结果将为(6, class_dim)。输出结果 - # 中第一个维度值代表batch_size值。 - print("The merged prediction shape: {}".format(np.array(merged_prediction).shape)) - print(merged_prediction) - # 输出: - # The unmerged prediction shape: (2, 3, 2) - # [array([[-0.37620035, -0.19752218], - # [-0.3561043 , -0.18697084], - # [-0.24129935, -0.12669306]], dtype=float32), array([[-0.24489994, -0.12858354], - # [-0.49041364, -0.25748932], - # [-0.44331917, -0.23276259]], dtype=float32)] - # The merged prediction shape: (6, 2) - # [[-0.37789783 -0.19921964] - # [-0.3577645 -0.18863106] - # [-0.24274671 -0.12814042] - # [-0.24635398 -0.13003758] - # [-0.49232286 -0.25939852] - # [-0.44514108 -0.2345845 ]] - - -.. py:method:: infer_from_dataset(program=None, dataset=None, scope=None, thread=0, debug=False, fetch_list=None, fetch_info=None, print_period=100) - -infer_from_dataset的文档与train_from_dataset几乎完全相同,只是在分布式训练中,推进梯度将在infer_from_dataset中禁用。 infer_from_dataset()可以非常容易地用于多线程中的评估。 - -参数: - - **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (未编译的) - - **dataset** (paddle.fluid.Dataset) – 在此函数外创建的数据集,用户应当在调用函数前提供完整定义的数据集。必要时请检查Dataset文件。默认为None - - **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。默认为全局域 - - **thread** (int) – 用户想要在这个函数中运行的线程数量。线程的实际数量为min(Dataset.thread_num, thread),如果thread > 0,默认为0 - - **debug** (bool) – 是否开启debug模式,默认为False - - **fetch_list** (Variable List) – 返回变量列表,每个变量都会在训练过程中被打印出来,默认为None - - **fetch_info** (String List) – 每个变量的打印信息,默认为None - - **print_period** (int) – 每两次打印之间间隔的mini-batches的数量,默认为100 - -返回:None - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - place = fluid.CPUPlace() # 使用GPU时可设置place = fluid.CUDAPlace(0) - exe = fluid.Executor(place) - x = fluid.layers.data(name="x", shape=[10, 10], dtype="int64") - y = fluid.layers.data(name="y", shape=[1], dtype="int64", lod_level=1) - dataset = fluid.DatasetFactory().create_dataset() - dataset.set_use_var([x, y]) - dataset.set_thread(1) - filelist = [] # 您可以设置您自己的filelist,如filelist = ["dataA.txt"] - dataset.set_filelist(filelist) - exe.run(fluid.default_startup_program()) - exe.infer_from_dataset(program=fluid.default_main_program(),dataset=dataset) - - -.. py:method:: train_from_dataset(program=None, dataset=None, scope=None, thread=0, debug=False, fetch_list=None, fetch_info=None, print_period=100) - -从预定义的数据集中训练。 数据集在paddle.fluid.dataset中定义。 给定程序(或编译程序),train_from_dataset将使用数据集中的所有数据样本。 输入范围可由用户给出。 默认情况下,范围是global_scope()。训练中的线程总数是thread。 训练中使用的线程数将是数据集中threadnum的最小值,同时也是此接口中线程的值。 可以设置debug,以便执行器显示所有算子的运行时间和当前训练任务的吞吐量。 - -注意:train_from_dataset将销毁每次运行在executor中创建的所有资源。 - -参数: - - **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (未编译的) - - **dataset** (paddle.fluid.Dataset) – 在此函数外创建的数据集,用户应当在调用函数前提供完整定义的数据集。必要时请检查Dataset文件。默认为None - - **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。默认为全局域 - - **thread** (int) – 用户想要在这个函数中运行的线程数量。线程的实际数量为min(Dataset.thread_num, thread),如果thread > 0,默认为0 - - **debug** (bool) – 是否开启debug模式,默认为False - - **fetch_list** (Variable List) – 返回变量列表,每个变量都会在训练过程中被打印出来,默认为None - - **fetch_info** (String List) – 每个变量的打印信息,默认为None - - **print_period** (int) – 每两次打印之间间隔的mini-batches的数量,默认为100 - -返回:None - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - place = fluid.CPUPlace() # 通过设置place = fluid.CUDAPlace(0)使用GPU - exe = fluid.Executor(place) - x = fluid.layers.data(name="x", shape=[10, 10], dtype="int64") - y = fluid.layers.data(name="y", shape=[1], dtype="int64", lod_level=1) - dataset = fluid.DatasetFactory().create_dataset() - dataset.set_use_var([x, y]) - dataset.set_thread(1) - filelist = [] # 您可以设置您自己的filelist,如filelist = ["dataA.txt"] - dataset.set_filelist(filelist) - exe.run(fluid.default_startup_program()) - exe.train_from_dataset(program=fluid.default_main_program(), - dataset=dataset) diff --git a/doc/paddle/api/paddle/fluid/dygraph/ExponentialDecay_cn.rst b/doc/paddle/api/paddle/framework/ExponentialDecay_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/ExponentialDecay_cn.rst rename to doc/paddle/api/paddle/framework/ExponentialDecay_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/InverseTimeDecay_cn.rst b/doc/paddle/api/paddle/framework/InverseTimeDecay_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/InverseTimeDecay_cn.rst rename to doc/paddle/api/paddle/framework/InverseTimeDecay_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/NaturalExpDecay_cn.rst b/doc/paddle/api/paddle/framework/NaturalExpDecay_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/NaturalExpDecay_cn.rst rename to doc/paddle/api/paddle/framework/NaturalExpDecay_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/NoamDecay_cn.rst b/doc/paddle/api/paddle/framework/NoamDecay_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/NoamDecay_cn.rst rename to doc/paddle/api/paddle/framework/NoamDecay_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/ParallelEnv_cn.rst b/doc/paddle/api/paddle/framework/ParallelEnv_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/ParallelEnv_cn.rst rename to doc/paddle/api/paddle/framework/ParallelEnv_cn.rst diff --git a/doc/paddle/api/paddle/framework/ParallelExecutor_cn.rst b/doc/paddle/api/paddle/framework/ParallelExecutor_cn.rst deleted file mode 100644 index 8e391956ed24e66a6fb736dc4165b14a7e734cad..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/ParallelExecutor_cn.rst +++ /dev/null @@ -1,196 +0,0 @@ -.. _cn_api_fluid_ParallelExecutor: - -ParallelExecutor -------------------------------- - - -.. py:class:: paddle.fluid.ParallelExecutor(use_cuda, loss_name=None, main_program=None, share_vars_from=None, exec_strategy=None, build_strategy=None, num_trainers=1, trainer_id=0, scope=None) - -:api_attr: 声明式编程模式(静态图) - - - -``ParallelExecutor`` 是 ``Executor`` 的一个升级版本,可以支持基于数据并行的多节点模型训练和测试。如果采用数据并行模式, ``ParallelExecutor`` 在构造时会将参数分发到不同的节点上,并将输入的 ``Program`` 拷贝到不同的节点,在执行过程中,各个节点独立运行模型,将模型反向计算得到的参数梯度在多个节点之间进行聚合,之后各个节点独立的进行参数的更新。如果使用GPU运行模型,即 ``use_cuda=True`` ,节点指代GPU, ``ParallelExecutor`` 将自动获取在当前机器上可用的GPU资源,用户也可以通过在环境变量设置可用的GPU资源,例如:希望使用GPU0、GPU1计算,export CUDA_VISIBLEDEVICES=0,1;如果在CPU上进行操作,即 ``use_cuda=False`` ,节点指代CPU,**注意:此时需要用户在环境变量中手动添加 CPU_NUM ,并将该值设置为CPU设备的个数,例如:export CPU_NUM=4,如果没有设置该环境变量,执行器会在环境变量中添加该变量,并将其值设为1**。 - -参数: - - **use_cuda** (bool) – 该参数表示是否使用GPU执行。 - - **loss_name** (str) - 该参数为模型最后得到的损失变量的名字。**注意:如果是数据并行模型训练,必须设置loss_name,否则计算结果可能会有问题。** 默认为:None。 - - **main_program** (Program) – 需要被执行的Program 。如果未提供该参数,即该参数为None,在该接口内,main_program将被设置为fluid.default_main_program()。 默认为:None。 - - **share_vars_from** (ParallelExecutor) - 如果设置了share_vars_from,当前的ParallelExecutor将与share_vars_from指定的ParallelExecutor共享参数值。需要设置该参数的情况:模型训练过程中需要进行模型测试,并且训练和测试都是采用数据并行模式,那么测试对应的ParallelExecutor在调用with_data_parallel时,需要将share_vars_from设置为训练所对应的ParallelExecutor。由于ParallelExecutor只有在第一次执行时才会将参数变量分发到其他设备上,因此share_vars_from指定的ParallelExecutor必须在当前ParallelExecutor之前运行。默认为:None。 - - **exec_strategy** (ExecutionStrategy) - 通过exec_strategy指定执行计算图过程可以调整的选项,例如线程池大小等。 关于exec_strategy更多信息,请参阅 ``fluid.ExecutionStrategy`` 。 默认为:None。 - - **build_strategy** (BuildStrategy): 通过配置build_strategy,对计算图进行转换和优化,例如:计算图中算子融合、计算图执行过程中开启内存/显存优化等。关于build_strategy更多的信息,请参阅 ``fluid.BuildStrategy`` 。 默认为:None。 - - **num_trainers** (int) – 进行GPU分布式训练时需要设置该参数。如果该参数值大于1,NCCL将会通过多层级节点的方式来初始化。每个节点应有相同的GPU数目。默认为:1。 - - **trainer_id** (int) – 进行GPU分布式训练时需要设置该参数。该参数必须与num_trainers参数同时使用。trainer_id指明是当前所在节点的 “rank”(层级)。trainer_id从0开始计数。默认为:0。 - - **scope** (Scope) – 指定执行Program所在的作用域。默认为:fluid.global_scope()。 - -返回:初始化后的 ``ParallelExecutor`` 对象 - -返回类型:ParallelExecutor - -抛出异常:``TypeError`` - - 如果提供的参数 ``share_vars_from`` 不是 ``ParallelExecutor`` 类型的,将会抛出此异常。 - -.. note:: - 1. 如果只是进行多卡测试,不需要设置loss_name以及share_vars_from。 - 2. 如果程序中既有模型训练又有模型测试,则构建模型测试所对应的ParallelExecutor时必须设置share_vars_from,否则模型测试和模型训练所使用的参数是不一致。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - import os - - use_cuda = True - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - - # 注意:如果你使用CPU运行程序,需要具体设置CPU_NUM, - # 否则fluid会把逻辑核的所有数目设为CPU_NUM, - # 在这种情况下,输入的batch size应大于CPU_NUM, - # 否则程序会异常中断。 - if not use_cuda: - os.environ['CPU_NUM'] = str(2) - - exe = fluid.Executor(place) - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - test_program = fluid.default_main_program().clone(for_test=True) - fluid.optimizer.SGD(learning_rate=0.01).minimize(loss) - - exe.run(startup_program) - - train_exe = fluid.ParallelExecutor(use_cuda=use_cuda, - main_program=train_program, - loss_name=loss.name) - # 注意:如果此处不设置share_vars_from=train_exe,测试过程中用的参数与训练使用的参数是不一致 - test_exe = fluid.ParallelExecutor(use_cuda=use_cuda, - main_program=test_program, - share_vars_from=train_exe) - - train_data = numpy.random.random(size=(10, 1)).astype('float32') - loss_data, = train_exe.run(feed={"X": train_data}, - fetch_list=[loss.name]) - - test_data = numpy.random.random(size=(10, 1)).astype('float32') - loss_data, = test_exe.run(feed={"X": test_data}, - fetch_list=[loss.name]) - -.. py:method:: run(fetch_list, feed=None, feed_dict=None, return_numpy=True) - -该接口用于运行当前模型,需要注意的是,执行器会执行Program中的所有算子,而不会根据fetch_list对Program中的算子进行裁剪。 - -参数: - - **fetch_list** (list) – 该变量表示模型运行之后需要返回的变量。 - - **feed** (list|dict) – 该变量表示模型的输入变量。如果该参数类型为 ``dict`` ,feed中的数据将会被分割(split)并分送给多个设备(CPU/GPU);如果该参数类型为 ``list`` ,则列表中的各个元素都会直接分别被拷贝到各设备中。默认为:None。 - - **feed_dict** – 该参数已经停止使用。默认为:None。 - - **return_numpy** (bool) – 该变量表示是否将fetched tensor转换为numpy。默认为:True。 - -返回:返回fetch_list中指定的变量值 - -返回类型:List - -抛出异常: - - ``ValueError`` - 如果feed参数是list类型,但是它的长度不等于可用设备(执行场所)的数目,再或者给定的feed不是dict类型,抛出此异常 - - ``TypeError`` - 如果feed参数是list类型,但是它里面的元素不是dict类型时,抛出此异常 - -.. note:: - 1. 如果feed参数为dict类型,输入数据将被均匀分配到不同的卡上,例如:使用2块GPU训练,输入样本数为3,即[0, 1, 2],经过拆分之后,GPU0上的样本数为1,即[0],GPU1上的样本数为2,即[1, 2]。如果样本数少于设备数,程序会报错,因此运行模型时,应额外注意数据集的最后一个batch的样本数是否少于当前可用的CPU核数或GPU卡数,如果是少于,建议丢弃该batch。 - 2. 如果可用的CPU核数或GPU卡数大于1,则fetch出来的结果为不同设备上的相同变量值(fetch_list中的变量)在第0维拼接在一起。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - import os - - use_cuda = True - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - - # 注意:如果你使用CPU运行程序,需要具体设置CPU_NUM, - # 否则fluid会把逻辑核的所有数目设为CPU_NUM, - # 在这种情况下,输入的batch size应大于CPU_NUM, - # 否则程序会异常中断。 - if not use_cuda: - os.environ['CPU_NUM'] = str(2) - exe = fluid.Executor(place) - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - fluid.optimizer.SGD(learning_rate=0.01).minimize(loss) - - exe.run(startup_program) - - train_exe = fluid.ParallelExecutor(use_cuda=use_cuda, - main_program=train_program, - loss_name=loss.name) - # 如果feed参数是dict类型: - # 图像会被split到设备中。假设有两个设备,那么每个设备将会处理形为 (5, 1)的图像 - x = numpy.random.random(size=(10, 1)).astype('float32') - loss_data, = train_exe.run(feed={"X": x}, - fetch_list=[loss.name]) - - # 如果feed参数是list类型: - # 各设备挨个处理列表中的每个元素 - # 第一个设备处理形为 (10, 1) 的图像 - # 第二个设备处理形为 (9, 1) 的图像 - # - # 使用 exe.device_count 得到设备数目 - x1 = numpy.random.random(size=(10, 1)).astype('float32') - x2 = numpy.random.random(size=(9, 1)).astype('float32') - loss_data, = train_exe.run(feed=[{"X": x1}, {"X": x2}], - fetch_list=[loss.name]) - -.. py:method:: drop_local_exe_scopes() - -立即清除scope中的临时变量。模型运行过程中,生成的中间临时变量将被放到local execution scope中,为了避免对临时变量频繁的申请与释放,ParallelExecutor中采取的策略是间隔若干次迭代之后清理一次临时变量。ParallelExecutor在ExecutionStrategy中提供了num_iteration_per_drop_scope选项,该选项表示间隔多少次迭代之后清理一次临时变量。如果num_iteration_per_drop_scope值为100,但是希望在迭代50次之后清理一次临时变量,可以通过手动调用该接口。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - import os - - use_cuda = True - # 注意:如果你使用CPU运行程序,需要具体设置CPU_NUM, - # 否则fluid会把逻辑核的所有数目设为CPU_NUM, - # 在这种情况下,输入的batch size应大于CPU_NUM, - # 否则程序会异常中断。 - if not use_cuda: - os.environ['CPU_NUM'] = str(2) - - train_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(train_program, startup_program): - data = fluid.layers.data(name='X', shape=[1], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(startup_program) - - parallel_exe = fluid.ParallelExecutor(use_cuda=use_cuda, - main_program=train_program, - loss_name=loss.name) - - x = numpy.random.random(size=(10, 1)).astype('float32') - loss_data, = parallel_exe.run(feed={"X": x}, - fetch_list=[loss.name]) - - parallel_exe.drop_local_exe_scopes() diff --git a/doc/paddle/api/paddle/fluid/dygraph/PiecewiseDecay_cn.rst b/doc/paddle/api/paddle/framework/PiecewiseDecay_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/PiecewiseDecay_cn.rst rename to doc/paddle/api/paddle/framework/PiecewiseDecay_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/PolynomialDecay_cn.rst b/doc/paddle/api/paddle/framework/PolynomialDecay_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/PolynomialDecay_cn.rst rename to doc/paddle/api/paddle/framework/PolynomialDecay_cn.rst diff --git a/doc/paddle/api/paddle/framework/Print_cn.rst b/doc/paddle/api/paddle/framework/Print_cn.rst deleted file mode 100644 index 422bab77d425f81f2097ef9e297a7cf50335b1d6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/Print_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_layers_Print: - -Print -------------------------------- - - -.. py:function:: paddle.fluid.layers.Print(input, first_n=-1, message=None, summarize=20, print_tensor_name=True, print_tensor_type=True, print_tensor_shape=True, print_tensor_lod=True, print_phase='both') - -:api_attr: 声明式编程模式(静态图) - - - -**Print操作命令** - -该OP创建一个打印操作,打印正在访问的Tensor内容。 - -封装传入的Tensor,以便无论何时访问Tensor,都会打印信息message和Tensor的当前值。 - -参数: - - **input** (Variable)-将要打印的Tensor - - **summarize** (int)-打印Tensor中的元素数目,如果值为-1则打印所有元素。默认值为20 - - **message** (str)-打印Tensor信息前自定义的字符串类型消息,作为前缀打印 - - **first_n** (int)-打印Tensor的次数 - - **print_tensor_name** (bool)-可选,指明是否打印Tensor名称,默认为True - - **print_tensor_type** (bool)-可选,指明是否打印Tensor类型,默认为True - - **print_tensor_shape** (bool)-可选,指明是否打印Tensor维度信息,默认为True - - **print_tensor_lod** (bool)-可选,指明是否打印Tensor的LoD信息,默认为True - - **print_phase** (str)-可选,指明打印的阶段,包括 ``forward`` , ``backward`` 和 ``both`` ,默认为 ``both`` 。设置为 ``forward`` 时,只打印Tensor的前向信息;设置为 ``backward`` 时,只打印Tensor的梯度信息;设置为 ``both`` 时,则同时打印Tensor的前向信息以及梯度信息。 - -返回:输出Tensor - -返回类型:Variable - -.. note:: - 输入和输出是两个不同的Variable,在接下来的过程中,应该使用输出Variable而非输入Variable,否则打印层将失去backward的信息。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle - import numpy as np - - x = fluid.layers.data(name='x', shape=[1], dtype='float32', lod_level=1) - x = fluid.layers.Print(x, message="The content of input layer:") - - y = fluid.layers.data(name='y', shape=[1], dtype='float32', lod_level=2) - out = fluid.layers.sequence_expand(x=x, y=y, ref_level=0) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x_d = fluid.create_lod_tensor(np.array([[1.1], [2.2],[3.3],[4.4]]).astype('float32'), [[1,3]], place) - y_d = fluid.create_lod_tensor(np.array([[1.1],[1.1],[1.1],[1.1],[1.1],[1.1]]).astype('float32'), [[1,3], [1,2,1,2]], place) - results = exe.run(fluid.default_main_program(), - feed={'x':x_d, 'y': y_d }, - fetch_list=[out],return_numpy=False) -**运行输出**: - -.. code-block:: bash - - The content of input layer: The place is:CPUPlace - Tensor[x] - shape: [4,1,] - dtype: f - LoD: [[ 0,1,4, ]] - data: 1.1,2.2,3.3,4.4, - - - - - diff --git a/doc/paddle/api/paddle/framework/Program_cn.rst b/doc/paddle/api/paddle/framework/Program_cn.rst deleted file mode 100644 index 2a611c7b0e913f8ed6ceb13ad88566c101dc8ef6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/Program_cn.rst +++ /dev/null @@ -1,450 +0,0 @@ -.. _cn_api_fluid_Program: - -Program -------------------------------- - -.. py:class:: paddle.fluid.Program - - - - -**注意:默认情况下,Paddle Fluid内部默认含有** :ref:`cn_api_fluid_default_startup_program` **和** :ref:`cn_api_fluid_default_main_program` **,它们共享参数。** :ref:`cn_api_fluid_default_startup_program` **只运行一次来初始化参数,** :ref:`cn_api_fluid_default_main_program` **在每个mini batch中运行并更新权重。** - -Program是Paddle Fluid对于计算图的一种静态描述,使用Program的构造函数可以创建一个Program。Program中包括至少一个 :ref:`api_guide_Block` ,当 :ref:`api_guide_Block` 中存在条件选择的控制流OP(例如 :ref:`cn_api_fluid_layers_While` 等)时,该Program将会含有嵌套着的 :ref:`api_guide_Block` 即控制流外部的 :ref:`api_guide_Block` 将包含着控制流内部的 :ref:`api_guide_Block` ,而嵌套的 :ref:`api_guide_Block` 的元素访问控制将由具体的控制流OP来决定。关于Program具体的结构和包含的类型请参阅 `framework.proto `_ -。 - -一个Program的集合通常包含初始化程序(startup_program)与主程序(main_program),初始化程序是一个包含一些初始化工作的Program,主程序将会包含用来训练的网络结构和变量,在使用同一个 :ref:`api_guide_executor` 执行时他们会共享初始化工作的结果,例如初始化的参数。一个Program的集合可以被用来测试或者训练,被用来训练时, ``Paddle Fluid`` 将会利用所有用户使用的OP和变量来搭建一个训练网络,被用来测试时, 可以通过调用Program相关的接口例如:`clone` 剪去一些与测试无关的OP和变量,比如反向传播的OP和变量。 - - -返回:创建的空的Program - -返回值类型:Program - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - main_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(main_program=main_program, startup_program=startup_program): - x = fluid.layers.data(name="x", shape=[-1, 784], dtype='float32') - y = fluid.layers.data(name="y", shape=[-1, 1], dtype='int32') - z = fluid.layers.fc(name="fc", input=x, size=10, act="relu") - - # start_up program here will share fc's weight with main program - print("main program is: {}".format(main_program)) - - print("start up program is: {}".format(startup_program)) - - -.. py:method:: to_string(throw_on_error, with_details=False) - -将Program转换为字符串 - -参数: - - **throw_on_error** (bool) - 是否在没有设置必需字段时抛出异常。 - - **with_details** (bool) - 值为true时,打印更多关于变量和参数的信息,如trainable, optimize_attr等 - -返回: 将Program转换为字符串 - -返回类型: str - -抛出异常: ``ValueError`` - 当 ``throw_on_error == true`` ,当没有设置任何必需的字段时,抛出 ``ValueError`` 。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - prog = fluid.default_main_program() - x = fluid.layers.data(name="X", shape=[2,3], dtype="float32", append_batch_size=False) - pred = fluid.layers.fc(x, size=3) - prog_string = prog.to_string(throw_on_error=True, with_details=False) - prog_string_with_details = prog.to_string(throw_on_error=False, with_details=True) - print("program string without detail: {}".format(prog_string)) - print("program string with detail: {}".format(prog_string_with_details)) - -.. py:method:: clone(for_test=False) - -**注意:** - **1.** ``Program.clone()`` **方法不会克隆例如** :ref:`cn_api_fluid_io_DataLoader` **这样的数据读取相关的部分,这可能会造成的数据读取部分在克隆后丢失** - - **2. 此API当** ``for_test=True`` **时将会裁剪部分OP和变量。为防止错误的裁剪,推荐在** :ref:`cn_api_fluid_backward_append_backward` **和执行优化器之前使用** ``clone(for_test=True)`` 。 - - -当 ``for_test=True`` 时创建一个新的、仅包含当前Program前向内容的Program。否则创建一个新的,和当前Program完全相同的Program - -有些OP,在训练和测试之间的行为是不同的,比如 :ref:`cn_api_fluid_layers_batch_norm` 。它们有一个属性 ``is_test`` 来控制行为。当 ``for_test=True`` 时,此方法将把它们的 ``is_test`` 属性更改为True。 - -- 克隆Program用于训练时,将 ``for_test`` 设置为False。 -- 克隆Program用于测试时,将 ``for_test`` 设置为True。虽然在这种情况下,如果在使用了优化器之后调用 ``clone`` 我们依旧会对Program当中反向执行以及优化器相关的内容进行自动裁剪,但是,我们强烈建议在使用优化器之前使用 ``clone`` 例如如果使用的是 :ref:`cn_api_fluid_optimizer_Momentum` 可以这样去使用: - -**代码示例** - - :: - - import paddle.fluid as fluid - img = fluid.layers.data(name='image', shape=[784]) - pred = fluid.layers.fc(input=img, size=10, act='relu') - loss = fluid.layers.mean(pred) - ## 我们推荐在使用 Optimizer前使用clone()接口 - test_program = fluid.default_main_program().clone(for_test=True) - optimizer = fluid.optimizer.Momentum(learning_rate=0.01, momentum=0.9) - optimizer.minimize(loss) - -参数: - - **for_test** (bool) – 取值为True时,clone方法内部会把operator的属性 ``is_test`` 设置为 True, 并裁剪反向OP和参数优化OP,默认值为False - -返回:当 ``for_test=True`` 时返回一个新的、仅包含当前Program前向内容的Program。否则返回一个新的,和当前Program完全相同的Program - -返回类型: Program - -**代码示例** - -注意,Program在clone后的顺序可能不同,这不会影响的训练或测试进程。在下面的示例中,我们提供了一个简单的方法print_prog(Program)来打印程序描述,以确保clone后仍能得到同样的打印结果: - -.. code-block:: python - - import paddle.fluid as fluid - import six - - - def print_prog(prog): - for name, value in sorted(six.iteritems(prog.block(0).vars)): - print(value) - for op in prog.block(0).ops: - print("op type is {}".format(op.type)) - print("op inputs are {}".format(op.input_arg_names)) - print("op outputs are {}".format(op.output_arg_names)) - for key, value in sorted(six.iteritems(op.all_attrs())): - if key not in ['op_callstack', 'op_role_var']: - print(" [ attrs: {}: {} ]".format(key, value)) - -1.克隆一个Program,示例代码如下。 - -.. code-block:: python - - import paddle.fluid as fluid - import six - - def print_prog(prog): - for name, value in sorted(six.iteritems(prog.block(0).vars)): - print(value) - for op in prog.block(0).ops: - print("op type is {}".format(op.type)) - print("op inputs are {}".format(op.input_arg_names)) - print("op outputs are {}".format(op.output_arg_names)) - for key, value in sorted(six.iteritems(op.all_attrs())): - if key not in ['op_callstack', 'op_role_var']: - print(" [ attrs: {}: {} ]".format(key, value)) - - train_program = fluid.Program() - startup_program = fluid.Program() - - # ``startup_program`` 被用来执行一些参数初始化工作 - # ``main_program`` 被用来容纳网络 - with fluid.program_guard(train_program, startup_program): - with fluid.unique_name.guard(): - img = fluid.layers.data(name='image', shape=[784]) - hidden = fluid.layers.fc(input=img, size=200, act='relu') - hidden = fluid.layers.dropout(hidden, dropout_prob=0.5) - loss = fluid.layers.cross_entropy( - input=fluid.layers.fc(hidden, size=10, act='softmax'), - label=fluid.layers.data(name='label', shape=[1], dtype='int64')) - avg_loss = fluid.layers.mean(loss) - test_program = train_program.clone(for_test=True) - print_prog(test_program) - - # 由于需要使训练和测试参数共享,我们需要使用训练的 ``startup_program`` - # 来代替测试用的 ``startup_program``, 尽管测试的 ``startup_program`` 里面什么也没有。 - - # 在Paddle Fluid中我们会通过同样的变量名来共享权重. - # 训练和测试程序的所有参数将会拥有同样的名字,这将会使训练和测试程序实现参数的共享, - # 所以我们使用训练程序的 ``startup_program`` .并且由于测试的 ``startup_program`` 什么也没有, - # 因此它是一个新的程序. - with fluid.program_guard(train_program, startup_program): - with fluid.unique_name.guard(): - sgd = fluid.optimizer.SGD(learning_rate=1e-3) - sgd.minimize(avg_loss) - -2.如果分别运行 train Program 和 test Program,则可以不使用clone。 - -.. code-block:: python - - import paddle.fluid as fluid - import six - - def print_prog(prog): - for name, value in sorted(six.iteritems(prog.block(0).vars)): - print(value) - for op in prog.block(0).ops: - print("op type is {}".format(op.type)) - print("op inputs are {}".format(op.input_arg_names)) - print("op outputs are {}".format(op.output_arg_names)) - for key, value in sorted(six.iteritems(op.all_attrs())): - if key not in ['op_callstack', 'op_role_var']: - print(" [ attrs: {}: {} ]".format(key, value)) - - def network(): - img = fluid.layers.data(name='image', shape=[784]) - hidden = fluid.layers.fc(input=img, size=200, act='relu') - hidden = fluid.layers.dropout(hidden, dropout_prob=0.5) - loss = fluid.layers.cross_entropy( - input=fluid.layers.fc(hidden, size=10, act='softmax'), - label=fluid.layers.data(name='label', shape=[1], dtype='int64')) - avg_loss = fluid.layers.mean(loss) - return avg_loss - - train_program_2 = fluid.Program() - startup_program_2 = fluid.Program() - test_program_2 = fluid.Program() - with fluid.program_guard(train_program_2, startup_program_2): - with fluid.unique_name.guard(): - avg_loss = network() - sgd = fluid.optimizer.SGD(learning_rate=1e-3) - sgd.minimize(avg_loss) - # 不使用测试阶段的启动程序 - with fluid.program_guard(test_program_2, startup_program_2): - with fluid.unique_name.guard(): - avg_loss = network() - print_prog(test_program_2) - -上边两个代码片段生成和打印的Program是一样的。 - -.. py:staticmethod:: parse_from_string(binary_str) - -通过对 `protobuf `_ 的反序列化,转换成Program - - -参数: - - **binary_str_type** (str) – `protobuf `_ 二进制字符串 - -返回:反序列化后的 Program - -返回类型:Program - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - startup_prog = fluid.Program() - main_prog = fluid.Program() - with fluid.program_guard(startup_prog, main_prog): - x = fluid.layers.data( - name='X', shape=[1000, 784], dtype='float32', append_batch_size=False) - - y = fluid.layers.data( - name='Y', shape=[784, 100], dtype='float32', append_batch_size=False) - - z = fluid.layers.mul(x=x, y=y) - - binary_str = fluid.default_main_program().desc.serialize_to_string() - prog_restored = fluid.default_main_program().parse_from_string(binary_str) - - print(fluid.default_main_program()) - print(prog_restored) - - # 这里打印出的两个Program应该是一模一样的 - -.. py:attribute:: num_blocks - -该Program中的 :ref:`api_guide_Block` 的个数 - -返回: 该Program中的 :ref:`api_guide_Block` 的个数 - -返回类型:int - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - prog = fluid.default_main_program() - num_blocks = prog.num_blocks - print(num_blocks) - - ## 1 - ## 当前Program中只有一个Block,即全局的Block - -.. py:attribute:: random_seed - -**注意:必须在相关OP被添加之前设置。** - -程序中随机运算符的默认随机种子。0意味着随机生成随机种子。 - -返回:该Program中当前正在使用的random seed - -返回类型:int64 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - prog = fluid.default_main_program() - random_seed = prog.random_seed - x_var = fluid.layers.data(name="X", shape=[3,3], dtype="float32", append_batch_size=False) - print(random_seed) - ## 0 - ## 默认的random seed是 0 - - # 这里我们必须要在fluid.layers.dropout之前设置random_seed - prog.random_seed = 1 - z_var = fluid.layers.dropout(x_var, 0.7) - - print(prog.random_seed) - ## 1 - ## 修改后random seed变成了 1 - -.. py:method:: global_block() - -获取该Program的第一个 :ref:`api_guide_Block` 。 - -返回:该Program的第一个 :ref:`api_guide_Block` - -返回类型::ref:`api_guide_Block` - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - prog = fluid.default_main_program() - gb_block = prog.global_block() - print(gb_block) - ## - ## idx: 0 - ## parent_idx: -1 - ## 打印出了当前全局Block的描述 - -.. py:method:: block(index) - -返回该Program中 , ``index`` 指定的 :ref:`api_guide_Block` 。 ``index`` 类型为int - -参数: - - **index** (int) - 需要获取的 :ref:`api_guide_Block` 的index - -返回: 该Program中index对应的那个 :ref:`api_guide_Block` - -返回类型: :ref:`api_guide_Block` - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - prog = fluid.default_main_program() - block_0 = prog.block(0) - print(block_0) - ## - ## idx: 0 - ## parent_idx: -1 - ## 打印出了0号Block的描述 - -.. py:method:: current_block() - -获取当前 :ref:`api_guide_Block` 。当前 :ref:`api_guide_Block` 是用来添加OP的。 - -返回: 该Program中用户当前所在的 :ref:`api_guide_Block` - -返回类型: :ref:`api_guide_Block` - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - prog = fluid.default_main_program() - current_blk = prog.current_block() - print(current_blk) - ## - ## idx: 0 - ## parent_idx: -1 - ## 打印出了当前Block的描述 - -.. py:method:: list_vars() - -获取当前Program中所有变量。返回值是一个可迭代对象(iterable object)。 - -返回: Generator 会yield每个Program中的变量 - -返回类型: iterable 的 :ref:`api_guide_Variable` - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - prog = fluid.default_main_program() - img = fluid.layers.data(name='img', shape=[1,28,28], dtype='float32') - label = fluid.layers.data(name='label', shape=[128,1], dtype='int64') - for var in prog.list_vars(): - print(var) - - # 这里将会打印出当前Program中所有的Variable - -.. py:method:: all_parameters() - -获取当前Program中所有的 :ref:`api_guide_parameter` 。返回值是一个列表。 - -返回: 一个包含当前Program中所有参数的列表。 - -返回类型: list[ :ref:`api_guide_parameter` ] - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - program = fluid.default_main_program() - data = fluid.data(name='x', shape=[None, 13], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10) - loss = fluid.layers.mean(hidden) - fluid.optimizer.SGD(learning_rate=0.01).minimize(loss) - - for param in program.all_parameters(): - print(param) - - # 这里将会打印出当前Program中所有的Parameters,在本例中,输出结果是: - # - # name: "fc_0.w_0" - # type { - # type: LOD_TENSOR - # lod_tensor { - # tensor { - # data_type: FP32 - # dims: 13 - # dims: 10 - # } - # } - # } - # - # persistable: true - # name: "fc_0.b_0" - # type { - # type: LOD_TENSOR - # lod_tensor { - # tensor { - # data_type: FP32 - # dims: 10 - # } - # } - # } - # persistable: true - # - # 这里print(param)将会打印出一个参数所有的属性,包括name,type和persistable, - # 你可以访问一个参数的指定属性,例如param.name,param.type \ No newline at end of file diff --git a/doc/paddle/api/paddle/framework/WeightNormParamAttr_cn.rst b/doc/paddle/api/paddle/framework/WeightNormParamAttr_cn.rst deleted file mode 100644 index d17b0380c5f8c5903b75926f3ec326d4d3726320..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/WeightNormParamAttr_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_WeightNormParamAttr: - -WeightNormParamAttr -------------------------------- - - -.. py:class:: paddle.fluid.WeightNormParamAttr(dim=None, name=None, initializer=None, learning_rate=1.0, regularizer=None, trainable=True, do_model_average=False) - -:api_attr: 声明式编程模式(静态图) - - - -.. note:: - 该类中的 ``gradient_clip`` 属性在2.0版本会废弃,推荐在初始化 ``optimizer`` 时设置梯度裁剪。共有三种裁剪策略: :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 、 - :ref:`cn_api_fluid_clip_GradientClipByNorm` 、 :ref:`cn_api_fluid_clip_GradientClipByValue` 。 - -该类定义了权重归一化(Weight Normalization)的参数。权重归一化可以将神经网络中权重向量的长度与其方向解耦,详细的定义与实现可以参考论文:`Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks `_ - -参数: - - **dim** (int) - 进行归一化操作(norm)的切片所在维度,是小于权重Tensor rank的非负数。比如卷积的权重shape是 :math:`[cout, cin, kh, kw]` , rank是4,则dim可以选0,1,2,3;fc的权重shape是 :math:`[cout, cin]` ,rank是2,dim可以选0,1。 dim 默认为None,如果为None就对所有元素做归一化(norm)。 - - **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,可选) - 正则化方法。支持两种正则化策略: :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。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="data", shape=[3, 32, 32], dtype="float32") - fc = fluid.layers.fc(input=data, - size=1000, - param_attr=fluid.WeightNormParamAttr( - dim=None, - name='weight_norm_param', - initializer=fluid.initializer.ConstantInitializer(1.0), - learning_rate=1.0, - regularizer=fluid.regularizer.L2DecayRegularizer(regularization_coeff=0.1), - trainable=True, - do_model_average=False)) - - - diff --git a/doc/paddle/api/paddle/framework/append_backward_cn.rst b/doc/paddle/api/paddle/framework/append_backward_cn.rst deleted file mode 100644 index b3aa98f93e501d66687689c47c611677b4d7673e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/append_backward_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_backward_append_backward: - -append_backward -------------------------------- - - -.. py:function:: paddle.fluid.backward.append_backward(loss, parameter_list=None, no_grad_set=None, callbacks=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口将向主程序(``main_program``)追加反向部分 。 - -完整的神经网络训练由前向和反向传播组成。但是当我们配置网络时,我们只需要指定其前向部分。 -该接口使用链式法则,能够根据前向部分自动生成反向部分。 - -在大多数情况下,用户无需手动调用此接口,它将由优化器(``Optimizer``)的 ``minimize`` 函数自动调用。 - -参数: - - **loss** ( :ref:`api_guide_Variable` ) - 网络的损失变量。 - - **parameter_list** (list [Variable|str],可选)- 指定优化器需要更新的参数或参数名称列表。如果为 ``None`` ,则将更新所有参数。默认值为 ``None``。 - - **no_grad_set** (set [Variable|str],可选)- 在 `block0` ( :ref:`api_guide_Block` ) 中要忽略梯度的 :ref:`api_guide_Variable` 的名字的集合。所有的 :ref:`api_guide_Block` 中带有 ``stop_gradient = True`` 的所有 :ref:`api_guide_Variable` 的名字都会被自动添加到此集合中。如果该参数不为 ``None``,则会将该参数集合的内容添加到默认的集合中。默认值为 ``None``。 - - **callbacks** (list [callable object],可选)- 回调函数列表。用于在反向传播构建中执行一些自定义作业。每次将新的梯度OP添加到程序中时,将调用其中的所有可调用对象。可调用对象必须有两个输入参数: :ref:`api_guide_Block` 和 ``context`` 。 :ref:`api_guide_Block` 是将被添加到新梯度算子的块。 ``context`` 是一个映射,其键是梯度 :ref:`api_guide_Variable` 名,值是对应的原始 :ref:`api_guide_Variable` 。除此之外, ``context`` 还有另一个特殊的键值对:键是字符串 ``__ current_op_desc__`` ,值是刚刚触发可调用对象的梯度OP的 ``op_desc`` 。默认值为 ``None``。 - -返回: 参数及其梯度 :ref:`api_guide_Variable` 的元组的列表。元组的第一个值为参数,第二个值为该参数的梯度 :ref:`api_guide_Variable` 。 - -返回类型: list[( :ref:`api_guide_Variable` , :ref:`api_guide_Variable` )] - -抛出: - - ``AssertionError`` - 如果 loss 不是 :ref:`api_guide_Variable` 的实例。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.data(name='x', shape=[None, 13], dtype='int64') - y = fluid.data(name='y', shape=[None, 1], dtype='float32') - x_emb = fluid.embedding(x, size=[100, 256]) - y_predict = fluid.layers.fc(input=x_emb, size=1, act=None, name='my_fc') - loss = fluid.layers.square_error_cost(input=y_predict, label=y) - avg_loss = fluid.layers.mean(loss) - - # 获取main_program中所有weight参数, 不包括bias. - all_weights = [param for param in fluid.default_main_program().block(0).all_parameters() if 'w_' in param.name] - all_weights_name = [w.name for w in all_weights] - - # 若parameter_list为默认值(None), 则返回包含所有param_grad的list - p_g_list1 = fluid.backward.append_backward(loss=avg_loss) - # output: [(embedding_0.w_0, embedding_0.w_0@GRAD), (my_fc.w_0, my_fc.w_0@GRAD), (my_fc.b_0, my_fc.b_0@GRAD)] - - # 返回与传入parameter_list对应的param_grad的list, 传入的parameter_list可以是 param(Variable类型)的list - p_g_list2 = fluid.backward.append_backward(loss=avg_loss, parameter_list=all_weights) - # output: [(embedding_0.w_0, embedding_0.w_0@GRAD), (my_fc.w_0, my_fc.w_0@GRAD)] - - # 传入的parameter_list也可以是值为param.name(str类型)的list - p_g_list3 = fluid.backward.append_backward(loss=avg_loss, parameter_list=all_weights_name) - # output: [(embedding_0.w_0, embedding_0.w_0@GRAD), (my_fc.w_0, my_fc.w_0@GRAD)] - - # no_grad_set可以是set[Variables]类型,表示梯度将在这些Variables处截断 - p_g_list4 = fluid.backward.append_backward(loss=avg_loss, no_grad_set=set([x_emb])) - # output: [(my_fc.w_0, my_fc.w_0@GRAD), (my_fc.b_0, my_fc.b_0@GRAD)] - - # no_grad_set也可以是set[Variable.names]类型。当参数Variable是在layers内部创建,且不方便显式地指定时,可以使用set[Variable.names] - p_g_list5 = fluid.backward.append_backward(loss=avg_loss, no_grad_set=set(['my_fc.b_0'])) - # output: [(embedding_0.w_0, embedding_0.w_0@GRAD), (my_fc.w_0, my_fc.w_0@GRAD)] - - # 返回为[], 因为所有的param_grad均被传入的no_grad_set过滤掉了 - p_g_list6 = fluid.backward.append_backward(loss=avg_loss, parameter_list=all_weights, no_grad_set=set(all_weights)) - - - diff --git a/doc/paddle/api/paddle/framework/default_main_program_cn.rst b/doc/paddle/api/paddle/framework/default_main_program_cn.rst deleted file mode 100644 index 4759fafea72a09002fc9e497baeb99983b2c6218..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/default_main_program_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_default_main_program: - -default_main_program -------------------------------- - -.. py:function:: paddle.fluid.default_main_program() - - - - - -此接口可以获取当前用于存储op和variable描述信息的 ``default main program`` - -``fluid.layers`` 接口中添加的op和variable会存储在 ``default main program`` 中 - -``default main program`` 是fluid的许多编程接口中Program参数的默认值。例如对于 ``Executor.run()`` 如果用户没有传入Program参数,会默认使用 ``default main program`` - -可以使用 :ref:`cn_api_fluid_program_guard` 来替换 ``default main program`` - -参数: - - 无 - -返回: 当前默认用于存储op和variable描述的Program - -返回类型: :ref:`cn_api_fluid_Program` - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - #示例网络: - data = fluid.data(name='image', shape=[None, 3, 224, 224], dtype='float32') - label = fluid.data(name='label', shape=[None, 1], dtype='int64') - - conv1 = fluid.layers.conv2d(data, 4, 5, 1, act=None) - bn1 = fluid.layers.batch_norm(conv1, act='relu') - pool1 = fluid.layers.pool2d(bn1, 2, 'max', 2) - conv2 = fluid.layers.conv2d(pool1, 16, 5, 1, act=None) - bn2 = fluid.layers.batch_norm(conv2, act='relu') - pool2 = fluid.layers.pool2d(bn2, 2, 'max', 2) - - fc1 = fluid.layers.fc(pool2, size=50, act='relu') - fc2 = fluid.layers.fc(fc1, size=102, act='softmax') - - loss = fluid.layers.cross_entropy(input=fc2, label=label) - loss = fluid.layers.mean(loss) - opt = fluid.optimizer.Momentum( - learning_rate=0.1, - momentum=0.9, - regularization=fluid.regularizer.L2Decay(1e-4)) - opt.minimize(loss) - - print(fluid.default_main_program().num_blocks) - print(fluid.default_main_program().blocks[0].var('image')) - - - diff --git a/doc/paddle/api/paddle/framework/default_startup_program_cn.rst b/doc/paddle/api/paddle/framework/default_startup_program_cn.rst deleted file mode 100644 index bfc247c29b6a952d59e8ac524a558f32843cb536..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/default_startup_program_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_default_startup_program: - - - - -default_startup_program -------------------------------- - -.. py:function:: paddle.fluid.default_startup_program() - - - - - - -该函数可以获取默认/全局 startup :ref:`cn_api_fluid_Program` (初始化启动程序)。 - - :ref:`_cn_api_fluid_layers` 中的函数会新建参数或 :ref:`cn_api_paddle_data_reader_reader` (读取器) 或 `NCCL `_ 句柄作为全局变量。 - -startup_program会使用内在的OP(算子)去初始化他们,并由 :ref:`_cn_api_fluid_layers` 中的函数将这些OP追加到startup :ref:`cn_api_fluid_Program` 中。 - -该函数将返回默认的或当前的startup_program。用户可以使用 :ref:`cn_api_fluid_program_guard` 去切换 :ref:`cn_api_fluid_default_startup_program` 。 - -返回: 当前的默认/全局 初始化 :ref:`cn_api_fluid_Program` - -返回类型: :ref:`cn_api_fluid_Program` - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - main_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(main_program=main_program, startup_program=startup_program): - x = fluid.layers.data(name="x", shape=[-1, 784], dtype='float32') - y = fluid.layers.data(name="y", shape=[-1, 1], dtype='int32') - z = fluid.layers.fc(name="fc", input=x, size=10, act="relu") - - print("main program is: {}".format(fluid.default_main_program())) - print("start up program is: {}".format(fluid.default_startup_program())) - - - diff --git a/doc/paddle/api/paddle/framework/global_scope_cn.rst b/doc/paddle/api/paddle/framework/global_scope_cn.rst deleted file mode 100644 index 277bb23db092c0b44704ac5905a968f364d3bc7b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/global_scope_cn.rst +++ /dev/null @@ -1,28 +0,0 @@ -.. _cn_api_fluid_executor_global_scope: - -global_scope -------------------------------- - - -.. py:function:: paddle.fluid.global_scope() - -:api_attr: 声明式编程模式(静态图) - - - -获取全局/默认作用域实例。很多API使用默认 ``global_scope`` ,例如 ``Executor.run`` 等。 - -返回:全局/默认作用域实例 - -返回类型:Scope - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - fluid.global_scope().var("data").get_tensor().set(numpy.ones((1, 2)), fluid.CPUPlace()) - data = numpy.array(fluid.global_scope().find_var("data").get_tensor()) - print(data) # [[1. 1.]] diff --git a/doc/paddle/api/paddle/fluid/dygraph/base/grad_cn.rst b/doc/paddle/api/paddle/framework/grad_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/base/grad_cn.rst rename to doc/paddle/api/paddle/framework/grad_cn.rst diff --git a/doc/paddle/api/paddle/framework/gradients_cn.rst b/doc/paddle/api/paddle/framework/gradients_cn.rst deleted file mode 100644 index 0165f7f2f3d0bc61bde4b08c3b79ddf1fee4e4ba..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/gradients_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_backward_gradients: - -gradients -------------------------------- - - -.. py:function:: paddle.fluid.backward.gradients(targets, inputs, target_gradients=None, no_grad_set=None) - -:api_attr: 声明式编程模式(静态图) - - - -将目标梯度反向传播到输入。 - -参数: - - **targets** (Variable|list[Variable]) – 目标变量 - - **inputs** (Variable|list[Variable]) – 输入变量 - - **target_gradients** (Variable|list[Variable],可选) – 目标的梯度变量,应与目标变量形状相同;如果设置为None,则以1初始化所有梯度变量 - - **no_grad_set** (set[Variable|str],可选) – 在 `block0` ( :ref:`api_guide_Block` ) 中要忽略梯度的 :ref:`api_guide_Variable` 的名字的集合。所有的 :ref:`api_guide_Block` 中带有 ``stop_gradient = True`` 的所有 :ref:`api_guide_Variable` 的名字都会被自动添加到此集合中。如果该参数不为 ``None``,则会将该参数集合的内容添加到默认的集合中。默认值为 ``None``。 - - -返回:数组,包含与输入对应的梯度。如果一个输入不影响目标函数,则对应的梯度变量为None - -返回类型:(list[Variable]) - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.data(name='x', shape=[None,2,8,8], dtype='float32') - x.stop_gradient=False - y = fluid.layers.conv2d(x, 4, 1, bias_attr=False) - y = fluid.layers.relu(y) - y = fluid.layers.conv2d(y, 4, 1, bias_attr=False) - y = fluid.layers.relu(y) - z = fluid.gradients([y], x) - print(z) \ No newline at end of file diff --git a/doc/paddle/api/paddle/fluid/layers/io/load_cn.rst b/doc/paddle/api/paddle/framework/load_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/layers/io/load_cn.rst rename to doc/paddle/api/paddle/framework/load_cn.rst diff --git a/doc/paddle/api/paddle/framework/name_scope_cn.rst b/doc/paddle/api/paddle/framework/name_scope_cn.rst deleted file mode 100644 index bf17054ba22ba285d436886c5e7491c8447c0132..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/name_scope_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_fluid_name_scope: - -name_scope -------------------------------- - - -.. py:function:: paddle.fluid.name_scope(prefix=None) - -:api_attr: 声明式编程模式(静态图) - - - - -该函数为operators生成不同的命名空间。该函数只用于调试和可视化,不建议用在其它方面。 - - -参数: - - **prefix** (str,可选) - 名称前缀。默认值为None。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - with fluid.name_scope("s1"): - a = fluid.data(name='data', shape=[None, 1], dtype='int32') - b = a + 1 - with fluid.name_scope("s2"): - c = b * 1 - with fluid.name_scope("s3"): - d = c / 1 - with fluid.name_scope("s1"): - f = fluid.layers.pow(d, 2.0) - with fluid.name_scope("s4"): - g = f - 1 - - # 没有指定的话默认OP在default main program中。 - for op in fluid.default_main_program().block(0).ops: - # elementwise_add在/s1/中创建 - if op.type == 'elementwise_add': - assert op.desc.attr("op_namescope") == '/s1/' - # elementwise_mul在/s1/s2中创建 - elif op.type == 'elementwise_mul': - assert op.desc.attr("op_namescope") == '/s1/s2/' - # elementwise_div在/s1/s3中创建 - elif op.type == 'elementwise_div': - assert op.desc.attr("op_namescope") == '/s1/s3/' - # elementwise_sum在/s4/中创建 - elif op.type == 'elementwise_sub': - assert op.desc.attr("op_namescope") == '/s4/' - # pow在/s1_1/中创建 - elif op.type == 'pow': - assert op.desc.attr("op_namescope") == '/s1_1/' diff --git a/doc/paddle/api/paddle/fluid/dygraph/base/no_grad_cn.rst b/doc/paddle/api/paddle/framework/no_grad_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/base/no_grad_cn.rst rename to doc/paddle/api/paddle/framework/no_grad_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/parallel/prepare_context_cn.rst b/doc/paddle/api/paddle/framework/prepare_context_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/parallel/prepare_context_cn.rst rename to doc/paddle/api/paddle/framework/prepare_context_cn.rst diff --git a/doc/paddle/api/paddle/framework/program_guard_cn.rst b/doc/paddle/api/paddle/framework/program_guard_cn.rst deleted file mode 100644 index d1b9e68b08e74b52c029aa848ab5bd382cc36e9c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/program_guard_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_program_guard: - -program_guard -------------------------------- - - -.. py:function:: paddle.fluid.program_guard(main_program, startup_program=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口应配合使用python的 ``with`` 语句来将 ``with`` block 里的算子和变量添加进指定的全局主程序(main program)和启动程序(startup program)。 - -``with`` 语句块中的fluid.layers下各接口将在新的main program(主程序)中添加operators(算子)和variables(变量)。 - -参数: - - **main_program** (Program) – “with”语句中将使用的新的main program。 - - **startup_program** (Program,可选) – “with”语句中将使用的新的startup program。若传入 ``None`` 则不改变当前的启动程序,即仍使用default_startup_program。默认值为None。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - main_program = fluid.Program() - startup_program = fluid.Program() - with fluid.program_guard(main_program, startup_program): - data = fluid.data(name='image', shape=[None, 784, 784], dtype='float32') - hidden = fluid.layers.fc(input=data, size=10, act='relu') - -例如,当组的网不需要startup_program初始化各变量时,可以传入一个临时的program。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - main_program = fluid.Program() - # 如果您不需要关心startup program,传入一个临时值即可 - with fluid.program_guard(main_program, fluid.Program()): - data = fluid.data(name='image', shape=[None, 784, 784], dtype='float32') - diff --git a/doc/paddle/api/paddle/framework/py_func_cn.rst b/doc/paddle/api/paddle/framework/py_func_cn.rst deleted file mode 100644 index 79d11adef7a0cf8abfd256ad8d81a58945ab7d86..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/py_func_cn.rst +++ /dev/null @@ -1,133 +0,0 @@ -.. _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) - -:api_attr: 声明式编程模式(静态图) - - - -PaddlePaddle Fluid通过py_func在Python端注册OP。py_func的设计原理在于Paddle中的LodTensor与numpy数组可以方便的互相转换,从而可使用Python中的numpy API来自定义一个Python OP。 - -该自定义的Python OP的前向函数是 ``func``, 反向函数是 ``backward_func`` 。 Paddle将在前向部分调用 ``func`` ,并在反向部分调用 ``backward_func`` (如果 ``backward_func`` 不是None)。 ``x`` 为 ``func`` 的输入,必须为LoDTensor类型; ``out`` 为 ``func`` 的输出, 既可以是LoDTensor类型, 也可以是numpy数组。 - -反向函数 ``backward_func`` 的输入依次为:前向输入 ``x`` 、前向输出 ``out`` 、 ``out`` 的梯度。 如果 ``out`` 的某些变量没有梯度,则 ``backward_func`` 的相关输入变量为None。如果 ``x`` 的某些变量没有梯度,则用户应在 ``backward_func`` 中主动返回None。 - -在调用该接口之前,还应正确设置 ``out`` 的数据类型和形状,而 ``out`` 和 ``x`` 对应梯度的数据类型和形状将自动推断而出。 - -此功能还可用于调试正在运行的网络,可以通过添加没有输出的 ``py_func`` 运算,并在 ``func`` 中打印输入 ``x`` 。 - -参数: - - **func** (callable) - 所注册的Python OP的前向函数,运行网络时,将根据该函数与前向输入 ``x`` ,计算前向输出 ``out`` 。 在 ``func`` 建议先主动将LoDTensor转换为numpy数组,方便灵活的使用numpy相关的操作,如果未转换成numpy,则可能某些操作无法兼容。 - - **x** (Variable|tuple(Variable)|list[Variale]) - 前向函数 ``func`` 的输入,多个LoDTensor以tuple(Variable)或list[Variale]的形式传入,其中Variable为LoDTensor或Tenosr。 - - **out** (Variable|tuple(Variable)|list[Variale]) - 前向函数 ``func`` 的输出,可以为Variable|tuple(Variable)|list[Variale],其中Variable既可以为LoDTensor或Tensor,也可以为numpy数组。由于Paddle无法自动推断 ``out`` 的形状和数据类型,必须应事先创建 ``out`` 。 - - **backward_func** (callable,可选) - 所注册的Python OP的反向函数。默认值为None,意味着没有反向计算。若不为None,则会在运行网络反向时调用 ``backward_func`` 计算 ``x`` 的梯度。 - - **skip_vars_in_backward_input** (Variable,可选) - ``backward_func`` 的输入中不需要的变量,可以是Variable|tuple(Variable)|list[Variale]。 这些变量必须是 ``x`` 和 ``out`` 中的一个。默认值为None,意味着没有变量需要从 ``x`` 和 ``out`` 中去除。若不为None,则这些变量将不是 ``backward_func`` 的输入。该参数仅在 ``backward_func`` 不为None时有用。 - -返回: 前向函数的输出 ``out`` - -返回类型: Variable|tuple(Variable)|list[Variable] - -**示例代码1**: - -.. code-block:: python - - import paddle.fluid as fluid - import six - - # 自定义的前向函数,可直接输入LoDTenosor - def tanh(x): - return np.tanh(x) - - # 在反向函数中跳过前向输入x,返回x的梯度。 - # 必须使用np.array主动将LodTensor转换为numpy,否则"+/-"等操作无法使用 - def tanh_grad(y, dy): - return np.array(dy) * (1 - np.square(np.array(y))) - - # 自定义的前向函数,可用于调试正在运行的网络(打印值) - def debug_func(x): - print(x) - - def create_tmp_var(name, dtype, shape): - return fluid.default_main_program().current_block().create_var( - name=name, dtype=dtype, shape=shape) - - 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) - - # 用户自定义的调试函数,打印出输入的LodTensor - 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) - -**示例代码2**: - -.. code-block:: python - - # 该示例展示了如何将LoDTensor转化为numpy数组,并利用numpy API来自定义一个OP - import paddle.fluid as fluid - import numpy as np - - def element_wise_add(x, y): - # 必须先手动将LodTensor转换为numpy数组,否则无法支持numpy的shape操作 - x = np.array(x) - y = np.array(y) - - if x.shape != y.shape: - raise AssertionError("the shape of inputs must be the same!") - - result = np.zeros(x.shape, dtype='int32') - for i in range(len(x)): - for j in range(len(x[0])): - result[i][j] = x[i][j] + y[i][j] - - return result - - def create_tmp_var(name, dtype, shape): - return fluid.default_main_program().current_block().create_var( - name=name, dtype=dtype, shape=shape) - - def py_func_demo(): - start_program = fluid.default_startup_program() - main_program = fluid.default_main_program() - - # 创建前向函数的输入变量 - x = fluid.data(name='x', shape=[2,3], dtype='int32') - y = fluid.data(name='y', shape=[2,3], dtype='int32') - - # 创建前向函数的输出变量,必须指明变量名称name/数据类型dtype/维度shape - output = create_tmp_var('output','int32', [3,1]) - - # 输入多个LodTensor以list[Variable]或tuple(Variable)形式 - fluid.layers.py_func(func=element_wise_add, x=[x,y], out=output) - - exe=fluid.Executor(fluid.CPUPlace()) - exe.run(start_program) - - # 给program喂入numpy数组 - input1 = np.random.randint(1, 10, size=[2,3], dtype='int32') - input2 = np.random.randint(1, 10, size=[2,3], dtype='int32') - out = exe.run(main_program, - feed={'x':input1, 'y':input2}, - fetch_list=[output.name]) - print("{0} + {1} = {2}".format(input1, input2, out)) - - py_func_demo() - - # 参考输出: - # [[5, 9, 9] + [[7, 8, 4] = [array([[12, 17, 13] - # [7, 5, 2]] [1, 3, 3]] [8, 8, 5]], dtype=int32)] diff --git a/doc/paddle/api/paddle/fluid/io/save_cn.rst b/doc/paddle/api/paddle/framework/save_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/io/save_cn.rst rename to doc/paddle/api/paddle/framework/save_cn.rst diff --git a/doc/paddle/api/paddle/framework/scope_guard_cn.rst b/doc/paddle/api/paddle/framework/scope_guard_cn.rst deleted file mode 100644 index e220cd8d451708031d2526534a686a852ba67807..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/framework/scope_guard_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_executor_scope_guard: - -scope_guard -------------------------------- - - -.. py:function:: paddle.fluid.executor.scope_guard (scope) - -:api_attr: 声明式编程模式(静态图) - - - - -该接口通过 python 的 ``with`` 语句切换作用域(scope)。 -作用域记录了变量名和变量 ( :ref:`api_guide_Variable` ) 之间的映射关系,类似于编程语言中的大括号。 -如果未调用此接口,所有的变量和变量名都会被记录在默认的全局作用域中。 -当用户需要创建同名的变量时,如果不希望同名的变量映射关系被覆盖,则需要通过该接口切换作用域。 -通过 ``with`` 语句切换后,``with`` 语句块中所有创建的变量都将分配给新的作用域。 - -参数: - - **scope** (Scope) - 新的作用域。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - new_scope = fluid.Scope() - with fluid.scope_guard(new_scope): - fluid.global_scope().var("data").get_tensor().set(numpy.ones((1, 2)), fluid.CPUPlace()) - data = numpy.array(new_scope.find_var("data").get_tensor()) - print(data) # [[1. 1.]] diff --git a/doc/paddle/api/paddle/fluid/dygraph/base/to_variable_cn.rst b/doc/paddle/api/paddle/framework/to_variable_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/base/to_variable_cn.rst rename to doc/paddle/api/paddle/framework/to_variable_cn.rst diff --git a/doc/paddle/api/paddle/imperative/BackwardStrategy_cn.rst b/doc/paddle/api/paddle/imperative/BackwardStrategy_cn.rst deleted file mode 100644 index e5bee2a137388d489c2a8de4e31ff6e4ace4b006..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/BackwardStrategy_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_dygraph_BackwardStrategy: - -BackwardStrategy -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.BackwardStrategy - -:api_attr: 命令式编程模式(动态图) - - - -**注意:该API只在动态图下生效** - -BackwardStrategy是描述动态图反向执行的策略,主要功能是定义动态图反向执行时的不同策略 - -**属性:** - -.. py:attribute:: sort_sum_gradient - -是否按照前向执行的逆序加和多个梯度,例如当 x_var( :ref:`api_guide_Variable` )作为多个OP(这里以 :ref:`cn_api_fluid_layers_scale` 为例)的输入时,其产生的梯度是否按照前向书写时的 -逆序加和,默认为False - - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - x = np.ones([2, 2], np.float32) - with fluid.dygraph.guard(): - x_var = fluid.dygraph.to_variable(x) - sums_inputs = [] - # 这里x_var将作为多个输入scale的输入 - for _ in range(10): - sums_inputs.append(fluid.layers.scale(x_var)) - ret2 = fluid.layers.sums(sums_inputs) - loss2 = fluid.layers.reduce_sum(ret2) - backward_strategy = fluid.dygraph.BackwardStrategy() - backward_strategy.sort_sum_gradient = True - loss2.backward(backward_strategy) - - - - - - diff --git a/doc/paddle/api/paddle/imperative/CosineDecay_cn.rst b/doc/paddle/api/paddle/imperative/CosineDecay_cn.rst deleted file mode 100644 index 92ffd6338eddd0034b8d2cb3f06ddb7d9c537018..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/CosineDecay_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_dygraph_CosineDecay: - -CosineDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.CosineDecay(learning_rate, step_each_epoch, epochs, begin=0, step=1, dtype='float32') - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供按余弦函数衰减学习率的功能。 - -余弦衰减的计算方式如下。 - -.. math:: - - decayed\_learning\_rate = learning\_rate * 0.5 * (math.cos(global\_step * \frac{math.pi}{step\_each\_epoch} ) + 1) - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **learning_rate** (Variable | float) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - - **step_each_epoch** (int) - 遍历一遍训练数据所需的步数。 - - **begin** (int,可选) - 起始步,即以上公式中global_step的初始化值。默认值为0。 - - **step** (int,可选) - 步大小,即以上公式中global_step的每次的增量值。默认值为1。 - - **dtype** (str,可选) - 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - base_lr = 0.1 - with fluid.dygraph.guard(): - gru = fluid.dygraph.GRUUnit(5 * 3) - optimizer = fluid.optimizer.SGD( - learning_rate=fluid.dygraph.CosineDecay( - base_lr, 10000, 120), parameter_list=gru.parameters()) - - diff --git a/doc/paddle/api/paddle/imperative/DataParallel_cn.rst b/doc/paddle/api/paddle/imperative/DataParallel_cn.rst deleted file mode 100644 index 6fc3900aa741404a9efc384ea511ebd60db81576..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/DataParallel_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_imperative_cn_DataParallel: - -DataParallel -------------------------------- -:doc_source: paddle.fluid.dygraph.parallel.DataParallel - - diff --git a/doc/paddle/api/paddle/imperative/ExponentialDecay_cn.rst b/doc/paddle/api/paddle/imperative/ExponentialDecay_cn.rst deleted file mode 100644 index 8a110ba82f47d912428e2e8b6bec45d30e62a739..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/ExponentialDecay_cn.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. _cn_api_fluid_dygraph_ExponentialDecay: - -ExponentialDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.ExponentialDecay(learning_rate, decay_steps, decay_rate, staircase=False, begin=0, step=1, dtype=’float32‘) - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供一种学习率按指数函数衰减的功能。 - -指数衰减的计算方式如下。 - -.. math:: - - decayed\_learning\_rate = learning\_rate * decay\_rate ^ y - - -当staircase为False时,y对应的计算公式为: - -.. math:: - - y = \frac{global\_step}{decay\_steps} - -当staircase为True时,y对应的计算公式为: - -.. math:: - - y = math.floor(\frac{global\_step}{decay\_steps}) - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **learning_rate** (Variable|float) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - - **decay_steps** (int) - 衰减步数。必须是正整数,该参数确定衰减周期。 - - **decay_rate** (float)- 衰减率。 - - **staircase** (bool) - 若为True,则以不连续的间隔衰减学习速率即阶梯型衰减。若为False,则以标准指数型衰减。默认值为False。 - - **begin** (int) - 起始步,即以上运算式子中global_step的初始化值。默认值为0。 - - **step** (int) - 步大小,即以上运算式子中global_step的每次的增量值,使得global_step随着训练的次数递增。默认值为1。 - - **dtype** (str) - 初始化学习率变量的数据类型,可以为"float32", "float64"。 默认值为"float32"。 - -返回: 无 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - with fluid.dygraph.guard(): - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.dygraph.ExponentialDecay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True)) - - - - - - - diff --git a/doc/paddle/api/paddle/imperative/InverseTimeDecay_cn.rst b/doc/paddle/api/paddle/imperative/InverseTimeDecay_cn.rst deleted file mode 100644 index c693cc97791290950e90b6d5126edccb7d8ceed4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/InverseTimeDecay_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_dygraph_InverseTimeDecay: - -InverseTimeDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.InverseTimeDecay(learning_rate, decay_steps, decay_rate, staircase=False, begin=0, step=1, dtype='float32') - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供反时限学习率衰减的功能。 - -反时限学习率衰减计算方式如下。 - -当staircase为False时,计算公式为: - -.. math:: - - decayed\_learning\_rate = \frac{learning\_rate}{1 + decay\_rate * \frac{global\_step}{decay\_step}} - -当staircase为True时,计算公式为: - -.. math:: - - decayed\_learning\_rate = \frac{learning\_rate}{1 + decay\_rate * math.floor(\frac{global\_step}{decay\_step})} - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **learning_rate** (Variable|float) - 初始学习率值。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - - **decay_steps** (int) - 衰减步数,见以上衰减运算式子。 - - **decay_rate** (float)- 衰减率。见以上衰减运算。 - - **staircase** (bool,可选) - 指定是否按阶梯状衰减。若为True, 学习率变化曲线呈阶梯状。若为False,学习率变化值曲线为平滑的曲线。默认值为False。 - - **begin** (int,可选) - 起始步,即以上运算式子中global_step的初始化值。默认值为0。 - - **step** (int,可选) - 步大小,即以上运算式子中global_step的每次的增量值,使得global_step随着训练的次数递增。默认值为1。 - - **dtype** (str,可选) - 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - with fluid.dygraph.guard(): - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.dygraph.InverseTimeDecay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True)) - - - diff --git a/doc/paddle/api/paddle/imperative/LayerList_cn.rst b/doc/paddle/api/paddle/imperative/LayerList_cn.rst deleted file mode 100644 index 0dc2468dff0ca366300ee50558cab2c56df68aad..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/LayerList_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_dygraph_LayerList: - -LayerList -------------------------------- - -.. py:class:: paddle.fluid.dygraph.LayerList(sublayers=None) - - - - -LayerList用于保存子层列表,它包含的子层将被正确地注册和添加。列表中的子层可以像常规python列表一样被索引。 - -参数: - - **sublayers** (iterable,可选) - 要保存的子层。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - class MyLayer(fluid.Layer): - def __init__(self): - super(MyLayer, self).__init__() - self.linears = fluid.dygraph.LayerList( - [fluid.dygraph.Linear(10, 10) for i in range(10)]) - def forward(self, x): - # LayerList可以像iterable一样迭代,也可以使用int索引 - for i, l in enumerate(self.linears): - x = self.linears[i // 2](x) + l(x) - return x - - diff --git a/doc/paddle/api/paddle/imperative/NaturalExpDecay_cn.rst b/doc/paddle/api/paddle/imperative/NaturalExpDecay_cn.rst deleted file mode 100644 index 03a7e10a1cc4b66180ff118d8408ce21d9f5a30a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/NaturalExpDecay_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_dygraph_NaturalExpDecay: - -NaturalExpDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.NaturalExpDecay(learning_rate, decay_steps, decay_rate, staircase=False, begin=0, step=1, dtype='float32') - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供按自然指数衰减学习率的功能。 - -自然指数衰减的计算方式如下。 - -.. math:: - - decayed\_learning\_rate = learning\_rate * e^{y} - -当staircase为False时,y对应的计算公式为: - -.. math:: - - y = - decay\_rate * \frac{global\_step}{decay\_steps} - -当staircase为True时,y对应的计算公式为: - -.. math:: - - y = - decay\_rate * math.floor(\frac{global\_step}{decay\_steps}) - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **learning_rate** (Variable|float) - 初始学习率值。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - - **decay_steps** (int) – 指定衰减的步长。该参数确定衰减的周期。 - - **decay_rate** (float) – 指定衰减率。 - - **staircase** (bool,可选) - 若为True, 学习率变化曲线呈阶梯状,若为False,学习率变化值曲线为平滑的曲线。默认值为False。 - - **begin** (int,可选) – 起始步,即以上运算式子中global_step的初始化值。默认值为0。 - - **step** (int,可选) – 步大小,即以上运算式子中global_step的每次的增量值。默认值为1。 - - **dtype** (str,可选) – 学习率值的数据类型,可以为"float32", "float64"。默认值为"float32"。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.dygraph.NaturalExpDecay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True), - parameter_list=emb.parameters()) - - - - - diff --git a/doc/paddle/api/paddle/imperative/NoamDecay_cn.rst b/doc/paddle/api/paddle/imperative/NoamDecay_cn.rst deleted file mode 100644 index 390e8b3e3f5a7ea1dac71fbd75468d26b042b4c6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/NoamDecay_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_dygraph_NoamDecay: - -NoamDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.NoamDecay(d_model, warmup_steps, begin=1, step=1, dtype='float32', learning_rate=1.0) - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供Noam衰减学习率的功能。 - -Noam衰减的计算方式如下。 - -.. math:: - - decayed\_learning\_rate = learning\_rate * d_{model}^{-0.5} * min(global\_steps^{-0.5}, global\_steps * warmup\_steps^{-1.5}) - -关于Noam衰减的更多细节请参考 `attention is all you need `_ - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **d$_{model}$** (Variable|int) - 模型的输入、输出向量特征维度,为超参数。如果设置为Variable类型值,则数据类型可以为int32或int64的标量Tensor,也可以设置为Python int。 - - **warmup_steps** (Variable|int) - 预热步数,为超参数。如果设置为Variable类型,则数据类型为int32或int64的标量Tensor,也可以设置为为Python int。 - - **begin** (int,可选) – 起始步。即以上运算式子中global_steps的初始值。默认值为0。 - - **step** (int,可选) – 步大小。即以上运算式子中global_steps的递增值。默认值为1。 - - **dtype** (str,可选) – 学习率值的数据类型,可以为"float32", "float64"。默认值为"float32"。 - - **learning_rate** (Variable|float|int,可选) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的int类型。默认值为1.0。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - warmup_steps = 100 - learning_rate = 0.01 - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - optimizer = fluid.optimizer.SGD( - learning_rate = fluid.dygraph.NoamDecay( - 1/(warmup_steps *(learning_rate ** 2)), - warmup_steps), - parameter_list = emb.parameters()) diff --git a/doc/paddle/api/paddle/imperative/ParallelEnv_cn.rst b/doc/paddle/api/paddle/imperative/ParallelEnv_cn.rst deleted file mode 100644 index 846001c6e98239282f6a971d82a174d3e32068c5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/ParallelEnv_cn.rst +++ /dev/null @@ -1,145 +0,0 @@ -.. _cn_api_fluid_dygraph_ParallelEnv: - -ParallelEnv -------------------------------- - -.. py:class:: paddle.fluid.dygraph.ParallelEnv() - -**注意:** - **这个类的曾用名为 Env, 这个旧的名字会被废弃,请使用新的类名 ParallelEnv。** - -这个类用于获取动态图模型并行执行所需的环境变量值。 - -动态图并行模式现在需要使用 `paddle.distributed.launch` 模块启动,所需的环境变量默认由 `paddle.distributed.launch` 模块自动配置。 - -ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配置动态图并行执行。 - -**示例代码:** - .. code-block:: python - - # 这个示例需要由paddle.distributed.launch启动, 用法为: - # python -m paddle.distributed.launch --selected_gpus=0,1 example.py - # 脚本example.py中的代码是下面这个示例. - - import numpy as np - import paddle.fluid as fluid - import paddle.fluid.dygraph as dygraph - from paddle.fluid.optimizer import AdamOptimizer - from paddle.fluid.dygraph.nn import Linear - from paddle.fluid.dygraph.base import to_variable - - place = fluid.CUDAPlace(fluid.dygraph.ParallelEnv().dev_id) - with fluid.dygraph.guard(place=place): - - # 准备数据并行的环境 - strategy=dygraph.prepare_context() - - linear = Linear(1, 10, act="softmax") - adam = fluid.optimizer.AdamOptimizer() - - # 配置模型为并行模型 - linear = dygraph.DataParallel(linear, strategy) - - x_data = np.random.random(size=[10, 1]).astype(np.float32) - data = to_variable(x_data) - - hidden = linear(data) - avg_loss = fluid.layers.mean(hidden) - - # 根据参与训练GPU卡的数量对loss值进行缩放 - avg_loss = linear.scale_loss(avg_loss) - - avg_loss.backward() - - # 收集各个GPU卡上的梯度值 - linear.apply_collective_grads() - - adam.minimize(avg_loss) - linear.clear_gradients() - -属性 -:::::::::::: - -.. py:attribute:: nranks - -参与训练进程的数量,一般也是训练所使用GPU卡的数量。 - -此属性的值等于环境变量 `PADDLE_TRAINERS_NUM` 的值。默认值为1。 - -**示例代码** - .. code-block:: python - - # 在Linux环境,提前执行此命令: export PADDLE_TRAINERS_NUM=4 - import paddle.fluid as fluid - - env = fluid.dygraph.ParallelEnv() - print("The nranks is %d" % env.nranks) - # The nranks is 4 - - -.. py:attribute:: local_rank - -当前训练进程的编号。 - -此属性的值等于环境变量 `PADDLE_TRAINER_ID` 的值。默认值是0。 - -**示例代码** - .. code-block:: python - - # 在Linux环境,提前执行此命令: export PADDLE_TRAINER_ID=0 - import paddle.fluid as fluid - - env = fluid.dygraph.ParallelEnv() - print("The local rank is %d" % env.local_rank) - # The local rank is 0 - - -.. py:attribute:: dev_id - -当前用于并行训练的GPU的编号。 - -此属性的值等于环境变量 `FLAGS_selected_gpus` 的值。默认值是0。 - -**示例代码** - .. code-block:: python - - # 在Linux环境,提前执行此命令: export FLAGS_selected_gpus=1 - import paddle.fluid as fluid - - env = fluid.dygraph.ParallelEnv() - print("The device id are %d" % env.dev_id) - # The device id are 1 - - -.. py:attribute:: current_endpoint - -当前训练进程的终端节点IP与相应端口,形式为(机器节点IP:端口号)。例如:127.0.0.1:6170。 - -此属性的值等于环境变量 `PADDLE_CURRENT_ENDPOINT` 的值。默认值为空字符串""。 - -**示例代码** - .. code-block:: python - - # 在Linux环境,提前执行此命令: export PADDLE_CURRENT_ENDPOINT=127.0.0.1:6170 - import paddle.fluid as fluid - - env = fluid.dygraph.ParallelEnv() - print("The current endpoint are %s" % env.current_endpoint) - # The current endpoint are 127.0.0.1:6170 - - -.. py:attribute:: trainer_endpoints - -当前任务所有参与训练进程的终端节点IP与相应端口,用于在NCCL2初始化的时候建立通信,广播NCCL ID。 - -此属性的值等于环境变量 `PADDLE_TRAINER_ENDPOINTS` 的值。默认值为空字符串""。 - -**示例代码** - .. code-block:: python - - # 在Linux环境,提前执行此命令: export PADDLE_TRAINER_ENDPOINTS=127.0.0.1:6170,127.0.0.1:6171 - import paddle.fluid as fluid - - env = fluid.dygraph.ParallelEnv() - print("The trainer endpoints are %s" % env.trainer_endpoints) - # The trainer endpoints are ['127.0.0.1:6170', '127.0.0.1:6171'] \ No newline at end of file diff --git a/doc/paddle/api/paddle/imperative/PiecewiseDecay_cn.rst b/doc/paddle/api/paddle/imperative/PiecewiseDecay_cn.rst deleted file mode 100644 index d483d5d34ed9a271f1b61f1ed97b8c09ab2626f2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/PiecewiseDecay_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_dygraph_PiecewiseDecay: - -PiecewiseDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.PiecewiseDecay(boundaries, values, begin, step=1, dtype='float32') - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供对初始学习率进行分段(piecewise)常数衰减的功能。 - -分段常数衰减的过程举例描述如下。 - -.. code-block:: text - - 例如,设定的boundaries列表为[10000, 20000],候选学习率常量列表values为[1.0, 0.5, 0.1],则: - 1、在当前训练步数global_step小于10000步,学习率值为1.0。 - 2、在当前训练步数global_step大于或等于10000步,并且小于20000步时,学习率值为0.5。 - 3、在当前训练步数global_step大于或等于20000步时,学习率值为0.1。 - -参数: - - **boundaries** (list) - 指定衰减的步数边界。列表的数据元素为Python int类型。 - - **values** (list) - 备选学习率列表。数据元素类型为Python float的列表。与边界值列表有对应的关系。 - - **begin** (int) – 起始步,即以上举例描述中global_step的初始化值。 - - **step** (int,可选) – 步大小,即以上举例描述中global_step每步的递增值。默认值为1。 - - **dtype** (str,可选) – 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - boundaries = [10000, 20000] - values = [1.0, 0.5, 0.1] - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding( [10, 10] ) - optimizer = fluid.optimizer.SGD( - learning_rate=fluid.dygraph.PiecewiseDecay(boundaries, values, 0), - parameter_list = emb.parameters() ) - - - - - diff --git a/doc/paddle/api/paddle/imperative/PolynomialDecay_cn.rst b/doc/paddle/api/paddle/imperative/PolynomialDecay_cn.rst deleted file mode 100644 index df03f3f10ef90733cf7fc2027efc2028018da1b0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/PolynomialDecay_cn.rst +++ /dev/null @@ -1,62 +0,0 @@ -.. _cn_api_fluid_dygraph_PolynomialDecay: - -PolynomialDecay -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.PolynomialDecay(learning_rate, decay_steps, end_learning_rate=0.0001, power=1.0, cycle=False, begin=0, step=1, dtype='float32') - -:api_attr: 命令式编程模式(动态图) - - - -该接口提供学习率按多项式衰减的功能。通过多项式衰减函数,使得学习率值逐步从初始的 ``learning_rate``,衰减到 ``end_learning_rate`` 。 - -计算方式如下。 - -若cycle为True,则计算公式为: - -.. math:: - - decay\_steps &= decay\_steps * math.ceil(\frac{global\_step}{decay\_steps}) \\ - decayed\_learning\_rate &= (learning\_rate-end\_learning\_rate)*(1-\frac{global\_step}{decay\_steps})^{power}+end\_learning\_rate - -若cycle为False,则计算公式为: - -.. math:: - - global\_step &= min(global\_step, decay\_steps) \\ - decayed\_learning\_rate &= (learning\_rate-end\_learning\_rate)*(1-\frac{global\_step}{decay\_steps})^{power}+end\_learning\_rate - -式中, - -- :math:`decayed\_learning\_rate` : 衰减后的学习率。 -式子中各参数详细介绍请看参数说明。 - -参数: - - **learning_rate** (Variable|float32) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - - **decay_steps** (int) - 衰减步数。必须是正整数,该参数确定衰减周期。 - - **end_learning_rate** (float,可选) - 最小的最终学习率。默认值为0.0001。 - - **power** (float,可选) - 多项式的幂。默认值为1.0。 - - **cycle** (bool,可选) - 学习率下降后是否重新上升。若为True,则学习率衰减到最低学习率值时,会出现上升。若为False,则学习率曲线则单调递减。默认值为False。 - - **begin** (int,可选) – 起始步,即以上运算式子中global_step的初始化值。默认值为0。 - - **step** (int,可选) – 步大小,即以上运算式子中global_step的递增值。默认值为1。 - - **dtype** (str,可选)– 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - -返回: 无 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - start_lr = 0.01 - total_step = 5000 - end_lr = 0 - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding( [10, 10]) - optimizer = fluid.optimizer.SGD( - learning_rate = fluid.dygraph.PolynomialDecay( - start_lr, total_step, end_lr, power=1.0), - parameter_list = emb.parameters()) diff --git a/doc/paddle/api/paddle/imperative/ProgramTranslator_cn.rst b/doc/paddle/api/paddle/imperative/ProgramTranslator_cn.rst deleted file mode 100644 index 75cd816fbdeb794fbfb8efd8ff471c16d6812875..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/ProgramTranslator_cn.rst +++ /dev/null @@ -1,263 +0,0 @@ -.. _cn_api_fluid_dygraph_ProgramTranslator - -ProgramTranslator -------------------------------- - -.. py:class:: paddle.fluid.dygraph.dygraph_to_static.ProgramTranslator() - -将动态图函数转为静态图函数的类。该类是个单例(singleton)。 - -参数: - 无。 - -返回:ProgramTranslator 单例对象。 - -返回类型:ProgramTranslator。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - # 以下两种调用方法得到同一个对象,因为ProgramTranslator是个单例 - fluid.dygraph.ProgramTranslator() - fluid.dygraph.ProgramTranslator.get_instance() - -.. py:method:: enable(enable_declarative) - -全局开启或关闭动态图转化为静态图。 - -参数: - - **enable_declarative** (bool) - 设置True或者False来打开或关闭declarative 。 - -返回:None。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - @fluid.dygraph.jit.declarative - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - prog_trans.enable(False) - - x = np.ones([1, 2]) - # The declarative is disabled so the func is run in dygraph - with fluid.dygraph.guard(): - print(func(x).numpy()) # [[2. 2.]] - -.. py:method:: get_output(dygraph_func, *args, **kwargs) - -返回动态图函数输出的VarBase,但是该动态图函数的数值计算过程会被转化为静态图模式运行。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - - **args, kwargs** - 动态图函数的输入。 - -返回:包含数值结果的VarBase或者VarBase的元组,是输入动态图函数的返回值。 - -返回类型:VarBase或者VarBase的元组。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - with fluid.dygraph.guard(): - x = np.ones([1, 2]) - x_v = prog_trans.get_output(func, x) - print(x_v.numpy()) # [[0. 0.]] - -.. py:method:: get_func(dygraph_func) - -返回一个可调用函数,该函数将输入动态图函数接口转化为静态图组网接口。组网接口不像动态图接口,其并不直接返回数据结果。用户需要自行处理对应的Program和Eexecutor。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - -返回:将动态图接口转为静态图组网接口的可调用函数。 - -返回类型:可调用函数。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - static_func = prog_trans.get_func(func) - print(callable(static_func)) # True - -.. py:method:: get_program(dygraph_func, *args, **kwargs) - -返回动态图函数转化后的静态图Program和输入输出Varaible。用户可以使用Executor来执行该Program。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - - **args, kwargs** - 动态图函数的输入。 - -返回:元组(main_program, startup_program, inputs, outputs) - main_program: 转化后的main program。 - startup_program: 转化后的startup program。 - inputs: 输入Variable的列表,这些Variable可以在执行去feed。 - outputs: 输出Variable的列表,这些Variable可以在运行时被fetch。 - -返回类型:类型为(Program, Program, list(Variable), list(Variable)) 的元组。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - x = np.ones([1, 2]) - main_prog, start_prog, inputs, outputs = prog_trans.get_program(func, x) - print([i.name for i in inputs]) - # ['feed_0'] 需要被feed的输入Variable名字,对应x - print([o.name for o in outputs]) - # ['_generated_var_4'] 需要被fetch的输出Variable名字,对应x_v - -.. py:method:: get_code(dygraph_func) - -返回动态图函数转化后的静态图代码字符串。 - -参数: - - **dygraph_func** (callable) - 动态图函数。 - -返回:转化后的静态图代码字符串。 - -返回类型:str。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def func(x): - x = fluid.dygraph.to_variable(x) - if fluid.layers.mean(x) > 0: - x_v = x - 1 - else: - x_v = x + 1 - return x_v - - prog_trans = fluid.dygraph.ProgramTranslator() - - code = prog_trans.get_code(func) - print(type(code)) # - -.. py:method:: save_inference_model(dirname, feed=None, fetch=None) - -将现有模型保存为预测模型。保存过程会裁剪main program,只保存和预测输入输出有关的部分,构建成新的Program,并将此Program和相关参数保存到指定dirname路径下,被保存的模型可以被 :ref:`cn_api_fluid_io_load_inference_model` 或者C++预测接口使用。 - -参数: - - **dirname** (str) - 存储预测模型的目录。 - - **feed (list[int], 可选)** - 预测模型要保存的输入Variable的序号。如果为None,则动态图函数的所有输入变量将被保存。默认值为None。 - - **fetch (list[int], 可选)** - 预测模型要保存的输出Variable的序号。如果为None,则动态图函数的所有输出变量将被保存。默认值为None。 - -返回:None。 - -**示例代码** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - from paddle.fluid.dygraph import ProgramTranslator - - class SimpleNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(SimpleNet, self).__init__() - self._linear = Linear(in_size, out_size) - - @declarative - def forward(self, x): - y = self._linear(x) - z = self._linear(y) - loss = fluid.layers.mean(z) - return z, loss - - with fluid.dygraph.guard(fluid.CPUPlace()): - net = SimpleNet(8, 8) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - x = fluid.dygraph.to_variable(np.random.random((4, 8)).astype('float32')) - for i in range(10): - loss, out = net(x) - loss.backward() - adam.minimize(loss) - net.clear_gradients() - # 保存模型 - # 注意fetch=[0]意味着我们将序号为0的动态图return输出'z'作为预测输出 - prog_trans = ProgramTranslator() - prog_trans.save_inference_model("./dy2stat_infer_model", fetch=[0]) - - # 在这个例子中,预测模型会根据输出'z'进行裁剪。被裁剪后的Program 会被保 - # 存在"./dy2stat_infer_model" 文件夹,并且参数也会保存为同一个文件夹下 - # 不同文件。 - -.. py:method:: get_program_cache() - -返回ProgramCache单例。这个方法是PaddlePaddle开发者用来管理ProgramTranslator中的Program缓存,普通用户不需要使用这个方法。 - -返回:ProgramTranslator中的ProgramCache。 - -返回类型:ProgramCache。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - prog_trans = fluid.dygraph.ProgramTranslator() - prog_cache = prog_trans.get_program_cache() - diff --git a/doc/paddle/api/paddle/imperative/TracedLayer_cn.rst b/doc/paddle/api/paddle/imperative/TracedLayer_cn.rst deleted file mode 100644 index 342cc84f4c1a0992e5b1628956c9a4534e368770..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/TracedLayer_cn.rst +++ /dev/null @@ -1,147 +0,0 @@ -.. _cn_api_fluid_dygraph_TracedLayer: - -TracedLayer -------------------------------- - - -.. py:class:: paddle.fluid.dygraph.TracedLayer(program, parameters, feed_names, fetch_names) - -:api_attr: 命令式编程模式(动态图) - - - -TracedLayer用于将前向动态图模型转换为静态图模型,主要用于将动态图保存后做在线C++预测。除此以外,用户也可使用转换后的静态图模型在Python端做预测,通常比原先的动态图性能更好。 - -TracedLayer使用 ``Executor`` 和 ``CompiledProgram`` 运行静态图模型。转换后的静态图模型与原动态图模型共享参数。 - -所有的TracedLayer对象均不应通过构造函数创建,而应通过调用静态方法 ``TracedLayer.trace(layer, inputs)`` 创建。 - -TracedLayer只能用于将data independent的动态图模型转换为静态图模型,即待转换的动态图模型不应随tensor数据或维度的变化而变化。 - -.. py:staticmethod:: trace(layer, inputs) - -创建TracedLayer对象的唯一接口,该接口会调用 ``layer(*inputs)`` 方法运行动态图模型并将其转换为静态图模型。 - -参数: - - **layer** (dygraph.Layer) - 待追踪的动态图layer对象。 - - **inputs** (list(Variable)) - 动态图layer对象的输入变量列表。 - -返回: 包含2个元素的tuple,其中第一个元素是 ``layer(*inputs)`` 的输出结果,第二个元素是转换后得到的TracedLayer对象。 - -返回类型: tuple - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear, to_variable, TracedLayer - import numpy as np - - class ExampleLayer(fluid.dygraph.Layer): - def __init__(self): - super(ExampleLayer, self).__init__() - self._fc = Linear(3, 10) - - def forward(self, input): - return self._fc(input) - - with fluid.dygraph.guard(): - layer = ExampleLayer() - in_np = np.random.random([2, 3]).astype('float32') - in_var = to_variable(in_np) - out_dygraph, static_layer = TracedLayer.trace(layer, inputs=[in_var]) - - # 内部使用Executor运行静态图模型 - out_static_graph = static_layer([in_var]) - print(len(out_static_graph)) # 1 - print(out_static_graph[0].shape) # (2, 10) - - # 将静态图模型保存为预测模型 - static_layer.save_inference_model(dirname='./saved_infer_model') - -.. py:method:: set_strategy(build_strategy=None, exec_strategy=None) - -设置构建和执行静态图模型的相关策略。 - -参数: - - **build_strategy** (BuildStrategy, 可选) - TracedLayer内部 ``CompiledProgram`` 的构建策略。 - - **exec_strategy** (ExecutionStrategy, 可选) - TracedLayer内部 ``CompiledProgram`` 的执行策略。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear, to_variable, TracedLayer - import numpy as np - - class ExampleLayer(fluid.dygraph.Layer): - def __init__(self): - super(ExampleLayer, self).__init__() - self._fc = Linear(3, 10) - - def forward(self, input): - return self._fc(input) - - with fluid.dygraph.guard(): - layer = ExampleLayer() - in_np = np.random.random([2, 3]).astype('float32') - in_var = to_variable(in_np) - - out_dygraph, static_layer = TracedLayer.trace(layer, inputs=[in_var]) - - build_strategy = fluid.BuildStrategy() - build_strategy.enable_inplace = True - - exec_strategy = fluid.ExecutionStrategy() - exec_strategy.num_threads = 2 - - static_layer.set_strategy(build_strategy=build_strategy, exec_strategy=exec_strategy) - out_static_graph = static_layer([in_var]) - -.. py:method:: save_inference_model(dirname, feed=None, fetch=None) - -将TracedLayer保存为用于预测部署的模型。保存的预测模型可被C++预测接口加载。 - -参数: - - **dirname** (str) - 预测模型的保存目录。 - - **feed** (list(int), 可选) - 预测模型输入变量的索引。若为None,则TracedLayer的所有输入变量均会作为预测模型的输入。默认值为None。 - - **fetch** (list(int), 可选) - 预测模型输出变量的索引。若为None,则TracedLayer的所有输出变量均会作为预测模型的输出。默认值为None。 - -返回: 无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear, to_variable, TracedLayer - import numpy as np - - class ExampleLayer(fluid.dygraph.Layer): - def __init__(self): - super(ExampleLayer, self).__init__() - self._fc = Linear(3, 10) - - def forward(self, input): - return self._fc(input) - - save_dirname = './saved_infer_model' - in_np = np.random.random([2, 3]).astype('float32') - - with fluid.dygraph.guard(): - layer = ExampleLayer() - in_var = to_variable(in_np) - out_dygraph, static_layer = TracedLayer.trace(layer, inputs=[in_var]) - static_layer.save_inference_model(save_dirname, feed=[0], fetch=[0]) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - program, feed_vars, fetch_vars = fluid.io.load_inference_model(save_dirname, - exe) - - fetch, = exe.run(program, feed={feed_vars[0]: in_np}, fetch_list=fetch_vars) - print(fetch.shape) # (2, 10) \ No newline at end of file diff --git a/doc/paddle/api/paddle/imperative/TranslatedLayer_cn.rst b/doc/paddle/api/paddle/imperative/TranslatedLayer_cn.rst deleted file mode 100644 index 0924a155a0ffb8861dd0f233cf0b0eff3dd8b169..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/TranslatedLayer_cn.rst +++ /dev/null @@ -1,84 +0,0 @@ -.. _cn_api_fluid_dygraph_TranslatedLayer: - -TranslatedLayer -------------------------------- - -.. py:class:: paddle.fluid.dygraph.TranslatedLayer(programs, persistable_vars) - -``TranslatedLayer`` 是一个命令式编程模式 :ref:`cn_api_fluid_dygraph_Layer` 的继承类, -通过 :ref:`cn_api_fluid_dygraph_jit_load` 载入构建。能够像一般 ``Layer`` 一样在train或者eval模式下使用。 - -.. note:: - ``TranslatedLayer`` 对象不能够通过构造函数创建,仅能够通过 :ref:`cn_api_fluid_dygraph_jit_load` 接口载入构建。 - -**示例代码:** - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - class LinearNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(LinearNet, self).__init__() - self._linear = Linear(in_size, out_size) - @declarative - def forward(self, x): - return self._linear(x) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 1. 训练存储模型. - # 创建网络 - net = LinearNet(784, 1) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # 训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - net.clear_gradients() - model_path = "linear.example.model" - fluid.dygraph.jit.save( - layer=net, - model_path=model_path, - input_spec=[img]) - # 2. 载入模型构建TranslatedLayer - translated_layer = fluid.dygraph.jit.load(model_path) - # 预测 - translated_layer.eval() - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = translated_layer(x) - # fine-tune训练 - translated_layer.train() - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=translated_layer.parameters()) - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = translated_layer(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - translated_layer.clear_gradients() diff --git a/doc/paddle/api/paddle/imperative/declarative_cn.rst b/doc/paddle/api/paddle/imperative/declarative_cn.rst deleted file mode 100644 index 91a1c40516b91d21fa735f5b18b17fafd5d5dba6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/declarative_cn.rst +++ /dev/null @@ -1,28 +0,0 @@ -======================= -paddle.declarative -======================= - -.. toctree:: - :maxdepth: 1 - - declarative_cn/batch_norm_cn.rst - declarative_cn/bilinear_tensor_product_cn.rst - declarative_cn/conv2d_cn.rst - declarative_cn/conv2d_transpose_cn.rst - declarative_cn/conv3d_cn.rst - declarative_cn/conv3d_transpose_cn.rst - declarative_cn/create_parameter_cn.rst - declarative_cn/crf_decoding_cn.rst - declarative_cn/data_norm_cn.rst - declarative_cn/deformable_conv_cn.rst - declarative_cn/embedding_cn.rst - declarative_cn/fc_cn.rst - declarative_cn/group_norm_cn.rst - declarative_cn/hsigmoid_cn.rst - declarative_cn/instance_norm_cn.rst - declarative_cn/layer_norm_cn.rst - declarative_cn/multi_box_head_cn.rst - declarative_cn/nce_cn.rst - declarative_cn/prelu_cn.rst - declarative_cn/row_conv_cn.rst - declarative_cn/spectral_norm_cn.rst diff --git a/doc/paddle/api/paddle/imperative/enabled_cn.rst b/doc/paddle/api/paddle/imperative/enabled_cn.rst deleted file mode 100644 index a127f528edd20149f51f9b0ba6954aa0a2bfe661..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/enabled_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_imperative_cn_enabled: - -enabled -------------------------------- -:doc_source: paddle.fluid.dygraph.base.enabled - - diff --git a/doc/paddle/api/paddle/imperative/grad_cn.rst b/doc/paddle/api/paddle/imperative/grad_cn.rst deleted file mode 100644 index bc73f2e14a68bf2be3a68d43c24e39bdd0ad1337..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/grad_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_dygraph_grad: - -grad -------------------------------- - -**注意:该API仅支持【动态图】模式** - -.. py:method:: paddle.fluid.dygraph.grad(outputs, inputs, grad_outputs=None, retain_graph=None, create_graph=False, only_inputs=True, allow_unused=False, no_grad_vars=None, backward_strategy=None) - -对于每个 `inputs` ,计算所有 `outputs` 相对于其的梯度和。 - -参数: - - **outputs** (Variable|list(Variable)|tuple(Variable)) – 用于计算梯度的图的输出变量,或多个输出变量构成的list/tuple。 - - **inputs** (Variable|list(Variable)|tuple(Variable)) - 用于计算梯度的图的输入变量,或多个输入变量构成的list/tuple。该API的每个返回值对应每个 `inputs` 的梯度。 - - **grad_outputs** (Variable|list(Variable|None)|tuple(Variable|None), 可选) - `outputs` 变量梯度的初始值。若 `grad_outputs` 为None,则 `outputs` 梯度的初始值均为全1的Tensor。若 `grad_outputs` 不为None,它必须与 `outputs` 的长度相等,此时,若 `grad_outputs` 的第i个元素为None,则第i个 `outputs` 的梯度初始值为全1的Tensor;若 `grad_outputs` 的第i个元素为Variable,则第i个 `outputs` 的梯度初始值为 `grad_outputs` 的第i个元素。默认值为None。 - - **retain_graph** (bool, 可选) - 是否保留计算梯度的前向图。若值为True,则前向图会保留,用户可对同一张图求两次反向。若值为False,则前向图会释放。默认值为None,表示值与 `create_graph` 相等。 - - **create_graph** (bool, 可选) - 是否创建计算过程中的反向图。若值为True,则可支持计算高阶导数。若值为False,则计算过程中的反向图会释放。默认值为False。 - - **only_inputs** (bool, 可选) - 是否只计算 `inputs` 的梯度。若值为False,则图中所有叶节点变量的梯度均会计算,并进行累加。若值为True,则只会计算 `inputs` 的梯度。默认值为True。only_inputs=False功能正在开发中,目前尚不支持。 - - **allow_unused** (bool, 可选) - 决定当某些 `inputs` 变量不在计算图中时抛出错误还是返回None。若某些 `inputs` 变量不在计算图中(即它们的梯度为None),则当allowed_unused=False时会抛出错误,当allow_unused=True时会返回None作为这些变量的梯度。默认值为False。 - - **no_grad_vars** (Variable|list(Variable)|tuple(Variable)|set(Variable), 可选) - 指明不需要计算梯度的变量。默认值为None。 - - **backward_strategy** (BackwardStrategy, 可选) - 计算梯度的策略。详见 :ref:`cn_api_fluid_dygraph_BackwardStrategy` 。默认值为None。 - -返回: 变量构成的tuple,其长度等于 `inputs` 中的变量个数,且第i个返回的变量是所有 `outputs` 相对于第i个 `inputs` 的梯度之和。 - -返回类型: tuple - -**示例代码 1** - .. code-block:: python - - import paddle.fluid as fluid - - def test_dygraph_grad(create_graph): - with fluid.dygraph.guard(): - x = fluid.layers.ones(shape=[1], dtype='float32') - x.stop_gradient = False - y = x * x - - # Since y = x * x, dx = 2 * x - dx = fluid.dygraph.grad( - outputs=[y], - inputs=[x], - create_graph=create_graph, - retain_graph=True)[0] - - z = y + dx - - # If create_graph = False, the gradient of dx - # would not be backpropagated. Therefore, - # z = x * x + dx, and x.gradient() = 2 * x = 2.0 - - # If create_graph = True, the gradient of dx - # would be backpropagated. Therefore, - # z = x * x + dx = x * x + 2 * x, and - # x.gradient() = 2 * x + 2 = 4.0 - - z.backward() - return x.gradient() - - print(test_dygraph_grad(create_graph=False)) # [2.] - print(test_dygraph_grad(create_graph=True)) # [4.] - -**示例代码 2** - .. code-block:: python - - import paddle.fluid as fluid - - fluid.enable_dygraph() - - def test_dygraph_grad(grad_outputs=None): - x = fluid.layers.fill_constant(shape=[1], value=2.0, dtype='float32') - x.stop_gradient = False - - y1 = x * x - y2 = x * 3 - - # If grad_outputs=None, dy1 = [1], dy2 = [1]. - # If grad_outputs=[g1, g2], then: - # - dy1 = [1] if g1 is None else g1 - # - dy2 = [1] if g2 is None else g2 - - # Since y1 = x * x, dx = 2 * x * dy1. - # Since y2 = x * 3, dx = 3 * dy2. - # Therefore, the final result would be: - # dx = 2 * x * dy1 + 3 * dy2 = 4 * dy1 + 3 * dy2. - - dx = fluid.dygraph.grad( - outputs=[y1, y2], - inputs=[x], - grad_outputs=grad_outputs)[0] - - return dx.numpy() - - THREE = fluid.layers.fill_constant(shape=[1], value=3.0, dtype='float32') - FOUR = fluid.layers.fill_constant(shape=[1], value=4.0, dtype='float32') - - # dy1 = [1], dy2 = [1] - print(test_dygraph_grad(None)) # [7.] - - # dy1 = [1], dy2 = [4] - print(test_dygraph_grad([None, FOUR])) # [16.] - - # dy1 = [4], dy2 = [1] - print(test_dygraph_grad([FOUR, None])) # [19.] - - # dy1 = [3], dy2 = [4] - print(test_dygraph_grad([THREE, FOUR])) # [24.] \ No newline at end of file diff --git a/doc/paddle/api/paddle/imperative/guard_cn.rst b/doc/paddle/api/paddle/imperative/guard_cn.rst deleted file mode 100644 index 7c457eb15118baf6823be9e404fc2fa053b6a2f6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/guard_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_unique_name_guard: - -guard -------------------------------- - -.. py:function:: paddle.fluid.unique_name.guard(new_generator=None) - - - - -该接口用于更改命名空间,与with语句一起使用。使用后,在with语句的上下文中使用新的命名空间,调用generate接口时相同前缀的名称将从0开始重新编号。 - -参数: - - **new_generator** (str|bytes, 可选) - 新命名空间的名称。请注意,Python2中的str在Python3中被区分为str和bytes两种,因此这里有两种类型。 缺省值为None,若不为None,new_generator将作为前缀添加到generate接口产生的唯一名称中。 - -返回: 无。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - with fluid.unique_name.guard(): - name_1 = fluid.unique_name.generate('fc') - with fluid.unique_name.guard(): - name_2 = fluid.unique_name.generate('fc') - print(name_1, name_2) # fc_0, fc_0 - - with fluid.unique_name.guard('A'): - name_1 = fluid.unique_name.generate('fc') - with fluid.unique_name.guard('B'): - name_2 = fluid.unique_name.generate('fc') - print(name_1, name_2) # Afc_0, Bfc_0 - - diff --git a/doc/paddle/api/paddle/imperative/jit/load_cn.rst b/doc/paddle/api/paddle/imperative/jit/load_cn.rst deleted file mode 100644 index f001976971c5e84eb93c62fa5a5d77c8f2a9a335..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/jit/load_cn.rst +++ /dev/null @@ -1,168 +0,0 @@ -.. _cn_api_fluid_dygraph_jit_load: - -load ------------------ - -.. py:function:: paddle.fluid.dygraph.jit.load(model_path, configs=None) - -:api_attr: 命令式编程模式(动态图) - -将接口 :ref:`cn_api_fluid_dygraph_jit_save` 或者 :ref:`cn_api_fluid_io_save_inference_model` 存储的模型载入为 :ref:`cn_api_fluid_dygraph_TranslatedLayer` ,用于预测推理或者fine-tune训练。 - -.. note:: - 由于一些历史原因,如果载入的模型是通过 :ref:`cn_api_fluid_io_save_inference_model` 存储的, - 在使用它进行fine-tune训练时会存在一些局限: - 1. 命令式编程模式不支持 ``LoDTensor`` ,所有原先输入变量或者参数依赖于LoD信息的模型暂时无法使用; - 2. 所有存储模型的feed变量都需要被传入 ``Translatedlayer`` 的forward方法; - 3. 原模型变量的 ``stop_gradient`` 信息已丢失且无法准确恢复; - 4. 原模型参数的 ``trainable`` 信息已丢失且无法准确恢复。 - -参数: - - **model_path** (str) - 存储模型的目录。 - - **configs** (SaveLoadConfig, 可选) - 用于指定额外配置选项的 :ref:`cn_api_fluid_dygraph_jit_SaveLoadConfig` 对象。默认为 ``None``。 - -返回:TranslatedLayer - 一个能够执行存储模型的 ``Layer`` 对象。 - -**示例代码** - -1. 载入由接口 :ref:`cn_api_fluid_dygraph_jit_save` 存储的模型进行预测推理及fine-tune训练。 - - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - class LinearNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(LinearNet, self).__init__() - self._linear = Linear(in_size, out_size) - @declarative - def forward(self, x): - return self._linear(x) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 1. 训练存储模型. - # 创建网络 - net = LinearNet(784, 1) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # 训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - net.clear_gradients() - model_path = "linear.example.model" - fluid.dygraph.jit.save( - layer=net, - model_path=model_path, - input_spec=[img]) - # 2. 载入模型 & 预测 - # 载入模型 - infer_net = fluid.dygraph.jit.load(model_path) - # 预测 - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = infer_net(x) - # 3. 载入模型 & fine-tune训练 - # 载入模型 - train_net = fluid.dygraph.jit.load(model_path) - train_net.train() - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=train_net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # fine-tune训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = train_net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - train_net.clear_gradients() - - -2. 载入由接口 :ref:`cn_api_fluid_io_save_inference_model` 存储的模型进行预测推理及fine-tune训练。 - - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - img = fluid.data(name='img', shape=[None, 784], dtype='float32') - label = fluid.data(name='label', shape=[None, 1], dtype='int64') - pred = fluid.layers.fc(input=img, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=pred, label=label) - avg_loss = fluid.layers.mean(loss) - optimizer = fluid.optimizer.SGD(learning_rate=0.001) - optimizer.minimize(avg_loss) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - loader = fluid.io.DataLoader.from_generator( - feed_list=[img, label], capacity=5, iterable=True) - loader.set_batch_generator(random_batch_reader(), places=place) - # 1. 训练 & 存储预测模型 - for data in loader(): - exe.run( - fluid.default_main_program(), - feed=data, - fetch_list=[avg_loss]) - model_path = "fc.example.model" - fluid.io.save_inference_model( - model_path, ["img"], [pred], exe) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 2. 载入模型 & 预测 - fc = fluid.dygraph.jit.load(model_path) - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = fc(x) - # 3. 载入模型 & fine-tune训练 - fc = fluid.dygraph.jit.load(model_path) - fc.train() - sgd = fluid.optimizer.SGD(learning_rate=0.001, - parameter_list=fc.parameters()) - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator( - random_batch_reader(), places=place) - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = fc(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - sgd.minimize(avg_loss) diff --git a/doc/paddle/api/paddle/imperative/jit_cn.rst b/doc/paddle/api/paddle/imperative/jit_cn.rst deleted file mode 100644 index 4a9b90d5cab6ce86a1bd7689676e3ad844eae8ee..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/jit_cn.rst +++ /dev/null @@ -1,10 +0,0 @@ -=== -jit -=== - -.. toctree:: - :maxdepth: 1 - - jit_cn/save_cn.rst - jit_cn/load_cn.rst - jit_cn/SaveLoadConfig_cn.rst diff --git a/doc/paddle/api/paddle/imperative/load_cn.rst b/doc/paddle/api/paddle/imperative/load_cn.rst deleted file mode 100644 index f001976971c5e84eb93c62fa5a5d77c8f2a9a335..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/load_cn.rst +++ /dev/null @@ -1,168 +0,0 @@ -.. _cn_api_fluid_dygraph_jit_load: - -load ------------------ - -.. py:function:: paddle.fluid.dygraph.jit.load(model_path, configs=None) - -:api_attr: 命令式编程模式(动态图) - -将接口 :ref:`cn_api_fluid_dygraph_jit_save` 或者 :ref:`cn_api_fluid_io_save_inference_model` 存储的模型载入为 :ref:`cn_api_fluid_dygraph_TranslatedLayer` ,用于预测推理或者fine-tune训练。 - -.. note:: - 由于一些历史原因,如果载入的模型是通过 :ref:`cn_api_fluid_io_save_inference_model` 存储的, - 在使用它进行fine-tune训练时会存在一些局限: - 1. 命令式编程模式不支持 ``LoDTensor`` ,所有原先输入变量或者参数依赖于LoD信息的模型暂时无法使用; - 2. 所有存储模型的feed变量都需要被传入 ``Translatedlayer`` 的forward方法; - 3. 原模型变量的 ``stop_gradient`` 信息已丢失且无法准确恢复; - 4. 原模型参数的 ``trainable`` 信息已丢失且无法准确恢复。 - -参数: - - **model_path** (str) - 存储模型的目录。 - - **configs** (SaveLoadConfig, 可选) - 用于指定额外配置选项的 :ref:`cn_api_fluid_dygraph_jit_SaveLoadConfig` 对象。默认为 ``None``。 - -返回:TranslatedLayer - 一个能够执行存储模型的 ``Layer`` 对象。 - -**示例代码** - -1. 载入由接口 :ref:`cn_api_fluid_dygraph_jit_save` 存储的模型进行预测推理及fine-tune训练。 - - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - class LinearNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(LinearNet, self).__init__() - self._linear = Linear(in_size, out_size) - @declarative - def forward(self, x): - return self._linear(x) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 1. 训练存储模型. - # 创建网络 - net = LinearNet(784, 1) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # 训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - net.clear_gradients() - model_path = "linear.example.model" - fluid.dygraph.jit.save( - layer=net, - model_path=model_path, - input_spec=[img]) - # 2. 载入模型 & 预测 - # 载入模型 - infer_net = fluid.dygraph.jit.load(model_path) - # 预测 - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = infer_net(x) - # 3. 载入模型 & fine-tune训练 - # 载入模型 - train_net = fluid.dygraph.jit.load(model_path) - train_net.train() - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=train_net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # fine-tune训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = train_net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - train_net.clear_gradients() - - -2. 载入由接口 :ref:`cn_api_fluid_io_save_inference_model` 存储的模型进行预测推理及fine-tune训练。 - - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - img = fluid.data(name='img', shape=[None, 784], dtype='float32') - label = fluid.data(name='label', shape=[None, 1], dtype='int64') - pred = fluid.layers.fc(input=img, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=pred, label=label) - avg_loss = fluid.layers.mean(loss) - optimizer = fluid.optimizer.SGD(learning_rate=0.001) - optimizer.minimize(avg_loss) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - loader = fluid.io.DataLoader.from_generator( - feed_list=[img, label], capacity=5, iterable=True) - loader.set_batch_generator(random_batch_reader(), places=place) - # 1. 训练 & 存储预测模型 - for data in loader(): - exe.run( - fluid.default_main_program(), - feed=data, - fetch_list=[avg_loss]) - model_path = "fc.example.model" - fluid.io.save_inference_model( - model_path, ["img"], [pred], exe) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 2. 载入模型 & 预测 - fc = fluid.dygraph.jit.load(model_path) - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = fc(x) - # 3. 载入模型 & fine-tune训练 - fc = fluid.dygraph.jit.load(model_path) - fc.train() - sgd = fluid.optimizer.SGD(learning_rate=0.001, - parameter_list=fc.parameters()) - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator( - random_batch_reader(), places=place) - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = fc(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - sgd.minimize(avg_loss) diff --git a/doc/paddle/api/paddle/imperative/no_grad_cn.rst b/doc/paddle/api/paddle/imperative/no_grad_cn.rst deleted file mode 100644 index e93287287b29e61256e51249792d57390033d040..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/no_grad_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_dygraph_no_grad: - -no_grad -------------------------------- - - -.. py:method:: paddle.fluid.dygraph.no_grad(func=None) - -:api_attr: 命令式编程模式(动态图) - - - -创建一个上下文来禁用动态图梯度计算。在此模式下,每次计算的结果都将具有stop_gradient=True。 - -也可以用作一个装饰器(确保不要用括号来初始化)。 - -**代码示例** - -.. code-block:: python - - - import numpy as np - import paddle.fluid as fluid - - # 用作生成器 - data = np.array([[2, 3], [4, 5]]).astype('float32') - with fluid.dygraph.guard(): - l0 = fluid.Linear(2, 2) # l0.weight.gradient() is None - l1 = fluid.Linear(2, 2) - with fluid.dygraph.no_grad(): - # l1.weight.stop_gradient is False - tmp = l1.weight * 2 # tmp.stop_gradient is True - x = fluid.dygraph.to_variable(data) - y = l0(x) + tmp - o = l1(y) - o.backward() - print(tmp.gradient() is None) # True - print(l0.weight.gradient() is None) # False - - # 用作装饰器 - @fluid.dygraph.no_grad - def test_layer(): - with fluid.dygraph.guard(): - inp = np.ones([3, 1024], dtype='float32') - t = fluid.dygraph.base.to_variable(inp) - linear1 = fluid.Linear(1024, 4, bias_attr=False) - linear2 = fluid.Linear(4, 4) - ret = linear1(t) - dy_ret = linear2(ret) - - test_layer() diff --git a/doc/paddle/api/paddle/imperative/prepare_context_cn.rst b/doc/paddle/api/paddle/imperative/prepare_context_cn.rst deleted file mode 100644 index cd18f8d75081a1fbb868e6b92dd890465bbccb29..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/prepare_context_cn.rst +++ /dev/null @@ -1,37 +0,0 @@ -.. _api_fluid_dygraph_prepare_context: - -prepare_context ---------------- - -.. py:class:: paddle.fluid.dygraph.prepare_context(strategy=None) - -:api_attr: 命令式编程模式(动态图) - - - -该API是进行多进程多卡训练的环境配置接口,接受一个ParallelStrategy结构体变量作为输入。当strategy属性中的nums_trainer小于2时,API会直接返回,当nums_trainer大于1且为CUDAPlace时,由于目前动态图模式仅支持GPU多卡训练,仅能配置NCCL多卡训练的环境,所以此时会对NCCL环境进行配置,具体内容包括:生成NCCL ID,并广播至参与训练的各进程,用于支持的处理器同步操作,创建并配置NCCL通信器等。 - -参数: - - **strategy** (ParallelStrategy, 可选) – 该参数是配置储存多进程多卡训练配置信息的结构体变量,其具体成员包括:trainer节点的个数,当前trainer节点的ID,所有trainer节点的endpoint,当前节点的endpoint。当输入为None时,会调用PallelStrategy构造函数初始化strategy,此时,strategy的属性值为PallelStrategy结构体的默认值,接着strategy的属性会被环境变量中的对应值覆盖。默认值为None。 - -返回:一个属性配置后的ParallelStrategy结构体变量。 - -返回类型:实例(ParallelStrategy) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid.dygraph as dygraph - import paddle.fluid as fluid - with fluid.dygraph.guard(): - strategy=dygraph.parallel.prepare_context() - emb = fluid.dygraph.Embedding([10, 10]) - emb = dygraph.parallel.DataParallel(emb, strategy) - - state_dict = emb.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") - - para_state_dict, _ = fluid.load_dygraph( "paddle_dy") - - emb.set_dict( para_state_dict ) diff --git a/doc/paddle/api/paddle/imperative/save_cn.rst b/doc/paddle/api/paddle/imperative/save_cn.rst deleted file mode 100644 index f0276316bacd0d7b7cb7ef6df12b1f9ac08b759f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/save_cn.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. _cn_api_fluid_dygraph_jit_save: - -save ------------------ - -.. py:function:: paddle.fluid.dygraph.jit.save(layer, model_path, input_spec=None, configs=None) - -将输入的经过 ``@declarative`` 装饰的 :ref:`cn_api_fluid_dygraph_Layer` 存储为 :ref:`cn_api_fluid_dygraph_TranslatedLayer` 格式的模型, -载入后可用于预测推理或者fine-tune训练。 - -该接口将会将输入 :ref:`cn_api_fluid_dygraph_Layer` 转写后的模型结构 ``Program`` 和所有必要的持久参数变量存储至输入路径 ``model_path`` 中。 - -默认存储的 ``Program`` 文件名为 ``__model__``, 默认存储持久参数变量的文件名为 ``__variables__``, -同时会将变量的一些描述信息存储至文件 ``__variables.info__``,这些额外的信息将在fine-tune训练中使用。 - -存储的模型能够被以下API载入使用: - - :ref:`cn_api_fluid_dygraph_jit_load` - - :ref:`cn_api_fluid_io_load_inference_model` (需要配置参数 ``params_filename='__variables__'`` ) - - 其他预测库API - -参数: - - **layer** (Layer) - 需要存储的 :ref:`cn_api_fluid_dygraph_Layer` 对象。输入的 ``Layer`` 需要经过 ``@declarative`` 装饰。 - - **model_path** (str) - 存储模型的目录。 - - **input_spec** (list[Variable], 可选) - 描述存储模型的输入。此参数是传入当前存储的 ``TranslatedLayer`` forward方法的一个示例输入。如果为 ``None`` ,所有原 ``Layer`` forward方法的输入变量将都会被配置为存储模型的输入变量。默认为 ``None``。 - - **configs** (SaveLoadConfig, 可选) - 用于指定额外配置选项的 :ref:`cn_api_fluid_dygraph_jit_SaveLoadConfig` 对象。默认为 ``None``。 - -返回:无 - -**示例代码** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - class LinearNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(LinearNet, self).__init__() - self._linear = Linear(in_size, out_size) - @declarative - def forward(self, x): - return self._linear(x) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 创建网络 - net = LinearNet(784, 1) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # 训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - net.clear_gradients() - # 存储模型 - model_path = "linear.example.model" - fluid.dygraph.jit.save( - layer=net, - model_path=model_path, - input_spec=[img]) diff --git a/doc/paddle/api/paddle/imperative/to_variable_cn.rst b/doc/paddle/api/paddle/imperative/to_variable_cn.rst deleted file mode 100644 index b562d2cafb0b5f90458ed194677ddee783118e1b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/imperative/to_variable_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_dygraph_to_variable: - -to_variable -------------------------------- - - -.. py:function:: paddle.fluid.dygraph.to_variable(value, name=None, zero_copy=None) - - -:api_attr: 命令式编程模式(动态图) - - - -该函数实现从tuple、list、numpy\.ndarray、Variable、ComplexVariable 对象创建一个 ``Variable`` 类型的对象。 - - -参数: - - **value** (tuple|list|ndarray|Variable|Tensor|ComplexVariable) – 初始化的数据。可以是tuple、list、numpy\.ndarray、Variable、ComplexVariable。 - 维度可以为多维,数据类型为numpy\.{float16, float32, float64, int16, int32, int64, uint8, uint16}中的一种。 - - **name** (str, 可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **zero_copy** (bool, 可选) – 是否与输入的numpy数组共享内存。此参数仅适用于CPUPlace,当它为None时将设置为True。默认值为None。 - - **dtype** (str, 可选) - 返回的 ``Variable`` 所需的数据类型。可以是 'bool','float16','float32','float64','int8','int16','int32','int64','uint8'。默认值: None。 - - -返回:如果 ``value`` 是tuple/list/numpy\.ndarray对象,返回对应numpy\.ndarray对象创建的 ``Tensor`` ;如果 ``value`` 是Variable对象,直接返回 ``value`` 。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - with fluid.dygraph.guard(fluid.CPUPlace()): - - x = np.ones([2, 2], np.float32) - y = fluid.dygraph.to_variable(x, zero_copy=False) - x[0][0] = -1 - y[0][0].numpy() # array([1.], dtype=float32) - - y = fluid.dygraph.to_variable(x) - x[0][0] = 0 - y[0][0].numpy() # array([0.], dtype=float32) - - c = np.array([2+1j, 2]) - z = fluid.dygraph.to_variable(c) - z.numpy() # array([2.+1.j, 2.+0.j]) - z.dtype # 'complex128' - - y = fluid.dygraph.to_variable([[0.1, 1.2], [2.2, 3.1], [4.9, 5.2]]) - y.shape # [3L, 2L] - y = fluid.dygraph.to_variable(((0.1, 1.2), (2.2, 3.1), (4.9, 5.2)), dtype='int32') - y.shape # [3L, 2L] - y.dtype # core.VarDesc.VarType.INT32 - diff --git a/doc/paddle/api/paddle/incubate/Model_cn.rst b/doc/paddle/api/paddle/incubate/Model_cn.rst deleted file mode 100644 index 4e147a58a436901c93e9363cf48e62ecc434a4b7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/Model_cn.rst +++ /dev/null @@ -1,530 +0,0 @@ -.. _cn_api_paddle_incubate_hapi_model_Model: - -Model -------------------------------- - -.. py:class:: paddle.incubate.hapi.model.Model() - - ``Model`` 对象是一个具备训练、测试、推理的神经网络。该对象同时支持静态图和动态图模式,通过 ``fluid.enable_dygraph()`` 来切换。需要注意的是,该开关需要在实例化 ``Model`` 对象之前使用。 在静态图模式下,输入需要使用 ``hapi.Input`` 来定义。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input, set_device - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.metrics import Accuracy - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - device = set_device('cpu') - - # 切换成动态图模式,默认使用静态图模式 - fluid.enable_dygraph(device) - - model = MyModel() - optim = fluid.optimizer.SGD(learning_rate=1e-3, - parameter_list=model.parameters()) - - inputs = [Input([None, 784], 'float32', name='x')] - labels = [Input([None, 1], 'int64', name='label')] - - mnist_data = MNIST(mode='train', chw_format=False) - model.prepare(optim, - CrossEntropy(average=True), - Accuracy(), - inputs, - labels, - device=device) - model.fit(mnist_data, epochs=2, batch_size=32, verbose=1) - - -.. py:function:: train_batch(inputs, labels=None) - -在一个批次的数据上进行训练。 - -参数: - - **inputs** (list) - 1维列表,每个元素都是一批次的输入数据,数据类型为 ``numpy.ndarray``。 - - **labels** (list) - 1维列表,每个元素都是一批次的输入标签,数据类型为 ``numpy.ndarray`` 。默认值:None。 - -返回:一个列表,包含了训练损失函数的值,如果定义了评估函数,还会包含评估函数得到的指标。 - -返回类型:list - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - from paddle.fluid.dygraph import Linear - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = Linear(784, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - - model = MyModel() - optim = fluid.optimizer.SGD(learning_rate=1e-3, - parameter_list=model.parameters()) - - inputs = [Input([None, 784], 'float32', name='x')] - labels = [Input([None, 1], 'int64', name='label')] - model.prepare(optim, - CrossEntropy(average=True), - inputs=inputs, - labels=labels, - device=device) - data = np.random.random(size=(4,784)).astype(np.float32) - label = np.random.randint(0, 10, size=(4, 1)).astype(np.int64) - loss = model.train_batch([data], [label]) - print(loss) - -.. py:function:: eval_batch(inputs, labels=None) - -在一个批次的数据上进行评估。 - -参数: - - **inputs** (list) - 1维列表,每个元素都是一批次的输入数据,数据类型为 ``numpy.ndarray`` 。 - - **labels** (list) - 1维列表,每个元素都是一批次的输入标签,数据类型为 ``numpy.ndarray`` 。默认值:None。 - -返回:一个列表,包含了评估损失函数的值,如果定义了评估函数,还会包含评估函数得到的指标。 - -返回类型:list - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - - model = MyModel() - optim = fluid.optimizer.SGD(learning_rate=1e-3, - parameter_list=model.parameters()) - - inputs = [Input([None, 784], 'float32', name='x')] - labels = [Input([None, 1], 'int64', name='label')] - model.prepare(optim, - CrossEntropy(average=True), - inputs=inputs, - labels=labels, - device=device) - data = np.random.random(size=(4,784)).astype(np.float32) - label = np.random.randint(0, 10, size=(4, 1)).astype(np.int64) - loss = model.eval_batch([data], [label]) - print(loss) - -.. py:function:: test_batch(inputs) - -在一个批次的数据上进行测试。 - -参数: - - **inputs** (list) - 1维列表,每个元素都是一批次的输入数据,数据类型为 ``numpy.ndarray`` 。 - -返回:一个列表,包含了模型的输出。 - -返回类型:list - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - - model = MyModel() - inputs = [Input([None, 784], 'float32', name='x')] - model.prepare(inputs=inputs, - device=device) - data = np.random.random(size=(4,784)).astype(np.float32) - out = model.eval_batch([data]) - print(out) - -.. py:function:: save(path): - -将模型的参数和训练过程中优化器的信息保存到指定的路径。所有的模型参数都会保存到一个后缀为 ``.pdparams`` 的文件中。 -所有的优化器信息和相关参数,比如 ``Adam`` 优化器中的 ``beta1`` , ``beta2`` ,``momentum`` 等,都会被保存到后缀为 ``.pdopt`` -的文件中。 - -参数: - - **path** (str) - 保存的文件名前缀。格式如 ``dirname/file_prefix`` 或者 ``file_prefix`` 。 - -返回:None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.incubate.hapi.model import Model, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - model = MyModel() - model.save('checkpoint/test') - -.. py:function:: load(path, skip_mismatch=False, reset_optimizer=False): - -从指定的文件中载入模型参数和优化器参数,如果不想恢复优化器参数信息,优化器信息文件可以不存在。 - -参数: - - **path** (str) - 保存参数或优化器信息的文件前缀。格式如 ``path.pdparams`` 或者 ``path.pdopt`` ,后者是非必要的,如果不想恢复优化器信息。 - - **skip_mismatch** (bool) - 是否需要跳过保存的模型文件中形状或名称不匹配的参数,设置为 ``False`` 时,当遇到不匹配的参数会抛出一个错误。默认值:False。 - - **reset_optimizer** (bool) - 设置为 ``True`` 时,会忽略提供的优化器信息文件。否则会载入提供的优化器信息。默认值:False。 - -返回:None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.incubate.hapi.model import Model, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - model = MyModel() - model.load('checkpoint/test') - -.. py:function:: parameters(*args, **kwargs): - -返回一个包含模型所有参数的列表。 - -返回:在静态图中返回一个包含 ``Parameter`` 的列表,在动态图中返回一个包含 ``ParamBase`` 的列表。 - -**代码示例**: - -.. code-block:: python - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(20, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - fluid.enable_dygraph() - model = MyModel() - params = model.parameters() - - -.. py:function:: prepare(optimizer=None, loss_function=None, metrics=None, inputs=None, labels=None, device=None): - -返回一个包含模型所有参数的列表。 - -参数: - - **optimizer** (Optimizer) - 当训练模型的,该参数必须被设定。当评估或测试的时候,该参数可以不设定。默认值:None。 - - **loss_function** (Loss) - 当训练模型的,该参数必须被设定。默认值:None。 - - **metrics** (Metric|list[Metric]) - 当该参数被设定时,所有给定的评估方法会在训练和测试时被运行,并返回对应的指标。默认值:None。 - - **inputs** (Input|list[Input]|dict) - 网络的输入,对于静态图,该参数必须给定。默认值:None。 - - **labels** (Input|list[Input]|dict) - 标签,网络的输入。对于静态图,在训练和评估时该参数必须给定。默认值:None。 - - **device** (str|fluid.CUDAPlace|fluid.CPUPlace|None) - 网络运行的设备,当不指定时,会根据环境和安装的 ``paddle`` 自动选择。默认值:None。 - -返回:None - -.. py:function:: fit(train_data=None, eval_data=None, batch_size=1, epochs=1, eval_freq=1, log_freq=10, save_dir=None, save_freq=1, verbose=2, drop_last=False, shuffle=True, num_workers=0, callbacks=None): - -训练模型。当 ``eval_data`` 给定时,会在 ``eval_freq`` 个 ``epoch`` 后进行一次评估。 - -参数: - - **train_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。默认值:None。 - - **eval_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。当给定时,会在每个 ``epoch`` 后都会进行评估。默认值:None。 - - **batch_size** (int) - 训练数据或评估数据的批大小,当 ``train_data`` 或 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:1。 - - **epochs** (int) - 训练的轮数。默认值:1。 - - **eval_freq** (int) - 评估的频率,多少个 ``epoch`` 评估一次。默认值:1。 - - **log_freq** (int) - 日志打印的频率,多少个 ``step`` 打印一次日志。默认值:1。 - - **save_dir** (str|None) - 保存模型的文件夹,如果不设定,将不保存模型。默认值:None。 - - **save_freq** (int) - 保存模型的频率,多少个 ``epoch`` 保存一次模型。默认值:1。 - - **verbose** (int) - 可视化的模型,必须为0,1,2。当设定为0时,不打印日志,设定为1时,使用进度条的方式打印日志,设定为2时,一行一行地打印日志。默认值:2。 - - **drop_last** (bool) - 是否丢弃训练数据中最后几个不足设定的批次大小的数据。默认值:False。 - - **shuffle** (bool) - 是否对训练数据进行洗牌。当 ``train_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **num_workers** (int) - 启动子进程用于读取数据的数量。当 ``train_data`` 和 ``eval_data`` 都为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **callbacks** (Callback|list[Callback]|None) - ``Callback`` 的一个实例或实例列表。该参数不给定时,默认会插入 ``ProgBarLogger`` 和 ``ModelCheckpoint`` 这两个实例。默认值:None。 - -返回:None - -**代码示例**: - -.. code-block:: python - - # 1. 使用Dataset训练,并设置batch_size的例子。 - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input, set_device - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.models import LeNet - - dynamic = True - device = set_device('cpu') - fluid.enable_dygraph(device) if dynamic else None - - train_dataset = MNIST(mode='train') - val_dataset = MNIST(mode='test') - - inputs = [Input([None, 1, 28, 28], 'float32', name='image')] - labels = [Input([None, 1], 'int64', name='label')] - - model = LeNet() - optim = fluid.optimizer.Adam( - learning_rate=0.001, parameter_list=model.parameters()) - model.prepare( - optim, - CrossEntropy(), - Accuracy(topk=(1, 2)), - inputs=inputs, - labels=labels, - device=device) - model.fit(train_dataset, - val_dataset, - epochs=2, - batch_size=64, - save_dir='mnist_checkpoint') - - # 2. 使用Dataloader训练的例子. - - from paddle.incubate.hapi.model import Model, Input, set_device - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.models import LeNet - - dynamic = True - device = set_device('cpu') - fluid.enable_dygraph(device) if dynamic else None - - train_dataset = MNIST(mode='train') - train_loader = fluid.io.DataLoader(train_dataset, - places=device, batch_size=64) - val_dataset = MNIST(mode='test') - val_loader = fluid.io.DataLoader(val_dataset, - places=device, batch_size=64) - - inputs = [Input([None, 1, 28, 28], 'float32', name='image')] - labels = [Input([None, 1], 'int64', name='label')] - - model = LeNet() - optim = fluid.optimizer.Adam( - learning_rate=0.001, parameter_list=model.parameters()) - model.prepare( - optim, - CrossEntropy(), - Accuracy(topk=(1, 2)), - inputs=inputs, - labels=labels, - device=device) - model.fit(train_loader, - val_loader, - epochs=2, - save_dir='mnist_checkpoint') - - -.. py:function:: evaluate(eval_data, batch_size=1, log_freq=10, verbose=2, num_workers=0, callbacks=None): - -评估模型。 - -参数: - - **eval_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。默认值:None。 - - **batch_size** (int) - 训练数据或评估数据的批大小,当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:1。 - - **log_freq** (int) - 日志打印的频率,多少个 ``step`` 打印一次日志。默认值:1。 - - **verbose** (int) - 可视化的模型,必须为0,1,2。当设定为0时,不打印日志,设定为1时,使用进度条的方式打印日志,设定为2时,一行一行地打印日志。默认值:2。 - - **num_workers** (int) - 启动子进程用于读取数据的数量。当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **callbacks** (Callback|list[Callback]|None) - ``Callback`` 的一个实例或实例列表。该参数不给定时,默认会插入 ``ProgBarLogger`` 和 ``ModelCheckpoint`` 这两个实例。默认值:None。 - -返回:None - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.transforms import Compose,Resize - from paddle.incubate.hapi.vision.models import LeNet - from paddle.incubate.hapi.model import Input, set_device - - - inputs = [Input([-1, 1, 28, 28], 'float32', name='image')] - labels = [Input([None, 1], 'int64', name='label')] - - val_dataset = MNIST(mode='test') - - model = LeNet() - model.prepare(metrics=Accuracy(), inputs=inputs, labels=labels) - - result = model.evaluate(val_dataset, batch_size=64) - print(result) - - # imperative mode - import paddle.fluid.dygraph as dg - place = set_device('cpu') - with dg.guard(place) as g: - model = LeNet() - model.prepare(metrics=Accuracy(), inputs=inputs, labels=labels) - - result = model.evaluate(val_dataset, batch_size=64) - print(result) - - -.. py:function:: predict(test_data, batch_size=1, num_workers=0, stack_outputs=False, callbacks=None): - -模型预测。 - -参数: - - **test_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。默认值:None。 - - **batch_size** (int) - 训练数据或评估数据的批大小,当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:1。 - - **num_workers** (int) - 启动子进程用于读取数据的数量。当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **stack_outputs** (bool) - 是否将输出进行堆叠。默认值:False。 - - **callbacks** (Callback|list[Callback]|None) - ``Callback`` 的一个实例或实例列表。默认值:None。 - -返回:None - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.transforms import Compose,Resize - from paddle.incubate.hapi.vision.models import LeNet - from paddle.incubate.hapi.model import Input, set_device - - class MnistDataset(MNIST): - def __init__(self, mode, return_label=True): - super(MnistDataset, self).__init__(mode=mode) - self.return_label = return_label - - def __getitem__(self, idx): - img = np.reshape(self.images[idx], [1, 28, 28]) - if self.return_label: - return img, np.array(self.labels[idx]).astype('int64') - return img, - - def __len__(self): - return len(self.images) - - inputs = [Input([-1, 1, 28, 28], 'float32', name='image')] - - test_dataset = MnistDataset(mode='test', return_label=False) - - model = LeNet() - model.prepare(inputs=inputs) - - result = model.predict(test_dataset, batch_size=64) - print(result) - - # imperative mode - import paddle.fluid.dygraph as dg - place = set_device('cpu') - with dg.guard(place) as g: - model = LeNet() - model.prepare(inputs=inputs) - - result = model.predict(test_dataset, batch_size=64) - print(result) - - -.. py:function:: save_inference_model(save_dir, model_filename=None, params_filename=None, model_only=False): - -模型预测。 - -参数: - - **save_dir** (str) - 保存推理模型的路径。 - - **model_filename** (str,可选) - 保存预测模型结构 ``Inference Program`` 的文件名称。若设置为None,则使用 ``__model__`` 作为默认的文件名。默认值:None。 - - **params_filename** (str,可选) - 保存预测模型所有相关参数的文件名称。若设置为None,则模型参数被保存在单独的文件中。 - - **model_only** (bool,可选) - 若为True,则只保存预测模型的网络结构,而不保存预测模型的网络参数。默认值:False。 - -返回:None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - model = MyModel() - inputs = [Input([-1, 1, 784], 'float32', name='input')] - model.prepare(inputs=inputs) - - model.save_inference_model('checkpoint/test') \ No newline at end of file diff --git a/doc/paddle/api/paddle/incubate/complex/elementwise_add_cn.rst b/doc/paddle/api/paddle/incubate/complex/elementwise_add_cn.rst deleted file mode 100644 index 7414eae16ca524e5388de7a09c2e104aa0174570..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/elementwise_add_cn.rst +++ /dev/null @@ -1,121 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_add: - -elementwise_add -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_add(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_add -:alias: paddle.elementwise_add,paddle.tensor.elementwise_add,paddle.tensor.math.elementwise_add -:old_api: paddle.fluid.layers.elementwise_add - - - -该OP是逐元素相加算子,输入 ``x`` 与输入 ``y`` 逐元素相加,并将各个位置的输出元素保存到返回结果中。 - -等式为: - -.. math:: - Out = X + Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_add(x, y) - # z = x + y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [3., 8., 6.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_add(x, y, axis=1) - # z = x + y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - # z = x + y - z = fluid.layers.elementwise_add(x, y, axis=3) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/elementwise_div_cn.rst b/doc/paddle/api/paddle/incubate/complex/elementwise_div_cn.rst deleted file mode 100644 index d4d12f36b20d39247345933090f2c8b2215b14df..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/elementwise_div_cn.rst +++ /dev/null @@ -1,121 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_div: - -elementwise_div -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_div(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_div -:alias: paddle.elementwise_div,paddle.tensor.elementwise_div,paddle.tensor.math.elementwise_div -:old_api: paddle.fluid.layers.elementwise_div - - - -该OP是逐元素相除算子,输入 ``x`` 与输入 ``y`` 逐元素相除,并将各个位置的输出元素保存到返回结果中。 - -等式是: - -.. math:: - Out = X / Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_div(x, y) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [2., 0.6, 2.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_div(x, y, axis=1) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - z = fluid.layers.elementwise_div(x, y, axis=3) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/elementwise_mul_cn.rst b/doc/paddle/api/paddle/incubate/complex/elementwise_mul_cn.rst deleted file mode 100644 index 1e1c6c168fa453d90b7b356cfc9abb167e316ea2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/elementwise_mul_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_paddle_cn_elementwise_mul: - -elementwise_mul -------------------------------- -:doc_source: paddle.fluid.layers.elementwise_mul - - diff --git a/doc/paddle/api/paddle/incubate/complex/elementwise_sub_cn.rst b/doc/paddle/api/paddle/incubate/complex/elementwise_sub_cn.rst deleted file mode 100644 index c5886ad2e0fa696aad8ae192ec8a0925aa6f1e6b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/elementwise_sub_cn.rst +++ /dev/null @@ -1,122 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_sub: - -elementwise_sub -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_sub(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_sub -:alias: paddle.elementwise_sub,paddle.tensor.elementwise_sub,paddle.tensor.math.elementwise_sub -:old_api: paddle.fluid.layers.elementwise_sub - - - -该OP是逐元素相减算子,输入 ``x`` 与输入 ``y`` 逐元素相减,并将各个位置的输出元素保存到返回结果中。 - -等式是: - -.. math:: - Out = X - Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_sub(x, y) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [1., -2., 2.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_sub(x, y, axis=1) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - z = fluid.layers.elementwise_sub(x, y, axis=3) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/kron_cn.rst b/doc/paddle/api/paddle/incubate/complex/kron_cn.rst deleted file mode 100644 index 74cd64a5c59cef931a5727dff05d9c181853cec4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/kron_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_paddle_tensor_kron: - -kron -------------------------------- - -.. py:function:: paddle.tensor.kron(x, y, out=None, name=None) - -:alias_main: paddle.kron -:alias: paddle.kron,paddle.tensor.kron,paddle.tensor.math.kron - - - - -Kronecker Product 算子。 - -该 OP 计算两个张量的克罗内克积,结果是一个合成的张量,由第二个张量经过第一个张量中的元素缩放 -后的组块构成。 - - -这个 OP 预设两个张量 $X$ 和 $Y$ 的秩 (rank) 相同,如有必要,将会在秩较小的张量的形状前面补 -上 1。令 $X$ 的形状是 [$r_0$, $r_1$, ..., $r_N$],$Y$ 的形状是 -[$s_0$, $s_1$, ..., $s_N$],那么输出张量的形状是 -[$r_{0}s_{0}$, $r_{1}s_{1}$, ..., $r_{N}s_{N}$]. 其中的元素是 $X$ 和 $Y$ 中的元素 -的乘积。 - -公式为 - -.. math:: - - output[k_{0}, k_{1}, ..., k_{N}] = X[i_{0}, i_{1}, ..., i_{N}] * - Y[j_{0}, j_{1}, ..., j_{N}] - - -其中 - -.. math:: - - k_{t} = i_{t} * s_{t} + j_{t}, t = 0, 1, ..., N - - -参数: - - **x** (Variable) – Kron OP 的第一个输入。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64。 - - **y** (Variable) – Kron OP 的第二个输入。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64,与 x 相同。 - - **out** (Variable, 可选) - 指定算子输出结果的 Tensor,可以是程序中已经创建的任何 Variable。默认值为 None,此时将创建新的 Variable 来保存输出结果。 - - **name** (str,可选) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为 None。 - -返回: - - Kron OP 的输出。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64,与 x 一致。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle - from paddle import fluid - import paddle.fluid.dygraph as dg - import numpy as np - - a = np.arange(1, 5).reshape(2, 2).astype(np.float32) - b = np.arange(1, 10).reshape(3, 3).astype(np.float32) - - place = fluid.CPUPlace() - with dg.guard(place): - a_var = dg.to_variable(a) - b_var = dg.to_variable(b) - c_var = paddle.kron(a_var, b_var) - c_np = c_var.numpy() - print(c_np) - - #[[ 1. 2. 3. 2. 4. 6.] - # [ 4. 5. 6. 8. 10. 12.] - # [ 7. 8. 9. 14. 16. 18.] - # [ 3. 6. 9. 4. 8. 12.] - # [12. 15. 18. 16. 20. 24.] - # [21. 24. 27. 28. 32. 36.]] diff --git a/doc/paddle/api/paddle/incubate/complex/matmul_cn.rst b/doc/paddle/api/paddle/incubate/complex/matmul_cn.rst deleted file mode 100644 index 8514a410c290fe9de6004751329d2439772bcd99..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/matmul_cn.rst +++ /dev/null @@ -1,104 +0,0 @@ -.. _cn_api_fluid_layers_matmul: - -matmul -------------------------------- - -.. py:function:: paddle.fluid.layers.matmul(x, y, transpose_x=False, transpose_y=False, alpha=1.0, name=None) - - - - -输入 ``x`` 和输入 ``y`` 矩阵相乘。 - -两个输入的形状可为任意维度,但当任一输入维度大于3时,两个输入的维度必须相等。 -实际的操作取决于 ``x`` 、 ``y`` 的维度和 ``transpose_x`` 、 ``transpose_y`` 的布尔值。具体如下: - -- 如果 ``transpose`` 为真,则对应 Tensor 的后两维会转置。假定 ``x`` 是一个 shape=[D] 的一维 Tensor,则 ``x`` 非转置形状为 [1, D],转置形状为 [D, 1]。转置之后的输入形状需满足矩阵乘法要求,即 `x_width` 与 `y_height` 相等。 - -- 转置后,输入的两个 Tensor 维度将为 2-D 或 n-D,将根据下列规则矩阵相乘: - - 如果两个矩阵都是 2-D,则同普通矩阵一样进行矩阵相乘。 - - 如果任意一个矩阵是 n-D,则将其视为带 batch 的二维矩阵乘法。 - -- 如果原始 Tensor x 或 y 的秩为 1 且未转置,则矩阵相乘后的前置或附加维度 1 将移除。 - -参数: - - **x** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **y** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **transpose_x** (bool) : 相乘前是否转置 x。 - - **transpose_y** (bool) : 相乘前是否转置 y。 - - **alpha** (float) : 输出比例,默认为 1.0。 - - **name** (str|None) : 该层名称(可选),如果设置为空,则自动为该层命名。 - -返回: - - Variable (Tensor / LoDTensor),矩阵相乘后的结果。 - -返回类型: - - Variable(变量)。 - -:: - - * 例 1: - - x: [B, ..., M, K], y: [B, ..., K, N] - out: [B, ..., M, N] - - * 例 2: - - x: [B, M, K], y: [B, K, N] - out: [B, M, N] - - * 例 3: - - x: [B, M, K], y: [K, N] - out: [B, M, N] - - * 例 4: - - x: [M, K], y: [K, N] - out: [M, N] - - * 例 5: - - x: [B, M, K], y: [K] - out: [B, M] - - * 例 6: - - x: [K], y: [K] - out: [1] - - * 例 7: - - x: [M], y: [N] - out: [M, N] - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - x = fluid.layers.data(name='x', shape=[2, 3], dtype='float32') - y = fluid.layers.data(name='y', shape=[3, 2], dtype='float32') - output = fluid.layers.matmul(x, y, True, True) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - input_x = numpy.ones([2, 3]).astype(numpy.float32) - input_y = numpy.ones([3, 2]).astype(numpy.float32) - res, = exe.run(fluid.default_main_program(), - feed={'x':input_x, 'y':input_y}, - fetch_list=[output]) - print(res) - ''' - Output Value: - [[2. 2. 2.] - [2. 2. 2.] - [2. 2. 2.]] - ''' diff --git a/doc/paddle/api/paddle/incubate/complex/reshape_cn.rst b/doc/paddle/api/paddle/incubate/complex/reshape_cn.rst deleted file mode 100644 index a5e39dff07f19832e9468f7deea5cc43b366a33d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/reshape_cn.rst +++ /dev/null @@ -1,88 +0,0 @@ -.. _cn_api_fluid_layers_reshape: - -reshape -------------------------------- - -.. py:function:: paddle.fluid.layers.reshape(x, shape, actual_shape=None, act=None, inplace=False, name=None) - -:alias_main: paddle.reshape -:alias: paddle.reshape,paddle.tensor.reshape,paddle.tensor.manipulation.reshape -:old_api: paddle.fluid.layers.reshape - - - -该OP在保持输入 ``x`` 数据不变的情况下,改变 ``x`` 的形状。 - -目标形状可由 ``shape`` 或 ``actual_shape`` 给出。当两个属性同时被指定时,``actual_shape`` 的优先级高于 ``shape`` ,但此时 ``shape`` 只能是整数列表或元组,且在编译时仍然应该正确地设置 ``shape`` 以保证形状推断。 - -在指定目标shape时存在一些技巧: - -.. code-block:: text - - 1. -1 表示这个维度的值是从x的元素总数和剩余维度推断出来的。因此,有且只有一个维度可以被设置为-1。 - 2. 0 表示实际的维数是从x的对应维数中复制出来的,因此shape中0的索引值不能超过x的维度。 - - -这里有一些例子来解释它们: - -.. code-block:: text - - 1. 给定一个形状为[2,4,6]的三维张量x,目标形状为[6,8],则将x变换为形状为[6,8]的2-D张量,且x的数据保持不变。 - 2. 给定一个形状为[2,4,6]的三维张量x,目标形状为[2,3,-1,2],则将x变换为形状为[2,3,4,2]的4-D张量,且x的数据保持不变。在这种情况下,目标形状的一个维度被设置为-1,这个维度的值是从x的元素总数和剩余维度推断出来的。 - 3. 给定一个形状为[2,4,6]的三维张量x,目标形状为[-1,0,3,2],则将x变换为形状为[2,4,3,2]的4-D张量,且x的数据保持不变。在这种情况下,0对应位置的维度值将从x的对应维数中复制,-1对应位置的维度值由x的元素总数和剩余维度推断出来。 - -**注意:参数** ``actual_shape`` **之后将被舍弃,只用参数** ``shape`` **来表示目标形状。** - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32``,或 ``int64``。 - - **shape** (list|tuple|Variable)- 数据类型是 ``int32`` 。定义目标形状。目标形状最多只能有一个维度为-1。如果 ``shape`` 的类型是 list 或 tuple, 它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``shape`` 的类型是 ``Variable``,则是1-D的 ``Tensor`` 或 ``LoDTensor``。 - - **actual_shape** (Variable,可选)- 1-D ``Tensor`` 或 ``LoDTensor``,默认值:`None`。如果 ``actual_shape`` 被提供,``actual_shape`` 具有比 ``shape`` 更高的优先级,此时 ``shape`` 只能是整数列表或元组。更新提示:``actual_shape`` 在未来的版本中将被舍弃,并用 ``shape`` 代替。 - - **act** (str,可选)- 对形状改变后的输入变量做非线性激活操作,激活函数类型可以参考 :ref:`api_guide_activations` 。默认值: ``None``。 - - **inplace** (bool,可选)- 如果 ``inplace`` 为 ``True``,则 ``layers.reshape`` 的输入和输出是同一个变量,否则 ``layers.reshape`` 的输入和输出是不同的变量。默认值:``False``。请注意,如果 ``x`` 是多个OP的输入,则 ``inplace`` 必须为False。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:多维 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``input`` 相同。如果 ``inplace`` 为 ``False``,则返回一个新的变量,否则将改变输入变量 ``x`` 自身。如果 ``act`` 为 ``None``,则直接返回形状改变后的变量,否则返回经过激活函数后的变量。 - -返回类型:Variable。 - -抛出异常: - - :code:`TypeError`:``actual_shape`` 的类型应该是 Variable 或 None。 - - :code:`TypeError`:``starts`` 的类型应该是list、tuple 或 Variable。 - - :code:`ValueError`:``shape`` 中至多有一个元素可以是-1。 - - :code:`ValueError`:``shape`` 中的元素为0时,对应的维度应该小于等于``x``的维度。 - - :code:`ValueError`:``shape`` 中的元素除了-1之外,都应该是非负值。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # example 1: - # attr shape is a list which doesn't contain tensor Variable. - data_1 = fluid.data( - name='data_1', shape=[2, 4, 6], dtype='float32') - reshaped_1 = fluid.layers.reshape( - x=data_1, shape=[-1, 0, 3, 2], inplace=True) - # the shape of reshaped_1 is [2,4,3,2]. - - # example 2: - # attr shape is a list which contains tensor Variable. - data_2 = fluid.layers.fill_constant([2,25], "int32", 3) - dim = fluid.layers.fill_constant([1], "int32", 5) - reshaped_2 = fluid.layers.reshape(data_2, shape=[dim, 10]) - # the shape of reshaped_2 is [5,10]. - - # example 3: - data_3 = fluid.data( - name="data_3", shape=[2,4,6], dtype='float32') - reshaped_3 = fluid.layers.reshape(x=data_3, shape=[6,8]) - # the shape of reshaped_3 is [6,8]. - - - - - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/sum_cn.rst b/doc/paddle/api/paddle/incubate/complex/sum_cn.rst deleted file mode 100644 index 89825e0b4254f68efd155310f7db1edbd391c82e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/sum_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_tensor_sum: - -sum -------------------------------- - -.. py:function:: paddle.sum(input, dim=None, dtype=None, keep_dim=False, name=None) - -:alias_main: paddle.sum -:alias: paddle.sum,paddle.tensor.sum,paddle.tensor.math.sum -:update_api: paddle.fluid.layers.reduce_sum - - - -该OP是对指定维度上的Tensor元素进行求和运算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)- 求和运算的维度。如果为None,则计算所有元素的和并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **dtype** (str , 可选)- 输出变量的数据类型。若参数为空,则输出变量的数据类型和输入变量相同,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行求和运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - out1 = paddle.sum(x) # [3.5] - out2 = paddle.sum(x, dim=0) # [0.3, 0.5, 1.1, 1.6] - out3 = paddle.sum(x, dim=-1) # [1.9, 1.6] - out4 = paddle.sum(x, dim=1, keep_dim=True) # [[1.9], [1.6]] - - # y 是一个shape为[2, 2, 2]的Tensor元素如下: - # [[[1, 2], [3, 4]], - # [[5, 6], [7, 8]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - out5 = paddle.sum(y, dim=[1, 2]) # [10, 26] - out6 = paddle.sum(y, dim=[0, 1]) # [16, 20] diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_add_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_add_cn.rst deleted file mode 100644 index 7414eae16ca524e5388de7a09c2e104aa0174570..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_add_cn.rst +++ /dev/null @@ -1,121 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_add: - -elementwise_add -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_add(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_add -:alias: paddle.elementwise_add,paddle.tensor.elementwise_add,paddle.tensor.math.elementwise_add -:old_api: paddle.fluid.layers.elementwise_add - - - -该OP是逐元素相加算子,输入 ``x`` 与输入 ``y`` 逐元素相加,并将各个位置的输出元素保存到返回结果中。 - -等式为: - -.. math:: - Out = X + Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_add(x, y) - # z = x + y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [3., 8., 6.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_add(x, y, axis=1) - # z = x + y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - # z = x + y - z = fluid.layers.elementwise_add(x, y, axis=3) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_div_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_div_cn.rst deleted file mode 100644 index d4d12f36b20d39247345933090f2c8b2215b14df..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_div_cn.rst +++ /dev/null @@ -1,121 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_div: - -elementwise_div -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_div(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_div -:alias: paddle.elementwise_div,paddle.tensor.elementwise_div,paddle.tensor.math.elementwise_div -:old_api: paddle.fluid.layers.elementwise_div - - - -该OP是逐元素相除算子,输入 ``x`` 与输入 ``y`` 逐元素相除,并将各个位置的输出元素保存到返回结果中。 - -等式是: - -.. math:: - Out = X / Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_div(x, y) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [2., 0.6, 2.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_div(x, y, axis=1) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - z = fluid.layers.elementwise_div(x, y, axis=3) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_mul_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_mul_cn.rst deleted file mode 100644 index 1e1c6c168fa453d90b7b356cfc9abb167e316ea2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_mul_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_paddle_cn_elementwise_mul: - -elementwise_mul -------------------------------- -:doc_source: paddle.fluid.layers.elementwise_mul - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_sub_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_sub_cn.rst deleted file mode 100644 index c5886ad2e0fa696aad8ae192ec8a0925aa6f1e6b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/elementwise_sub_cn.rst +++ /dev/null @@ -1,122 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_sub: - -elementwise_sub -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_sub(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_sub -:alias: paddle.elementwise_sub,paddle.tensor.elementwise_sub,paddle.tensor.math.elementwise_sub -:old_api: paddle.fluid.layers.elementwise_sub - - - -该OP是逐元素相减算子,输入 ``x`` 与输入 ``y`` 逐元素相减,并将各个位置的输出元素保存到返回结果中。 - -等式是: - -.. math:: - Out = X - Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_sub(x, y) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [1., -2., 2.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_sub(x, y, axis=1) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - z = fluid.layers.elementwise_sub(x, y, axis=3) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/kron_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/kron_cn.rst deleted file mode 100644 index 74cd64a5c59cef931a5727dff05d9c181853cec4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/kron_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_paddle_tensor_kron: - -kron -------------------------------- - -.. py:function:: paddle.tensor.kron(x, y, out=None, name=None) - -:alias_main: paddle.kron -:alias: paddle.kron,paddle.tensor.kron,paddle.tensor.math.kron - - - - -Kronecker Product 算子。 - -该 OP 计算两个张量的克罗内克积,结果是一个合成的张量,由第二个张量经过第一个张量中的元素缩放 -后的组块构成。 - - -这个 OP 预设两个张量 $X$ 和 $Y$ 的秩 (rank) 相同,如有必要,将会在秩较小的张量的形状前面补 -上 1。令 $X$ 的形状是 [$r_0$, $r_1$, ..., $r_N$],$Y$ 的形状是 -[$s_0$, $s_1$, ..., $s_N$],那么输出张量的形状是 -[$r_{0}s_{0}$, $r_{1}s_{1}$, ..., $r_{N}s_{N}$]. 其中的元素是 $X$ 和 $Y$ 中的元素 -的乘积。 - -公式为 - -.. math:: - - output[k_{0}, k_{1}, ..., k_{N}] = X[i_{0}, i_{1}, ..., i_{N}] * - Y[j_{0}, j_{1}, ..., j_{N}] - - -其中 - -.. math:: - - k_{t} = i_{t} * s_{t} + j_{t}, t = 0, 1, ..., N - - -参数: - - **x** (Variable) – Kron OP 的第一个输入。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64。 - - **y** (Variable) – Kron OP 的第二个输入。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64,与 x 相同。 - - **out** (Variable, 可选) - 指定算子输出结果的 Tensor,可以是程序中已经创建的任何 Variable。默认值为 None,此时将创建新的 Variable 来保存输出结果。 - - **name** (str,可选) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为 None。 - -返回: - - Kron OP 的输出。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64,与 x 一致。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle - from paddle import fluid - import paddle.fluid.dygraph as dg - import numpy as np - - a = np.arange(1, 5).reshape(2, 2).astype(np.float32) - b = np.arange(1, 10).reshape(3, 3).astype(np.float32) - - place = fluid.CPUPlace() - with dg.guard(place): - a_var = dg.to_variable(a) - b_var = dg.to_variable(b) - c_var = paddle.kron(a_var, b_var) - c_np = c_var.numpy() - print(c_np) - - #[[ 1. 2. 3. 2. 4. 6.] - # [ 4. 5. 6. 8. 10. 12.] - # [ 7. 8. 9. 14. 16. 18.] - # [ 3. 6. 9. 4. 8. 12.] - # [12. 15. 18. 16. 20. 24.] - # [21. 24. 27. 28. 32. 36.]] diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/linalg/matmul_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/linalg/matmul_cn.rst deleted file mode 100644 index 8514a410c290fe9de6004751329d2439772bcd99..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/linalg/matmul_cn.rst +++ /dev/null @@ -1,104 +0,0 @@ -.. _cn_api_fluid_layers_matmul: - -matmul -------------------------------- - -.. py:function:: paddle.fluid.layers.matmul(x, y, transpose_x=False, transpose_y=False, alpha=1.0, name=None) - - - - -输入 ``x`` 和输入 ``y`` 矩阵相乘。 - -两个输入的形状可为任意维度,但当任一输入维度大于3时,两个输入的维度必须相等。 -实际的操作取决于 ``x`` 、 ``y`` 的维度和 ``transpose_x`` 、 ``transpose_y`` 的布尔值。具体如下: - -- 如果 ``transpose`` 为真,则对应 Tensor 的后两维会转置。假定 ``x`` 是一个 shape=[D] 的一维 Tensor,则 ``x`` 非转置形状为 [1, D],转置形状为 [D, 1]。转置之后的输入形状需满足矩阵乘法要求,即 `x_width` 与 `y_height` 相等。 - -- 转置后,输入的两个 Tensor 维度将为 2-D 或 n-D,将根据下列规则矩阵相乘: - - 如果两个矩阵都是 2-D,则同普通矩阵一样进行矩阵相乘。 - - 如果任意一个矩阵是 n-D,则将其视为带 batch 的二维矩阵乘法。 - -- 如果原始 Tensor x 或 y 的秩为 1 且未转置,则矩阵相乘后的前置或附加维度 1 将移除。 - -参数: - - **x** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **y** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **transpose_x** (bool) : 相乘前是否转置 x。 - - **transpose_y** (bool) : 相乘前是否转置 y。 - - **alpha** (float) : 输出比例,默认为 1.0。 - - **name** (str|None) : 该层名称(可选),如果设置为空,则自动为该层命名。 - -返回: - - Variable (Tensor / LoDTensor),矩阵相乘后的结果。 - -返回类型: - - Variable(变量)。 - -:: - - * 例 1: - - x: [B, ..., M, K], y: [B, ..., K, N] - out: [B, ..., M, N] - - * 例 2: - - x: [B, M, K], y: [B, K, N] - out: [B, M, N] - - * 例 3: - - x: [B, M, K], y: [K, N] - out: [B, M, N] - - * 例 4: - - x: [M, K], y: [K, N] - out: [M, N] - - * 例 5: - - x: [B, M, K], y: [K] - out: [B, M] - - * 例 6: - - x: [K], y: [K] - out: [1] - - * 例 7: - - x: [M], y: [N] - out: [M, N] - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - x = fluid.layers.data(name='x', shape=[2, 3], dtype='float32') - y = fluid.layers.data(name='y', shape=[3, 2], dtype='float32') - output = fluid.layers.matmul(x, y, True, True) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - input_x = numpy.ones([2, 3]).astype(numpy.float32) - input_y = numpy.ones([3, 2]).astype(numpy.float32) - res, = exe.run(fluid.default_main_program(), - feed={'x':input_x, 'y':input_y}, - fetch_list=[output]) - print(res) - ''' - Output Value: - [[2. 2. 2.] - [2. 2. 2.] - [2. 2. 2.]] - ''' diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/manipulation/reshape_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/manipulation/reshape_cn.rst deleted file mode 100644 index a5e39dff07f19832e9468f7deea5cc43b366a33d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/manipulation/reshape_cn.rst +++ /dev/null @@ -1,88 +0,0 @@ -.. _cn_api_fluid_layers_reshape: - -reshape -------------------------------- - -.. py:function:: paddle.fluid.layers.reshape(x, shape, actual_shape=None, act=None, inplace=False, name=None) - -:alias_main: paddle.reshape -:alias: paddle.reshape,paddle.tensor.reshape,paddle.tensor.manipulation.reshape -:old_api: paddle.fluid.layers.reshape - - - -该OP在保持输入 ``x`` 数据不变的情况下,改变 ``x`` 的形状。 - -目标形状可由 ``shape`` 或 ``actual_shape`` 给出。当两个属性同时被指定时,``actual_shape`` 的优先级高于 ``shape`` ,但此时 ``shape`` 只能是整数列表或元组,且在编译时仍然应该正确地设置 ``shape`` 以保证形状推断。 - -在指定目标shape时存在一些技巧: - -.. code-block:: text - - 1. -1 表示这个维度的值是从x的元素总数和剩余维度推断出来的。因此,有且只有一个维度可以被设置为-1。 - 2. 0 表示实际的维数是从x的对应维数中复制出来的,因此shape中0的索引值不能超过x的维度。 - - -这里有一些例子来解释它们: - -.. code-block:: text - - 1. 给定一个形状为[2,4,6]的三维张量x,目标形状为[6,8],则将x变换为形状为[6,8]的2-D张量,且x的数据保持不变。 - 2. 给定一个形状为[2,4,6]的三维张量x,目标形状为[2,3,-1,2],则将x变换为形状为[2,3,4,2]的4-D张量,且x的数据保持不变。在这种情况下,目标形状的一个维度被设置为-1,这个维度的值是从x的元素总数和剩余维度推断出来的。 - 3. 给定一个形状为[2,4,6]的三维张量x,目标形状为[-1,0,3,2],则将x变换为形状为[2,4,3,2]的4-D张量,且x的数据保持不变。在这种情况下,0对应位置的维度值将从x的对应维数中复制,-1对应位置的维度值由x的元素总数和剩余维度推断出来。 - -**注意:参数** ``actual_shape`` **之后将被舍弃,只用参数** ``shape`` **来表示目标形状。** - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32``,或 ``int64``。 - - **shape** (list|tuple|Variable)- 数据类型是 ``int32`` 。定义目标形状。目标形状最多只能有一个维度为-1。如果 ``shape`` 的类型是 list 或 tuple, 它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``shape`` 的类型是 ``Variable``,则是1-D的 ``Tensor`` 或 ``LoDTensor``。 - - **actual_shape** (Variable,可选)- 1-D ``Tensor`` 或 ``LoDTensor``,默认值:`None`。如果 ``actual_shape`` 被提供,``actual_shape`` 具有比 ``shape`` 更高的优先级,此时 ``shape`` 只能是整数列表或元组。更新提示:``actual_shape`` 在未来的版本中将被舍弃,并用 ``shape`` 代替。 - - **act** (str,可选)- 对形状改变后的输入变量做非线性激活操作,激活函数类型可以参考 :ref:`api_guide_activations` 。默认值: ``None``。 - - **inplace** (bool,可选)- 如果 ``inplace`` 为 ``True``,则 ``layers.reshape`` 的输入和输出是同一个变量,否则 ``layers.reshape`` 的输入和输出是不同的变量。默认值:``False``。请注意,如果 ``x`` 是多个OP的输入,则 ``inplace`` 必须为False。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:多维 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``input`` 相同。如果 ``inplace`` 为 ``False``,则返回一个新的变量,否则将改变输入变量 ``x`` 自身。如果 ``act`` 为 ``None``,则直接返回形状改变后的变量,否则返回经过激活函数后的变量。 - -返回类型:Variable。 - -抛出异常: - - :code:`TypeError`:``actual_shape`` 的类型应该是 Variable 或 None。 - - :code:`TypeError`:``starts`` 的类型应该是list、tuple 或 Variable。 - - :code:`ValueError`:``shape`` 中至多有一个元素可以是-1。 - - :code:`ValueError`:``shape`` 中的元素为0时,对应的维度应该小于等于``x``的维度。 - - :code:`ValueError`:``shape`` 中的元素除了-1之外,都应该是非负值。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # example 1: - # attr shape is a list which doesn't contain tensor Variable. - data_1 = fluid.data( - name='data_1', shape=[2, 4, 6], dtype='float32') - reshaped_1 = fluid.layers.reshape( - x=data_1, shape=[-1, 0, 3, 2], inplace=True) - # the shape of reshaped_1 is [2,4,3,2]. - - # example 2: - # attr shape is a list which contains tensor Variable. - data_2 = fluid.layers.fill_constant([2,25], "int32", 3) - dim = fluid.layers.fill_constant([1], "int32", 5) - reshaped_2 = fluid.layers.reshape(data_2, shape=[dim, 10]) - # the shape of reshaped_2 is [5,10]. - - # example 3: - data_3 = fluid.data( - name="data_3", shape=[2,4,6], dtype='float32') - reshaped_3 = fluid.layers.reshape(x=data_3, shape=[6,8]) - # the shape of reshaped_3 is [6,8]. - - - - - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/manipulation/transpose_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/manipulation/transpose_cn.rst deleted file mode 100644 index b9d6bfb644cbd2210c2ab22818c4ca0609eba906..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/manipulation/transpose_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_transpose: - -transpose -------------------------------- - -.. py:function:: paddle.fluid.layers.transpose(x,perm,name=None) - -:alias_main: paddle.transpose -:alias: paddle.transpose,paddle.tensor.transpose,paddle.tensor.linalg.transpose,paddle.tensor.manipulation.transpose -:old_api: paddle.fluid.layers.transpose - - - -该OP根据perm对输入的多维Tensor进行数据重排。返回多维Tensor的第i维对应输入Tensor的perm[i]维。 - -参数: - - **x** (Variable) - 输入:x:[N_1, N_2, ..., N_k, D]多维Tensor,可选的数据类型为float16, float32, float64, int32, int64。 - - **perm** (list) - perm长度必须和X的维度相同,并依照perm中数据进行重排。 - - **name** (str) - 该层名称(可选)。 - -返回: 多维Tensor - -返回类型:Variable - -**示例**: - -.. code-block:: python - - x = [[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] - [[13 14 15 16] [17 18 19 20] [21 22 23 24]]] - shape(x) = [2,3,4] - - # 例0 - perm0 = [1,0,2] - y_perm0 = [[[ 1 2 3 4] [13 14 15 16]] - [[ 5 6 7 8] [17 18 19 20]] - [[ 9 10 11 12] [21 22 23 24]]] - shape(y_perm0) = [3,2,4] - - # 例1 - perm1 = [2,1,0] - y_perm1 = [[[ 1 13] [ 5 17] [ 9 21]] - [[ 2 14] [ 6 18] [10 22]] - [[ 3 15] [ 7 19] [11 23]] - [[ 4 16] [ 8 20] [12 24]]] - shape(y_perm1) = [4,3,2] - - -**代码示例**: - -.. code-block:: python - - # 请使用 append_batch_size=False 来避免 - # 在数据张量中添加多余的batch大小维度 - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 3, 4], - dtype='float32', append_batch_size=False) - x_transposed = fluid.layers.transpose(x, perm=[1, 0, 2]) - print(x_transposed.shape) - #(3L, 2L, 4L) - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_add_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_add_cn.rst deleted file mode 100644 index 7414eae16ca524e5388de7a09c2e104aa0174570..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_add_cn.rst +++ /dev/null @@ -1,121 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_add: - -elementwise_add -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_add(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_add -:alias: paddle.elementwise_add,paddle.tensor.elementwise_add,paddle.tensor.math.elementwise_add -:old_api: paddle.fluid.layers.elementwise_add - - - -该OP是逐元素相加算子,输入 ``x`` 与输入 ``y`` 逐元素相加,并将各个位置的输出元素保存到返回结果中。 - -等式为: - -.. math:: - Out = X + Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_add(x, y) - # z = x + y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [3., 8., 6.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_add(x, y, axis=1) - # z = x + y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - # z = x + y - z = fluid.layers.elementwise_add(x, y, axis=3) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_div_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_div_cn.rst deleted file mode 100644 index d4d12f36b20d39247345933090f2c8b2215b14df..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_div_cn.rst +++ /dev/null @@ -1,121 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_div: - -elementwise_div -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_div(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_div -:alias: paddle.elementwise_div,paddle.tensor.elementwise_div,paddle.tensor.math.elementwise_div -:old_api: paddle.fluid.layers.elementwise_div - - - -该OP是逐元素相除算子,输入 ``x`` 与输入 ``y`` 逐元素相除,并将各个位置的输出元素保存到返回结果中。 - -等式是: - -.. math:: - Out = X / Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_div(x, y) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [2., 0.6, 2.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_div(x, y, axis=1) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - z = fluid.layers.elementwise_div(x, y, axis=3) - # z = x / y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_mul_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_mul_cn.rst deleted file mode 100644 index 1e1c6c168fa453d90b7b356cfc9abb167e316ea2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_mul_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_paddle_cn_elementwise_mul: - -elementwise_mul -------------------------------- -:doc_source: paddle.fluid.layers.elementwise_mul - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_sub_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_sub_cn.rst deleted file mode 100644 index c5886ad2e0fa696aad8ae192ec8a0925aa6f1e6b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/math/elementwise_sub_cn.rst +++ /dev/null @@ -1,122 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_sub: - -elementwise_sub -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_sub(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_sub -:alias: paddle.elementwise_sub,paddle.tensor.elementwise_sub,paddle.tensor.math.elementwise_sub -:old_api: paddle.fluid.layers.elementwise_sub - - - -该OP是逐元素相减算子,输入 ``x`` 与输入 ``y`` 逐元素相减,并将各个位置的输出元素保存到返回结果中。 - -等式是: - -.. math:: - Out = X - Y - -- :math:`X` :多维Tensor。 -- :math:`Y` :维度必须小于等于X维度的Tensor。 - -对于这个运算算子有2种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 匹配 :math:`X` 的形状(shape),其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis= rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **y** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``。 - - **axis** (int32,可选)- ``y`` 的维度对应到 ``x`` 维度上时的索引。默认值为 -1。 - - **act** (str,可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - - -返回: 维度与 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。 - -返回类型: Variable。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_sub(x, y) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # [1., -2., 2.] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[3, 4]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_sub(x, y, axis=1) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - -**代码示例 3** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - def gen_data(): - return { - "x": np.random.randint(1, 5, size=[2, 3, 4, 5]).astype('float32'), - "y": np.random.randint(1, 5, size=[5]).astype('float32') - } - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[5], dtype='float32') - z = fluid.layers.elementwise_sub(x, y, axis=3) - # z = x - y - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - print(z_value) # z.shape=[2,3,4,5] - - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/math/kron_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/math/kron_cn.rst deleted file mode 100644 index 74cd64a5c59cef931a5727dff05d9c181853cec4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/math/kron_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_paddle_tensor_kron: - -kron -------------------------------- - -.. py:function:: paddle.tensor.kron(x, y, out=None, name=None) - -:alias_main: paddle.kron -:alias: paddle.kron,paddle.tensor.kron,paddle.tensor.math.kron - - - - -Kronecker Product 算子。 - -该 OP 计算两个张量的克罗内克积,结果是一个合成的张量,由第二个张量经过第一个张量中的元素缩放 -后的组块构成。 - - -这个 OP 预设两个张量 $X$ 和 $Y$ 的秩 (rank) 相同,如有必要,将会在秩较小的张量的形状前面补 -上 1。令 $X$ 的形状是 [$r_0$, $r_1$, ..., $r_N$],$Y$ 的形状是 -[$s_0$, $s_1$, ..., $s_N$],那么输出张量的形状是 -[$r_{0}s_{0}$, $r_{1}s_{1}$, ..., $r_{N}s_{N}$]. 其中的元素是 $X$ 和 $Y$ 中的元素 -的乘积。 - -公式为 - -.. math:: - - output[k_{0}, k_{1}, ..., k_{N}] = X[i_{0}, i_{1}, ..., i_{N}] * - Y[j_{0}, j_{1}, ..., j_{N}] - - -其中 - -.. math:: - - k_{t} = i_{t} * s_{t} + j_{t}, t = 0, 1, ..., N - - -参数: - - **x** (Variable) – Kron OP 的第一个输入。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64。 - - **y** (Variable) – Kron OP 的第二个输入。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64,与 x 相同。 - - **out** (Variable, 可选) - 指定算子输出结果的 Tensor,可以是程序中已经创建的任何 Variable。默认值为 None,此时将创建新的 Variable 来保存输出结果。 - - **name** (str,可选) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为 None。 - -返回: - - Kron OP 的输出。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64,与 x 一致。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle - from paddle import fluid - import paddle.fluid.dygraph as dg - import numpy as np - - a = np.arange(1, 5).reshape(2, 2).astype(np.float32) - b = np.arange(1, 10).reshape(3, 3).astype(np.float32) - - place = fluid.CPUPlace() - with dg.guard(place): - a_var = dg.to_variable(a) - b_var = dg.to_variable(b) - c_var = paddle.kron(a_var, b_var) - c_np = c_var.numpy() - print(c_np) - - #[[ 1. 2. 3. 2. 4. 6.] - # [ 4. 5. 6. 8. 10. 12.] - # [ 7. 8. 9. 14. 16. 18.] - # [ 3. 6. 9. 4. 8. 12.] - # [12. 15. 18. 16. 20. 24.] - # [21. 24. 27. 28. 32. 36.]] diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/math/matmul_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/math/matmul_cn.rst deleted file mode 100644 index 8514a410c290fe9de6004751329d2439772bcd99..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/math/matmul_cn.rst +++ /dev/null @@ -1,104 +0,0 @@ -.. _cn_api_fluid_layers_matmul: - -matmul -------------------------------- - -.. py:function:: paddle.fluid.layers.matmul(x, y, transpose_x=False, transpose_y=False, alpha=1.0, name=None) - - - - -输入 ``x`` 和输入 ``y`` 矩阵相乘。 - -两个输入的形状可为任意维度,但当任一输入维度大于3时,两个输入的维度必须相等。 -实际的操作取决于 ``x`` 、 ``y`` 的维度和 ``transpose_x`` 、 ``transpose_y`` 的布尔值。具体如下: - -- 如果 ``transpose`` 为真,则对应 Tensor 的后两维会转置。假定 ``x`` 是一个 shape=[D] 的一维 Tensor,则 ``x`` 非转置形状为 [1, D],转置形状为 [D, 1]。转置之后的输入形状需满足矩阵乘法要求,即 `x_width` 与 `y_height` 相等。 - -- 转置后,输入的两个 Tensor 维度将为 2-D 或 n-D,将根据下列规则矩阵相乘: - - 如果两个矩阵都是 2-D,则同普通矩阵一样进行矩阵相乘。 - - 如果任意一个矩阵是 n-D,则将其视为带 batch 的二维矩阵乘法。 - -- 如果原始 Tensor x 或 y 的秩为 1 且未转置,则矩阵相乘后的前置或附加维度 1 将移除。 - -参数: - - **x** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **y** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **transpose_x** (bool) : 相乘前是否转置 x。 - - **transpose_y** (bool) : 相乘前是否转置 y。 - - **alpha** (float) : 输出比例,默认为 1.0。 - - **name** (str|None) : 该层名称(可选),如果设置为空,则自动为该层命名。 - -返回: - - Variable (Tensor / LoDTensor),矩阵相乘后的结果。 - -返回类型: - - Variable(变量)。 - -:: - - * 例 1: - - x: [B, ..., M, K], y: [B, ..., K, N] - out: [B, ..., M, N] - - * 例 2: - - x: [B, M, K], y: [B, K, N] - out: [B, M, N] - - * 例 3: - - x: [B, M, K], y: [K, N] - out: [B, M, N] - - * 例 4: - - x: [M, K], y: [K, N] - out: [M, N] - - * 例 5: - - x: [B, M, K], y: [K] - out: [B, M] - - * 例 6: - - x: [K], y: [K] - out: [1] - - * 例 7: - - x: [M], y: [N] - out: [M, N] - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - x = fluid.layers.data(name='x', shape=[2, 3], dtype='float32') - y = fluid.layers.data(name='y', shape=[3, 2], dtype='float32') - output = fluid.layers.matmul(x, y, True, True) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - input_x = numpy.ones([2, 3]).astype(numpy.float32) - input_y = numpy.ones([3, 2]).astype(numpy.float32) - res, = exe.run(fluid.default_main_program(), - feed={'x':input_x, 'y':input_y}, - fetch_list=[output]) - print(res) - ''' - Output Value: - [[2. 2. 2.] - [2. 2. 2.] - [2. 2. 2.]] - ''' diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/math/reshape_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/math/reshape_cn.rst deleted file mode 100644 index a5e39dff07f19832e9468f7deea5cc43b366a33d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/math/reshape_cn.rst +++ /dev/null @@ -1,88 +0,0 @@ -.. _cn_api_fluid_layers_reshape: - -reshape -------------------------------- - -.. py:function:: paddle.fluid.layers.reshape(x, shape, actual_shape=None, act=None, inplace=False, name=None) - -:alias_main: paddle.reshape -:alias: paddle.reshape,paddle.tensor.reshape,paddle.tensor.manipulation.reshape -:old_api: paddle.fluid.layers.reshape - - - -该OP在保持输入 ``x`` 数据不变的情况下,改变 ``x`` 的形状。 - -目标形状可由 ``shape`` 或 ``actual_shape`` 给出。当两个属性同时被指定时,``actual_shape`` 的优先级高于 ``shape`` ,但此时 ``shape`` 只能是整数列表或元组,且在编译时仍然应该正确地设置 ``shape`` 以保证形状推断。 - -在指定目标shape时存在一些技巧: - -.. code-block:: text - - 1. -1 表示这个维度的值是从x的元素总数和剩余维度推断出来的。因此,有且只有一个维度可以被设置为-1。 - 2. 0 表示实际的维数是从x的对应维数中复制出来的,因此shape中0的索引值不能超过x的维度。 - - -这里有一些例子来解释它们: - -.. code-block:: text - - 1. 给定一个形状为[2,4,6]的三维张量x,目标形状为[6,8],则将x变换为形状为[6,8]的2-D张量,且x的数据保持不变。 - 2. 给定一个形状为[2,4,6]的三维张量x,目标形状为[2,3,-1,2],则将x变换为形状为[2,3,4,2]的4-D张量,且x的数据保持不变。在这种情况下,目标形状的一个维度被设置为-1,这个维度的值是从x的元素总数和剩余维度推断出来的。 - 3. 给定一个形状为[2,4,6]的三维张量x,目标形状为[-1,0,3,2],则将x变换为形状为[2,4,3,2]的4-D张量,且x的数据保持不变。在这种情况下,0对应位置的维度值将从x的对应维数中复制,-1对应位置的维度值由x的元素总数和剩余维度推断出来。 - -**注意:参数** ``actual_shape`` **之后将被舍弃,只用参数** ``shape`` **来表示目标形状。** - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32``,或 ``int64``。 - - **shape** (list|tuple|Variable)- 数据类型是 ``int32`` 。定义目标形状。目标形状最多只能有一个维度为-1。如果 ``shape`` 的类型是 list 或 tuple, 它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``shape`` 的类型是 ``Variable``,则是1-D的 ``Tensor`` 或 ``LoDTensor``。 - - **actual_shape** (Variable,可选)- 1-D ``Tensor`` 或 ``LoDTensor``,默认值:`None`。如果 ``actual_shape`` 被提供,``actual_shape`` 具有比 ``shape`` 更高的优先级,此时 ``shape`` 只能是整数列表或元组。更新提示:``actual_shape`` 在未来的版本中将被舍弃,并用 ``shape`` 代替。 - - **act** (str,可选)- 对形状改变后的输入变量做非线性激活操作,激活函数类型可以参考 :ref:`api_guide_activations` 。默认值: ``None``。 - - **inplace** (bool,可选)- 如果 ``inplace`` 为 ``True``,则 ``layers.reshape`` 的输入和输出是同一个变量,否则 ``layers.reshape`` 的输入和输出是不同的变量。默认值:``False``。请注意,如果 ``x`` 是多个OP的输入,则 ``inplace`` 必须为False。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:多维 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``input`` 相同。如果 ``inplace`` 为 ``False``,则返回一个新的变量,否则将改变输入变量 ``x`` 自身。如果 ``act`` 为 ``None``,则直接返回形状改变后的变量,否则返回经过激活函数后的变量。 - -返回类型:Variable。 - -抛出异常: - - :code:`TypeError`:``actual_shape`` 的类型应该是 Variable 或 None。 - - :code:`TypeError`:``starts`` 的类型应该是list、tuple 或 Variable。 - - :code:`ValueError`:``shape`` 中至多有一个元素可以是-1。 - - :code:`ValueError`:``shape`` 中的元素为0时,对应的维度应该小于等于``x``的维度。 - - :code:`ValueError`:``shape`` 中的元素除了-1之外,都应该是非负值。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # example 1: - # attr shape is a list which doesn't contain tensor Variable. - data_1 = fluid.data( - name='data_1', shape=[2, 4, 6], dtype='float32') - reshaped_1 = fluid.layers.reshape( - x=data_1, shape=[-1, 0, 3, 2], inplace=True) - # the shape of reshaped_1 is [2,4,3,2]. - - # example 2: - # attr shape is a list which contains tensor Variable. - data_2 = fluid.layers.fill_constant([2,25], "int32", 3) - dim = fluid.layers.fill_constant([1], "int32", 5) - reshaped_2 = fluid.layers.reshape(data_2, shape=[dim, 10]) - # the shape of reshaped_2 is [5,10]. - - # example 3: - data_3 = fluid.data( - name="data_3", shape=[2,4,6], dtype='float32') - reshaped_3 = fluid.layers.reshape(x=data_3, shape=[6,8]) - # the shape of reshaped_3 is [6,8]. - - - - - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/math/sum_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/math/sum_cn.rst deleted file mode 100644 index 89825e0b4254f68efd155310f7db1edbd391c82e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/math/sum_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_tensor_sum: - -sum -------------------------------- - -.. py:function:: paddle.sum(input, dim=None, dtype=None, keep_dim=False, name=None) - -:alias_main: paddle.sum -:alias: paddle.sum,paddle.tensor.sum,paddle.tensor.math.sum -:update_api: paddle.fluid.layers.reduce_sum - - - -该OP是对指定维度上的Tensor元素进行求和运算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)- 求和运算的维度。如果为None,则计算所有元素的和并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **dtype** (str , 可选)- 输出变量的数据类型。若参数为空,则输出变量的数据类型和输入变量相同,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行求和运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - out1 = paddle.sum(x) # [3.5] - out2 = paddle.sum(x, dim=0) # [0.3, 0.5, 1.1, 1.6] - out3 = paddle.sum(x, dim=-1) # [1.9, 1.6] - out4 = paddle.sum(x, dim=1, keep_dim=True) # [[1.9], [1.6]] - - # y 是一个shape为[2, 2, 2]的Tensor元素如下: - # [[[1, 2], [3, 4]], - # [[5, 6], [7, 8]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - out5 = paddle.sum(y, dim=[1, 2]) # [10, 26] - out6 = paddle.sum(y, dim=[0, 1]) # [16, 20] diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/math/trace_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/math/trace_cn.rst deleted file mode 100644 index 53fb3edc54ffac22508d792ea34971c85d50b471..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/math/trace_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_tensor_trace: - -trace -------------------------------- - -.. py:function:: paddle.trace(x, offset=0, axis1=0, axis2=1, name=None) - -:alias_main: paddle.trace -:alias: paddle.trace, paddle.tensor.trace, paddle.tensor.math.trace - - - -该 OP 计算输入 Tensor 在指定平面上的对角线元素之和,并输出相应的计算结果。 - -如果输入是 2D Tensor,则返回对角线元素之和。 - -如果输入的维度大于 2D,则返回一个由对角线元素之和组成的数组,其中对角线从由 axis1 和 axis2 指定的二维平面中获得。默认由输入的前两维组成获得对角线的 2D 平面。 - -参数 ``offset`` 确定从指定的二维平面中获取对角线的位置: - - - 如果 offset = 0,则取主对角线。 - - 如果 offset > 0,则取主对角线右上的对角线。 - - 如果 offset < 0,则取主对角线左下的对角线。 - -参数: - - **x** (Variable)- 输入张量,至少为 2D 数组,支持数据类型为 float32,float64,int32,int64。 - - **offset** (int ,可选)- 从指定的二维平面中获取对角线的位置,默认值为 0,既主对角线。 - - **axis1** (int , 可选)- 获取对角线的二维平面的第一维,默认值为 0。 - - **axis2** (int , 可选)- 获取对角线的二维平面的第二维,默认值为 1。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 指定二维平面的对角线元素之和。数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle - import numpy as np - - case1 = np.random.randn(2, 3).astype('float32') - case2 = np.random.randn(3, 10, 10).astype('float32') - case3 = np.random.randn(3, 10, 5, 10).astype('float32') - - paddle.enable_imperative() - case1 = paddle.imperative.to_variable(case1) - case2 = paddle.imperative.to_variable(case2) - case3 = paddle.imperative.to_variable(case3) - data1 = paddle.trace(case1) # data1.shape = [1] - data2 = paddle.trace(case2, offset=1, axis1=1, axis2=2) # data2.shape = [3] - data3 = paddle.trace(case3, offset=-3, axis1=1, axis2=-1) # data2.shape = [3, 5] diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/math/transpose_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/math/transpose_cn.rst deleted file mode 100644 index b9d6bfb644cbd2210c2ab22818c4ca0609eba906..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/math/transpose_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_transpose: - -transpose -------------------------------- - -.. py:function:: paddle.fluid.layers.transpose(x,perm,name=None) - -:alias_main: paddle.transpose -:alias: paddle.transpose,paddle.tensor.transpose,paddle.tensor.linalg.transpose,paddle.tensor.manipulation.transpose -:old_api: paddle.fluid.layers.transpose - - - -该OP根据perm对输入的多维Tensor进行数据重排。返回多维Tensor的第i维对应输入Tensor的perm[i]维。 - -参数: - - **x** (Variable) - 输入:x:[N_1, N_2, ..., N_k, D]多维Tensor,可选的数据类型为float16, float32, float64, int32, int64。 - - **perm** (list) - perm长度必须和X的维度相同,并依照perm中数据进行重排。 - - **name** (str) - 该层名称(可选)。 - -返回: 多维Tensor - -返回类型:Variable - -**示例**: - -.. code-block:: python - - x = [[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] - [[13 14 15 16] [17 18 19 20] [21 22 23 24]]] - shape(x) = [2,3,4] - - # 例0 - perm0 = [1,0,2] - y_perm0 = [[[ 1 2 3 4] [13 14 15 16]] - [[ 5 6 7 8] [17 18 19 20]] - [[ 9 10 11 12] [21 22 23 24]]] - shape(y_perm0) = [3,2,4] - - # 例1 - perm1 = [2,1,0] - y_perm1 = [[[ 1 13] [ 5 17] [ 9 21]] - [[ 2 14] [ 6 18] [10 22]] - [[ 3 15] [ 7 19] [11 23]] - [[ 4 16] [ 8 20] [12 24]]] - shape(y_perm1) = [4,3,2] - - -**代码示例**: - -.. code-block:: python - - # 请使用 append_batch_size=False 来避免 - # 在数据张量中添加多余的batch大小维度 - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 3, 4], - dtype='float32', append_batch_size=False) - x_transposed = fluid.layers.transpose(x, perm=[1, 0, 2]) - print(x_transposed.shape) - #(3L, 2L, 4L) - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/matmul_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/matmul_cn.rst deleted file mode 100644 index 8514a410c290fe9de6004751329d2439772bcd99..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/matmul_cn.rst +++ /dev/null @@ -1,104 +0,0 @@ -.. _cn_api_fluid_layers_matmul: - -matmul -------------------------------- - -.. py:function:: paddle.fluid.layers.matmul(x, y, transpose_x=False, transpose_y=False, alpha=1.0, name=None) - - - - -输入 ``x`` 和输入 ``y`` 矩阵相乘。 - -两个输入的形状可为任意维度,但当任一输入维度大于3时,两个输入的维度必须相等。 -实际的操作取决于 ``x`` 、 ``y`` 的维度和 ``transpose_x`` 、 ``transpose_y`` 的布尔值。具体如下: - -- 如果 ``transpose`` 为真,则对应 Tensor 的后两维会转置。假定 ``x`` 是一个 shape=[D] 的一维 Tensor,则 ``x`` 非转置形状为 [1, D],转置形状为 [D, 1]。转置之后的输入形状需满足矩阵乘法要求,即 `x_width` 与 `y_height` 相等。 - -- 转置后,输入的两个 Tensor 维度将为 2-D 或 n-D,将根据下列规则矩阵相乘: - - 如果两个矩阵都是 2-D,则同普通矩阵一样进行矩阵相乘。 - - 如果任意一个矩阵是 n-D,则将其视为带 batch 的二维矩阵乘法。 - -- 如果原始 Tensor x 或 y 的秩为 1 且未转置,则矩阵相乘后的前置或附加维度 1 将移除。 - -参数: - - **x** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **y** (Variable) : 输入变量,类型为 Tensor 或 LoDTensor。 - - **transpose_x** (bool) : 相乘前是否转置 x。 - - **transpose_y** (bool) : 相乘前是否转置 y。 - - **alpha** (float) : 输出比例,默认为 1.0。 - - **name** (str|None) : 该层名称(可选),如果设置为空,则自动为该层命名。 - -返回: - - Variable (Tensor / LoDTensor),矩阵相乘后的结果。 - -返回类型: - - Variable(变量)。 - -:: - - * 例 1: - - x: [B, ..., M, K], y: [B, ..., K, N] - out: [B, ..., M, N] - - * 例 2: - - x: [B, M, K], y: [B, K, N] - out: [B, M, N] - - * 例 3: - - x: [B, M, K], y: [K, N] - out: [B, M, N] - - * 例 4: - - x: [M, K], y: [K, N] - out: [M, N] - - * 例 5: - - x: [B, M, K], y: [K] - out: [B, M] - - * 例 6: - - x: [K], y: [K] - out: [1] - - * 例 7: - - x: [M], y: [N] - out: [M, N] - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - x = fluid.layers.data(name='x', shape=[2, 3], dtype='float32') - y = fluid.layers.data(name='y', shape=[3, 2], dtype='float32') - output = fluid.layers.matmul(x, y, True, True) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - input_x = numpy.ones([2, 3]).astype(numpy.float32) - input_y = numpy.ones([3, 2]).astype(numpy.float32) - res, = exe.run(fluid.default_main_program(), - feed={'x':input_x, 'y':input_y}, - fetch_list=[output]) - print(res) - ''' - Output Value: - [[2. 2. 2.] - [2. 2. 2.] - [2. 2. 2.]] - ''' diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/reshape_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/reshape_cn.rst deleted file mode 100644 index a5e39dff07f19832e9468f7deea5cc43b366a33d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/reshape_cn.rst +++ /dev/null @@ -1,88 +0,0 @@ -.. _cn_api_fluid_layers_reshape: - -reshape -------------------------------- - -.. py:function:: paddle.fluid.layers.reshape(x, shape, actual_shape=None, act=None, inplace=False, name=None) - -:alias_main: paddle.reshape -:alias: paddle.reshape,paddle.tensor.reshape,paddle.tensor.manipulation.reshape -:old_api: paddle.fluid.layers.reshape - - - -该OP在保持输入 ``x`` 数据不变的情况下,改变 ``x`` 的形状。 - -目标形状可由 ``shape`` 或 ``actual_shape`` 给出。当两个属性同时被指定时,``actual_shape`` 的优先级高于 ``shape`` ,但此时 ``shape`` 只能是整数列表或元组,且在编译时仍然应该正确地设置 ``shape`` 以保证形状推断。 - -在指定目标shape时存在一些技巧: - -.. code-block:: text - - 1. -1 表示这个维度的值是从x的元素总数和剩余维度推断出来的。因此,有且只有一个维度可以被设置为-1。 - 2. 0 表示实际的维数是从x的对应维数中复制出来的,因此shape中0的索引值不能超过x的维度。 - - -这里有一些例子来解释它们: - -.. code-block:: text - - 1. 给定一个形状为[2,4,6]的三维张量x,目标形状为[6,8],则将x变换为形状为[6,8]的2-D张量,且x的数据保持不变。 - 2. 给定一个形状为[2,4,6]的三维张量x,目标形状为[2,3,-1,2],则将x变换为形状为[2,3,4,2]的4-D张量,且x的数据保持不变。在这种情况下,目标形状的一个维度被设置为-1,这个维度的值是从x的元素总数和剩余维度推断出来的。 - 3. 给定一个形状为[2,4,6]的三维张量x,目标形状为[-1,0,3,2],则将x变换为形状为[2,4,3,2]的4-D张量,且x的数据保持不变。在这种情况下,0对应位置的维度值将从x的对应维数中复制,-1对应位置的维度值由x的元素总数和剩余维度推断出来。 - -**注意:参数** ``actual_shape`` **之后将被舍弃,只用参数** ``shape`` **来表示目标形状。** - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32``,或 ``int64``。 - - **shape** (list|tuple|Variable)- 数据类型是 ``int32`` 。定义目标形状。目标形状最多只能有一个维度为-1。如果 ``shape`` 的类型是 list 或 tuple, 它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``shape`` 的类型是 ``Variable``,则是1-D的 ``Tensor`` 或 ``LoDTensor``。 - - **actual_shape** (Variable,可选)- 1-D ``Tensor`` 或 ``LoDTensor``,默认值:`None`。如果 ``actual_shape`` 被提供,``actual_shape`` 具有比 ``shape`` 更高的优先级,此时 ``shape`` 只能是整数列表或元组。更新提示:``actual_shape`` 在未来的版本中将被舍弃,并用 ``shape`` 代替。 - - **act** (str,可选)- 对形状改变后的输入变量做非线性激活操作,激活函数类型可以参考 :ref:`api_guide_activations` 。默认值: ``None``。 - - **inplace** (bool,可选)- 如果 ``inplace`` 为 ``True``,则 ``layers.reshape`` 的输入和输出是同一个变量,否则 ``layers.reshape`` 的输入和输出是不同的变量。默认值:``False``。请注意,如果 ``x`` 是多个OP的输入,则 ``inplace`` 必须为False。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:多维 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``input`` 相同。如果 ``inplace`` 为 ``False``,则返回一个新的变量,否则将改变输入变量 ``x`` 自身。如果 ``act`` 为 ``None``,则直接返回形状改变后的变量,否则返回经过激活函数后的变量。 - -返回类型:Variable。 - -抛出异常: - - :code:`TypeError`:``actual_shape`` 的类型应该是 Variable 或 None。 - - :code:`TypeError`:``starts`` 的类型应该是list、tuple 或 Variable。 - - :code:`ValueError`:``shape`` 中至多有一个元素可以是-1。 - - :code:`ValueError`:``shape`` 中的元素为0时,对应的维度应该小于等于``x``的维度。 - - :code:`ValueError`:``shape`` 中的元素除了-1之外,都应该是非负值。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # example 1: - # attr shape is a list which doesn't contain tensor Variable. - data_1 = fluid.data( - name='data_1', shape=[2, 4, 6], dtype='float32') - reshaped_1 = fluid.layers.reshape( - x=data_1, shape=[-1, 0, 3, 2], inplace=True) - # the shape of reshaped_1 is [2,4,3,2]. - - # example 2: - # attr shape is a list which contains tensor Variable. - data_2 = fluid.layers.fill_constant([2,25], "int32", 3) - dim = fluid.layers.fill_constant([1], "int32", 5) - reshaped_2 = fluid.layers.reshape(data_2, shape=[dim, 10]) - # the shape of reshaped_2 is [5,10]. - - # example 3: - data_3 = fluid.data( - name="data_3", shape=[2,4,6], dtype='float32') - reshaped_3 = fluid.layers.reshape(x=data_3, shape=[6,8]) - # the shape of reshaped_3 is [6,8]. - - - - - - - - diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/sum_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/sum_cn.rst deleted file mode 100644 index 89825e0b4254f68efd155310f7db1edbd391c82e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/sum_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_tensor_sum: - -sum -------------------------------- - -.. py:function:: paddle.sum(input, dim=None, dtype=None, keep_dim=False, name=None) - -:alias_main: paddle.sum -:alias: paddle.sum,paddle.tensor.sum,paddle.tensor.math.sum -:update_api: paddle.fluid.layers.reduce_sum - - - -该OP是对指定维度上的Tensor元素进行求和运算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)- 求和运算的维度。如果为None,则计算所有元素的和并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **dtype** (str , 可选)- 输出变量的数据类型。若参数为空,则输出变量的数据类型和输入变量相同,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行求和运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - out1 = paddle.sum(x) # [3.5] - out2 = paddle.sum(x, dim=0) # [0.3, 0.5, 1.1, 1.6] - out3 = paddle.sum(x, dim=-1) # [1.9, 1.6] - out4 = paddle.sum(x, dim=1, keep_dim=True) # [[1.9], [1.6]] - - # y 是一个shape为[2, 2, 2]的Tensor元素如下: - # [[[1, 2], [3, 4]], - # [[5, 6], [7, 8]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - out5 = paddle.sum(y, dim=[1, 2]) # [10, 26] - out6 = paddle.sum(y, dim=[0, 1]) # [16, 20] diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/trace_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/trace_cn.rst deleted file mode 100644 index 53fb3edc54ffac22508d792ea34971c85d50b471..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/trace_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_tensor_trace: - -trace -------------------------------- - -.. py:function:: paddle.trace(x, offset=0, axis1=0, axis2=1, name=None) - -:alias_main: paddle.trace -:alias: paddle.trace, paddle.tensor.trace, paddle.tensor.math.trace - - - -该 OP 计算输入 Tensor 在指定平面上的对角线元素之和,并输出相应的计算结果。 - -如果输入是 2D Tensor,则返回对角线元素之和。 - -如果输入的维度大于 2D,则返回一个由对角线元素之和组成的数组,其中对角线从由 axis1 和 axis2 指定的二维平面中获得。默认由输入的前两维组成获得对角线的 2D 平面。 - -参数 ``offset`` 确定从指定的二维平面中获取对角线的位置: - - - 如果 offset = 0,则取主对角线。 - - 如果 offset > 0,则取主对角线右上的对角线。 - - 如果 offset < 0,则取主对角线左下的对角线。 - -参数: - - **x** (Variable)- 输入张量,至少为 2D 数组,支持数据类型为 float32,float64,int32,int64。 - - **offset** (int ,可选)- 从指定的二维平面中获取对角线的位置,默认值为 0,既主对角线。 - - **axis1** (int , 可选)- 获取对角线的二维平面的第一维,默认值为 0。 - - **axis2** (int , 可选)- 获取对角线的二维平面的第二维,默认值为 1。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 指定二维平面的对角线元素之和。数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle - import numpy as np - - case1 = np.random.randn(2, 3).astype('float32') - case2 = np.random.randn(3, 10, 10).astype('float32') - case3 = np.random.randn(3, 10, 5, 10).astype('float32') - - paddle.enable_imperative() - case1 = paddle.imperative.to_variable(case1) - case2 = paddle.imperative.to_variable(case2) - case3 = paddle.imperative.to_variable(case3) - data1 = paddle.trace(case1) # data1.shape = [1] - data2 = paddle.trace(case2, offset=1, axis1=1, axis2=2) # data2.shape = [3] - data3 = paddle.trace(case3, offset=-3, axis1=1, axis2=-1) # data2.shape = [3, 5] diff --git a/doc/paddle/api/paddle/incubate/complex/tensor/transpose_cn.rst b/doc/paddle/api/paddle/incubate/complex/tensor/transpose_cn.rst deleted file mode 100644 index b9d6bfb644cbd2210c2ab22818c4ca0609eba906..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/tensor/transpose_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_transpose: - -transpose -------------------------------- - -.. py:function:: paddle.fluid.layers.transpose(x,perm,name=None) - -:alias_main: paddle.transpose -:alias: paddle.transpose,paddle.tensor.transpose,paddle.tensor.linalg.transpose,paddle.tensor.manipulation.transpose -:old_api: paddle.fluid.layers.transpose - - - -该OP根据perm对输入的多维Tensor进行数据重排。返回多维Tensor的第i维对应输入Tensor的perm[i]维。 - -参数: - - **x** (Variable) - 输入:x:[N_1, N_2, ..., N_k, D]多维Tensor,可选的数据类型为float16, float32, float64, int32, int64。 - - **perm** (list) - perm长度必须和X的维度相同,并依照perm中数据进行重排。 - - **name** (str) - 该层名称(可选)。 - -返回: 多维Tensor - -返回类型:Variable - -**示例**: - -.. code-block:: python - - x = [[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] - [[13 14 15 16] [17 18 19 20] [21 22 23 24]]] - shape(x) = [2,3,4] - - # 例0 - perm0 = [1,0,2] - y_perm0 = [[[ 1 2 3 4] [13 14 15 16]] - [[ 5 6 7 8] [17 18 19 20]] - [[ 9 10 11 12] [21 22 23 24]]] - shape(y_perm0) = [3,2,4] - - # 例1 - perm1 = [2,1,0] - y_perm1 = [[[ 1 13] [ 5 17] [ 9 21]] - [[ 2 14] [ 6 18] [10 22]] - [[ 3 15] [ 7 19] [11 23]] - [[ 4 16] [ 8 20] [12 24]]] - shape(y_perm1) = [4,3,2] - - -**代码示例**: - -.. code-block:: python - - # 请使用 append_batch_size=False 来避免 - # 在数据张量中添加多余的batch大小维度 - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 3, 4], - dtype='float32', append_batch_size=False) - x_transposed = fluid.layers.transpose(x, perm=[1, 0, 2]) - print(x_transposed.shape) - #(3L, 2L, 4L) - - - diff --git a/doc/paddle/api/paddle/incubate/complex/trace_cn.rst b/doc/paddle/api/paddle/incubate/complex/trace_cn.rst deleted file mode 100644 index 53fb3edc54ffac22508d792ea34971c85d50b471..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/trace_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_tensor_trace: - -trace -------------------------------- - -.. py:function:: paddle.trace(x, offset=0, axis1=0, axis2=1, name=None) - -:alias_main: paddle.trace -:alias: paddle.trace, paddle.tensor.trace, paddle.tensor.math.trace - - - -该 OP 计算输入 Tensor 在指定平面上的对角线元素之和,并输出相应的计算结果。 - -如果输入是 2D Tensor,则返回对角线元素之和。 - -如果输入的维度大于 2D,则返回一个由对角线元素之和组成的数组,其中对角线从由 axis1 和 axis2 指定的二维平面中获得。默认由输入的前两维组成获得对角线的 2D 平面。 - -参数 ``offset`` 确定从指定的二维平面中获取对角线的位置: - - - 如果 offset = 0,则取主对角线。 - - 如果 offset > 0,则取主对角线右上的对角线。 - - 如果 offset < 0,则取主对角线左下的对角线。 - -参数: - - **x** (Variable)- 输入张量,至少为 2D 数组,支持数据类型为 float32,float64,int32,int64。 - - **offset** (int ,可选)- 从指定的二维平面中获取对角线的位置,默认值为 0,既主对角线。 - - **axis1** (int , 可选)- 获取对角线的二维平面的第一维,默认值为 0。 - - **axis2** (int , 可选)- 获取对角线的二维平面的第二维,默认值为 1。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 指定二维平面的对角线元素之和。数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle - import numpy as np - - case1 = np.random.randn(2, 3).astype('float32') - case2 = np.random.randn(3, 10, 10).astype('float32') - case3 = np.random.randn(3, 10, 5, 10).astype('float32') - - paddle.enable_imperative() - case1 = paddle.imperative.to_variable(case1) - case2 = paddle.imperative.to_variable(case2) - case3 = paddle.imperative.to_variable(case3) - data1 = paddle.trace(case1) # data1.shape = [1] - data2 = paddle.trace(case2, offset=1, axis1=1, axis2=2) # data2.shape = [3] - data3 = paddle.trace(case3, offset=-3, axis1=1, axis2=-1) # data2.shape = [3, 5] diff --git a/doc/paddle/api/paddle/incubate/complex/transpose_cn.rst b/doc/paddle/api/paddle/incubate/complex/transpose_cn.rst deleted file mode 100644 index b9d6bfb644cbd2210c2ab22818c4ca0609eba906..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/complex/transpose_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_transpose: - -transpose -------------------------------- - -.. py:function:: paddle.fluid.layers.transpose(x,perm,name=None) - -:alias_main: paddle.transpose -:alias: paddle.transpose,paddle.tensor.transpose,paddle.tensor.linalg.transpose,paddle.tensor.manipulation.transpose -:old_api: paddle.fluid.layers.transpose - - - -该OP根据perm对输入的多维Tensor进行数据重排。返回多维Tensor的第i维对应输入Tensor的perm[i]维。 - -参数: - - **x** (Variable) - 输入:x:[N_1, N_2, ..., N_k, D]多维Tensor,可选的数据类型为float16, float32, float64, int32, int64。 - - **perm** (list) - perm长度必须和X的维度相同,并依照perm中数据进行重排。 - - **name** (str) - 该层名称(可选)。 - -返回: 多维Tensor - -返回类型:Variable - -**示例**: - -.. code-block:: python - - x = [[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] - [[13 14 15 16] [17 18 19 20] [21 22 23 24]]] - shape(x) = [2,3,4] - - # 例0 - perm0 = [1,0,2] - y_perm0 = [[[ 1 2 3 4] [13 14 15 16]] - [[ 5 6 7 8] [17 18 19 20]] - [[ 9 10 11 12] [21 22 23 24]]] - shape(y_perm0) = [3,2,4] - - # 例1 - perm1 = [2,1,0] - y_perm1 = [[[ 1 13] [ 5 17] [ 9 21]] - [[ 2 14] [ 6 18] [10 22]] - [[ 3 15] [ 7 19] [11 23]] - [[ 4 16] [ 8 20] [12 24]]] - shape(y_perm1) = [4,3,2] - - -**代码示例**: - -.. code-block:: python - - # 请使用 append_batch_size=False 来避免 - # 在数据张量中添加多余的batch大小维度 - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 3, 4], - dtype='float32', append_batch_size=False) - x_transposed = fluid.layers.transpose(x, perm=[1, 0, 2]) - print(x_transposed.shape) - #(3L, 2L, 4L) - - - diff --git a/doc/paddle/api/paddle/incubate/hapi/Model_cn.rst b/doc/paddle/api/paddle/incubate/hapi/Model_cn.rst deleted file mode 100644 index 4e147a58a436901c93e9363cf48e62ecc434a4b7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/Model_cn.rst +++ /dev/null @@ -1,530 +0,0 @@ -.. _cn_api_paddle_incubate_hapi_model_Model: - -Model -------------------------------- - -.. py:class:: paddle.incubate.hapi.model.Model() - - ``Model`` 对象是一个具备训练、测试、推理的神经网络。该对象同时支持静态图和动态图模式,通过 ``fluid.enable_dygraph()`` 来切换。需要注意的是,该开关需要在实例化 ``Model`` 对象之前使用。 在静态图模式下,输入需要使用 ``hapi.Input`` 来定义。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input, set_device - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.metrics import Accuracy - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - device = set_device('cpu') - - # 切换成动态图模式,默认使用静态图模式 - fluid.enable_dygraph(device) - - model = MyModel() - optim = fluid.optimizer.SGD(learning_rate=1e-3, - parameter_list=model.parameters()) - - inputs = [Input([None, 784], 'float32', name='x')] - labels = [Input([None, 1], 'int64', name='label')] - - mnist_data = MNIST(mode='train', chw_format=False) - model.prepare(optim, - CrossEntropy(average=True), - Accuracy(), - inputs, - labels, - device=device) - model.fit(mnist_data, epochs=2, batch_size=32, verbose=1) - - -.. py:function:: train_batch(inputs, labels=None) - -在一个批次的数据上进行训练。 - -参数: - - **inputs** (list) - 1维列表,每个元素都是一批次的输入数据,数据类型为 ``numpy.ndarray``。 - - **labels** (list) - 1维列表,每个元素都是一批次的输入标签,数据类型为 ``numpy.ndarray`` 。默认值:None。 - -返回:一个列表,包含了训练损失函数的值,如果定义了评估函数,还会包含评估函数得到的指标。 - -返回类型:list - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - from paddle.fluid.dygraph import Linear - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = Linear(784, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - - model = MyModel() - optim = fluid.optimizer.SGD(learning_rate=1e-3, - parameter_list=model.parameters()) - - inputs = [Input([None, 784], 'float32', name='x')] - labels = [Input([None, 1], 'int64', name='label')] - model.prepare(optim, - CrossEntropy(average=True), - inputs=inputs, - labels=labels, - device=device) - data = np.random.random(size=(4,784)).astype(np.float32) - label = np.random.randint(0, 10, size=(4, 1)).astype(np.int64) - loss = model.train_batch([data], [label]) - print(loss) - -.. py:function:: eval_batch(inputs, labels=None) - -在一个批次的数据上进行评估。 - -参数: - - **inputs** (list) - 1维列表,每个元素都是一批次的输入数据,数据类型为 ``numpy.ndarray`` 。 - - **labels** (list) - 1维列表,每个元素都是一批次的输入标签,数据类型为 ``numpy.ndarray`` 。默认值:None。 - -返回:一个列表,包含了评估损失函数的值,如果定义了评估函数,还会包含评估函数得到的指标。 - -返回类型:list - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - - model = MyModel() - optim = fluid.optimizer.SGD(learning_rate=1e-3, - parameter_list=model.parameters()) - - inputs = [Input([None, 784], 'float32', name='x')] - labels = [Input([None, 1], 'int64', name='label')] - model.prepare(optim, - CrossEntropy(average=True), - inputs=inputs, - labels=labels, - device=device) - data = np.random.random(size=(4,784)).astype(np.float32) - label = np.random.randint(0, 10, size=(4, 1)).astype(np.int64) - loss = model.eval_batch([data], [label]) - print(loss) - -.. py:function:: test_batch(inputs) - -在一个批次的数据上进行测试。 - -参数: - - **inputs** (list) - 1维列表,每个元素都是一批次的输入数据,数据类型为 ``numpy.ndarray`` 。 - -返回:一个列表,包含了模型的输出。 - -返回类型:list - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - - model = MyModel() - inputs = [Input([None, 784], 'float32', name='x')] - model.prepare(inputs=inputs, - device=device) - data = np.random.random(size=(4,784)).astype(np.float32) - out = model.eval_batch([data]) - print(out) - -.. py:function:: save(path): - -将模型的参数和训练过程中优化器的信息保存到指定的路径。所有的模型参数都会保存到一个后缀为 ``.pdparams`` 的文件中。 -所有的优化器信息和相关参数,比如 ``Adam`` 优化器中的 ``beta1`` , ``beta2`` ,``momentum`` 等,都会被保存到后缀为 ``.pdopt`` -的文件中。 - -参数: - - **path** (str) - 保存的文件名前缀。格式如 ``dirname/file_prefix`` 或者 ``file_prefix`` 。 - -返回:None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.incubate.hapi.model import Model, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - model = MyModel() - model.save('checkpoint/test') - -.. py:function:: load(path, skip_mismatch=False, reset_optimizer=False): - -从指定的文件中载入模型参数和优化器参数,如果不想恢复优化器参数信息,优化器信息文件可以不存在。 - -参数: - - **path** (str) - 保存参数或优化器信息的文件前缀。格式如 ``path.pdparams`` 或者 ``path.pdopt`` ,后者是非必要的,如果不想恢复优化器信息。 - - **skip_mismatch** (bool) - 是否需要跳过保存的模型文件中形状或名称不匹配的参数,设置为 ``False`` 时,当遇到不匹配的参数会抛出一个错误。默认值:False。 - - **reset_optimizer** (bool) - 设置为 ``True`` 时,会忽略提供的优化器信息文件。否则会载入提供的优化器信息。默认值:False。 - -返回:None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.incubate.hapi.model import Model, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - model = MyModel() - model.load('checkpoint/test') - -.. py:function:: parameters(*args, **kwargs): - -返回一个包含模型所有参数的列表。 - -返回:在静态图中返回一个包含 ``Parameter`` 的列表,在动态图中返回一个包含 ``ParamBase`` 的列表。 - -**代码示例**: - -.. code-block:: python - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(20, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - fluid.enable_dygraph() - model = MyModel() - params = model.parameters() - - -.. py:function:: prepare(optimizer=None, loss_function=None, metrics=None, inputs=None, labels=None, device=None): - -返回一个包含模型所有参数的列表。 - -参数: - - **optimizer** (Optimizer) - 当训练模型的,该参数必须被设定。当评估或测试的时候,该参数可以不设定。默认值:None。 - - **loss_function** (Loss) - 当训练模型的,该参数必须被设定。默认值:None。 - - **metrics** (Metric|list[Metric]) - 当该参数被设定时,所有给定的评估方法会在训练和测试时被运行,并返回对应的指标。默认值:None。 - - **inputs** (Input|list[Input]|dict) - 网络的输入,对于静态图,该参数必须给定。默认值:None。 - - **labels** (Input|list[Input]|dict) - 标签,网络的输入。对于静态图,在训练和评估时该参数必须给定。默认值:None。 - - **device** (str|fluid.CUDAPlace|fluid.CPUPlace|None) - 网络运行的设备,当不指定时,会根据环境和安装的 ``paddle`` 自动选择。默认值:None。 - -返回:None - -.. py:function:: fit(train_data=None, eval_data=None, batch_size=1, epochs=1, eval_freq=1, log_freq=10, save_dir=None, save_freq=1, verbose=2, drop_last=False, shuffle=True, num_workers=0, callbacks=None): - -训练模型。当 ``eval_data`` 给定时,会在 ``eval_freq`` 个 ``epoch`` 后进行一次评估。 - -参数: - - **train_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。默认值:None。 - - **eval_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。当给定时,会在每个 ``epoch`` 后都会进行评估。默认值:None。 - - **batch_size** (int) - 训练数据或评估数据的批大小,当 ``train_data`` 或 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:1。 - - **epochs** (int) - 训练的轮数。默认值:1。 - - **eval_freq** (int) - 评估的频率,多少个 ``epoch`` 评估一次。默认值:1。 - - **log_freq** (int) - 日志打印的频率,多少个 ``step`` 打印一次日志。默认值:1。 - - **save_dir** (str|None) - 保存模型的文件夹,如果不设定,将不保存模型。默认值:None。 - - **save_freq** (int) - 保存模型的频率,多少个 ``epoch`` 保存一次模型。默认值:1。 - - **verbose** (int) - 可视化的模型,必须为0,1,2。当设定为0时,不打印日志,设定为1时,使用进度条的方式打印日志,设定为2时,一行一行地打印日志。默认值:2。 - - **drop_last** (bool) - 是否丢弃训练数据中最后几个不足设定的批次大小的数据。默认值:False。 - - **shuffle** (bool) - 是否对训练数据进行洗牌。当 ``train_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **num_workers** (int) - 启动子进程用于读取数据的数量。当 ``train_data`` 和 ``eval_data`` 都为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **callbacks** (Callback|list[Callback]|None) - ``Callback`` 的一个实例或实例列表。该参数不给定时,默认会插入 ``ProgBarLogger`` 和 ``ModelCheckpoint`` 这两个实例。默认值:None。 - -返回:None - -**代码示例**: - -.. code-block:: python - - # 1. 使用Dataset训练,并设置batch_size的例子。 - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input, set_device - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.models import LeNet - - dynamic = True - device = set_device('cpu') - fluid.enable_dygraph(device) if dynamic else None - - train_dataset = MNIST(mode='train') - val_dataset = MNIST(mode='test') - - inputs = [Input([None, 1, 28, 28], 'float32', name='image')] - labels = [Input([None, 1], 'int64', name='label')] - - model = LeNet() - optim = fluid.optimizer.Adam( - learning_rate=0.001, parameter_list=model.parameters()) - model.prepare( - optim, - CrossEntropy(), - Accuracy(topk=(1, 2)), - inputs=inputs, - labels=labels, - device=device) - model.fit(train_dataset, - val_dataset, - epochs=2, - batch_size=64, - save_dir='mnist_checkpoint') - - # 2. 使用Dataloader训练的例子. - - from paddle.incubate.hapi.model import Model, Input, set_device - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.models import LeNet - - dynamic = True - device = set_device('cpu') - fluid.enable_dygraph(device) if dynamic else None - - train_dataset = MNIST(mode='train') - train_loader = fluid.io.DataLoader(train_dataset, - places=device, batch_size=64) - val_dataset = MNIST(mode='test') - val_loader = fluid.io.DataLoader(val_dataset, - places=device, batch_size=64) - - inputs = [Input([None, 1, 28, 28], 'float32', name='image')] - labels = [Input([None, 1], 'int64', name='label')] - - model = LeNet() - optim = fluid.optimizer.Adam( - learning_rate=0.001, parameter_list=model.parameters()) - model.prepare( - optim, - CrossEntropy(), - Accuracy(topk=(1, 2)), - inputs=inputs, - labels=labels, - device=device) - model.fit(train_loader, - val_loader, - epochs=2, - save_dir='mnist_checkpoint') - - -.. py:function:: evaluate(eval_data, batch_size=1, log_freq=10, verbose=2, num_workers=0, callbacks=None): - -评估模型。 - -参数: - - **eval_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。默认值:None。 - - **batch_size** (int) - 训练数据或评估数据的批大小,当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:1。 - - **log_freq** (int) - 日志打印的频率,多少个 ``step`` 打印一次日志。默认值:1。 - - **verbose** (int) - 可视化的模型,必须为0,1,2。当设定为0时,不打印日志,设定为1时,使用进度条的方式打印日志,设定为2时,一行一行地打印日志。默认值:2。 - - **num_workers** (int) - 启动子进程用于读取数据的数量。当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **callbacks** (Callback|list[Callback]|None) - ``Callback`` 的一个实例或实例列表。该参数不给定时,默认会插入 ``ProgBarLogger`` 和 ``ModelCheckpoint`` 这两个实例。默认值:None。 - -返回:None - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.transforms import Compose,Resize - from paddle.incubate.hapi.vision.models import LeNet - from paddle.incubate.hapi.model import Input, set_device - - - inputs = [Input([-1, 1, 28, 28], 'float32', name='image')] - labels = [Input([None, 1], 'int64', name='label')] - - val_dataset = MNIST(mode='test') - - model = LeNet() - model.prepare(metrics=Accuracy(), inputs=inputs, labels=labels) - - result = model.evaluate(val_dataset, batch_size=64) - print(result) - - # imperative mode - import paddle.fluid.dygraph as dg - place = set_device('cpu') - with dg.guard(place) as g: - model = LeNet() - model.prepare(metrics=Accuracy(), inputs=inputs, labels=labels) - - result = model.evaluate(val_dataset, batch_size=64) - print(result) - - -.. py:function:: predict(test_data, batch_size=1, num_workers=0, stack_outputs=False, callbacks=None): - -模型预测。 - -参数: - - **test_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。默认值:None。 - - **batch_size** (int) - 训练数据或评估数据的批大小,当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:1。 - - **num_workers** (int) - 启动子进程用于读取数据的数量。当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **stack_outputs** (bool) - 是否将输出进行堆叠。默认值:False。 - - **callbacks** (Callback|list[Callback]|None) - ``Callback`` 的一个实例或实例列表。默认值:None。 - -返回:None - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.transforms import Compose,Resize - from paddle.incubate.hapi.vision.models import LeNet - from paddle.incubate.hapi.model import Input, set_device - - class MnistDataset(MNIST): - def __init__(self, mode, return_label=True): - super(MnistDataset, self).__init__(mode=mode) - self.return_label = return_label - - def __getitem__(self, idx): - img = np.reshape(self.images[idx], [1, 28, 28]) - if self.return_label: - return img, np.array(self.labels[idx]).astype('int64') - return img, - - def __len__(self): - return len(self.images) - - inputs = [Input([-1, 1, 28, 28], 'float32', name='image')] - - test_dataset = MnistDataset(mode='test', return_label=False) - - model = LeNet() - model.prepare(inputs=inputs) - - result = model.predict(test_dataset, batch_size=64) - print(result) - - # imperative mode - import paddle.fluid.dygraph as dg - place = set_device('cpu') - with dg.guard(place) as g: - model = LeNet() - model.prepare(inputs=inputs) - - result = model.predict(test_dataset, batch_size=64) - print(result) - - -.. py:function:: save_inference_model(save_dir, model_filename=None, params_filename=None, model_only=False): - -模型预测。 - -参数: - - **save_dir** (str) - 保存推理模型的路径。 - - **model_filename** (str,可选) - 保存预测模型结构 ``Inference Program`` 的文件名称。若设置为None,则使用 ``__model__`` 作为默认的文件名。默认值:None。 - - **params_filename** (str,可选) - 保存预测模型所有相关参数的文件名称。若设置为None,则模型参数被保存在单独的文件中。 - - **model_only** (bool,可选) - 若为True,则只保存预测模型的网络结构,而不保存预测模型的网络参数。默认值:False。 - -返回:None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - model = MyModel() - inputs = [Input([-1, 1, 784], 'float32', name='input')] - model.prepare(inputs=inputs) - - model.save_inference_model('checkpoint/test') \ No newline at end of file diff --git a/doc/paddle/api/paddle/incubate/hapi/metrics/Accuracy_cn.rst b/doc/paddle/api/paddle/incubate/hapi/metrics/Accuracy_cn.rst deleted file mode 100644 index 0cb6ea087033b21afd2cea5838f6d1366868b92f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/metrics/Accuracy_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_metrics_Accuracy: - -Accuracy -------------------------------- -.. py:class:: paddle.fluid.metrics.Accuracy(name=None) - - - - -该接口用来计算多个mini-batch的平均准确率。Accuracy对象有两个状态value和weight。Accuracy的定义参照 https://en.wikipedia.org/wiki/Accuracy_and_precision 。 - -参数: - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:初始化后的 ``Accuracy`` 对象 - -返回类型:Accuracy - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # 假设有batch_size = 128 - batch_size=128 - accuracy_manager = fluid.metrics.Accuracy() - # 假设第一个batch的准确率为0.9 - batch1_acc = 0.9 - accuracy_manager.update(value = batch1_acc, weight = batch_size) - print("expect accuracy: %.2f, get accuracy: %.2f" % (batch1_acc, accuracy_manager.eval())) - # 假设第二个batch的准确率为0.8 - batch2_acc = 0.8 - accuracy_manager.update(value = batch2_acc, weight = batch_size) - #batch1和batch2的联合准确率为(batch1_acc * batch_size + batch2_acc * batch_size) / batch_size / 2 - print("expect accuracy: %.2f, get accuracy: %.2f" % ((batch1_acc * batch_size + batch2_acc * batch_size) / batch_size / 2, accuracy_manager.eval())) - #重置accuracy_manager - accuracy_manager.reset() - #假设第三个batch的准确率为0.8 - batch3_acc = 0.8 - accuracy_manager.update(value = batch3_acc, weight = batch_size) - print("expect accuracy: %.2f, get accuracy: %.2f" % (batch3_acc, accuracy_manager.eval())) - -.. py:method:: update(value, weight) - -该函数使用输入的(value, weight)来累计更新Accuracy对象的对应状态,更新方式如下: - - .. math:: - \\ \begin{array}{l}{\text { self. value }+=\text { value } * \text { weight }} \\ {\text { self. weight }+=\text { weight }}\end{array} \\ - -参数: - - **value** (float|numpy.array) – mini-batch的正确率 - - **weight** (int|float) – mini-batch的大小 - -返回:无 - -.. py:method:: eval() - -该函数计算并返回累计的mini-batches的平均准确率。 - -返回:累计的mini-batches的平均准确率 - -返回类型:float或numpy.array - diff --git a/doc/paddle/api/paddle/incubate/hapi/metrics_cn.rst b/doc/paddle/api/paddle/incubate/hapi/metrics_cn.rst deleted file mode 100644 index 88e3ac22cc2187897a2fe9b7f817031980889a4c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/metrics_cn.rst +++ /dev/null @@ -1,19 +0,0 @@ -======================= -fluid.metrics -======================= - - - - -.. toctree:: - :maxdepth: 1 - - metrics_cn/Accuracy_cn.rst - metrics_cn/Auc_cn.rst - metrics_cn/ChunkEvaluator_cn.rst - metrics_cn/CompositeMetric_cn.rst - metrics_cn/DetectionMAP_cn.rst - metrics_cn/EditDistance_cn.rst - metrics_cn/MetricBase_cn.rst - metrics_cn/Precision_cn.rst - metrics_cn/Recall_cn.rst diff --git a/doc/paddle/api/paddle/incubate/hapi/model/Model_cn.rst b/doc/paddle/api/paddle/incubate/hapi/model/Model_cn.rst deleted file mode 100644 index 4e147a58a436901c93e9363cf48e62ecc434a4b7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/model/Model_cn.rst +++ /dev/null @@ -1,530 +0,0 @@ -.. _cn_api_paddle_incubate_hapi_model_Model: - -Model -------------------------------- - -.. py:class:: paddle.incubate.hapi.model.Model() - - ``Model`` 对象是一个具备训练、测试、推理的神经网络。该对象同时支持静态图和动态图模式,通过 ``fluid.enable_dygraph()`` 来切换。需要注意的是,该开关需要在实例化 ``Model`` 对象之前使用。 在静态图模式下,输入需要使用 ``hapi.Input`` 来定义。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input, set_device - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.metrics import Accuracy - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - device = set_device('cpu') - - # 切换成动态图模式,默认使用静态图模式 - fluid.enable_dygraph(device) - - model = MyModel() - optim = fluid.optimizer.SGD(learning_rate=1e-3, - parameter_list=model.parameters()) - - inputs = [Input([None, 784], 'float32', name='x')] - labels = [Input([None, 1], 'int64', name='label')] - - mnist_data = MNIST(mode='train', chw_format=False) - model.prepare(optim, - CrossEntropy(average=True), - Accuracy(), - inputs, - labels, - device=device) - model.fit(mnist_data, epochs=2, batch_size=32, verbose=1) - - -.. py:function:: train_batch(inputs, labels=None) - -在一个批次的数据上进行训练。 - -参数: - - **inputs** (list) - 1维列表,每个元素都是一批次的输入数据,数据类型为 ``numpy.ndarray``。 - - **labels** (list) - 1维列表,每个元素都是一批次的输入标签,数据类型为 ``numpy.ndarray`` 。默认值:None。 - -返回:一个列表,包含了训练损失函数的值,如果定义了评估函数,还会包含评估函数得到的指标。 - -返回类型:list - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - from paddle.fluid.dygraph import Linear - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = Linear(784, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - - model = MyModel() - optim = fluid.optimizer.SGD(learning_rate=1e-3, - parameter_list=model.parameters()) - - inputs = [Input([None, 784], 'float32', name='x')] - labels = [Input([None, 1], 'int64', name='label')] - model.prepare(optim, - CrossEntropy(average=True), - inputs=inputs, - labels=labels, - device=device) - data = np.random.random(size=(4,784)).astype(np.float32) - label = np.random.randint(0, 10, size=(4, 1)).astype(np.int64) - loss = model.train_batch([data], [label]) - print(loss) - -.. py:function:: eval_batch(inputs, labels=None) - -在一个批次的数据上进行评估。 - -参数: - - **inputs** (list) - 1维列表,每个元素都是一批次的输入数据,数据类型为 ``numpy.ndarray`` 。 - - **labels** (list) - 1维列表,每个元素都是一批次的输入标签,数据类型为 ``numpy.ndarray`` 。默认值:None。 - -返回:一个列表,包含了评估损失函数的值,如果定义了评估函数,还会包含评估函数得到的指标。 - -返回类型:list - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - - model = MyModel() - optim = fluid.optimizer.SGD(learning_rate=1e-3, - parameter_list=model.parameters()) - - inputs = [Input([None, 784], 'float32', name='x')] - labels = [Input([None, 1], 'int64', name='label')] - model.prepare(optim, - CrossEntropy(average=True), - inputs=inputs, - labels=labels, - device=device) - data = np.random.random(size=(4,784)).astype(np.float32) - label = np.random.randint(0, 10, size=(4, 1)).astype(np.int64) - loss = model.eval_batch([data], [label]) - print(loss) - -.. py:function:: test_batch(inputs) - -在一个批次的数据上进行测试。 - -参数: - - **inputs** (list) - 1维列表,每个元素都是一批次的输入数据,数据类型为 ``numpy.ndarray`` 。 - -返回:一个列表,包含了模型的输出。 - -返回类型:list - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - - model = MyModel() - inputs = [Input([None, 784], 'float32', name='x')] - model.prepare(inputs=inputs, - device=device) - data = np.random.random(size=(4,784)).astype(np.float32) - out = model.eval_batch([data]) - print(out) - -.. py:function:: save(path): - -将模型的参数和训练过程中优化器的信息保存到指定的路径。所有的模型参数都会保存到一个后缀为 ``.pdparams`` 的文件中。 -所有的优化器信息和相关参数,比如 ``Adam`` 优化器中的 ``beta1`` , ``beta2`` ,``momentum`` 等,都会被保存到后缀为 ``.pdopt`` -的文件中。 - -参数: - - **path** (str) - 保存的文件名前缀。格式如 ``dirname/file_prefix`` 或者 ``file_prefix`` 。 - -返回:None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.incubate.hapi.model import Model, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - model = MyModel() - model.save('checkpoint/test') - -.. py:function:: load(path, skip_mismatch=False, reset_optimizer=False): - -从指定的文件中载入模型参数和优化器参数,如果不想恢复优化器参数信息,优化器信息文件可以不存在。 - -参数: - - **path** (str) - 保存参数或优化器信息的文件前缀。格式如 ``path.pdparams`` 或者 ``path.pdopt`` ,后者是非必要的,如果不想恢复优化器信息。 - - **skip_mismatch** (bool) - 是否需要跳过保存的模型文件中形状或名称不匹配的参数,设置为 ``False`` 时,当遇到不匹配的参数会抛出一个错误。默认值:False。 - - **reset_optimizer** (bool) - 设置为 ``True`` 时,会忽略提供的优化器信息文件。否则会载入提供的优化器信息。默认值:False。 - -返回:None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.incubate.hapi.model import Model, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - device = set_device('cpu') - fluid.enable_dygraph(device) - model = MyModel() - model.load('checkpoint/test') - -.. py:function:: parameters(*args, **kwargs): - -返回一个包含模型所有参数的列表。 - -返回:在静态图中返回一个包含 ``Parameter`` 的列表,在动态图中返回一个包含 ``ParamBase`` 的列表。 - -**代码示例**: - -.. code-block:: python - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input, set_device - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(20, 10, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - fluid.enable_dygraph() - model = MyModel() - params = model.parameters() - - -.. py:function:: prepare(optimizer=None, loss_function=None, metrics=None, inputs=None, labels=None, device=None): - -返回一个包含模型所有参数的列表。 - -参数: - - **optimizer** (Optimizer) - 当训练模型的,该参数必须被设定。当评估或测试的时候,该参数可以不设定。默认值:None。 - - **loss_function** (Loss) - 当训练模型的,该参数必须被设定。默认值:None。 - - **metrics** (Metric|list[Metric]) - 当该参数被设定时,所有给定的评估方法会在训练和测试时被运行,并返回对应的指标。默认值:None。 - - **inputs** (Input|list[Input]|dict) - 网络的输入,对于静态图,该参数必须给定。默认值:None。 - - **labels** (Input|list[Input]|dict) - 标签,网络的输入。对于静态图,在训练和评估时该参数必须给定。默认值:None。 - - **device** (str|fluid.CUDAPlace|fluid.CPUPlace|None) - 网络运行的设备,当不指定时,会根据环境和安装的 ``paddle`` 自动选择。默认值:None。 - -返回:None - -.. py:function:: fit(train_data=None, eval_data=None, batch_size=1, epochs=1, eval_freq=1, log_freq=10, save_dir=None, save_freq=1, verbose=2, drop_last=False, shuffle=True, num_workers=0, callbacks=None): - -训练模型。当 ``eval_data`` 给定时,会在 ``eval_freq`` 个 ``epoch`` 后进行一次评估。 - -参数: - - **train_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。默认值:None。 - - **eval_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。当给定时,会在每个 ``epoch`` 后都会进行评估。默认值:None。 - - **batch_size** (int) - 训练数据或评估数据的批大小,当 ``train_data`` 或 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:1。 - - **epochs** (int) - 训练的轮数。默认值:1。 - - **eval_freq** (int) - 评估的频率,多少个 ``epoch`` 评估一次。默认值:1。 - - **log_freq** (int) - 日志打印的频率,多少个 ``step`` 打印一次日志。默认值:1。 - - **save_dir** (str|None) - 保存模型的文件夹,如果不设定,将不保存模型。默认值:None。 - - **save_freq** (int) - 保存模型的频率,多少个 ``epoch`` 保存一次模型。默认值:1。 - - **verbose** (int) - 可视化的模型,必须为0,1,2。当设定为0时,不打印日志,设定为1时,使用进度条的方式打印日志,设定为2时,一行一行地打印日志。默认值:2。 - - **drop_last** (bool) - 是否丢弃训练数据中最后几个不足设定的批次大小的数据。默认值:False。 - - **shuffle** (bool) - 是否对训练数据进行洗牌。当 ``train_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **num_workers** (int) - 启动子进程用于读取数据的数量。当 ``train_data`` 和 ``eval_data`` 都为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **callbacks** (Callback|list[Callback]|None) - ``Callback`` 的一个实例或实例列表。该参数不给定时,默认会插入 ``ProgBarLogger`` 和 ``ModelCheckpoint`` 这两个实例。默认值:None。 - -返回:None - -**代码示例**: - -.. code-block:: python - - # 1. 使用Dataset训练,并设置batch_size的例子。 - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input, set_device - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.models import LeNet - - dynamic = True - device = set_device('cpu') - fluid.enable_dygraph(device) if dynamic else None - - train_dataset = MNIST(mode='train') - val_dataset = MNIST(mode='test') - - inputs = [Input([None, 1, 28, 28], 'float32', name='image')] - labels = [Input([None, 1], 'int64', name='label')] - - model = LeNet() - optim = fluid.optimizer.Adam( - learning_rate=0.001, parameter_list=model.parameters()) - model.prepare( - optim, - CrossEntropy(), - Accuracy(topk=(1, 2)), - inputs=inputs, - labels=labels, - device=device) - model.fit(train_dataset, - val_dataset, - epochs=2, - batch_size=64, - save_dir='mnist_checkpoint') - - # 2. 使用Dataloader训练的例子. - - from paddle.incubate.hapi.model import Model, Input, set_device - from paddle.incubate.hapi.loss import CrossEntropy - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.models import LeNet - - dynamic = True - device = set_device('cpu') - fluid.enable_dygraph(device) if dynamic else None - - train_dataset = MNIST(mode='train') - train_loader = fluid.io.DataLoader(train_dataset, - places=device, batch_size=64) - val_dataset = MNIST(mode='test') - val_loader = fluid.io.DataLoader(val_dataset, - places=device, batch_size=64) - - inputs = [Input([None, 1, 28, 28], 'float32', name='image')] - labels = [Input([None, 1], 'int64', name='label')] - - model = LeNet() - optim = fluid.optimizer.Adam( - learning_rate=0.001, parameter_list=model.parameters()) - model.prepare( - optim, - CrossEntropy(), - Accuracy(topk=(1, 2)), - inputs=inputs, - labels=labels, - device=device) - model.fit(train_loader, - val_loader, - epochs=2, - save_dir='mnist_checkpoint') - - -.. py:function:: evaluate(eval_data, batch_size=1, log_freq=10, verbose=2, num_workers=0, callbacks=None): - -评估模型。 - -参数: - - **eval_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。默认值:None。 - - **batch_size** (int) - 训练数据或评估数据的批大小,当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:1。 - - **log_freq** (int) - 日志打印的频率,多少个 ``step`` 打印一次日志。默认值:1。 - - **verbose** (int) - 可视化的模型,必须为0,1,2。当设定为0时,不打印日志,设定为1时,使用进度条的方式打印日志,设定为2时,一行一行地打印日志。默认值:2。 - - **num_workers** (int) - 启动子进程用于读取数据的数量。当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **callbacks** (Callback|list[Callback]|None) - ``Callback`` 的一个实例或实例列表。该参数不给定时,默认会插入 ``ProgBarLogger`` 和 ``ModelCheckpoint`` 这两个实例。默认值:None。 - -返回:None - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.transforms import Compose,Resize - from paddle.incubate.hapi.vision.models import LeNet - from paddle.incubate.hapi.model import Input, set_device - - - inputs = [Input([-1, 1, 28, 28], 'float32', name='image')] - labels = [Input([None, 1], 'int64', name='label')] - - val_dataset = MNIST(mode='test') - - model = LeNet() - model.prepare(metrics=Accuracy(), inputs=inputs, labels=labels) - - result = model.evaluate(val_dataset, batch_size=64) - print(result) - - # imperative mode - import paddle.fluid.dygraph as dg - place = set_device('cpu') - with dg.guard(place) as g: - model = LeNet() - model.prepare(metrics=Accuracy(), inputs=inputs, labels=labels) - - result = model.evaluate(val_dataset, batch_size=64) - print(result) - - -.. py:function:: predict(test_data, batch_size=1, num_workers=0, stack_outputs=False, callbacks=None): - -模型预测。 - -参数: - - **test_data** (Dataset|DataLoader) - 一个可迭代的数据源,推荐给定一个 ``paddle paddle.io.Dataset`` 或 ``paddle.io.Dataloader`` 的实例。默认值:None。 - - **batch_size** (int) - 训练数据或评估数据的批大小,当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:1。 - - **num_workers** (int) - 启动子进程用于读取数据的数量。当 ``eval_data`` 为 ``DataLoader`` 的实例时,该参数会被忽略。默认值:True。 - - **stack_outputs** (bool) - 是否将输出进行堆叠。默认值:False。 - - **callbacks** (Callback|list[Callback]|None) - ``Callback`` 的一个实例或实例列表。默认值:None。 - -返回:None - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle.incubate.hapi.metrics import Accuracy - from paddle.incubate.hapi.datasets import MNIST - from paddle.incubate.hapi.vision.transforms import Compose,Resize - from paddle.incubate.hapi.vision.models import LeNet - from paddle.incubate.hapi.model import Input, set_device - - class MnistDataset(MNIST): - def __init__(self, mode, return_label=True): - super(MnistDataset, self).__init__(mode=mode) - self.return_label = return_label - - def __getitem__(self, idx): - img = np.reshape(self.images[idx], [1, 28, 28]) - if self.return_label: - return img, np.array(self.labels[idx]).astype('int64') - return img, - - def __len__(self): - return len(self.images) - - inputs = [Input([-1, 1, 28, 28], 'float32', name='image')] - - test_dataset = MnistDataset(mode='test', return_label=False) - - model = LeNet() - model.prepare(inputs=inputs) - - result = model.predict(test_dataset, batch_size=64) - print(result) - - # imperative mode - import paddle.fluid.dygraph as dg - place = set_device('cpu') - with dg.guard(place) as g: - model = LeNet() - model.prepare(inputs=inputs) - - result = model.predict(test_dataset, batch_size=64) - print(result) - - -.. py:function:: save_inference_model(save_dir, model_filename=None, params_filename=None, model_only=False): - -模型预测。 - -参数: - - **save_dir** (str) - 保存推理模型的路径。 - - **model_filename** (str,可选) - 保存预测模型结构 ``Inference Program`` 的文件名称。若设置为None,则使用 ``__model__`` 作为默认的文件名。默认值:None。 - - **params_filename** (str,可选) - 保存预测模型所有相关参数的文件名称。若设置为None,则模型参数被保存在单独的文件中。 - - **model_only** (bool,可选) - 若为True,则只保存预测模型的网络结构,而不保存预测模型的网络参数。默认值:False。 - -返回:None - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - from paddle.incubate.hapi.model import Model, Input - - class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self._fc = fluid.dygraph.Linear(784, 1, act='softmax') - def forward(self, x): - y = self._fc(x) - return y - - model = MyModel() - inputs = [Input([-1, 1, 784], 'float32', name='input')] - model.prepare(inputs=inputs) - - model.save_inference_model('checkpoint/test') \ No newline at end of file diff --git a/doc/paddle/api/paddle/incubate/hapi/text/BeamSearchDecoder_cn.rst b/doc/paddle/api/paddle/incubate/hapi/text/BeamSearchDecoder_cn.rst deleted file mode 100644 index 67e7312aaef57ff031e410031aecc73bc50c265f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/text/BeamSearchDecoder_cn.rst +++ /dev/null @@ -1,178 +0,0 @@ -.. _cn_api_fluid_layers_BeamSearchDecoder: - -BeamSearchDecoder -------------------------------- - - - -.. py:class:: paddle.fluid.layers.BeamSearchDecoder(cell, start_token, end_token, beam_size, embedding_fn=None, output_fn=None) - -:api_attr: 声明式编程模式(静态图) - - - -带beam search解码策略的解码器。该接口包装一个cell来计算概率,然后执行一个beam search步骤计算得分,并为每个解码步骤选择候选输出。更多详细信息请参阅 `Beam search `_ - -**注意** 在使用beam search解码时,cell的输入和状态将被扩展到 :math:`beam\_size` ,得到 :math:`[batch\_size * beam\_size, ...]` 一样的形状,这个操作在BeamSearchDecoder中自动完成,因此,其他任何在 :code:`cell.call` 中使用的tensor,如果形状为 :math:`[batch\_size, ...]` ,都必须先手动使用 :code:`BeamSearchDecoder.tile_beam_merge_with_batch` 接口扩展。最常见的情况是带注意机制的编码器输出。 - -参数: - - **cell** (RNNCell) - RNNCell的实例或者具有相同接口定义的对象。 - - **start_token** (int) - 起始标记id。 - - **end_token** (int) - 结束标记id。 - - **beam_size** (int) - 在beam search中使用的beam宽度。 - - **embedding_fn** (可选) - 处理选中的候选id的接口。通常,它是一个将词id转换为词嵌入的嵌入层,函数的返回值作为 :code:`cell.call` 接口的 :code:`input` 参数。如果 :code:`embedding_fn` 未提供,则必须在 :code:`cell.call` 中实现词嵌入转换。默认值None。 - - **output_fn** (可选) - 处理cell输出的接口,在计算得分和选择候选标记id之前使用。默认值None。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.layers import GRUCell, BeamSearchDecoder - trg_embeder = lambda x: fluid.embedding( - x, size=[10000, 128], param_attr=fluid.ParamAttr(name="trg_embedding")) - output_layer = lambda x: layers.fc(x, - size=10000, - num_flatten_dims=len(x.shape) - 1, - param_attr=fluid.ParamAttr(name= - "output_w"), - bias_attr=False) - decoder_cell = GRUCell(hidden_size=128) - decoder = BeamSearchDecoder(decoder_cell, - start_token=0, - end_token=1, - beam_size=4, - embedding_fn=trg_embeder, - output_fn=output_layer) - - -.. py:method:: tile_beam_merge_with_batch(x, beam_size) - -扩展tensor的batch维度。此函数的输入是形状为 :math:`[batch\_size, s_0, s_1, ...]` 的tensor t,由minibatch中的样本 :math:`t[0], ..., t[batch\_size - 1]` 组成。将其扩展为形状是 :math:`[batch\_size * beam\_size, s_0, s_1, ...]` 的tensor,由 :math:`t[0], t[0], ..., t[1], t[1], ...` 组成, 每个minibatch中的样本重复 :math:`beam\_size` 次。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - - **beam_size** (int) - 在beam search中使用的beam宽度。 - -返回:形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _split_batch_beams(x) - -将形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor变换为形状为 :math:`[batch\_size, beam\_size, ...]` 的新tensor。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size * beam\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:形状为 :math:`[batch\_size, beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _merge_batch_beams(x) - -将形状为 :math:`[batch\_size, beam\_size, ...]` 的tensor变换为形状为 :math:`[batch\_size * beam\_size,...]` 的新tensor。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, beam_size,...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _expand_to_beam_size(x) - -此函数输入形状为 :math:`[batch\_size,s_0,s_1,...]` 的tensor t,由minibatch中的样本 :math:`t[0],...,t[batch\_size-1]` 组成。将其扩展为形状 :math:`[ batch\_size,beam\_size,s_0,s_1,...]` 的tensor,由 :math:`t[0],t[0],...,t[1],t[1],...` 组成,其中每个minibatch中的样本重复 :math:`beam\_size` 次。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:具有与 :code:`x` 相同的形状和数据类型的tensor,其中未完成的beam保持不变,而已完成的beam被替换成特殊的tensor(tensor中所有概率质量被分配给EOS标记)。 - -返回类型:Variable - -.. py:method:: _mask_probs(probs, finished) - -屏蔽对数概率。该函数使已完成的beam将所有概率质量分配给EOS标记,而未完成的beam保持不变。 - -参数: - - **probs** (Variable) - 形状为 :math:`[batch\_size,beam\_size,vocab\_size]` 的tensor,表示对数概率。其数据类型应为float32。 - - **finish** (Variable) - 形状为 :math:`[batch\_size,beam\_size]` 的tensor,表示所有beam的完成状态。其数据类型应为bool。 - -返回:具有与 :code:`x` 相同的形状和数据类型的tensor,其中未完成的beam保持不变,而已完成的beam被替换成特殊的tensor(tensor中所有概率质量被分配给EOS标记)。 - -返回类型:Variable - -.. py:method:: _gather(x, indices, batch_size) - -对tensor :code:`x` 根据索引 :code:`indices` 收集。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, beam\_size,...]` 的tensor。 - - **index** (Variable) - 一个形状为 :math:`[batch\_size, beam\_size]` 的int64 tensor,表示我们用来收集的索引。 - - **batch_size** (Variable) - 形状为 :math:`[1]` 的tensor。其数据类型应为int32或int64。 - -返回:具有与 :code:``x` 相同的形状和数据类型的tensor,表示收集后的tensor。 - -返回类型:Variable - -.. py:method:: initialize(initial_cell_states) - -初始化BeamSearchDecoder。 - -参数: - - **initial_cell_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。调用者提供的参数。 - -返回:一个元组 :code:`(initial_inputs, initial_states, finished)`。:code:`initial_inputs` 是一个tensor,当 :code:`embedding_fn` 为None时,由 :code:`start_token` 填充,形状为 :math:`[batch\_size,beam\_size,1]` ;否则使用 :code:`embedding_fn(t)` 返回的值。:code:`initial_states` 是tensor变量的嵌套结构(命名元组,字段包括 :code:`cell_states,log_probs,finished,lengths`),其中 :code:`log_probs,finished,lengths` 都含有一个tensor,形状为 :math:`[batch\_size, beam\_size]`,数据类型为float32,bool,int64。:code:`cell_states` 具有与输入参数 :code:`initial_cell_states` 相同结构的值,但形状扩展为 :math:`[batch\_size,beam\_size,...]`。 :code:`finished` 是一个布尔型tensor,由False填充,形状为 :math:`[batch\_size,beam\_size]`。 - -返回类型:tuple - -.. py:method:: _beam_search_step(time, logits, next_cell_states, beam_state) - -计算得分并选择候选id。 - -参数: - - **time** (Variable) - 调用者提供的形状为[1]的tensor,表示当前解码的时间步长。其数据类型为int64。 - - **logits** (Variable) - 形状为 :math:`[batch\_size,beam\_size,vocab\_size]` 的tensor,表示当前时间步的logits。其数据类型为float32。 - - **next_cell_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。它的结构,形状和数据类型与 :code:`initialize()` 的返回值 :code:`initial_states` 中的 :code:`cell_states` 相同。它代表该cell的下一个状态。 - - **beam_state** (Variable) - tensor变量的结构。在第一个解码步骤与 :code:`initialize()` 返回的 :code:`initial_states` 同,其他步骤与 :code:`initialize()` 返回的 :code:`beam_search_state` 相同。 - -返回:一个元组 :code:`(beam_search_output, beam_search_state)`。:code:`beam_search_output` 是tensor变量的命名元组,字段为 :code:`scores,predicted_ids parent_ids`。其中 :code:`scores,predicted_ids,parent_ids` 都含有一个tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为float32 ,int64,int64。:code:`beam_search_state` 具有与输入参数 :code:`beam_state` 相同的结构,形状和数据类型。 - -返回类型:tuple - -.. py:method:: step(time, inputs, states, **kwargs) - -执行beam search解码步骤,该步骤使用 :code:`cell` 来计算概率,然后执行beam search步骤以计算得分并选择候选标记ID。 - -参数: - - **time** (Variable) - 调用者提供的形状为[1]的int64tensor,表示当前解码的时间步长。 - - **inputs** (Variable) - tensor变量。在第一个解码时间步时与由 :code:`initialize()` 返回的 :code:`initial_inputs` 相同,其他时间步与由 :code:`step()` 返回的 :code:`next_inputs` 相同。 - - **States** (Variable) - tensor变量的结构。在第一个解码时间步时与 :code:`initialize()` 返回的 :code:`initial_states` 相同,其他时间步与由 :code:`step()` 返回的 :code:`beam_search_state` 相同。 - - **kwargs** - 附加的关键字参数,由调用者提供。 - -返回:一个元组 :code:`(beam_search_output,beam_search_state,next_inputs,finish)` 。:code:`beam_search_state` 和参数 :code:`states` 具有相同的结构,形状和数据类型。 :code:`next_inputs` 与输入参数 :code:`inputs` 具有相同的结构,形状和数据类型。 :code:`beam_search_output` 是tensor变量的命名元组(字段包括 :code:`scores,predicted_ids,parent_ids` ),其中 :code:`scores,predicted_ids,parent_ids` 都含有一个tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为float32 ,int64,int64。:code:`finished` 是一个bool类型的tensor,形状为 :math:`[batch\_size,beam\_size]`。 - -返回类型:tuple - -.. py:method:: finalize(outputs, final_states, sequence_lengths) - -使用 :code:`gather_tree` 沿beam search树回溯并构建完整的预测序列。 - -参数: - - **outputs** (Variable) - tensor变量组成的结构(命名元组),该结构和数据类型与 :code:`output_dtype` 相同。tensor将所有时间步的输出堆叠,因此具有形状 :math:`[time\_step,batch\_size,...]`。 - - **final_states** (Variable) - tensor变量组成的结构(命名元组)。它是 :code:`decoder.step` 在最后一个解码步骤返回的 :code:`next_states`,因此具有与任何时间步的 :code:`state` 相同的结构、形状和数据类型。 - - **sequence_lengths** (Variable) - tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为int64。它包含解码期间确定的每个beam的序列长度。 - -返回:一个元组 :code:`(predicted_ids, final_states)`。:code:`predicted_ids` 是一个tensor,形状为 :math:`[time\_step,batch\_size,beam\_size]`,数据类型为int64。:code:`final_states` 与输入参数 :code:`final_states` 相同。 - -返回类型:tuple - -.. py:method:: output_dtype() - -用于beam search输出的数据类型的嵌套结构。它是一个命名元组,字段包括 :code:`scores, predicted_ids, parent_ids`。 - -参数:无。 - -返回:用于beam search输出的数据类型的命名元组。 - diff --git a/doc/paddle/api/paddle/incubate/hapi/text/RNNCell_cn.rst b/doc/paddle/api/paddle/incubate/hapi/text/RNNCell_cn.rst deleted file mode 100644 index edc8d0df0369029d9c9021621919b7a60b1b7523..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/text/RNNCell_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_RNNCell: - -RNNCell -------------------------------- - - - -.. py:class:: paddle.fluid.layers.RNNCell(name=None) - -:api_attr: 声明式编程模式(静态图) - - -RNNCell是抽象的基类,代表将输入和状态映射到输出和新状态的计算,主要用于RNN。 - -.. py:method:: call(inputs, states, **kwargs) - -每个cell都必须实现此接口,将(输入和状态)映射到(输出和新状态)。为了更灵活,输入和状态都可以是单个tensor变量或嵌套结构的tensor变量(列表 | 元组 | 命名元组 | 字典)。 - -参数: - - **inputs** - 输入,为单个tensor变量或tensor变量组成的嵌套结构。 - - **states** - 状态,单个tensor变量或tensor变量组成的嵌套结构。 - - **kwargs** - 附加的关键字参数,由调用者提供。 -         -返回:输出和新状态。输出和新状态都可以是嵌套的tensor变量。新状态必须具有与状态相同的结构。 - -返回类型:tuple - -.. py:method:: get_initial_states(batch_ref, shape=None, dtype=None, init_value=0) - -该接口根据提供的形状,数据类型和初始值来初始化状态。 - -参数: - - **batch_ref** - 单个tensor变量或tensor组成的嵌套结构。 tensor的第一维将用作初始化状态的batch大小。 - - **shape** - 单个形状或形状组成的嵌套结构,单个形状是整数的列表或元组。 如果形状的第一维不是batch大小,则自动插入-1作为batch大小。 如果该项为None,将使用属性 :code:`state_shape`。默认值为None。 - - **dtype** - 单个数据类型或由数据类型组成的嵌套结构。该结构必须与shape的结构相同,例外是当状态中的所有tensor都具有相同的数据类型,这时可以使用单个数据类型。 如果是None并且属性 :code:`cell.state_shape` 不可用,则float32将用作数据类型。 默认值为None。 - - **init_value** - 用于初始化状态的浮点值。 - -返回:和shape具有相同结构的tensor变量,代表初始状态。 - -返回类型:Variable - -.. py:method:: state_shape() - -该接口用于初始化cell的状态。 单个形状或由形状组成的嵌套结构,单个形状可以是整数的列表或元组(如果形状的第一维不是batch大小,则自动插入-1作为batch大小)。 当没有使用 :code:`get_initial_states` 初始化状态或 :code:`get_initial_states` 没有提供 :code:`shape` 参数的时候,不用实现该方法。 - - -.. py:method:: state_dtype() - -该接口用于初始化cell的状态。 单个数据类型或由数据类型组成的嵌套结构,该结构必须与 :code:`shape` 的结构相同,例外是当状态中的所有tensor都具有相同的数据类型,这时可以使用单个数据类型。 当没有使用 :code:`get_initial_states` 初始化状态或 :code:`get_initial_states` 没有提供 :code:`dtype` 参数的时候,不用实现该方法。 diff --git a/doc/paddle/api/paddle/incubate/hapi/text/text/BeamSearchDecoder_cn.rst b/doc/paddle/api/paddle/incubate/hapi/text/text/BeamSearchDecoder_cn.rst deleted file mode 100644 index 67e7312aaef57ff031e410031aecc73bc50c265f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/text/text/BeamSearchDecoder_cn.rst +++ /dev/null @@ -1,178 +0,0 @@ -.. _cn_api_fluid_layers_BeamSearchDecoder: - -BeamSearchDecoder -------------------------------- - - - -.. py:class:: paddle.fluid.layers.BeamSearchDecoder(cell, start_token, end_token, beam_size, embedding_fn=None, output_fn=None) - -:api_attr: 声明式编程模式(静态图) - - - -带beam search解码策略的解码器。该接口包装一个cell来计算概率,然后执行一个beam search步骤计算得分,并为每个解码步骤选择候选输出。更多详细信息请参阅 `Beam search `_ - -**注意** 在使用beam search解码时,cell的输入和状态将被扩展到 :math:`beam\_size` ,得到 :math:`[batch\_size * beam\_size, ...]` 一样的形状,这个操作在BeamSearchDecoder中自动完成,因此,其他任何在 :code:`cell.call` 中使用的tensor,如果形状为 :math:`[batch\_size, ...]` ,都必须先手动使用 :code:`BeamSearchDecoder.tile_beam_merge_with_batch` 接口扩展。最常见的情况是带注意机制的编码器输出。 - -参数: - - **cell** (RNNCell) - RNNCell的实例或者具有相同接口定义的对象。 - - **start_token** (int) - 起始标记id。 - - **end_token** (int) - 结束标记id。 - - **beam_size** (int) - 在beam search中使用的beam宽度。 - - **embedding_fn** (可选) - 处理选中的候选id的接口。通常,它是一个将词id转换为词嵌入的嵌入层,函数的返回值作为 :code:`cell.call` 接口的 :code:`input` 参数。如果 :code:`embedding_fn` 未提供,则必须在 :code:`cell.call` 中实现词嵌入转换。默认值None。 - - **output_fn** (可选) - 处理cell输出的接口,在计算得分和选择候选标记id之前使用。默认值None。 - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.layers import GRUCell, BeamSearchDecoder - trg_embeder = lambda x: fluid.embedding( - x, size=[10000, 128], param_attr=fluid.ParamAttr(name="trg_embedding")) - output_layer = lambda x: layers.fc(x, - size=10000, - num_flatten_dims=len(x.shape) - 1, - param_attr=fluid.ParamAttr(name= - "output_w"), - bias_attr=False) - decoder_cell = GRUCell(hidden_size=128) - decoder = BeamSearchDecoder(decoder_cell, - start_token=0, - end_token=1, - beam_size=4, - embedding_fn=trg_embeder, - output_fn=output_layer) - - -.. py:method:: tile_beam_merge_with_batch(x, beam_size) - -扩展tensor的batch维度。此函数的输入是形状为 :math:`[batch\_size, s_0, s_1, ...]` 的tensor t,由minibatch中的样本 :math:`t[0], ..., t[batch\_size - 1]` 组成。将其扩展为形状是 :math:`[batch\_size * beam\_size, s_0, s_1, ...]` 的tensor,由 :math:`t[0], t[0], ..., t[1], t[1], ...` 组成, 每个minibatch中的样本重复 :math:`beam\_size` 次。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - - **beam_size** (int) - 在beam search中使用的beam宽度。 - -返回:形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _split_batch_beams(x) - -将形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor变换为形状为 :math:`[batch\_size, beam\_size, ...]` 的新tensor。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size * beam\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:形状为 :math:`[batch\_size, beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _merge_batch_beams(x) - -将形状为 :math:`[batch\_size, beam\_size, ...]` 的tensor变换为形状为 :math:`[batch\_size * beam\_size,...]` 的新tensor。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, beam_size,...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:形状为 :math:`[batch\_size * beam\_size, ...]` 的tensor,其数据类型与 :code:`x` 相同。 - -返回类型:Variable - -.. py:method:: _expand_to_beam_size(x) - -此函数输入形状为 :math:`[batch\_size,s_0,s_1,...]` 的tensor t,由minibatch中的样本 :math:`t[0],...,t[batch\_size-1]` 组成。将其扩展为形状 :math:`[ batch\_size,beam\_size,s_0,s_1,...]` 的tensor,由 :math:`t[0],t[0],...,t[1],t[1],...` 组成,其中每个minibatch中的样本重复 :math:`beam\_size` 次。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, ...]` 的tenosr。数据类型应为float32,float64,int32,int64或bool。 - -返回:具有与 :code:`x` 相同的形状和数据类型的tensor,其中未完成的beam保持不变,而已完成的beam被替换成特殊的tensor(tensor中所有概率质量被分配给EOS标记)。 - -返回类型:Variable - -.. py:method:: _mask_probs(probs, finished) - -屏蔽对数概率。该函数使已完成的beam将所有概率质量分配给EOS标记,而未完成的beam保持不变。 - -参数: - - **probs** (Variable) - 形状为 :math:`[batch\_size,beam\_size,vocab\_size]` 的tensor,表示对数概率。其数据类型应为float32。 - - **finish** (Variable) - 形状为 :math:`[batch\_size,beam\_size]` 的tensor,表示所有beam的完成状态。其数据类型应为bool。 - -返回:具有与 :code:`x` 相同的形状和数据类型的tensor,其中未完成的beam保持不变,而已完成的beam被替换成特殊的tensor(tensor中所有概率质量被分配给EOS标记)。 - -返回类型:Variable - -.. py:method:: _gather(x, indices, batch_size) - -对tensor :code:`x` 根据索引 :code:`indices` 收集。 - -参数: - - **x** (Variable) - 形状为 :math:`[batch\_size, beam\_size,...]` 的tensor。 - - **index** (Variable) - 一个形状为 :math:`[batch\_size, beam\_size]` 的int64 tensor,表示我们用来收集的索引。 - - **batch_size** (Variable) - 形状为 :math:`[1]` 的tensor。其数据类型应为int32或int64。 - -返回:具有与 :code:``x` 相同的形状和数据类型的tensor,表示收集后的tensor。 - -返回类型:Variable - -.. py:method:: initialize(initial_cell_states) - -初始化BeamSearchDecoder。 - -参数: - - **initial_cell_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。调用者提供的参数。 - -返回:一个元组 :code:`(initial_inputs, initial_states, finished)`。:code:`initial_inputs` 是一个tensor,当 :code:`embedding_fn` 为None时,由 :code:`start_token` 填充,形状为 :math:`[batch\_size,beam\_size,1]` ;否则使用 :code:`embedding_fn(t)` 返回的值。:code:`initial_states` 是tensor变量的嵌套结构(命名元组,字段包括 :code:`cell_states,log_probs,finished,lengths`),其中 :code:`log_probs,finished,lengths` 都含有一个tensor,形状为 :math:`[batch\_size, beam\_size]`,数据类型为float32,bool,int64。:code:`cell_states` 具有与输入参数 :code:`initial_cell_states` 相同结构的值,但形状扩展为 :math:`[batch\_size,beam\_size,...]`。 :code:`finished` 是一个布尔型tensor,由False填充,形状为 :math:`[batch\_size,beam\_size]`。 - -返回类型:tuple - -.. py:method:: _beam_search_step(time, logits, next_cell_states, beam_state) - -计算得分并选择候选id。 - -参数: - - **time** (Variable) - 调用者提供的形状为[1]的tensor,表示当前解码的时间步长。其数据类型为int64。 - - **logits** (Variable) - 形状为 :math:`[batch\_size,beam\_size,vocab\_size]` 的tensor,表示当前时间步的logits。其数据类型为float32。 - - **next_cell_states** (Variable) - 单个tensor变量或tensor变量组成的嵌套结构。它的结构,形状和数据类型与 :code:`initialize()` 的返回值 :code:`initial_states` 中的 :code:`cell_states` 相同。它代表该cell的下一个状态。 - - **beam_state** (Variable) - tensor变量的结构。在第一个解码步骤与 :code:`initialize()` 返回的 :code:`initial_states` 同,其他步骤与 :code:`initialize()` 返回的 :code:`beam_search_state` 相同。 - -返回:一个元组 :code:`(beam_search_output, beam_search_state)`。:code:`beam_search_output` 是tensor变量的命名元组,字段为 :code:`scores,predicted_ids parent_ids`。其中 :code:`scores,predicted_ids,parent_ids` 都含有一个tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为float32 ,int64,int64。:code:`beam_search_state` 具有与输入参数 :code:`beam_state` 相同的结构,形状和数据类型。 - -返回类型:tuple - -.. py:method:: step(time, inputs, states, **kwargs) - -执行beam search解码步骤,该步骤使用 :code:`cell` 来计算概率,然后执行beam search步骤以计算得分并选择候选标记ID。 - -参数: - - **time** (Variable) - 调用者提供的形状为[1]的int64tensor,表示当前解码的时间步长。 - - **inputs** (Variable) - tensor变量。在第一个解码时间步时与由 :code:`initialize()` 返回的 :code:`initial_inputs` 相同,其他时间步与由 :code:`step()` 返回的 :code:`next_inputs` 相同。 - - **States** (Variable) - tensor变量的结构。在第一个解码时间步时与 :code:`initialize()` 返回的 :code:`initial_states` 相同,其他时间步与由 :code:`step()` 返回的 :code:`beam_search_state` 相同。 - - **kwargs** - 附加的关键字参数,由调用者提供。 - -返回:一个元组 :code:`(beam_search_output,beam_search_state,next_inputs,finish)` 。:code:`beam_search_state` 和参数 :code:`states` 具有相同的结构,形状和数据类型。 :code:`next_inputs` 与输入参数 :code:`inputs` 具有相同的结构,形状和数据类型。 :code:`beam_search_output` 是tensor变量的命名元组(字段包括 :code:`scores,predicted_ids,parent_ids` ),其中 :code:`scores,predicted_ids,parent_ids` 都含有一个tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为float32 ,int64,int64。:code:`finished` 是一个bool类型的tensor,形状为 :math:`[batch\_size,beam\_size]`。 - -返回类型:tuple - -.. py:method:: finalize(outputs, final_states, sequence_lengths) - -使用 :code:`gather_tree` 沿beam search树回溯并构建完整的预测序列。 - -参数: - - **outputs** (Variable) - tensor变量组成的结构(命名元组),该结构和数据类型与 :code:`output_dtype` 相同。tensor将所有时间步的输出堆叠,因此具有形状 :math:`[time\_step,batch\_size,...]`。 - - **final_states** (Variable) - tensor变量组成的结构(命名元组)。它是 :code:`decoder.step` 在最后一个解码步骤返回的 :code:`next_states`,因此具有与任何时间步的 :code:`state` 相同的结构、形状和数据类型。 - - **sequence_lengths** (Variable) - tensor,形状为 :math:`[batch\_size,beam\_size]`,数据类型为int64。它包含解码期间确定的每个beam的序列长度。 - -返回:一个元组 :code:`(predicted_ids, final_states)`。:code:`predicted_ids` 是一个tensor,形状为 :math:`[time\_step,batch\_size,beam\_size]`,数据类型为int64。:code:`final_states` 与输入参数 :code:`final_states` 相同。 - -返回类型:tuple - -.. py:method:: output_dtype() - -用于beam search输出的数据类型的嵌套结构。它是一个命名元组,字段包括 :code:`scores, predicted_ids, parent_ids`。 - -参数:无。 - -返回:用于beam search输出的数据类型的命名元组。 - diff --git a/doc/paddle/api/paddle/incubate/hapi/text/text/RNNCell_cn.rst b/doc/paddle/api/paddle/incubate/hapi/text/text/RNNCell_cn.rst deleted file mode 100644 index edc8d0df0369029d9c9021621919b7a60b1b7523..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/text/text/RNNCell_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_RNNCell: - -RNNCell -------------------------------- - - - -.. py:class:: paddle.fluid.layers.RNNCell(name=None) - -:api_attr: 声明式编程模式(静态图) - - -RNNCell是抽象的基类,代表将输入和状态映射到输出和新状态的计算,主要用于RNN。 - -.. py:method:: call(inputs, states, **kwargs) - -每个cell都必须实现此接口,将(输入和状态)映射到(输出和新状态)。为了更灵活,输入和状态都可以是单个tensor变量或嵌套结构的tensor变量(列表 | 元组 | 命名元组 | 字典)。 - -参数: - - **inputs** - 输入,为单个tensor变量或tensor变量组成的嵌套结构。 - - **states** - 状态,单个tensor变量或tensor变量组成的嵌套结构。 - - **kwargs** - 附加的关键字参数,由调用者提供。 -         -返回:输出和新状态。输出和新状态都可以是嵌套的tensor变量。新状态必须具有与状态相同的结构。 - -返回类型:tuple - -.. py:method:: get_initial_states(batch_ref, shape=None, dtype=None, init_value=0) - -该接口根据提供的形状,数据类型和初始值来初始化状态。 - -参数: - - **batch_ref** - 单个tensor变量或tensor组成的嵌套结构。 tensor的第一维将用作初始化状态的batch大小。 - - **shape** - 单个形状或形状组成的嵌套结构,单个形状是整数的列表或元组。 如果形状的第一维不是batch大小,则自动插入-1作为batch大小。 如果该项为None,将使用属性 :code:`state_shape`。默认值为None。 - - **dtype** - 单个数据类型或由数据类型组成的嵌套结构。该结构必须与shape的结构相同,例外是当状态中的所有tensor都具有相同的数据类型,这时可以使用单个数据类型。 如果是None并且属性 :code:`cell.state_shape` 不可用,则float32将用作数据类型。 默认值为None。 - - **init_value** - 用于初始化状态的浮点值。 - -返回:和shape具有相同结构的tensor变量,代表初始状态。 - -返回类型:Variable - -.. py:method:: state_shape() - -该接口用于初始化cell的状态。 单个形状或由形状组成的嵌套结构,单个形状可以是整数的列表或元组(如果形状的第一维不是batch大小,则自动插入-1作为batch大小)。 当没有使用 :code:`get_initial_states` 初始化状态或 :code:`get_initial_states` 没有提供 :code:`shape` 参数的时候,不用实现该方法。 - - -.. py:method:: state_dtype() - -该接口用于初始化cell的状态。 单个数据类型或由数据类型组成的嵌套结构,该结构必须与 :code:`shape` 的结构相同,例外是当状态中的所有tensor都具有相同的数据类型,这时可以使用单个数据类型。 当没有使用 :code:`get_initial_states` 初始化状态或 :code:`get_initial_states` 没有提供 :code:`dtype` 参数的时候,不用实现该方法。 diff --git a/doc/paddle/api/paddle/incubate/hapi/vision/flip_cn.rst b/doc/paddle/api/paddle/incubate/hapi/vision/flip_cn.rst deleted file mode 100644 index d8f1f7efd1b9a2c74d9902ae4c0c58d6dafa6f22..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/vision/flip_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_tensor_flip: - -flip -------------------------------- - -.. py:function:: paddle.flip(x, axis, name=None): - -:alias_main: paddle.flip -:alias: paddle.flip, paddle.tensor.flip, paddle.tensor.manipulation.flip - - - -该OP沿指定轴反转n维tensor. - -参数: - - **x** (Variable) - 输入张量。维度为多维,数据类型为bool, int32, int64, float32或float64。 - - **axis** (list) - 需要翻转的轴。当 ``axis[i] < 0`` 时,实际的计算维度为 ndim(x) + axis[i],其中i为axis的索引。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - -返回:在指定axis上翻转后的张量,与输入x数据类型相同。 - -返回类型:Variable,与输入x数据类型相同。 - -抛出异常: - - ``TypeError`` - 当输出 ``out`` 和输入 ``x`` 数据类型不一致时候。 - - ``ValueError`` - 当参数 ``axis`` 不合法时。 - -**代码示例1**: - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - - image_shape=(3, 2, 2) - x = np.arange(image_shape[0] * image_shape[1] * image_shape[2]).reshape(image_shape) - x = x.astype('float32') - img = paddle.imperative.to_variable(x) - out = paddle.flip(img, [0,1]) - print(out) # [[[10,11][8, 9]],[[6, 7],[4, 5]] [[2, 3],[0, 1]]] - diff --git a/doc/paddle/api/paddle/incubate/hapi/vision/pad_cn.rst b/doc/paddle/api/paddle/incubate/hapi/vision/pad_cn.rst deleted file mode 100644 index a9ed06ded042fe47826667b3d70acfe766181c21..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/vision/pad_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_pad: - -pad -------------------------------- - -.. py:function:: paddle.fluid.layers.pad(x, paddings, pad_value=0.0, name=None) - -:alias_main: paddle.nn.functional.pad -:alias: paddle.nn.functional.pad,paddle.nn.functional.common.pad -:old_api: paddle.fluid.layers.pad - - - -该OP在Tensor上填充一个由 ``pad_value`` 给出的常数值,填充宽度由 ``paddings`` 指定。 -其中,维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 - -**示例**: - -.. code-block:: text - - Given: - x = [[1, 2], [3, 4]] - - paddings = [0, 1, 1, 2] - - pad_value = 0 - - Return: - out = [[0, 1, 2, 0, 0] - [0, 3, 4, 0, 0] - [0, 0, 0, 0, 0]] - - -参数: - - **x** (Variable) — 多维Tensor,数据类型为float32 - - **paddings** (list of integers) — 整数列表,指定每个维度填充值的个数。维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 ``paddings`` 长度必须是 ``rank(x)×2`` - - **pad_value** (float32, 可选) — 用来填充的常量值,数据类型为float。默认值为0. - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 填充后的Tensor,数据类型与输入 ``x`` 相同 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - # x 为一个秩为2的张量 - import paddle.fluid as fluid - x = fluid.data(name='data', shape=[300, 300], dtype='float32') - out = fluid.layers.pad(x=x, paddings=[0, 1, 1, 2], pad_value=0.) - - diff --git a/doc/paddle/api/paddle/incubate/hapi/vision/transforms/flip_cn.rst b/doc/paddle/api/paddle/incubate/hapi/vision/transforms/flip_cn.rst deleted file mode 100644 index d8f1f7efd1b9a2c74d9902ae4c0c58d6dafa6f22..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/vision/transforms/flip_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_tensor_flip: - -flip -------------------------------- - -.. py:function:: paddle.flip(x, axis, name=None): - -:alias_main: paddle.flip -:alias: paddle.flip, paddle.tensor.flip, paddle.tensor.manipulation.flip - - - -该OP沿指定轴反转n维tensor. - -参数: - - **x** (Variable) - 输入张量。维度为多维,数据类型为bool, int32, int64, float32或float64。 - - **axis** (list) - 需要翻转的轴。当 ``axis[i] < 0`` 时,实际的计算维度为 ndim(x) + axis[i],其中i为axis的索引。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - -返回:在指定axis上翻转后的张量,与输入x数据类型相同。 - -返回类型:Variable,与输入x数据类型相同。 - -抛出异常: - - ``TypeError`` - 当输出 ``out`` 和输入 ``x`` 数据类型不一致时候。 - - ``ValueError`` - 当参数 ``axis`` 不合法时。 - -**代码示例1**: - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - - image_shape=(3, 2, 2) - x = np.arange(image_shape[0] * image_shape[1] * image_shape[2]).reshape(image_shape) - x = x.astype('float32') - img = paddle.imperative.to_variable(x) - out = paddle.flip(img, [0,1]) - print(out) # [[[10,11][8, 9]],[[6, 7],[4, 5]] [[2, 3],[0, 1]]] - diff --git a/doc/paddle/api/paddle/incubate/hapi/vision/transforms/functional/flip_cn.rst b/doc/paddle/api/paddle/incubate/hapi/vision/transforms/functional/flip_cn.rst deleted file mode 100644 index d8f1f7efd1b9a2c74d9902ae4c0c58d6dafa6f22..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/vision/transforms/functional/flip_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_tensor_flip: - -flip -------------------------------- - -.. py:function:: paddle.flip(x, axis, name=None): - -:alias_main: paddle.flip -:alias: paddle.flip, paddle.tensor.flip, paddle.tensor.manipulation.flip - - - -该OP沿指定轴反转n维tensor. - -参数: - - **x** (Variable) - 输入张量。维度为多维,数据类型为bool, int32, int64, float32或float64。 - - **axis** (list) - 需要翻转的轴。当 ``axis[i] < 0`` 时,实际的计算维度为 ndim(x) + axis[i],其中i为axis的索引。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - -返回:在指定axis上翻转后的张量,与输入x数据类型相同。 - -返回类型:Variable,与输入x数据类型相同。 - -抛出异常: - - ``TypeError`` - 当输出 ``out`` 和输入 ``x`` 数据类型不一致时候。 - - ``ValueError`` - 当参数 ``axis`` 不合法时。 - -**代码示例1**: - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - - image_shape=(3, 2, 2) - x = np.arange(image_shape[0] * image_shape[1] * image_shape[2]).reshape(image_shape) - x = x.astype('float32') - img = paddle.imperative.to_variable(x) - out = paddle.flip(img, [0,1]) - print(out) # [[[10,11][8, 9]],[[6, 7],[4, 5]] [[2, 3],[0, 1]]] - diff --git a/doc/paddle/api/paddle/incubate/hapi/vision/transforms/functional/pad_cn.rst b/doc/paddle/api/paddle/incubate/hapi/vision/transforms/functional/pad_cn.rst deleted file mode 100644 index a9ed06ded042fe47826667b3d70acfe766181c21..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/vision/transforms/functional/pad_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_pad: - -pad -------------------------------- - -.. py:function:: paddle.fluid.layers.pad(x, paddings, pad_value=0.0, name=None) - -:alias_main: paddle.nn.functional.pad -:alias: paddle.nn.functional.pad,paddle.nn.functional.common.pad -:old_api: paddle.fluid.layers.pad - - - -该OP在Tensor上填充一个由 ``pad_value`` 给出的常数值,填充宽度由 ``paddings`` 指定。 -其中,维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 - -**示例**: - -.. code-block:: text - - Given: - x = [[1, 2], [3, 4]] - - paddings = [0, 1, 1, 2] - - pad_value = 0 - - Return: - out = [[0, 1, 2, 0, 0] - [0, 3, 4, 0, 0] - [0, 0, 0, 0, 0]] - - -参数: - - **x** (Variable) — 多维Tensor,数据类型为float32 - - **paddings** (list of integers) — 整数列表,指定每个维度填充值的个数。维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 ``paddings`` 长度必须是 ``rank(x)×2`` - - **pad_value** (float32, 可选) — 用来填充的常量值,数据类型为float。默认值为0. - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 填充后的Tensor,数据类型与输入 ``x`` 相同 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - # x 为一个秩为2的张量 - import paddle.fluid as fluid - x = fluid.data(name='data', shape=[300, 300], dtype='float32') - out = fluid.layers.pad(x=x, paddings=[0, 1, 1, 2], pad_value=0.) - - diff --git a/doc/paddle/api/paddle/incubate/hapi/vision/transforms/pad_cn.rst b/doc/paddle/api/paddle/incubate/hapi/vision/transforms/pad_cn.rst deleted file mode 100644 index a9ed06ded042fe47826667b3d70acfe766181c21..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/hapi/vision/transforms/pad_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_pad: - -pad -------------------------------- - -.. py:function:: paddle.fluid.layers.pad(x, paddings, pad_value=0.0, name=None) - -:alias_main: paddle.nn.functional.pad -:alias: paddle.nn.functional.pad,paddle.nn.functional.common.pad -:old_api: paddle.fluid.layers.pad - - - -该OP在Tensor上填充一个由 ``pad_value`` 给出的常数值,填充宽度由 ``paddings`` 指定。 -其中,维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 - -**示例**: - -.. code-block:: text - - Given: - x = [[1, 2], [3, 4]] - - paddings = [0, 1, 1, 2] - - pad_value = 0 - - Return: - out = [[0, 1, 2, 0, 0] - [0, 3, 4, 0, 0] - [0, 0, 0, 0, 0]] - - -参数: - - **x** (Variable) — 多维Tensor,数据类型为float32 - - **paddings** (list of integers) — 整数列表,指定每个维度填充值的个数。维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 ``paddings`` 长度必须是 ``rank(x)×2`` - - **pad_value** (float32, 可选) — 用来填充的常量值,数据类型为float。默认值为0. - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 填充后的Tensor,数据类型与输入 ``x`` 相同 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - # x 为一个秩为2的张量 - import paddle.fluid as fluid - x = fluid.data(name='data', shape=[300, 300], dtype='float32') - out = fluid.layers.pad(x=x, paddings=[0, 1, 1, 2], pad_value=0.) - - diff --git a/doc/paddle/api/paddle/incubate/metrics_cn.rst b/doc/paddle/api/paddle/incubate/metrics_cn.rst deleted file mode 100644 index 88e3ac22cc2187897a2fe9b7f817031980889a4c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/incubate/metrics_cn.rst +++ /dev/null @@ -1,19 +0,0 @@ -======================= -fluid.metrics -======================= - - - - -.. toctree:: - :maxdepth: 1 - - metrics_cn/Accuracy_cn.rst - metrics_cn/Auc_cn.rst - metrics_cn/ChunkEvaluator_cn.rst - metrics_cn/CompositeMetric_cn.rst - metrics_cn/DetectionMAP_cn.rst - metrics_cn/EditDistance_cn.rst - metrics_cn/MetricBase_cn.rst - metrics_cn/Precision_cn.rst - metrics_cn/Recall_cn.rst diff --git a/doc/paddle/api/paddle/io/BatchSampler_cn.rst b/doc/paddle/api/paddle/io/BatchSampler_cn.rst deleted file mode 100644 index d97e1af250b27c1b08959581b1a3981979a38d32..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/io/BatchSampler_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_io_cn_BatchSampler: - -BatchSampler -------------------------------- -:doc_source: paddle.fluid.dataloader.BatchSampler - - diff --git a/doc/paddle/api/paddle/io/Dataset_cn.rst b/doc/paddle/api/paddle/io/Dataset_cn.rst deleted file mode 100644 index 9cc4bf215405232188e577ad074d784ef2c06424..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/io/Dataset_cn.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _cn_api_io_cn_Dataset: - -Dataset -------------------------------- -:doc_source: paddle.fluid.dataloader.Dataset - - diff --git a/doc/paddle/api/paddle/io/load_cn.rst b/doc/paddle/api/paddle/io/load_cn.rst deleted file mode 100644 index f001976971c5e84eb93c62fa5a5d77c8f2a9a335..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/io/load_cn.rst +++ /dev/null @@ -1,168 +0,0 @@ -.. _cn_api_fluid_dygraph_jit_load: - -load ------------------ - -.. py:function:: paddle.fluid.dygraph.jit.load(model_path, configs=None) - -:api_attr: 命令式编程模式(动态图) - -将接口 :ref:`cn_api_fluid_dygraph_jit_save` 或者 :ref:`cn_api_fluid_io_save_inference_model` 存储的模型载入为 :ref:`cn_api_fluid_dygraph_TranslatedLayer` ,用于预测推理或者fine-tune训练。 - -.. note:: - 由于一些历史原因,如果载入的模型是通过 :ref:`cn_api_fluid_io_save_inference_model` 存储的, - 在使用它进行fine-tune训练时会存在一些局限: - 1. 命令式编程模式不支持 ``LoDTensor`` ,所有原先输入变量或者参数依赖于LoD信息的模型暂时无法使用; - 2. 所有存储模型的feed变量都需要被传入 ``Translatedlayer`` 的forward方法; - 3. 原模型变量的 ``stop_gradient`` 信息已丢失且无法准确恢复; - 4. 原模型参数的 ``trainable`` 信息已丢失且无法准确恢复。 - -参数: - - **model_path** (str) - 存储模型的目录。 - - **configs** (SaveLoadConfig, 可选) - 用于指定额外配置选项的 :ref:`cn_api_fluid_dygraph_jit_SaveLoadConfig` 对象。默认为 ``None``。 - -返回:TranslatedLayer - 一个能够执行存储模型的 ``Layer`` 对象。 - -**示例代码** - -1. 载入由接口 :ref:`cn_api_fluid_dygraph_jit_save` 存储的模型进行预测推理及fine-tune训练。 - - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - class LinearNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(LinearNet, self).__init__() - self._linear = Linear(in_size, out_size) - @declarative - def forward(self, x): - return self._linear(x) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 1. 训练存储模型. - # 创建网络 - net = LinearNet(784, 1) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # 训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - net.clear_gradients() - model_path = "linear.example.model" - fluid.dygraph.jit.save( - layer=net, - model_path=model_path, - input_spec=[img]) - # 2. 载入模型 & 预测 - # 载入模型 - infer_net = fluid.dygraph.jit.load(model_path) - # 预测 - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = infer_net(x) - # 3. 载入模型 & fine-tune训练 - # 载入模型 - train_net = fluid.dygraph.jit.load(model_path) - train_net.train() - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=train_net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # fine-tune训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = train_net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - train_net.clear_gradients() - - -2. 载入由接口 :ref:`cn_api_fluid_io_save_inference_model` 存储的模型进行预测推理及fine-tune训练。 - - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - img = fluid.data(name='img', shape=[None, 784], dtype='float32') - label = fluid.data(name='label', shape=[None, 1], dtype='int64') - pred = fluid.layers.fc(input=img, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=pred, label=label) - avg_loss = fluid.layers.mean(loss) - optimizer = fluid.optimizer.SGD(learning_rate=0.001) - optimizer.minimize(avg_loss) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - loader = fluid.io.DataLoader.from_generator( - feed_list=[img, label], capacity=5, iterable=True) - loader.set_batch_generator(random_batch_reader(), places=place) - # 1. 训练 & 存储预测模型 - for data in loader(): - exe.run( - fluid.default_main_program(), - feed=data, - fetch_list=[avg_loss]) - model_path = "fc.example.model" - fluid.io.save_inference_model( - model_path, ["img"], [pred], exe) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 2. 载入模型 & 预测 - fc = fluid.dygraph.jit.load(model_path) - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = fc(x) - # 3. 载入模型 & fine-tune训练 - fc = fluid.dygraph.jit.load(model_path) - fc.train() - sgd = fluid.optimizer.SGD(learning_rate=0.001, - parameter_list=fc.parameters()) - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator( - random_batch_reader(), places=place) - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = fc(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - sgd.minimize(avg_loss) diff --git a/doc/paddle/api/paddle/io/save_cn.rst b/doc/paddle/api/paddle/io/save_cn.rst deleted file mode 100644 index f0276316bacd0d7b7cb7ef6df12b1f9ac08b759f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/io/save_cn.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. _cn_api_fluid_dygraph_jit_save: - -save ------------------ - -.. py:function:: paddle.fluid.dygraph.jit.save(layer, model_path, input_spec=None, configs=None) - -将输入的经过 ``@declarative`` 装饰的 :ref:`cn_api_fluid_dygraph_Layer` 存储为 :ref:`cn_api_fluid_dygraph_TranslatedLayer` 格式的模型, -载入后可用于预测推理或者fine-tune训练。 - -该接口将会将输入 :ref:`cn_api_fluid_dygraph_Layer` 转写后的模型结构 ``Program`` 和所有必要的持久参数变量存储至输入路径 ``model_path`` 中。 - -默认存储的 ``Program`` 文件名为 ``__model__``, 默认存储持久参数变量的文件名为 ``__variables__``, -同时会将变量的一些描述信息存储至文件 ``__variables.info__``,这些额外的信息将在fine-tune训练中使用。 - -存储的模型能够被以下API载入使用: - - :ref:`cn_api_fluid_dygraph_jit_load` - - :ref:`cn_api_fluid_io_load_inference_model` (需要配置参数 ``params_filename='__variables__'`` ) - - 其他预测库API - -参数: - - **layer** (Layer) - 需要存储的 :ref:`cn_api_fluid_dygraph_Layer` 对象。输入的 ``Layer`` 需要经过 ``@declarative`` 装饰。 - - **model_path** (str) - 存储模型的目录。 - - **input_spec** (list[Variable], 可选) - 描述存储模型的输入。此参数是传入当前存储的 ``TranslatedLayer`` forward方法的一个示例输入。如果为 ``None`` ,所有原 ``Layer`` forward方法的输入变量将都会被配置为存储模型的输入变量。默认为 ``None``。 - - **configs** (SaveLoadConfig, 可选) - 用于指定额外配置选项的 :ref:`cn_api_fluid_dygraph_jit_SaveLoadConfig` 对象。默认为 ``None``。 - -返回:无 - -**示例代码** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - class LinearNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(LinearNet, self).__init__() - self._linear = Linear(in_size, out_size) - @declarative - def forward(self, x): - return self._linear(x) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 创建网络 - net = LinearNet(784, 1) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # 训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - net.clear_gradients() - # 存储模型 - model_path = "linear.example.model" - fluid.dygraph.jit.save( - layer=net, - model_path=model_path, - input_spec=[img]) diff --git a/doc/paddle/api/paddle/io/shuffle_cn.rst b/doc/paddle/api/paddle/io/shuffle_cn.rst deleted file mode 100644 index 7b64c23b7e5706e23a9051f60b3a55bea7ea6573..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/io/shuffle_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_io_shuffle: - -shuffle -------------------------------- - -.. py:function:: paddle.fluid.io.shuffle(reader, buffer_size) - -:alias_main: paddle.shuffle -:alias: paddle.shuffle,paddle.tensor.shuffle,paddle.tensor.random.shuffle -:old_api: paddle.fluid.io.shuffle - - - -该接口创建一个数据读取器,其功能是将原始数据读取器的数据打乱,然后返回无序的数据。 - -从原始数据读取器取出buf_size个数据到缓冲区,将缓冲区数据打乱,然后将无序的数据依次返回。当缓冲区数据全部输出后,再次执行上述步骤。 - -参数: - - **reader** (callable) – 原始数据读取器。 - - **buf_size** (int) – 缓冲区保存数据的个数。 - -返回: 返回无序数据的数据读取器 - -返回类型: callable - -.. code-block:: python - - import paddle.fluid as fluid - def reader(): - for i in range(5): - yield i - shuffled_reader = fluid.io.shuffle(reader, 3) - for e in shuffled_reader(): - print(e) - # 输出结果是0~4的无序排列 diff --git a/doc/paddle/api/paddle/fluid/dygraph/ProgramTranslator_cn.rst b/doc/paddle/api/paddle/jit/ProgramTranslator_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/ProgramTranslator_cn.rst rename to doc/paddle/api/paddle/jit/ProgramTranslator_cn.rst diff --git a/doc/paddle/api/paddle/imperative/jit/SaveLoadConfig_cn.rst b/doc/paddle/api/paddle/jit/SaveLoadConfig_cn.rst similarity index 100% rename from doc/paddle/api/paddle/imperative/jit/SaveLoadConfig_cn.rst rename to doc/paddle/api/paddle/jit/SaveLoadConfig_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/TracedLayer_cn.rst b/doc/paddle/api/paddle/jit/TracedLayer_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/TracedLayer_cn.rst rename to doc/paddle/api/paddle/jit/TracedLayer_cn.rst diff --git a/doc/paddle/api/paddle/fluid/dygraph/TranslatedLayer_cn.rst b/doc/paddle/api/paddle/jit/TranslatedLayer_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/dygraph/TranslatedLayer_cn.rst rename to doc/paddle/api/paddle/jit/TranslatedLayer_cn.rst diff --git a/doc/paddle/api/paddle/fluid/layers/load_cn.rst b/doc/paddle/api/paddle/jit/load_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/layers/load_cn.rst rename to doc/paddle/api/paddle/jit/load_cn.rst diff --git a/doc/paddle/api/paddle/imperative/jit/save_cn.rst b/doc/paddle/api/paddle/jit/save_cn.rst similarity index 100% rename from doc/paddle/api/paddle/imperative/jit/save_cn.rst rename to doc/paddle/api/paddle/jit/save_cn.rst diff --git a/doc/paddle/api/paddle/nn/BatchNorm_cn.rst b/doc/paddle/api/paddle/nn/BatchNorm_cn.rst deleted file mode 100644 index bede52decd8cf46131fd2cdf6b0b91673fd34781..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/BatchNorm_cn.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. _cn_api_fluid_dygraph_BatchNorm: - -BatchNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.BatchNorm(num_channels, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, dtype='float32', data_layout='NCHW', in_place=False, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False, trainable_statistics=False) - -:alias_main: paddle.nn.BatchNorm -:alias: paddle.nn.BatchNorm,paddle.nn.layer.BatchNorm,paddle.nn.layer.norm.BatchNorm -:old_api: paddle.fluid.dygraph.BatchNorm - - - -该接口用于构建 ``BatchNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了批归一化层(Batch Normalization Layer)的功能,可用作卷积和全连接操作的批归一化函数,根据当前批次数据按通道计算的均值和方差进行归一化。更多详情请参考 : `Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift `_ - -当use_global_stats = False时,:math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是minibatch的统计数据。计算公式如下: - -.. math:: - \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mini-batch-mean \\ - \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// mini-batch-variance \\ - -- :math:`x` : 批输入数据 -- :math:`m` : 当前批次数据的大小 - -当use_global_stats = True时,:math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是全局(或运行)统计数据(moving_mean和moving_variance),通常来自预先训练好的模型。计算公式如下: - -.. math:: - - moving\_mean = moving\_mean * momentum + \mu_{\beta} * (1. - momentum) \quad &// global mean \\ - moving\_variance = moving\_variance * momentum + \sigma_{\beta}^{2} * (1. - momentum) \quad &// global variance \\ - -归一化函数公式如下: - -.. math:: - - \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ - y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift \\ - -- :math:`\epsilon` : 添加较小的值到方差中以防止除零 -- :math:`\gamma` : 可训练的比例参数 -- :math:`\beta` : 可训练的偏差参数 - -参数: - - **num_channels** (int) - 指明输入 ``Tensor`` 的通道数量。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **is_test** (bool, 可选) - 指示是否在测试阶段,非训练阶段使用训练过程中统计到的全局均值和全局方差。默认值:False。 - - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 - - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **dtype** (str, 可选) - 指明输入 ``Tensor`` 的数据类型,可以为float32或float64。默认值:float32。 - - **data_layout** (string, 可选) - 指定输入数据格式,数据格式可以为“NCHW”或者“NHWC”。默认值:“NCHW”。 - - **in_place** (bool, 可选) - 指示 ``batch_norm`` 的输出是否可以复用输入内存。默认值:False。 - - **moving_mean_name** (str, 可选) - ``moving_mean`` 的名称,存储全局均值。如果将其设置为None, ``batch_norm`` 将随机命名全局均值;否则, ``batch_norm`` 将命名全局均值为 ``moving_mean_name`` 。默认值:None。 - - **moving_variance_name** (string, 可选) - ``moving_var`` 的名称,存储全局方差。如果将其设置为None, ``batch_norm`` 将随机命名全局方差;否则, ``batch_norm`` 将命名全局方差为 ``moving_variance_name`` 。默认值:None。 - - **do_model_average_for_mean_and_var** (bool, 可选) - 指示是否为mean和variance做模型均值。默认值:False。 - - **use_global_stats** (bool, 可选) – 指示是否使用全局均值和方差。在预测或测试模式下,将 ``use_global_stats`` 设置为true或将 ``is_test`` 设置为true,这两种行为是等效的。在训练模式中,当设置 ``use_global_stats`` 为True时,在训练期间也将使用全局均值和方差。默认值:False。 - - **trainable_statistics** (bool, 可选) - eval模式下是否计算mean均值和var方差。eval模式下,trainable_statistics为True时,由该批数据计算均值和方差。默认值:False。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - - x = np.random.random(size=(3, 10, 3, 7)).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - batch_norm = fluid.BatchNorm(10) - hidden1 = batch_norm(x) - - diff --git a/doc/paddle/api/paddle/nn/BilinearTensorProduct_cn.rst b/doc/paddle/api/paddle/nn/BilinearTensorProduct_cn.rst deleted file mode 100644 index 59b18c17a32951135e431ef036a6d32771651399..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/BilinearTensorProduct_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_dygraph_BilinearTensorProduct: - -BilinearTensorProduct -------------------------------- - -.. py:class:: paddle.fluid.dygraph.BilinearTensorProduct(input1_dim, input2_dim, output_dim, name=None, act=None, param_attr=None, bias_attr=None, dtype="float32") - -:alias_main: paddle.nn.BilinearTensorProduct -:alias: paddle.nn.BilinearTensorProduct,paddle.nn.layer.BilinearTensorProduct,paddle.nn.layer.common.BilinearTensorProduct -:old_api: paddle.fluid.dygraph.BilinearTensorProduct - - - -该接口用于构建 ``BilinearTensorProduct`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。双线性乘积计算式子如下。 - -.. math:: - - out_{i} = x * W_{i} * {y^\mathrm{T}}, i=0,1,...,size-1 - -式中, - -- :math:`x` : 第一个输入,分别包含M个元素,维度为 :math:`[batch\_size, M]` -- :math:`y` :第二个输入,分别包含N个元素,维度为 :math:`[batch\_size, N]` -- :math:`W_i` :第i个学习到的权重,维度为 :math:`[M,N]` -- :math:`out_i` :输出的第i个元素 -- :math:`y^T` : :math:`y` 的转置 - - -参数: - - **input1_dim** (int) – 第一个输入的维度大小。 - - **input1_dim** (int) – 第二个输入的维度大小。 - - **output_dim** (int) – 输出的维度。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **act** (str,可选) – 对输出应用的激励函数。默认值为None。 - - **param_attr** (ParamAttr) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:维度为[batch_size, size]的2D Tensor,数据类型与输入数据类型相同。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - with fluid.dygraph.guard(): - layer1 = numpy.random.random((5, 5)).astype('float32') - layer2 = numpy.random.random((5, 4)).astype('float32') - bilinearTensorProduct = fluid.dygraph.nn.BilinearTensorProduct( - input1_dim=5, input2_dim=4, output_dim=1000) - ret = bilinearTensorProduct(fluid.dygraph.base.to_variable(layer1), - fluid.dygraph.base.to_variable(layer2)) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - - diff --git a/doc/paddle/api/paddle/nn/Embedding_cn.rst b/doc/paddle/api/paddle/nn/Embedding_cn.rst deleted file mode 100644 index 985bf1c9eb834aa024ebab792a00b151328ef77a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/Embedding_cn.rst +++ /dev/null @@ -1,105 +0,0 @@ -.. _cn_api_fluid_dygraph_Embedding: - -Embedding -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Embedding(size, is_sparse=False, is_distributed=False, padding_idx=None, param_attr=None, dtype='float32') - -:alias_main: paddle.nn.Embedding -:alias: paddle.nn.Embedding,paddle.nn.layer.Embedding,paddle.nn.layer.common.Embedding -:old_api: paddle.fluid.dygraph.Embedding - - - -嵌入层(Embedding Layer) - -该接口用于构建 ``Embedding`` 的一个可调用对象,具体用法参照 ``代码示例`` 。其根据input中的id信息从embedding矩阵中查询对应embedding信息,并会根据输入的size (vocab_size, emb_size)和dtype自动构造一个二维embedding矩阵。 - -输出的Tensor的shape是在输入Tensor shape的最后一维后面添加了emb_size的维度。 - -注:input中的id必须满足 ``0 =< id < size[0]``,否则程序会抛异常退出。 - - -:: - - Case 1: - - input是Tensor, 且padding_idx = -1 - input.data = [[1, 3], [2, 4], [4, 127]] - input.shape = [3, 2] - 若size = [128, 16] - 输出为Tensor: - out.shape = [3, 2, 16] - out.data = [[[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654]], - - [[0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365]], - - [[0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]]] # padding data - 输入的padding_idx小于0,则自动转换为padding_idx = -1 + 128 = 127, 对于输入id为127的词,进行padding处理。 - - Case 2: - - input是lod level 为1的LoDTensor, 且padding_idx = 0 - input.lod = [[2, 3]] - input.data = [[1], [3], [2], [4], [0]] - input.shape = [5, 1] - 若size = [128, 16] - 输出为LoDTensor: - out.lod = [[2, 3]] - out.shape = [5, 1, 16] - out.data = [[[0.129435295, 0.244512452, ..., 0.436322452]], - [[0.345421456, 0.524563927, ..., 0.144534654]], - [[0.345249859, 0.124939536, ..., 0.194353745]], - [[0.945345345, 0.435394634, ..., 0.435345365]], - [[0.0, 0.0, ..., 0.0 ]]] # padding data - 输入的padding_idx = 0,则对于输入id为0的词,进行padding处理。 - -参数: - - **size** (tuple|list) - embedding矩阵的维度。必须包含两个元素,第一个元素为vocab_size(词表大小), 第二个为emb_size(embedding层维度)。 - - **is_sparse** (bool) - 是否使用稀疏的更新方式,这个参数只会影响反向的梯度更新的性能,sparse更新速度更快,推荐使用稀疏更新的方式。但某些optimizer不支持sparse更新,比如 :ref:`cn_api_fluid_optimizer_AdadeltaOptimizer` 、 :ref:`cn_api_fluid_optimizer_AdamaxOptimizer` 、 :ref:`cn_api_fluid_optimizer_DecayedAdagradOptimizer` 、 :ref:`cn_api_fluid_optimizer_FtrlOptimizer` 、 :ref:`cn_api_fluid_optimizer_LambOptimizer` 、:ref:`cn_api_fluid_optimizer_LarsMomentumOptimizer` ,此时is_sparse必须为False。默认为False。 - - **is_distributed** (bool) - 是否使用分布式的方式存储embedding矩阵,仅在多机分布式cpu训练中使用。默认为False。 - - **padding_idx** (int|long|None) - padding_idx需在区间[-vocab_size, vocab_size),否则不生效,padding_idx<0时,padding_idx会被改成vocab_size + padding_idx,input中等于padding_index的id对应的embedding信息会被设置为0,且这部分填充数据在训练时将不会被更新。如果为None,不作处理,默认为None。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。此外,可以通过 ``param_attr`` 参数加载用户自定义或预训练的词向量。只需将本地词向量转为numpy数据格式,且保证本地词向量的shape和embedding的 ``size`` 参数一致,然后使用 :ref:`cn_api_fluid_initializer_NumpyArrayInitializer` 进行初始化,即可实现加载自定义或预训练的词向量。详细使用方法见代码示例2。 - - **dtype** (str|core.VarDesc.VarType) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - -返回:input映射后得到的Embedding Tensor或LoDTensor,数据类型和dtype定义的类型一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.dygraph.base as base - import numpy as np - - # 示例 1 - inp_word = np.array([[2, 3, 5], [4, 2, 1]]).astype('int64') - inp_word.shape # [2, 3] - dict_size = 20 - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding( - size=[dict_size, 32], - param_attr='emb.w', - is_sparse=False) - static_rlt3 = emb(base.to_variable(inp_word)) - static_rlt3.shape # [2, 3, 32] - - # 示例 2: 加载用户自定义或预训练的词向量 - weight_data = np.random.random(size=(128, 100)) # numpy格式的词向量数据 - w_param_attrs = fluid.ParamAttr( - name="emb_weight", - learning_rate=0.5, - initializer=fluid.initializer.NumpyArrayInitializer(weight_data), - trainable=True) - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding( - size=[128, 100], - param_attr= w_param_attrs, - is_sparse=False) - static_rlt3 = emb(base.to_variable(inp_word)) - diff --git a/doc/paddle/api/paddle/nn/GroupNorm_cn.rst b/doc/paddle/api/paddle/nn/GroupNorm_cn.rst deleted file mode 100644 index 5a619d25a616a3cc8922373c335fad404623ba6d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/GroupNorm_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_dygraph_GroupNorm: - -GroupNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.GroupNorm(channels, groups, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, data_layout='NCHW', dtype="float32") - -:alias_main: paddle.nn.GroupNorm -:alias: paddle.nn.GroupNorm,paddle.nn.layer.GroupNorm,paddle.nn.layer.norm.GroupNorm -:old_api: paddle.fluid.dygraph.GroupNorm - - - -**Group Normalization层** - -该接口用于构建 ``GroupNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了组归一化层的功能。更多详情请参考: `Group Normalization `_ 。 - -参数: - - **channels** (int) - 输入的通道数。 - - **groups** (int) - 从通道中分离出来的 ``group`` 的数目。 - - **epsilon** (float, 可选) - 为防止方差除零,增加一个很小的值。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **data_layout** (str, 可选) - 只支持“NCHW”(num_batches,channels,height,width)格式。默认值:“NCHW”。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:无 - -抛出异常: - - ValueError - 如果 ``data_layout`` 不是“NCHW”格式。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy s np - - with fluid.dygraph.guard(): - x = np.random.random((8, 32, 32)).astype('float32') - groupNorm = fluid.dygraph.nn.GroupNorm(channels=32, groups=4) - ret = groupNorm(fluid.dygraph.base.to_variable(x)) - - diff --git a/doc/paddle/api/paddle/nn/InstanceNorm_cn.rst b/doc/paddle/api/paddle/nn/InstanceNorm_cn.rst deleted file mode 100644 index 334fa5109f3ba0f52b1039357e08032671cd1849..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/InstanceNorm_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_dygraph_InstanceNorm: - -InstanceNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.InstanceNorm(num_channels, epsilon=1e-05, param_attr=None, bias_attr=None, dtype='float32') - -该接口用于构建 ``InstanceNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。 - -可用作卷积和全连接操作的实例正则化函数,根据每个样本的每个通道的均值和方差信息进行正则化。该层需要的数据格式如下: - -NCHW[batch,in_channels,in_height,in_width] - -更多详情请参考 : `Instance Normalization: The Missing Ingredient for Fast Stylization `_ - -``input`` 是mini-batch的输入。 - -.. math:: - \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mean of each channel in each sample in a batch \\ - \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// variance of each channel in each sample a batch \\ - \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ - y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift - - -参数: - - **num_channels** (int)- 指明输入 ``Tensor`` 的通道数量。 - - **epsilon** (float,默认1e-05)- 为了当前输入做标准化时得到稳定的结果而加在的分母上的扰动值。默认值为1e-5。 - - **param_attr** (ParamAttr|None) - instance_norm 权重参数的属性,可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 如果设为None,则默认的参数初始化为1.0。如果在ParamAttr指定了属性时, instance_norm创建相应属性的param_attr(权重)参数。默认:None。 - - **bias_attr** (ParamAttr|None) - instance_norm 偏置参数的属性,可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。如果设为None,默认的参数初始化为0.0。如果在ParamAttr指定了参数的属性时, instance_norm创建相应属性的bias_attr(偏置)参数。默认:None。 - - **dtype** (string,默认float32)- 指明输入 ``Tensor`` 的数据类型,可以为float32或float64。默认:float32。 - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - import paddle - - # x's shape is [1, 3, 1, 2] - x = np.array([[[[1.0, 8.0]], [[10.0, 5.0]], [[4.0, 6.0]]]]).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - instanceNorm = paddle.nn.InstanceNorm(3) - ret = instanceNorm(x) - # ret's shape is [1, 3, 1, 2]; value is [-1 1 0.999999 -0.999999 -0.999995 0.999995] - print(ret) - diff --git a/doc/paddle/api/paddle/nn/LayerNorm_cn.rst b/doc/paddle/api/paddle/nn/LayerNorm_cn.rst deleted file mode 100644 index 2fd08fe7ab4ddf0fb1055a49bb96ac70bcb087d5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/LayerNorm_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_dygraph_LayerNorm: - -LayerNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.LayerNorm(normalized_shape, scale=True, shift=True, begin_norm_axis=1, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, dtype="float32") - -:alias_main: paddle.nn.LayerNorm -:alias: paddle.nn.LayerNorm,paddle.nn.layer.LayerNorm,paddle.nn.layer.norm.LayerNorm -:old_api: paddle.fluid.dygraph.LayerNorm - - - -该接口用于构建 ``LayerNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了层归一化层(Layer Normalization Layer)的功能,其可以应用于小批量输入数据。更多详情请参考:`Layer Normalization `_ - -计算公式如下 - -.. math:: - \\\mu=\frac{1}{H}\sum_{i=1}^{H}x_i\\ - - \\\sigma=\sqrt{\frac{1}{H}\sum_i^H{(x_i-\mu)^2} + \epsilon}\\ - - \\y=f(\frac{g}{\sigma}(x-\mu) + b)\\ - -- :math:`x` : 该层神经元的向量表示 -- :math:`H` : 层中隐藏神经元个数 -- :math:`\epsilon` : 添加较小的值到方差中以防止除零 -- :math:`g` : 可训练的比例参数 -- :math:`b` : 可训练的偏差参数 - - -参数: - - **normalized_shape** (int 或 list 或 tuple) – 需规范化的shape,期望的输入shape为 ``[*, normalized_shape[0], normalized_shape[1], ..., normalized_shape[-1]]``。如果是单个整数,则此模块将在最后一个维度上规范化(此时最后一维的维度需与该参数相同)。 - - **scale** (bool, 可选) - 指明是否在归一化后学习自适应增益 ``g`` 。默认值:True。 - - **shift** (bool, 可选) - 指明是否在归一化后学习自适应偏差 ``b`` 。默认值:True。 - - **epsilon** (float, 可选) - 指明在计算过程中是否添加较小的值到方差中以防止除零。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **dtype** (str,可选) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy - - x = numpy.random.random((3, 32, 32)).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - layerNorm = fluid.LayerNorm([32, 32]) - ret = layerNorm(x) - - diff --git a/doc/paddle/api/paddle/nn/Linear_cn.rst b/doc/paddle/api/paddle/nn/Linear_cn.rst deleted file mode 100644 index c741deb393c1eda09d4c8daa1521139c564e8ce9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/Linear_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_dygraph_Linear: - -Linear -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Linear(input_dim, output_dim, param_attr=None, bias_attr=None, act=None, dtype='float32') - -:alias_main: paddle.nn.Linear -:alias: paddle.nn.Linear,paddle.nn.layer.Linear,paddle.nn.layer.common.Linear -:old_api: paddle.fluid.dygraph.Linear - - - - -**线性变换层:** - -.. math:: - - \\Out = Act({XW + b})\\ - -其中,:math:`X` 为输入的 Tensor, :math:`W` 和 :math:`b` 分别为权重和偏置。 - -Linear 层只接受一个 Tensor 的输入。 -Linear 层将输入 Tensor 与权重矩阵 :math:`W` 相乘,然后生成形状为 :math:`[N,*,output_dim]` 的输出张量, -其中 :math:`N` 是批量大小,:math:`*` 表示任意数量的附加尺寸。 -如果 bias_attr 不是 None,则将创建一个 bias 变量并将其添加到输出中。 -最后,如果激活 act 不是 None,则相应激活函数也将应用于输出上。 - -参数: - - **input_dim** (int) – 线性变换层输入单元的数目。 - - **output_dim** (int) – 线性变换层输出单元的数目。 - - **param_attr** (ParamAttr, 可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) – 指定偏置参数属性的对象,若 `bias_attr` 为bool类型,如果设置为False,表示不会为该层添加偏置;如果设置为True,表示使用默认的偏置参数属性。默认值为None,表示使用默认的偏置参数属性。默认的偏置参数属性将偏置参数的初始值设为0。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **dtype** (str, 可选) – 权重的数据类型,可以为float32或float64。默认为float32。 - -返回:无 - -**代码示例** - -.. code-block:: python - - from paddle.fluid.dygraph.base import to_variable - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - import numpy as np - - data = np.random.uniform( -1, 1, [30, 10, 32] ).astype('float32') - with fluid.dygraph.guard(): - linear = Linear(32, 64) - data = to_variable(data) - res = linear(data) # [30, 10, 64] - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - diff --git a/doc/paddle/api/paddle/nn/Pool2D_cn.rst b/doc/paddle/api/paddle/nn/Pool2D_cn.rst deleted file mode 100644 index e66ec6b3237edbe73446be147aef39efe3cb66a8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/Pool2D_cn.rst +++ /dev/null @@ -1,95 +0,0 @@ -.. _cn_api_fluid_dygraph_Pool2D: - -Pool2D -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Pool2D(pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, exclusive=True, data_format="NCHW") - -:alias_main: paddle.nn.Pool2D -:alias: paddle.nn.Pool2D,paddle.nn.layer.Pool2D,paddle.nn.layer.common.Pool2D -:old_api: paddle.fluid.dygraph.Pool2D - - - -该接口用于构建 ``Pool2D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维池化层,并使用上述输入参数的池化配置,为二维空间池化操作,根据 ``input`` , 池化类型 ``pool_type`` , 池化核大小 ``pool_size`` , 步长 ``pool_stride`` ,填充 ``pool_padding`` 这些参数得到输出。 - -输入X和输出Out默认是NCHW格式,N为批大小,C是通道数,H是特征高度,W是特征宽度。参数( ``ksize``, ``strides``, ``paddings`` )含有两个整型元素。分别表示高度和宽度上的参数。输入X的大小和输出Out的大小可能不一致。 - -例如: - -输入: - X shape::math:`\left ( N,C,H_{in},W_{in} \right )` - -输出: - Out shape::math:`\left ( N,C,H_{out},W_{out} \right )` - -如果 ``ceil_mode`` = false: - -.. math:: - H_{out} = \frac{(H_{in} - ksize[0] + 2 * paddings[0])}{strides[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - ksize[1] + 2 * paddings[1])}{strides[1]} + 1 - -如果 ``ceil_mode`` = true: - -.. math:: - H_{out} = \frac{(H_{in} - ksize[0] + 2 * paddings[0] + strides[0] - 1)}{strides[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - ksize[1] + 2 * paddings[1] + strides[1] - 1)}{strides[1]} + 1 - -如果 ``exclusive`` = false: - -.. math:: - hstart &= i * strides[0] - paddings[0] \\ - hend &= hstart + ksize[0] \\ - wstart &= j * strides[1] - paddings[1] \\ - wend &= wstart + ksize[1] \\ - Output(i ,j) &= \frac{sum(Input[hstart:hend, wstart:wend])}{ksize[0] * ksize[1]} - -如果 ``exclusive`` = true: - -.. math:: - hstart &= max(0, i * strides[0] - paddings[0])\\ - hend &= min(H, hstart + ksize[0]) \\ - wstart &= max(0, j * strides[1] - paddings[1]) \\ - wend & = min(W, wstart + ksize[1]) \\ - Output(i ,j) & = \frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)} - -参数: - - **pool_size** (int|list|tuple, 可选) - 池化核的大小。如果它是一个元组或列表,它必须包含两个整数值, (pool_size_Height, pool_size_Width)。若为一个整数,则它的平方值将作为池化核大小,比如若pool_size=2, 则池化核大小为2x2。默认值:-1。 - - **pool_type** (str, 可选) - 池化类型,可以是”max“对应max-pooling,“avg”对应average-pooling。默认为”max“。 - - **pool_stride** (int|list|tuple, 可选) - 池化层的步长。如果它是一个元组或列表,它将包含两个整数,(pool_stride_Height, pool_stride_Width)。若为一个整数,则表示H和W维度上stride均为该值。默认值为1。 - - **pool_padding** (int|list|tuple, 可选) - 填充大小。如果它是一个元组或列表,它必须包含两个整数值,(pool_padding_on_Height, pool_padding_on_Width)。若为一个整数,则表示H和W维度上padding均为该值。默认值为1。 - - **global_pooling** (bool, 可选)- 是否用全局池化。如果global_pooling = True, ``pool_size`` 和 ``pool_padding`` 将被忽略,默认False。 - - **use_cudnn** (bool, 可选)- 是否用cudnn核,只有已安装cudnn库时才有效。默认True。 - - **ceil_mode** (bool, 可选)- 是否用ceil函数计算输出高度和宽度。如果设为False,则使用floor函数。默认为False。 - - **exclusive** (bool, 可选) - 是否在平均池化模式忽略填充值。默认为True。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:无 - -抛出异常: - - ``ValueError`` - 如果 ``pool_type`` 既不是“max”也不是“avg”。 - - ``ValueError`` - 如果 ``global_pooling`` 为False并且 ``pool_size`` 为-1。 - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - - with fluid.dygraph.guard(): - data = np.random.random((3, 32, 32, 5)).astype('float32') - pool2d = fluid.dygraph.Pool2D(pool_size=2, - pool_type='max', - pool_stride=1, - global_pooling=False) - pool2d_res = pool2d(to_variable(data)) - - diff --git a/doc/paddle/api/paddle/nn/SpectralNorm_cn.rst b/doc/paddle/api/paddle/nn/SpectralNorm_cn.rst deleted file mode 100644 index d1677c60a870a6214860b5bb49418b35805d5bd9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/SpectralNorm_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_dygraph_SpectralNorm: - -SpectralNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.SpectralNorm(weight_shape, dim=0, power_iters=1, eps=1e-12, name=None, dtype="float32") - -:alias_main: paddle.nn.SpectralNorm -:alias: paddle.nn.SpectralNorm,paddle.nn.layer.SpectralNorm,paddle.nn.layer.norm.SpectralNorm -:old_api: paddle.fluid.dygraph.SpectralNorm - - - -该接口用于构建 ``SpectralNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了谱归一化层的功能,用于计算fc、conv1d、conv2d、conv3d层的权重参数的谱正则值,输入权重参数应分别为2-D, 3-D, 4-D, 5-D张量,输出张量与输入张量维度相同。谱特征值计算方式如下: - -步骤1:生成形状为[H]的向量U,以及形状为[W]的向量V,其中H是输入权重张量的第 ``dim`` 个维度,W是剩余维度的乘积。 - -步骤2: ``power_iters`` 应该是一个正整数,用U和V迭代计算 ``power_iters`` 轮,迭代步骤如下。 - -.. math:: - - \mathbf{v} &:= \frac{\mathbf{W}^{T} \mathbf{u}}{\|\mathbf{W}^{T} \mathbf{u}\|_2}\\ - \mathbf{u} &:= \frac{\mathbf{W}^{T} \mathbf{v}}{\|\mathbf{W}^{T} \mathbf{v}\|_2} - -步骤3:计算 :math:`\sigma(\mathbf{W})` 并特征值值归一化。 - -.. math:: - \sigma(\mathbf{W}) &= \mathbf{u}^{T} \mathbf{W} \mathbf{v}\\ - \mathbf{W} &= \frac{\mathbf{W}}{\sigma(\mathbf{W})} - -可参考: `Spectral Normalization `_ - -参数: - - **weight_shape** (list 或 tuple) - 权重参数的shape。 - - **dim** (int, 可选) - 将输入(weight)重塑为矩阵之前应排列到第一个的维度索引,如果input(weight)是fc层的权重,则应设置为0;如果input(weight)是conv层的权重,则应设置为1。默认值:0。 - - **power_iters** (int, 可选) - 将用于计算的 ``SpectralNorm`` 功率迭代次数,默认值:1。 - - **eps** (float, 可选) - ``eps`` 用于保证计算规范中的数值稳定性,分母会加上 ``eps`` 防止除零。默认值:1e-12。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - weight = np.random.random((2, 8, 32, 32)).astype('float32') - spectralNorm = fluid.dygraph.nn.SpectralNorm(weight.shape, dim=1, power_iters=2) - ret = spectralNorm(fluid.dygraph.base.to_variable(weight)) - diff --git a/doc/paddle/api/paddle/nn/add_position_encoding_cn.rst b/doc/paddle/api/paddle/nn/add_position_encoding_cn.rst deleted file mode 100644 index abba3377ba359ac496848262f1fe29705ea504b0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/add_position_encoding_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_add_position_encoding: - -add_position_encoding -------------------------------- - -.. py:function:: paddle.fluid.layers.add_position_encoding(input, alpha, beta, name=None) - -:alias_main: paddle.nn.functional.add_position_encoding -:alias: paddle.nn.functional.add_position_encoding,paddle.nn.functional.extension.add_position_encoding -:old_api: paddle.fluid.layers.add_position_encoding - - - -该OP将输入inpu中每个位置(序列中的位置)的特征与对应的位置编码加权求和,位置编码可参考论文: `Attention Is All You Need `_ - -输出的计算公式如下: - -.. math:: - - PE(pos, 2i) &= \sin{(pos / 10000^{2i / P})}\\ - PE(pos, 2i + 1) &= \cos{(pos / 10000^{2i / P})}\\ - Out(:, pos, i) &= \alpha * input(:, pos, i) + \beta * PE(pos, i) - -其中: - - PE(pos, 2i): pos位置对应的编码中偶数特征位上的值 - - PE(pos, 2i + 1): pos位置对应的编码中奇数特征位上的值 - -参数: - - **input** (Variable) – Tensor或LoD level为1的LoDTensor。Tensor时,其形状为 :math:`[N, M, P]` ,其中 :math:`N` 表示batch size, :math:`M` 表示序列长度, :math:`P` 为特征维度大小;LoDTensor时,其形状为 :math:`[N, P]` ,其中 :math:`N` 表示所有序列长度之和, :math:`P` 为特征维度大小。数据类型为float32或float64。 - - **alpha** (float) – 加权求和时输入input的权重系数 - - **beta** (float) – 加权求和时位置编码的权重系数 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: 加上位置编码后的Tensor或LoDTensor,和输入(input)具有相同数据类型和形状及LoD信息。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - tensor = fluid.data( - name='tensor', - shape=[None, 64, 512], - dtype='float32') - position_tensor = fluid.layers.add_position_encoding( - input=tensor, alpha=1.0, beta=1.0) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/continuous_value_model_cn.rst b/doc/paddle/api/paddle/nn/continuous_value_model_cn.rst deleted file mode 100644 index bdc610b1739df00f4d04f96ee501cfff7e107a94..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/continuous_value_model_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_continuous_value_model: - -continuous_value_model -------------------------------- - -.. py:function:: paddle.fluid.layers.continuous_value_model(input, cvm, use_cvm=True) - -:alias_main: paddle.nn.functional.continuous_value_model -:alias: paddle.nn.functional.continuous_value_model,paddle.nn.functional.extension.continuous_value_model -:old_api: paddle.fluid.layers.continuous_value_model - - - -**注意:该OP仅支持在CPU运行。** - -该OP在CTR项目中,用于去除或处理 ``input`` 中的展示和点击值。 - -输入 ``input`` 是一个含展示(show)和点击(click)的词向量,其形状为 :math:`[N, D]` (N为batch大小,D为 `2 + 嵌入维度` ),show和click占据词向量D的前两维。如果 ``use_cvm=True`` ,它会计算 :math:`log(show)` 和 :math:`log(click)` ,输出的形状为 :math:`[N, D]` 。如果 ``use_cvm=False`` ,它会从输入 ``input`` 中移除show和click,输出的形状为 :math:`[N, D - 2]` 。 ``cvm`` 为show和click信息,维度为 :math:`[N, 2]` 。 - -参数: - - **input** (Variable) - cvm操作的输入张量。维度为 :math:`[N, D]` 的2-D LoDTensor。 N为batch大小, D为 `2 + 嵌入维度` , `lod level = 1` 。 - - **cvm** (Variable) - cvm操作的展示和点击张量。维度为 :math:`[N, 2]` 的2-D Tensor。 N为batch大小,2为展示和点击值。 - - **use_cvm** (bool) - 是否使用展示和点击信息。如果使用,输出维度和输入相等,对 ``input`` 中的展示和点击值取log;如果不使用,输出维度为输入减2(移除展示和点击值)。 - -返回:Variable(LoDTensor)变量, :math:`[N, M]` 的2-D LoDTensor。如果 ``use_cvm=True`` ,M等于输入的维度D,否则M等于 `D - 2` 。 - -返回类型:变量(Variable),数据类型与 ``input`` 一致。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[-1, 1], lod_level=1, append_batch_size=False, dtype="int64") - label = fluid.layers.data(name="label", shape=[-1, 1], append_batch_size=False, dtype="int64") - embed = fluid.layers.embedding( - input=input, - size=[100, 11], - dtype='float32') - label_shape = fluid.layers.shape(label) - ones = fluid.layers.fill_constant(shape=[label_shape[0], 1], dtype="int64", value=1) - show_clk = fluid.layers.cast(fluid.layers.concat([ones, label], axis=1), dtype='float32') - show_clk.stop_gradient = True - input_with_cvm = fluid.layers.continuous_value_model(embed, show_clk, True) - - - - - - - diff --git a/doc/paddle/api/paddle/nn/control_flow/case_cn.rst b/doc/paddle/api/paddle/nn/control_flow/case_cn.rst deleted file mode 100644 index f1f76eae157728e7866eed1ef08e43c41dbe9a1f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/control_flow/case_cn.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. _cn_api_fluid_layers_case: - -case -------------------------------- - - -.. py:function:: paddle.fluid.layers.case(pred_fn_pairs, default=None, name=None) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.case -:alias: paddle.nn.case,paddle.nn.control_flow.case -:old_api: paddle.fluid.layers.case - - - -该OP的运行方式类似于python的if-elif-elif-else。 - -参数: - - **pred_fn_pairs** (list|tuple) - 一个list或者tuple,元素是二元组(pred, fn)。其中 ``pred`` 是形状为[1]的布尔型 Tensor,``fn`` 是一个可调用对象。所有的可调用对象都返回相同结构的Tensor。 - - **default** (callable,可选) - 可调用对象,返回一个或多个张量。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值:None。 - -返回:如果 ``pred_fn_pairs`` 中存在pred是True的元组(pred, fn),则返回第一个为True的pred的元组中fn的返回结果;如果 ``pred_fn_pairs`` 中不存在pred为True的元组(pred, fn) 且 ``default`` 不是None,则返回调用 ``default`` 的返回结果; -如果 ``pred_fn_pairs`` 中不存在pred为True的元组(pred, fn) 且 ``default`` 是None,则返回 ``pred_fn_pairs`` 中最后一个pred的返回结果。 - -返回类型:Variable|list(Variable) - -抛出异常: - - ``TypeError`` - 如果 ``pred_fn_pairs`` 的类型不是list或tuple。 - - ``TypeError`` - 如果 ``pred_fn_pairs`` 的元素的类型不是tuple。 - - ``TypeError`` - 如果 ``pred_fn_pairs`` 的tuple类型的元素大小不是2。 - - ``TypeError`` - 如果 ``pred_fn_pairs`` 中的2-tuple的第一个元素的类型不是Variable。 - - ``TypeError`` - 如果 ``pred_fn_pairs`` 中的2-tuple的第二个元素不是可调用对象。 - - ``TypeError`` - 当 ``default`` 不是None又不是可调用对象时。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - def fn_1(): - return layers.fill_constant(shape=[1, 2], dtype='float32', value=1) - - def fn_2(): - return layers.fill_constant(shape=[2, 2], dtype='int32', value=2) - - def fn_3(): - return layers.fill_constant(shape=[3], dtype='int32', value=3) - - main_program = fluid.default_startup_program() - startup_program = fluid.default_main_program() - with fluid.program_guard(main_program, startup_program): - x = layers.fill_constant(shape=[1], dtype='float32', value=0.3) - y = layers.fill_constant(shape=[1], dtype='float32', value=0.1) - z = layers.fill_constant(shape=[1], dtype='float32', value=0.2) - - pred_1 = layers.less_than(z, x) # true: 0.2 < 0.3 - pred_2 = layers.less_than(x, y) # false: 0.3 < 0.1 - pred_3 = layers.equal(x, y) # false: 0.3 == 0.1 - - # Call fn_1 because pred_1 is True - out_1 = layers.case( - pred_fn_pairs=[(pred_1, fn_1), (pred_2, fn_2)], default=fn_3) - - # Argument default is None and no pred in pred_fn_pairs is True. fn_3 will be called. - # because fn_3 is the last callable in pred_fn_pairs. - out_2 = layers.case(pred_fn_pairs=[(pred_2, fn_2), (pred_3, fn_3)]) - - exe = fluid.Executor(fluid.CPUPlace()) - res_1, res_2 = exe.run(main_program, fetch_list=[out_1, out_2]) - print(res_1) # [[1. 1.]] - print(res_2) # [3 3 3] - - - diff --git a/doc/paddle/api/paddle/nn/control_flow/cond_cn.rst b/doc/paddle/api/paddle/nn/control_flow/cond_cn.rst deleted file mode 100644 index a72495a7392e8a17695a1eee96e286a7bcfba3dc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/control_flow/cond_cn.rst +++ /dev/null @@ -1,94 +0,0 @@ -.. _cn_api_fluid_layers_cond: - -cond -------------------------------- - - -.. py:function:: paddle.fluid.layers.cond(pred, true_fn=None, false_fn=None, name=None) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.cond -:alias: paddle.nn.cond,paddle.nn.control_flow.cond -:old_api: paddle.fluid.layers.cond - - - -如果 ``pred`` 是 ``True`` ,该API返回 ``true_fn()`` ,否则返回 ``false_fn()`` 。 -用户如果不想在 ``callable`` 中做任何事,可以把 ``true_fn`` 或 ``false_fn`` 设为 ``None`` ,此时本API会把该 ``callable`` 视为简单返回 ``None`` 。 - -``true_fn`` 和 ``false_fn`` 需要返回同样嵌套结构(nest structure)的Tensor,如果不想返回任何值也可都返回 ``None`` 。 -PaddlePaddle里Tensor的嵌套结构是指一个Tensor,或者Tensor的元组(tuple),或者Tensor的列表(list)。 - -.. note:: - 1. 因为PaddlePaddle的静态图数据流, ``true_fn`` 和 ``false_fn`` 返回的元组必须形状相同,但是里面的Tensor形状可以不同。 - 2. 不论运行哪个分支,在 ``true_fn`` 和 ``false_fn`` 外创建的Tensor和Op都会被运行,即PaddlePaddle并不是惰性语法(lazy semantics)。例如 - - .. code-block:: python - - import paddle.fluid as fluid - a = fluid.data(name='a', shape=[-1, 1], dtype='float32') - b = fluid.data(name='b', shape=[-1, 1], dtype='float32') - c = a * b - out = fluid.layers.cond(a < b, lambda: a + c, lambda: b * b) - - 不管 ``a < b`` 是否成立, ``c = a * b`` 都会被运行。 - -参数: - - **pred** (Variable) - 一个形状为[1]的布尔型(boolean)的Tensor,该布尔值决定要返回 ``true_fn`` 还是 ``false_fn`` 的运行结果。 - - **true_fn** (callable) - 一个当 ``pred`` 是 ``True`` 时被调用的callable,默认值: ``None`` 。 - - **false_fn** (callable) - 一个当 ``pred`` 是 ``False`` 时被调用的callable,默认值: ``None`` 。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值: ``None`` 。 - -返回: - 如果 ``pred`` 是 ``True`` ,该API返回 ``true_fn()`` ,否则返回 ``false_fn()`` 。 - -返回类型:Variable|list(Variable)|tuple(Variable) - -抛出异常: - - ``TypeError`` - 如果 ``true_fn`` 或 ``false_fn`` 不是callable。 - - ``ValueError`` - 如果 ``true_fn`` 和 ``false_fn`` 没有返回同样的嵌套结构(nest structure),对嵌套结构的解释见上文。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - from paddle.fluid.executor import Executor - from paddle.fluid.framework import Program, program_guard - - # - # pseudocode: - # if 0.1 < 0.23: - # return 1, True - # else: - # return 3, 2 - # - - def true_func(): - return layers.fill_constant( - shape=[1, 2], dtype='int32', value=1), layers.fill_constant( - shape=[2, 3], dtype='bool', value=True) - - def false_func(): - return layers.fill_constant( - shape=[3, 4], dtype='float32', value=3), layers.fill_constant( - shape=[4, 5], dtype='int64', value=2) - - main_program = Program() - startup_program = Program() - with program_guard(main_program, startup_program): - x = layers.fill_constant(shape=[1], dtype='float32', value=0.1) - y = layers.fill_constant(shape=[1], dtype='float32', value=0.23) - pred = layers.less_than(x, y) - out = layers.cond(pred, true_func, false_func) - # out is a tuple containing 2 tensors - - place = fluid.CUDAPlace(0) if fluid.core.is_compiled_with_cuda( - ) else fluid.CPUPlace() - exe = fluid.Executor(place) - ret = exe.run(main_program, fetch_list=out) - # ret[0] = [[1 1]] - # ret[1] = [[ True True True] - # [ True True True]] - diff --git a/doc/paddle/api/paddle/nn/control_flow/switch_case_cn.rst b/doc/paddle/api/paddle/nn/control_flow/switch_case_cn.rst deleted file mode 100644 index a5b2766d722610d14738c437a485a660eb6e1c66..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/control_flow/switch_case_cn.rst +++ /dev/null @@ -1,83 +0,0 @@ -.. _cn_api_fluid_layers_switch_case: - -switch_case -------------------------------- - - -.. py:function:: paddle.fluid.layers.switch_case(branch_index, branch_fns, default=None, name=None) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.switch_case -:alias: paddle.nn.switch_case,paddle.nn.control_flow.switch_case -:old_api: paddle.fluid.layers.switch_case - - - -该OP的运行方式类似于c++的switch/case。 - -参数: - - **branch_index** (Variable)- 形状为[1]的Tensor,指定将要执行的分支。数据类型是 ``int32``, ``int64`` 或 ``uint8``。 - - **branch_fns** (dict|list|tuple) - 如果 ``branch_fns`` 是一个list或tuple,它的元素可以是 (int, callable) 二元组,即由整数和可调用对象构成的二元组,整数表示对应的可调用对象的键;也可以仅仅是可调用对象,它在list或者tuple中的实际索引值将作为该可调用对象的键。如果 ``branch_fns`` 是一个字典,那么它的键是整数,它的值是可调用对象。所有的可调用对象都返回相同结构的Tensor。 - - **default** (callable,可选) - 可调用对象,返回一个或多个张量。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值:None。 - -返回:如果 ``branch_fns`` 中存在与 ``branch_index`` 匹配的可调用对象,则返回该可调用对象的返回结果;如果 ``branch_fns`` 中不存在与 ``branch_index`` 匹配的可调用对象且 ``default`` 不是None,则返回调用 ``default`` 的返回结果; -如果 ``branch_fns`` 中不存在与 ``branch_index`` 匹配的可调用对象且 ``default`` 是None,则返回 ``branch_fns`` 中键值最大的可调用对象的返回结果。 - -返回类型:Variable|list(Variable) - -抛出异常: - - ``TypeError`` - 如果 ``branch_index`` 的类型不是list或tuple。 - - ``TypeError`` - 如果 ``branch_index`` 的数据类型不是 ``int32``, ``int64`` 或 ``uint8``。 - - ``TypeError`` - 如果 ``branch_fns`` 的类型不是dict,list或tuple。 - - ``TypeError`` - 如果 ``branch_fns`` 的元素不是2-tuple。 - - ``TypeError`` - 如果 ``branch_fns`` 中的2-tuple的第一个元素的类型不是整数。 - - ``ValueError`` - 如果 ``branch_fns`` 中的2-tuple的第一个元素值不唯一。 - - ``TypeError`` - 如果 ``branch_fns`` 中的2-tuple的第二个元素不是可调用对象。 - - ``TypeError`` - 当 ``default`` 不是None又不是可调用对象时。 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - def fn_1(): - return layers.fill_constant(shape=[1, 2], dtype='float32', value=1) - - def fn_2(): - return layers.fill_constant(shape=[2, 2], dtype='int32', value=2) - - def fn_3(): - return layers.fill_constant(shape=[3], dtype='int32', value=3) - - main_program = fluid.default_startup_program() - startup_program = fluid.default_main_program() - with fluid.program_guard(main_program, startup_program): - index_1 = layers.fill_constant(shape=[1], dtype='int32', value=1) - index_2 = layers.fill_constant(shape=[1], dtype='int32', value=2) - - out_1 = layers.switch_case( - branch_index=index_1, - branch_fns={1: fn_1, 2: fn_2}, - default=fn_3) - - out_2 = layers.switch_case( - branch_index=index_2, - branch_fns=[(1, fn_1), (2, fn_2)], - default=fn_3) - - # Argument default is None and no index matches. fn_3 will be called because of the max index 7. - out_3 = layers.switch_case( - branch_index=index_2, - branch_fns=[(0, fn_1), (4, fn_2), (7, fn_3)]) - - exe = fluid.Executor(fluid.CPUPlace()) - res_1, res_2, res_3 = exe.run(main_program, fetch_list=[out_1, out_2, out_3]) - print(res_1) # [[1. 1.]] - print(res_2) # [[2 2] [2 2]] - print(res_3) # [3 3 3] - - diff --git a/doc/paddle/api/paddle/nn/control_flow/while_loop_cn.rst b/doc/paddle/api/paddle/nn/control_flow/while_loop_cn.rst deleted file mode 100644 index 5cfb1f648a2210683736d8786f55eead04f991db..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/control_flow/while_loop_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_while_loop: - -while_loop -____________________________________ - - - -.. py:function:: paddle.fluid.layers.while_loop(cond, body, loop_vars, is_test=False, name=None) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.while_loop -:alias: paddle.nn.while_loop,paddle.nn.control_flow.while_loop -:old_api: paddle.fluid.layers.while_loop - - - -该API用于实现类似while的循环控制功能,只要循环条件 ``cond`` 的返回值为True,``while_loop`` 则会循环执行循环体 ``body`` ,直到 ``cond`` 的返回值为False。 - -**注意:** - ``body`` 中定义的局部变量无法使用 ``Executor`` 的 ``fetch_list`` 来获取的,变量需在 ``body`` 外定义并将其置于 ``loop_vars`` 中进行循环更新后才可通过 ``fetch_list`` 获取。 - -参数: - - **cond** (callable) - 返回boolean类型张量的可调用函数,用以判断循环是否继续执行。 ``cond`` 的参数和 ``loop_vars`` 相对应。 - - **body** (callable) - 循环执行的结构体。其返回一个包含tensor或LoDTensorArray的列表或元组,且这些tensor或LoDTensorArray的长度,结构,类型和 ``loop_vars`` 中的相同。 且``body`` 的参数与 ``loop_vars`` 相对应。 - - **loop_vars** (list|tuple) - 包含tensor或LoDTensorArray的列表或是元组,将其传入至 ``cond`` 和 ``body`` 中,得到循环条件和输出值。 - - **is_test** (bool,可选) - 用于表明是否在测试阶段执行,默认值为False。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`。一般无需设置,默认值为None。 - -返回:循环迭代之后 ``body`` 的返回值,和 ``loop_vars`` 具有相同的结构。 - -返回类型:list|tuple - -异常抛出: - - ``TypeError``:若 ``cond`` 不是可调用的。 - - ``TypeError``:若 ``body`` 不是可调用的。 - - ``TypeError``:若 ``loop_vars`` 不是列表或是元组。 - - ``TypeError``:若 ``cond`` 返回值不是变量。 - - ``TypeError``:若 ``cond`` 返回值不是boolean类型的variable。 - - ``TypeError``:若 ``cond`` 返回值的shape不等于1。 - - ``ValueError``:若 ``loop_vars`` 为空。 - - ``ValueError``:若 ``cond`` 返回值的长度和类型和 ``loop_vars`` 不同。 - -**示例代码** - -.. code-block:: python - - # 该示例代码展示整数循环+1,循环10次,输出计数结果 - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - def cond(i, ten): # 参数和loop_vars相对应 - return i < ten - - def body(i, ten): # 参数和loop_vars相对应 - i = i + 1 - return [i, ten] - - main_program = fluid.default_main_program() - startup_program = fluid.default_startup_program() - with fluid.program_guard(main_program, startup_program): - i = layers.fill_constant(shape=[1], dtype='int64', value=0) # 循环计数器 - ten = layers.fill_constant(shape=[1], dtype='int64', value=10) # 循环次数 - i, ten = layers.while_loop(cond, body, [i, ten]) - - exe = fluid.Executor(fluid.CPUPlace()) - res = exe.run(main_program, feed={}, fetch_list=[i]) - print(res) #[array([10])] diff --git a/doc/paddle/api/paddle/nn/decode/beam_search_cn.rst b/doc/paddle/api/paddle/nn/decode/beam_search_cn.rst deleted file mode 100644 index 36174f2a63b1dba8a02b7f34af9d2034e3363d6f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/decode/beam_search_cn.rst +++ /dev/null @@ -1,84 +0,0 @@ -.. _cn_api_fluid_layers_beam_search: - -beam_search -------------------------------- - -.. py:function:: paddle.fluid.layers.beam_search(pre_ids, pre_scores, ids, scores, beam_size, end_id, level=0, is_accumulated=True, name=None, return_parent_idx=False) - -:alias_main: paddle.nn.beam_search -:alias: paddle.nn.beam_search,paddle.nn.decode.beam_search -:old_api: paddle.fluid.layers.beam_search - - - -束搜索(Beam search)是在机器翻译等生成任务中选择候选词的一种经典算法 - -更多细节参考 `Beam Search `_ - -**该OP仅支持LoDTensor**,在计算产生得分之后使用,完成单个时间步内的束搜索。具体而言,在计算部分产生 ``ids`` 和 ``scores`` 后,对于每个源句(样本)该OP从 ``ids`` 中根据其对应的 ``scores`` 选择当前时间步 top-K (``K`` 是 ``beam_size``)的候选词id。而 ``pre_id`` 和 ``pre_scores`` 是上一时间步 ``beam_search`` 的输出,加入输入用于特殊处理到达结束的翻译候选。 - -注意,如果 ``is_accumulated`` 为 True,传入的 ``scores`` 应该是累积分数。反之,``scores`` 是单步得分,会在该OP内被转化为log值并累积到 ``pre_scores`` 作为最终得分。如需使用长度惩罚,应在计算累积分数前使用其他OP完成。 - -束搜索的完整用法请参阅以下示例: - - fluid/tests/book/test_machine_translation.py - - - -参数: - - **pre_ids** (Variable) - LoD level为2的LodTensor,表示前一时间步选择的候选id,是前一时间步 ``beam_search`` 的输出。第一步时,其形状应为为 :math:`[batch\_size,1]` , lod应为 :math:`[[0,1,...,batch\_size],[0,1,...,batch\_size]]` 。数据类型为int64。 - - **pre_scores** (Variable) - 维度和LoD均与 ``pre_ids`` 相同的LodTensor,表示前一时间步所选id对应的累积得分,是前一时间步 ``beam_search`` 的输出。数据类型为float32。 - - **ids** (None|Variable) - 包含候选id的LodTensor。LoD应与 ``pre_ids`` 相同,形状为 :math:`[batch\_size \times beam\_size,K]` ,其中第一维大小与 ``pre_ids`` 相同且``batch_size`` 会随样本到达结束而自动减小, ``K`` 应该大于 ``beam_size`` 。数据类型为int64。可为空,为空时使用 ``scores`` 上的索引作为id。 - - **scores** (Variable) - 表示 ``ids`` 对应的累积分数的LodTensor变量, 维度和LoD均与 ``ids`` 相同。 - - **beam_size** (int) - 指明束搜索中的束宽度。 - - **end_id** (int) - 指明标识序列结束的id。 - - **level** (int,可选) - **可忽略,当前不能更改** 。知道LoD level为2即可,两层lod的意义如下: 第一级表示每个源句(样本)包含的beam大小,若满足结束条件(达到 ``beam_size`` 个结束)则变为0;第二级是表示每个beam被选择的次数。 - - **is_accumulated** (bool,可选) - 指明输入分数 ``scores`` 是否为累积分数,默认为True。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **return_parent_idx** (bool,可选) - 指明是否返回一个额外的Tensor,该Tensor保存了选择的id的父节点(beam)在 ``pre_id`` 中索引,可用于通过gather OP更新其他Tensor的内容。默认为False。 - - -返回:Variable的二元组或三元组。二元组中包含了当前时间步选择的id和对应的累积得分两个LodTensor,形状相同且均为 :math:`[batch\_size×beam\_size,1]` ,LoD相同且level均为2,数据类型分别为int64和float32;若 ``return_parent_idx`` 为True时为三元组,多返回一个保存了父节点在 ``pre_id`` 中索引的Tensor,形状为 :math:`[batch\_size \times beam\_size]` ,数据类型为int64。 - -返回类型:tuple - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # 假设 `probs` 包含计算神经元所得的预测结果 - # `pre_ids` 和 `pre_scores` 为beam_search之前时间步的输出 - beam_size = 4 - end_id = 1 - pre_ids = fluid.layers.data( - name='pre_id', shape=[1], lod_level=2, dtype='int64') - pre_scores = fluid.layers.data( - name='pre_scores', shape=[1], lod_level=2, dtype='float32') - probs = fluid.layers.data( - name='probs', shape=[10000], dtype='float32') - topk_scores, topk_indices = fluid.layers.topk(probs, k=beam_size) - accu_scores = fluid.layers.elementwise_add( - x=fluid.layers.log(x=topk_scores), - y=fluid.layers.reshape( - pre_scores, shape=[-1]), - axis=0) - selected_ids, selected_scores = fluid.layers.beam_search( - pre_ids=pre_ids, - pre_scores=pre_scores, - ids=topk_indices, - scores=accu_scores, - beam_size=beam_size, - end_id=end_id) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/decode/beam_search_decode_cn.rst b/doc/paddle/api/paddle/nn/decode/beam_search_decode_cn.rst deleted file mode 100644 index a6b46142e1804180cae16c0ab99625fdafa3299c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/decode/beam_search_decode_cn.rst +++ /dev/null @@ -1,62 +0,0 @@ -.. _cn_api_fluid_layers_beam_search_decode: - -beam_search_decode -------------------------------- - -.. py:function:: paddle.fluid.layers.beam_search_decode(ids, scores, beam_size, end_id, name=None) - -:alias_main: paddle.nn.beam_search_decode -:alias: paddle.nn.beam_search_decode,paddle.nn.decode.beam_search_decode -:old_api: paddle.fluid.layers.beam_search_decode - - - -该OP用在整个束搜索(Beam search)结束后,通过沿 ``ids`` 中保存的搜索路径回溯,为每个源句(样本)构造完整的beam search结果序列并保存在LoDTensor中。LoDTensor的格式和解析方式如下: - -:: - - - 若 lod = [[0, 3, 6], [0, 12, 24, 40, 54, 67, 82]] - 从第一层LoD的内容可以得出:包含两个样本,每个样本均对应了3个(等于束的宽度)生成序列 - 从第二层LoD的内容可以得出:第一个样本对应的三个序列的长度分别为12, 12, 16,第一个样本对应的三个序列的长度分别为14, 13, 15。 - - -完整用法请参阅下面的使用示例: - - :: - - fluid/tests/book/test_machine_translation.py - -参数: - - **id** (Variable) - 保存了每个时间步选择的id(beam_search OP的输出)的LoDTensorArray。其中每个LoDTensor的数据类型为int64,LoD level为2,LoD中保存了搜索路径信息。 - - **score** (Variable) - 保存了每个时间步选择的id所对应累积得分(beam_search OP的输出)的LoDTensorArray,和 ``id`` 具有相同大小。其中每个LoDTensor要和 ``id`` 中相应LoDTensor具有相同的形状和LoD,表示其对应的累积得分。数据类型为float32。 - - **beam_size** (int) - 指示束搜索中波束的宽度。 - - **end_id** (int) - 指明标识序列结束的id。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: Variable的二元组, 包含了完整id序列和对应的累积得分两个LodTensor,数据类型分别为int64和float32,形状相同且均展开为1维,LoD相同且level均为2。根据两层LoD可分别得到每个源句(样本)有多少个生成序列和每个序列有多少个id。 - -返回类型: tuple - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # 假设 `ids` 和 `scores` 为LoDTensorArray类型的Variable,它们保留了 - # 所有时间步选择出的id和score - ids = fluid.layers.create_array(dtype='int64') - scores = fluid.layers.create_array(dtype='float32') - finished_ids, finished_scores = fluid.layers.beam_search_decode( - ids, scores, beam_size=5, end_id=0) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/decode/gather_tree_cn.rst b/doc/paddle/api/paddle/nn/decode/gather_tree_cn.rst deleted file mode 100644 index 0d8354364fcf965fa0e8a1a81d37a188bb8f0f4b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/decode/gather_tree_cn.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _cn_api_fluid_layers_gather_tree: - -gather_tree -------------------------------- - -.. py:function:: paddle.fluid.layers.gather_tree(ids, parents) - -:alias_main: paddle.nn.gather_tree -:alias: paddle.nn.gather_tree,paddle.nn.decode.gather_tree -:old_api: paddle.fluid.layers.gather_tree - - - -该OP在整个束搜索(Beam Search)结束后使用。在搜索结束后,可以获得每个时间步选择的的候选词id及其对应的在搜索树中的parent节点, ``ids`` 和 ``parents`` 的形状布局均为 :math:`[max\_time, batch\_size, beam\_size]` ,该OP从最后一个时间步回溯产生完整的id序列。 - - -示例: - -:: - - 给定: - ids = [[[2 2] - [6 1]] - [[3 9] - [6 1]] - [[0 1] - [9 0]]] - parents = [[[0 0] - [1 1]] - [[1 0] - [1 0]] - [[0 0] - [0 1]]] - - 结果: - gather_tree(ids, parents) - = [[[2 2] - [1 6]] - [[3 3] - [6 1]] - [[0 1] - [9 0]]] - - - -参数: - - **ids** (Variable) - 形状为 :math:`[length, batch\_size, beam\_size]` 的三维Tensor,数据类型是int32或int64。包含了所有时间步选择的id。 - - **parents** (Variable) - 形状和数据类型均与 ``ids`` 相同的Tensor。包含了束搜索中每一时间步所选id对应的parent。 - -返回:和 ``ids`` 具有相同形状和数据类型的Tensor。包含了根据parent回溯而收集产生的完整id序列。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - ids = fluid.data(name='ids', - shape=[5, 2, 2], - dtype='int64') - parents = fluid.data(name='parents', - shape=[5, 2, 2], - dtype='int64') - final_sequences = fluid.layers.gather_tree(ids, parents) - - - - - diff --git a/doc/paddle/api/paddle/nn/diag_embed_cn.rst b/doc/paddle/api/paddle/nn/diag_embed_cn.rst deleted file mode 100644 index f41a82046486ffc2f9229c5d20def7a8bf648d4b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/diag_embed_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_functional_diag_embed: - -diag_embed -------------------------------- - -.. py:function:: paddle.functional.diag_embed(input, offset=0, dim1=-2, dim2=-1): - -:alias_main: paddle.nn.functional.diag_embed -:alias: paddle.nn.functional.diag_embed,paddle.nn.functional.extension.diag_embed - - - - 该 OP 创建一个 Tensor,其在指定的 2D 平面(由 ``dim1`` 和 ``dim2`` 指定)上的对角线由输入 ``input`` 填充。 - 默认的,指定的 2D 平面由返回 Tensor 的最后两维组成。 - - 参数 ``offset`` 确定在指定的二维平面中填充对角线的位置: - - - 如果 offset = 0,则填充主对角线。 - - 如果 offset > 0,则填充主对角线右上的对角线。 - - 如果 offset < 0,则填充主对角线左下的对角线。 - -参数: - - **input** (Variable|numpy.ndarray)- 输入变量,至少为 1D 数组,支持数据类型为 float32,float64,int32,int64。 - - **offset** (int ,可选)- 从指定的二维平面中获取对角线的位置,默认值为 0,既主对角线。 - - **dim1** (int , 可选)- 填充对角线的二维平面的第一维,默认值为 -2。 - - **dim2** (int , 可选)- 填充对角线的二维平面的第二维,默认值为 -1。 - -返回: 指定二维平面填充了对角线的 Tensor。数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle.nn.functional as F - import paddle.fluid.dygraph as dg - import numpy as np - - diag_embed = np.random.randn(2, 3).astype('float32') - # [[ 0.7545889 , -0.25074545, 0.5929117 ], - # [-0.6097662 , -0.01753256, 0.619769 ]] - with dg.guard(): - data1 = F.diag_embed(diag_embed) - data1.numpy() - # [[[ 0.7545889 , 0. , 0. ], - # [ 0. , -0.25074545, 0. ], - # [ 0. , 0. , 0.5929117 ]], - - # [[-0.6097662 , 0. , 0. ], - # [ 0. , -0.01753256, 0. ], - # [ 0. , 0. , 0.619769 ]]] - - data2 = F.diag_embed(diag_embed, offset=-1, dim1=0, dim2=2) - data2.numpy() - # [[[ 0. , 0. , 0. , 0. ], - # [ 0.7545889 , 0. , 0. , 0. ], - # [ 0. , -0.25074545, 0. , 0. ], - # [ 0. , 0. , 0.5929117 , 0. ]], - # - # [[ 0. , 0. , 0. , 0. ], - # [-0.6097662 , 0. , 0. , 0. ], - # [ 0. , -0.01753256, 0. , 0. ], - # [ 0. , 0. , 0.619769 , 0. ]]] - - data3 = F.diag_embed(diag_embed, offset=1, dim1=0, dim2=2) - data3.numpy() - # [[[ 0. , 0.7545889 , 0. , 0. ], - # [ 0. , -0.6097662 , 0. , 0. ]], - # - # [[ 0. , 0. , -0.25074545, 0. ], - # [ 0. , 0. , -0.01753256, 0. ]], - # - # [[ 0. , 0. , 0. , 0.5929117 ], - # [ 0. , 0. , 0. , 0.619769 ]], - # - # [[ 0. , 0. , 0. , 0. ], - # [ 0. , 0. , 0. , 0. ]]] diff --git a/doc/paddle/api/paddle/nn/filter_by_instag_cn.rst b/doc/paddle/api/paddle/nn/filter_by_instag_cn.rst deleted file mode 100644 index 212eef72dc7a6b3dc1506270feabc78fcf29c2f1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/filter_by_instag_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_filter_by_instag: - -filter_by_instag -------------------------------- - -.. py:function:: paddle.fluid.layers.filter_by_instag(ins, ins_tag, filter_tag, is_lod) - -:alias_main: paddle.nn.functional.filter_by_instag -:alias: paddle.nn.functional.filter_by_instag,paddle.nn.functional.extension.filter_by_instag -:old_api: paddle.fluid.layers.filter_by_instag - - - -此函数通过instag来过滤ins batch,大量属于同样的tags的样本,我们可以指定我们想要的一些tags,属于这些tags的样本将会被保留在输出中,其余的将会移除。比如,一个batch有4个样本,每个样本都有自己的tag表。 - -Ins | Ins_Tag | - -|:—–:|:——:| - -| 0 | 0, 1 | - -| 1 | 1, 3 | - -| 2 | 0, 3 | - -| 3 | 2, 6 | - -Lod为[1,1,1,1],filter tags为[1],从上面的定义中,带有标签[1]的样本将会通过filter,所以,样本0和1将会通过并且出现在输出中。准确来说,如果 ``is_lod`` 为false,它是一个等于值全为1的lod_tensor的普通的tensor,和上面的例子很相似。 - -参数: - - **ins** (Variable) - 输入变量(LoDTensor),通常为2D向量,第一个维度可以有lod info,也可以没有。 - - **ins_tag** (Variable) - 输入变量(LoDTensor),通常为1维列表,通过lod info来分割。 - - **filter_tag** (Variable) - 输入变量(1D Tensor/List),通常为持有tags的列表。 - - **is_lod** (Bool) – 指定样本是否为lod tensor的布尔值。 - - **out_val_if_empty** (Int64) - 如果batch内样本被全部过滤,输出会被指定成这个值。 - -返回:过滤之后的样本(LoDTensor)和 损失权重(Tensor)。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid.layers as layers - ins = layers.data(name='Ins', shape=[-1,32], lod_level=0, dtype='float64') - ins_tag = layers.data(name='Ins_tag', shape=[-1,16], lod_level=0, dtype='int64') - filter_tag = layers.data(name='Filter_tag', shape=[-1,16], dtype='int64') - out, loss_weight = layers.filter_by_instag(ins, ins_tag, filter_tag, True) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/brelu_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/brelu_cn.rst deleted file mode 100644 index 0931ad4cea3cfd17ae8476e450762ed7b359c2c9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/brelu_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_brelu: - -brelu -------------------------------- - -.. py:function:: paddle.fluid.layers.brelu(x, t_min=0.0, t_max=24.0, name=None) - -:alias_main: paddle.nn.functional.brelu -:alias: paddle.nn.functional.brelu,paddle.nn.functional.activation.brelu -:old_api: paddle.fluid.layers.brelu - - - - -BReLU 激活函数 - -.. math:: out=min(max(x,t\_min),t\_max) - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型为float32,float64。 - - **t_min** (float, 可选) - BRelu的最小值,默认值为0.0。 - - **t_max** (float, 可选) - BRelu的最大值,默认值为24.0。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为None。 - -返回: 输出为Tensor,与 ``x`` 维度相同、数据类型相同。 - -返回类型: Variable - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - input_brelu = np.array([[-1,6],[1,15.6]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(input_brelu) - y = fluid.layers.brelu(x, t_min=1.0, t_max=10.0) - print(y.numpy()) - #[[ 1. 6.] - #[ 1. 10.]] diff --git a/doc/paddle/api/paddle/nn/functional/activation/elu_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/elu_cn.rst deleted file mode 100644 index 6d527ce9359d4b2561e7018b72e79839d158d8c2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/elu_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_elu: - -elu -------------------------------- - -.. py:function:: paddle.fluid.layers.elu(x, alpha=1.0, name=None) - -:alias_main: paddle.nn.functional.elu -:alias: paddle.nn.functional.elu,paddle.nn.functional.activation.elu -:old_api: paddle.fluid.layers.elu - - - -ELU激活层(ELU Activation Operator) - -根据 https://arxiv.org/abs/1511.07289 对输入Tensor中每个元素应用以下计算。 - -.. math:: - \\out=max(0,x)+min(0,α∗(e^{x}−1))\\ - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型为float32或float64。 - - **alpha** (float, 可选) - ELU的alpha值,默认值为1.0。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为None。 - -返回: 输出为Tensor,与 ``x`` 维度相同、数据类型相同。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - input_elu = np.array([[-1,6],[1,15.6]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(input_elu) - y = fluid.layers.elu(x, alpha=0.2) - print(y.numpy()) - # [[-0.12642411 6. ] - # [ 1. 15.6 ]] diff --git a/doc/paddle/api/paddle/nn/functional/activation/erf_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/erf_cn.rst deleted file mode 100644 index c30dc7175303dc3890049ad49cf5ee39505ece2c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/erf_cn.rst +++ /dev/null @@ -1,75 +0,0 @@ -.. _cn_api_fluid_layers_erf: - -erf -------------------------------- - -.. py:function:: paddle.fluid.layers.erf(x) - -:alias_main: paddle.erf -:alias: paddle.erf,paddle.tensor.erf,paddle.tensor.math.erf,paddle.nn.functional.erf,paddle.nn.functional.activation.erf -:old_api: paddle.fluid.layers.erf - - - -逐元素计算 Erf 激活函数。更多细节请参考 `Error function `_ 。 - - -.. math:: - out = \frac{2}{\sqrt{\pi}} \int_{0}^{x}e^{- \eta^{2}}d\eta - -参数: - - **x** (Variable) - Erf Op 的输入,多维 Tensor 或 LoDTensor,数据类型为 float16, float32 或 float64。 - -返回: - - 多维 Tensor 或 LoDTensor, 数据类型为 float16, float32 或 float64, 和输入 x 的数据类型相同,形状和输入 x 相同。 - -返回类型: - - Variable - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.erf(x) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[ 0.4643714 , -1.1509596 , 1.2538221 ], - # [ 0.34369683, 0.27478245, 1.1805398 ]], dtype=float32) - y_np - # array([[ 0.48863927, -0.8964121 , 0.9237998 ], - # [ 0.37307587, 0.30242872, 0.9049887 ]], dtype=float32) - -.. code-block:: python - - # imperative mode - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.erf(x) - y_np = y.numpy() - data - # array([[ 0.4643714 , -1.1509596 , 1.2538221 ], - # [ 0.34369683, 0.27478245, 1.1805398 ]], dtype=float32) - y_np - # array([[ 0.48863927, -0.8964121 , 0.9237998 ], - # [ 0.37307587, 0.30242872, 0.9049887 ]], dtype=float32) diff --git a/doc/paddle/api/paddle/nn/functional/activation/gelu_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/gelu_cn.rst deleted file mode 100644 index c234e3b574b2ee089f6cc39b000f28590ad1630d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/gelu_cn.rst +++ /dev/null @@ -1,82 +0,0 @@ -.. _cn_api_fluid_layers_gelu: - -gelu -------------------------------- - -.. py:function:: paddle.fluid.layers.gelu(x) - -:alias_main: paddle.nn.functional.gelu -:alias: paddle.nn.functional.gelu,paddle.nn.functional.activation.gelu -:old_api: paddle.fluid.layers.gelu - - - -逐元素计算 Gelu激活函数。更多细节请参考 `Gaussian Error Linear Units `_ 。 - -如果使用近似计算: - -.. math:: - out = 0.5 * x * (1 + tanh(\sqrt{\frac{2}{\pi}} * (x + 0.044715x^{3}))) - -如果不使用近似计算: - -.. math:: - out = 0.5 * x * (1 + erf(\frac{x}{\sqrt{2}})) - -参数: - - **x** (Variable) - Gelu Op 的输入,多维 Tensor 或 LoDTensor,数据类型为 float32 或 float64。 - - **approximate** (bool, 可选) - 是否使用近似计算,默认值为 False。 - -返回: - - 多维 Tensor 或 LoDTensor, 数据类型为 float32 或 float64, 和输入 x 的数据类型相同,形状和输入 x 相同。 - -返回类型: - - Variable - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.gelu(x) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[ 0.87165993, -1.0541513 , -0.37214822], - # [ 0.15647964, 0.32496083, 0.33045998]], dtype=float32) - y_np - # array([[ 0.70456535, -0.15380788, -0.13207214], - # [ 0.08796856, 0.20387867, 0.2080159 ]], dtype=float32) - -.. code-block:: python - - # imperative mode - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.gelu(x) - y_np = y.numpy() - data - # array([[ 0.87165993, -1.0541513 , -0.37214822], - # [ 0.15647964, 0.32496083, 0.33045998]], dtype=float32) - y_np - # array([[ 0.70456535, -0.15380788, -0.13207214], - # [ 0.08796856, 0.20387867, 0.2080159 ]], dtype=float32) diff --git a/doc/paddle/api/paddle/nn/functional/activation/hard_shrink_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/hard_shrink_cn.rst deleted file mode 100644 index d139a6a8fe52833cfa1e682bdcc7940d613b2270..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/hard_shrink_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_fluid_layers_hard_shrink: - -hard_shrink -------------------------------- - -.. py:function:: paddle.fluid.layers.hard_shrink(x,threshold=None) - -:alias_main: paddle.nn.functional.hard_shrink -:alias: paddle.nn.functional.hard_shrink,paddle.nn.functional.activation.hard_shrink -:old_api: paddle.fluid.layers.hard_shrink - - - -HardShrink激活函数(HardShrink activation operator) - - -.. math:: - - out = \begin{cases} - x, \text{if } x > \lambda \\ - x, \text{if } x < -\lambda \\ - 0, \text{otherwise} - \end{cases} - -参数: - - **x** - HardShrink激活函数的输入 - - **threshold** (FLOAT)-HardShrink激活函数的threshold值。[默认:0.5] - -返回:HardShrink激活函数的输出 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[784]) - result = fluid.layers.hard_shrink(x=data, threshold=0.3) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/hard_sigmoid_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/hard_sigmoid_cn.rst deleted file mode 100644 index f015a799c57376ee406cbac16d68d8a98b72dda4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/hard_sigmoid_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_layers_hard_sigmoid: - -hard_sigmoid -------------------------------- - -.. py:function:: paddle.fluid.layers.hard_sigmoid(x, slope=0.2, offset=0.5, name=None) - -:alias_main: paddle.nn.functional.hard_sigmoid -:alias: paddle.nn.functional.hard_sigmoid,paddle.nn.functional.activation.hard_sigmoid -:old_api: paddle.fluid.layers.hard_sigmoid - - - -sigmoid的分段线性逼近激活函数,速度比sigmoid快,详细解释参见 https://arxiv.org/abs/1603.00391。 - -.. math:: - - \\out=\max(0,\min(1,slope∗x+offset))\\ - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型必须为float32或float64。 - - **slope** (float,可选) - 斜率。值必须为正数,默认值为0.2。 - - **offset** (float,可选) - 偏移量。默认值为0.5。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:激活后的Tensor,形状、数据类型和 ``x`` 一致。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.fill_constant(shape=[3, 2], value=0.5, dtype='float32') # [[0.5, 0.5], [0.5, 0.5], [0.5, 0.5]] - result = fluid.layers.hard_sigmoid(data) # [[0.6, 0.6], [0.6, 0.6], [0.6, 0.6]] diff --git a/doc/paddle/api/paddle/nn/functional/activation/hard_swish_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/hard_swish_cn.rst deleted file mode 100644 index 8118ea27a2f2c6f1855e02cd8451a1de6d11151a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/hard_swish_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_layers_hard_swish: - -hard_swish -------------------------------- - -.. py:function:: paddle.fluid.layers.hard_swish(x, threshold=6.0, scale=6.0, offset=3.0, name=None) - -:alias_main: paddle.nn.functional.hard_swish -:alias: paddle.nn.functional.hard_swish,paddle.nn.functional.activation.hard_swish -:old_api: paddle.fluid.layers.hard_swish - - - -该OP实现了hard_swish激活函数。hard_swish激活函数在MobileNetV3架构中被提出,相较于swish函数,具有数值稳定性好,计算速度快等优点,具体原理请参考: https://arxiv.org/pdf/1905.02244.pdf - - :math:`out = \frac{x * (min(max(0, x+offset), threshold))}{scale}` - - 阈值 ``threshold`` 和缩放因子 ``scale`` 为正数,位移 ``offset`` 正负均可,建议使用默认参数。 - -参数: - - **x** (Variable) - 输入特征,多维Tensor。数据类型为float32或float64。 - - **threshold** (float,可选) - 激活操作中Relu函数的阈值,默认值为6.0。 - - **scale** (float,可选) - 激活操作的缩放因子,默认值为6.0。 - - **offset** (float,可选) - 激活操作的位移,默认值为3.0。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:经过hard_swish计算后的结果,数据类型及维度和x相同。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - DATATYPE='float32' - shape = [1,4] - - x_data = np.array([i for i in range(1,5)]).reshape(shape).astype(DATATYPE) - - x = fluid.layers.data(name="x", shape=shape, dtype=DATATYPE) - y = fluid.layers.hard_swish(x) - - place = fluid.CUDAPlace(0) - exe = fluid.Executor(place) - out, = exe.run(feed={'x':x_data}, fetch_list=[y.name]) - print(out) # [[0.66666667, 1.66666667,3., 4.]] - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/leaky_relu_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/leaky_relu_cn.rst deleted file mode 100644 index 736a39e0dfded848089f7511031addc5cf71dfe4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/leaky_relu_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_leaky_relu: - -leaky_relu -------------------------------- - -.. py:function:: paddle.fluid.layers.leaky_relu(x, alpha=0.02, name=None) - -:alias_main: paddle.nn.functional.leaky_relu -:alias: paddle.nn.functional.leaky_relu,paddle.nn.functional.activation.leaky_relu -:old_api: paddle.fluid.layers.leaky_relu - - - -LeakyRelu激活函数 - -.. math:: out=max(x,α∗x) - -参数: - - **x** (Variable) - 输入的多维LoDTensor/Tensor,数据类型为:float32,float64。 - - **alpha** (float) - 负斜率,缺省值为0.02。 - - **name** (str,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 与 ``x`` 维度相同,数据类型相同的LodTensor/Tensor。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # Graph Organizing - x = fluid.layers.data(name="x", shape=[2], dtype="float32") - res = fluid.layers.leaky_relu(x, alpha=0.1) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - x_i = np.array([[-1, 2], [3, -4]]).astype(np.float32) - res_val, = exe.run(fluid.default_main_program(), feed={'x':x_i}, fetch_list=[res]) - print(res_val) # [[-0.1, 2], [3, -0.4]] - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/logsigmoid_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/logsigmoid_cn.rst deleted file mode 100644 index 94ba6048566ebe86ee6de81466bef0b5dac0d8d8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/logsigmoid_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_logsigmoid: - -logsigmoid -------------------------------- - -.. py:function:: paddle.fluid.layers.logsigmoid(x, name=None) - -:alias_main: paddle.nn.functional.logsigmoid -:alias: paddle.nn.functional.logsigmoid,paddle.nn.functional.activation.logsigmoid -:old_api: paddle.fluid.layers.logsigmoid - - - -Logsigmoid激活函数 - - -.. math:: - - out = \log \frac{1}{1 + e^{-x}} - - -参数: - - **x** (Variable)- 张量(Tensor) - - **name** (str|None) - 该层名称(可选),若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.logsigmoid(data) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/maxout_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/maxout_cn.rst deleted file mode 100644 index 2f73289029229de4436d34bb99030a5eb958d1fb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/maxout_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_maxout: - -maxout -------------------------------- - -.. py:function:: paddle.fluid.layers.maxout(x, groups, name=None, axis=1) - -:alias_main: paddle.nn.functional.maxout -:alias: paddle.nn.functional.maxout,paddle.nn.functional.activation.maxout -:old_api: paddle.fluid.layers.maxout - - - -假设输入形状为(N, Ci, H, W),输出形状为(N, Co, H, W),则 :math:`Co=Ci/groups` 运算公式如下: - -.. math:: - - y_{si+j} &= \max_k x_{gsi + sk + j} \\ - g &= groups \\ - s &= \frac{input.size}{num\_channels} \\ - 0 \le &i < \frac{num\_channels}{groups} \\ - 0 \le &j < s \\ - 0 \le &k < groups - - -请参阅论文: - - Maxout Networks: http://www.jmlr.org/proceedings/papers/v28/goodfellow13.pdf - - Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks: https://arxiv.org/pdf/1312.6082v4.pdf - -参数: - - **x** (Variable) - 4-D Tensor,maxout算子的输入张量,其数据类型为float32,数据格式为NCHW或NHWC,其中N为 batch size ,C为通道数,H和W为特征图的高和宽。 - - **groups** (int) - 指定将输入张量的channel通道维度进行分组的数目。输出的通道数量为通道数除以组数。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **axis** (int) - 指定通道所在维度的索引。当数据格式为NCHW时,axis应该被设置为1,当数据格式为NHWC时,axis应该被设置为-1或者3。默认值:1。 - -返回:4-D Tensor,数据类型和格式与 `x` 一致。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` - 如果 ``axis`` 既不是1,也不是-1或3。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.data( - name='data', - shape=[None, 256, 32, 32], - dtype='float32') - out = fluid.layers.maxout(input, groups=2) diff --git a/doc/paddle/api/paddle/nn/functional/activation/relu6_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/relu6_cn.rst deleted file mode 100644 index 05c83c7e5e48c6fda17a075dd8bbd13f00c62c02..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/relu6_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_layers_relu6: - -relu6 -------------------------------- - -.. py:function:: paddle.fluid.layers.relu6(x, threshold=6.0, name=None) - -:alias_main: paddle.nn.functional.relu6 -:alias: paddle.nn.functional.relu6,paddle.nn.functional.activation.relu6 -:old_api: paddle.fluid.layers.relu6 - - - -relu6激活函数 - -.. math:: out=min(max(0, x), threshold) - - -参数: - - **x** (Variable) - 输入的多维 ``Tensor`` ,数据类型为:float32、float64。 - - **threshold** (float) - relu6的阈值。默认值为6.0 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 与 ``x`` 维度相同、数据类型相同的 ``Tensor``。 - -返回类型: Variable - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[-1,0],[2.5,7.8]]) - with fluid.dygraph.guard(): - x1 = fluid.dygraph.to_variable(in1) - out1 = fluid.layers.relu6(x=x1, threshold=6.0) - print(out1.numpy()) - # [[0. 0. ] - # [2.5 6. ]] diff --git a/doc/paddle/api/paddle/nn/functional/activation/selu_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/selu_cn.rst deleted file mode 100644 index 4aee591bcc8dd87d0df0e9f0ef8faed224d5c5f1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/selu_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_selu: - -selu -------------------------------- - -.. py:function:: paddle.fluid.layers.selu(x, scale=None, alpha=None, name=None) - -:alias_main: paddle.nn.functional.selu -:alias: paddle.nn.functional.selu,paddle.nn.functional.activation.selu -:old_api: paddle.fluid.layers.selu - - - -SeLU激活函数,其公式如下: - -.. math:: - selu= \lambda* - \begin{cases} - x &\quad \text{ if } x>0 \\ - \alpha * e^x - \alpha &\quad \text{ if } x<=0 - \end{cases} - -输入 ``x`` 可以选择性携带LoD信息。输出和它共享此LoD信息(如果有)。 - -参数: - - **x** (Variable) - 输入变量,为数据类型为float32,float64的多维Tensor或者LoDTensor。 - - **scale** (float,可选) – 可选,表示SeLU激活函数中的λ的值,其默认值为 1.0507009873554804934193349852946。 详情请见: `Self-Normalizing Neural Networks `_。 - - **alpha** (float,可选) – 可选,表示SeLU激活函数中的α的值,其默认值为 1.6732632423543772848170429916717。 详情请见: `Self-Normalizing Neural Networks `_。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:一个Tensor,shape和输入Tensor相同。 - -返回类型:Variable(Tensor|LoDTensor),LoD信息与输入Tensor一致。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - inputs = fluid.layers.data(name="x", shape=[2, 2], dtype="float32") - output = fluid.layers.selu(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([[0, 1],[2, 3]]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) # [array([[0. , 1.050701],[2.101402, 3.152103]], dtype=float32)] - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/soft_relu_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/soft_relu_cn.rst deleted file mode 100644 index dc8912ca4f15478b703df53a3f1a58f7e97c5668..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/soft_relu_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_soft_relu: - -soft_relu -------------------------------- - -.. py:function:: paddle.fluid.layers.soft_relu(x, threshold=40.0, name=None) - -:alias_main: paddle.nn.functional.soft_relu -:alias: paddle.nn.functional.soft_relu,paddle.nn.functional.activation.soft_relu -:old_api: paddle.fluid.layers.soft_relu - - - -SoftReLU 激活函数. - -.. math:: out=ln(1+exp(max(min(x,threshold),-threshold))) - -参数: - - **x** (Variable) - SoftReLU激活函数的输入,为数据类型为float32,float64的多维Tensor或者LoDTensor。 - - **threshold** (float) - SoftRelu的阈值,默认为40.0。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:一个Tensor,shape和输入Tensor相同。 - -返回类型:Variable(Tensor|LoDTensor),LoD信息与输入Tensor一致。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - inputs = fluid.layers.data(name="x", shape=[2, 2], dtype="float32") - output = fluid.layers.soft_relu(inputs, threshold=20.0) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([[0, 1],[2, 3]]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) # [array([[0.6931472, 1.3132616], [2.126928 , 3.0485873]], dtype=float32)] - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/softmax_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/softmax_cn.rst deleted file mode 100755 index a11f955072ab19183abde10ce55469e81bc1c696..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/softmax_cn.rst +++ /dev/null @@ -1,118 +0,0 @@ -.. _cn_api_fluid_layers_softmax: - -softmax -------------------------------- - -.. py:function:: paddle.fluid.layers.softmax(input, use_cudnn=False, name=None, axis=-1) - -:alias_main: paddle.nn.functional.softmax -:alias: paddle.nn.functional.softmax,paddle.nn.functional.activation.softmax -:old_api: paddle.fluid.layers.softmax - - - -该OP实现了softmax层。OP的计算过程如下: - -步骤1:输入 ``input`` 的 ``axis`` 维会被置换到最后一维; - -步骤2:将输入 ``Tensor`` 在逻辑上变换为二维矩阵。二维矩阵第一维(列长度)是输入除最后一维之外的其他维度值的乘积,第二维(行长度)和输入 ``axis`` 维的长度相同;对于矩阵的每一行,softmax操作对其进行重新缩放,使得该行的每个元素在 \[0,1\] 范围内,并且总和为1; - -步骤3:softmax操作执行完成后,执行步骤1和步骤2的逆运算,将二维矩阵恢复至和输入 ``input`` 相同的维度。 - -上述步骤2中softmax操作计算过程如下: - - - 对于二维矩阵的每一行,计算K维向量(K是输入第 ``axis`` 维的长度)中指定位置的指数值和全部位置指数值的和。 - - - 指定位置指数值与全部位置指数值之和的比值就是softmax操作的输出。 - -对于二维矩阵中的第i行和第j列有: - -.. math:: - - - Out[i,j] = \frac{exp(X[i,j])}{\sum_j exp(X[i,j])} - -- 示例1(矩阵一共有三维。axis = -1,表示沿着最后一维(即第三维)做softmax操作) - -.. code-block:: python - - 输入 - - X.shape = [2, 3, 4] - - X.data = [[[2.0, 3.0, 4.0, 5.0], - [3.0, 4.0, 5.0, 6.0], - [7.0, 8.0, 8.0, 9.0]], - [[1.0, 2.0, 3.0, 4.0], - [5.0, 6.0, 7.0, 8.0], - [6.0, 7.0, 8.0, 9.0]]] - - axis = -1 - - 输出 - - Out.shape = [2, 3, 4] - - Out.data = [[[0.0320586 , 0.08714432, 0.23688282, 0.64391426], - [0.0320586 , 0.08714432, 0.23688282, 0.64391426], - [0.07232949, 0.19661193, 0.19661193, 0.53444665]], - [[0.0320586 , 0.08714432, 0.23688282, 0.64391426], - [0.0320586 , 0.08714432, 0.23688282, 0.64391426], - [0.0320586 , 0.08714432, 0.23688282, 0.64391426]]] - -- 示例2(矩阵一共有三维。axis = 1,表示沿着第二维做softmax操作) - -.. code-block:: python - - 输入 - - X.shape = [2, 3, 4] - - X.data = [[[2.0, 3.0, 4.0, 5.0], - [3.0, 4.0, 5.0, 6.0], - [7.0, 8.0, 8.0, 9.0]], - [[1.0, 2.0, 3.0, 4.0], - [5.0, 6.0, 7.0, 8.0], - [6.0, 7.0, 8.0, 9.0]]] - - axis = 1 - - 输出 - - Out.shape = [2, 3, 4] - - Out.data = [[[0.00657326, 0.00657326, 0.01714783, 0.01714783], - [0.01786798, 0.01786798, 0.04661262, 0.04661262], - [0.97555875, 0.97555875, 0.93623955, 0.93623955]], - [[0.00490169, 0.00490169, 0.00490169, 0.00490169], - [0.26762315, 0.26762315, 0.26762315, 0.26762315], - [0.72747516, 0.72747516, 0.72747516, 0.72747516]]] - - -参数: - - **input** (Variable) - 任意维度的多维 ``Tensor`` ,数据类型为float32或float64。 - - **use_cudnn** (bool, 可选) - 指示是否用cudnn库。当 ``use_cudnn`` 为True时,在安装GPU版本Paddle并且本机安装cudnn库的前提下,使用GPU训练或推理时才有效。默认值:False。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **axis** (int, 可选) - 指示进行softmax计算的维度索引,其范围应为 :math:`[-1,rank-1]` ,其中rank是输入变量的秩。默认值:-1(表示对最后一维做softmax操作)。 - -返回:表示softmax操作结果的 ``Tensor`` ,数据类型和 ``input`` 一致,返回维度和 ``input`` 一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name="input", shape=[-1, 3],dtype="float32") - result = fluid.layers.softmax(data,axis=1) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(3, 3).astype("float32") - output= exe.run(feed={"input": x}, - fetch_list=[result[0]]) - print(output) - diff --git a/doc/paddle/api/paddle/nn/functional/activation/softplus_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/softplus_cn.rst deleted file mode 100644 index 34ffe22854ec38f6e4d6379ff4925f002005901a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/softplus_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_softplus: - -softplus -------------------------------- - -.. py:function:: paddle.fluid.layers.softplus(x,name=None) - -:alias_main: paddle.nn.functional.softplus -:alias: paddle.nn.functional.softplus,paddle.nn.functional.activation.softplus -:old_api: paddle.fluid.layers.softplus - - - -softplus激活函数 - -.. math:: - out = \ln(1 + e^{x}) - -参数: - - **x** (Variable) - 张量(Tensor) - - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.softplus(data) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/softshrink_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/softshrink_cn.rst deleted file mode 100644 index b3a1af822dfe31a96ad9802e5b4795f1ea10624c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/softshrink_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_softshrink: - -softshrink -------------------------------- - -.. py:function:: paddle.fluid.layers.softshrink(x, alpha=None) - -:alias_main: paddle.nn.functional.softshrink -:alias: paddle.nn.functional.softshrink,paddle.nn.functional.activation.softshrink -:old_api: paddle.fluid.layers.softshrink - - - -Softshrink激活函数 - -.. math:: - out = \begin{cases} - x - \alpha, \text{if } x > \alpha \\ - x + \alpha, \text{if } x < -\alpha \\ - 0, \text{otherwise} - \end{cases} - -参数: - - **x** (Variable0 - 张量(Tensor) - - **alpha** (float) - 上面公式中alpha的值 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.softshrink(data) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/softsign_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/softsign_cn.rst deleted file mode 100644 index ca46bf270800dd0764d000c9b3275a45553c0bb1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/softsign_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_softsign: - -softsign -------------------------------- - -.. py:function:: paddle.fluid.layers.softsign(x,name=None) - -:alias_main: paddle.nn.functional.softsign -:alias: paddle.nn.functional.softsign,paddle.nn.functional.activation.softsign -:old_api: paddle.fluid.layers.softsign - - - - -softsign激活函数 - -.. math:: - out = \frac{x}{1 + |x|} - -参数: - - **x** (Variable) - 张量(Tensor) - - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.softsign(data) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/swish_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/swish_cn.rst deleted file mode 100644 index 85ab54d4c1830bdac80f80e1e1454dc3e0308808..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/swish_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_swish: - -swish -------------------------------- - -.. py:function:: paddle.fluid.layers.swish(x, beta=1.0, name=None) - -:alias_main: paddle.nn.functional.swish -:alias: paddle.nn.functional.swish,paddle.nn.functional.activation.swish -:old_api: paddle.fluid.layers.swish - - - -逐元素计算 Swish 激活函数,参考 `Searching for Activation Functions `_ 。 - -.. math:: - out = \frac{x}{1 + e^{- beta * x}} - -参数: - - **x** (Variable) - 多维 Tensor 或 LoDTensor,数据类型为 float32,float64。 - - **beta** (float) - Swish operator 的常量 beta,默认值为 1.0。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - Swish op 的结果,多维 Tensor 或 LoDTensor。数据类型为 float32 或 float64,数据类型以及形状和输入 x 一致。 - -返回类型: - - Variable - - -**代码示例:** - -.. code-block:: python - - # 静态图使用 - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.swish(x, beta=2.0) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[-1.1239197 , 1.3391294 , 0.03921051], - # [ 1.1970421 , 0.02440812, 1.2055548 ]], dtype=float32) - y_np - # array([[-0.2756806 , 1.0610548 , 0.01998957], - # [ 0.9193261 , 0.01235299, 0.9276883 ]], dtype=float32) - -.. code-block:: python - - # 动态图使用 - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.swish(x) - y_np = y.numpy() - data - # array([[-0.0816701 , 1.1603649 , -0.88325626], - # [ 0.7522361 , 1.0978601 , 0.12987892]], dtype=float32) - y_np - # array([[-0.03916847, 0.8835007 , -0.25835553], - # [ 0.51126915, 0.82324016, 0.06915068]], dtype=float32) - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/tanh_shrink_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/tanh_shrink_cn.rst deleted file mode 100644 index 6002d1216918b363c9c7a890d40456c37e9b88f5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/tanh_shrink_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_tanh_shrink: - -tanh_shrink -------------------------------- - -.. py:function:: paddle.fluid.layers.tanh_shrink(x, name=None) - -:alias_main: paddle.nn.functional.tanh_shrink -:alias: paddle.nn.functional.tanh_shrink,paddle.nn.functional.activation.tanh_shrink -:old_api: paddle.fluid.layers.tanh_shrink - - - -tanh_shrink激活函数 - -.. math:: - out = x - \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} - -参数: - - - **x** - TanhShrink算子的输入 - - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.tanh_shrink(data) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/activation/thresholded_relu_cn.rst b/doc/paddle/api/paddle/nn/functional/activation/thresholded_relu_cn.rst deleted file mode 100644 index e4942697680025e6145c476612d3a1668e643f47..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/activation/thresholded_relu_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_thresholded_relu: - -thresholded_relu -------------------------------- - -.. py:function:: paddle.fluid.layers.thresholded_relu(x,threshold=None) - -:alias_main: paddle.nn.functional.thresholded_relu -:alias: paddle.nn.functional.thresholded_relu,paddle.nn.functional.activation.thresholded_relu -:old_api: paddle.fluid.layers.thresholded_relu - - - -逐元素计算 ThresholdedRelu激活函数。 - -.. math:: - - out = \left\{\begin{matrix} - x, &if x > threshold\\ - 0, &otherwise - \end{matrix}\right. - -参数: - - **x** (Variable) -ThresholdedRelu Op 的输入,多维 Tensor 或 LoDTensor,数据类型为 float32,float64。 - - **threshold** (float,可选)-激活函数的 threshold 值,如 threshold 值为 None,则其值为 1.0。 - -返回: - - 多维 Tensor 或 LoDTensor, 数据类型为 float32 或 float64, 和输入 x 的数据类型相同,形状和输入 x 相同。 - -返回类型: - - Variable - -**代码示例**: - -.. code-block:: python - - # 静态图使用 - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.thresholded_relu(x, threshold=0.1) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - start = fluid.default_startup_program() - main = fluid.default_main_program() - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[ 0.21134382, -1.1805999 , 0.32876605], - # [-1.2210793 , -0.7365624 , 1.0013918 ]], dtype=float32) - y_np - # array([[ 0.21134382, -0. , 0.32876605], - # [-0. , -0. , 1.0013918 ]], dtype=float32) - - -.. code-block:: python - - # 动态图使用 - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.thresholded_relu(x, threshold=0.1) - y_np = y.numpy() - data - # array([[ 0.21134382, -1.1805999 , 0.32876605], - # [-1.2210793 , -0.7365624 , 1.0013918 ]], dtype=float32) - y_np - # array([[ 0.21134382, -0. , 0.32876605], - # [-0. , -0. , 1.0013918 ]], dtype=float32) diff --git a/doc/paddle/api/paddle/nn/functional/add_position_encoding_cn.rst b/doc/paddle/api/paddle/nn/functional/add_position_encoding_cn.rst deleted file mode 100644 index abba3377ba359ac496848262f1fe29705ea504b0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/add_position_encoding_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_add_position_encoding: - -add_position_encoding -------------------------------- - -.. py:function:: paddle.fluid.layers.add_position_encoding(input, alpha, beta, name=None) - -:alias_main: paddle.nn.functional.add_position_encoding -:alias: paddle.nn.functional.add_position_encoding,paddle.nn.functional.extension.add_position_encoding -:old_api: paddle.fluid.layers.add_position_encoding - - - -该OP将输入inpu中每个位置(序列中的位置)的特征与对应的位置编码加权求和,位置编码可参考论文: `Attention Is All You Need `_ - -输出的计算公式如下: - -.. math:: - - PE(pos, 2i) &= \sin{(pos / 10000^{2i / P})}\\ - PE(pos, 2i + 1) &= \cos{(pos / 10000^{2i / P})}\\ - Out(:, pos, i) &= \alpha * input(:, pos, i) + \beta * PE(pos, i) - -其中: - - PE(pos, 2i): pos位置对应的编码中偶数特征位上的值 - - PE(pos, 2i + 1): pos位置对应的编码中奇数特征位上的值 - -参数: - - **input** (Variable) – Tensor或LoD level为1的LoDTensor。Tensor时,其形状为 :math:`[N, M, P]` ,其中 :math:`N` 表示batch size, :math:`M` 表示序列长度, :math:`P` 为特征维度大小;LoDTensor时,其形状为 :math:`[N, P]` ,其中 :math:`N` 表示所有序列长度之和, :math:`P` 为特征维度大小。数据类型为float32或float64。 - - **alpha** (float) – 加权求和时输入input的权重系数 - - **beta** (float) – 加权求和时位置编码的权重系数 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: 加上位置编码后的Tensor或LoDTensor,和输入(input)具有相同数据类型和形状及LoD信息。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - tensor = fluid.data( - name='tensor', - shape=[None, 64, 512], - dtype='float32') - position_tensor = fluid.layers.add_position_encoding( - input=tensor, alpha=1.0, beta=1.0) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/assign_cn.rst b/doc/paddle/api/paddle/nn/functional/assign_cn.rst deleted file mode 100644 index da7b3c8f146aa744735c464902f0d633364e8288..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/assign_cn.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _cn_api_fluid_layers_assign: - -assign -------------------------------- - -.. py:function:: paddle.fluid.layers.assign(input,output=None) - -:alias_main: paddle.nn.functional.assign -:alias: paddle.nn.functional.assign,paddle.nn.functional.common.assign -:old_api: paddle.fluid.layers.assign - - - -该OP将输入Tensor或numpy数组拷贝至输出Tensor。 - -参数: - - **input** (Variable|np.ndarray) - 输入Tensor或numpy数组,支持数据类型为float32, float64, int32, int64和bool。 - - **output** (Variable,可选) - 输出Tensor。如果为None,则创建一个新的Tensor作为输出Tensor,默认值为None。 - -返回:输出Tensor,形状、数据类型、数据值和 ``input`` 一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.fill_constant(shape=[3, 2], value=2.5, dtype='float64') # [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] - result1 = fluid.layers.create_tensor(dtype='float64') - fluid.layers.assign(data, result1) # result1 = [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] - result2 = fluid.layers.assign(data) # result2 = [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] - result3 = fluid.layers.assign(np.array([[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]], dtype='float32')) # result3 = [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] diff --git a/doc/paddle/api/paddle/nn/functional/brelu_cn.rst b/doc/paddle/api/paddle/nn/functional/brelu_cn.rst deleted file mode 100644 index 0931ad4cea3cfd17ae8476e450762ed7b359c2c9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/brelu_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_brelu: - -brelu -------------------------------- - -.. py:function:: paddle.fluid.layers.brelu(x, t_min=0.0, t_max=24.0, name=None) - -:alias_main: paddle.nn.functional.brelu -:alias: paddle.nn.functional.brelu,paddle.nn.functional.activation.brelu -:old_api: paddle.fluid.layers.brelu - - - - -BReLU 激活函数 - -.. math:: out=min(max(x,t\_min),t\_max) - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型为float32,float64。 - - **t_min** (float, 可选) - BRelu的最小值,默认值为0.0。 - - **t_max** (float, 可选) - BRelu的最大值,默认值为24.0。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为None。 - -返回: 输出为Tensor,与 ``x`` 维度相同、数据类型相同。 - -返回类型: Variable - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - input_brelu = np.array([[-1,6],[1,15.6]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(input_brelu) - y = fluid.layers.brelu(x, t_min=1.0, t_max=10.0) - print(y.numpy()) - #[[ 1. 6.] - #[ 1. 10.]] diff --git a/doc/paddle/api/paddle/nn/functional/common/assign_cn.rst b/doc/paddle/api/paddle/nn/functional/common/assign_cn.rst deleted file mode 100644 index da7b3c8f146aa744735c464902f0d633364e8288..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/common/assign_cn.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _cn_api_fluid_layers_assign: - -assign -------------------------------- - -.. py:function:: paddle.fluid.layers.assign(input,output=None) - -:alias_main: paddle.nn.functional.assign -:alias: paddle.nn.functional.assign,paddle.nn.functional.common.assign -:old_api: paddle.fluid.layers.assign - - - -该OP将输入Tensor或numpy数组拷贝至输出Tensor。 - -参数: - - **input** (Variable|np.ndarray) - 输入Tensor或numpy数组,支持数据类型为float32, float64, int32, int64和bool。 - - **output** (Variable,可选) - 输出Tensor。如果为None,则创建一个新的Tensor作为输出Tensor,默认值为None。 - -返回:输出Tensor,形状、数据类型、数据值和 ``input`` 一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.fill_constant(shape=[3, 2], value=2.5, dtype='float64') # [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] - result1 = fluid.layers.create_tensor(dtype='float64') - fluid.layers.assign(data, result1) # result1 = [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] - result2 = fluid.layers.assign(data) # result2 = [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] - result3 = fluid.layers.assign(np.array([[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]], dtype='float32')) # result3 = [[2.5, 2.5], [2.5, 2.5], [2.5, 2.5]] diff --git a/doc/paddle/api/paddle/nn/functional/common/dropout_cn.rst b/doc/paddle/api/paddle/nn/functional/common/dropout_cn.rst deleted file mode 100644 index 8c748ec91af6395405bb46a43b3e94b59ebfa153..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/common/dropout_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_dropout: - -dropout -------------------------------- - -.. py:function:: paddle.fluid.layers.dropout(x,dropout_prob,is_test=False,seed=None,name=None,dropout_implementation='downgrade_in_infer') - -:alias_main: paddle.nn.functional.dropout -:alias: paddle.nn.functional.dropout,paddle.nn.functional.common.dropout -:old_api: paddle.fluid.layers.dropout - - - -dropout操作 - -丢弃或者保持x的每个元素独立。Dropout是一种正则化手段,通过在训练过程中阻止神经元节点间的相关性来减少过拟合。根据给定的丢弃概率,dropout操作符按丢弃概率随机将一些神经元输出设置为0,其他的仍保持不变。 - -dropout op可以从Program中删除,提高执行效率。 - -参数: - - **x** (Variable) - 输入,多维Tensor。数据类型:float32和float64。 - - **dropout_prob** (float32) - 输入单元的丢弃概率,即输入单元设置为0的概率。 - - **is_test** (bool) - 标记是否是测试阶段。默认:False。 - - **seed** (int) - 整型数据,用于创建随机种子。如果该参数设为None,则使用随机种子。注:如果给定一个整型种子,始终丢弃相同的输出单元。训练过程中勿用固定不变的种子。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **dropout_implementation** (str) - 丢弃单元的方式,有两种'downgrade_in_infer'和'upscale_in_train'两种选择,默认:'downgrade_in_infer'。具体作用可以参考一下描述。 - - 1. downgrade_in_infer(default), 在预测时减小输出结果 - - - train: out = input * mask - - - inference: out = input * (1.0 - dropout_prob) - - (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``dropout_prob`` ) - - 2. upscale_in_train, 增加训练时的结果 - - - train: out = input * mask / ( 1.0 - dropout_prob ) - - - inference: out = input - - (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``dropout_prob`` ) - -dropout操作符可以从程序中移除,使程序变得高效。 - -返回:Tensor。经过丢弃部分数据之后的结果,与输入X形状相同的张量。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name="x", shape=[32, 32], dtype="float32") - droped = fluid.layers.dropout(x, dropout_prob=0.5) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(32, 32)).astype('float32') - output = exe.run(feed={"x": np_x}, fetch_list = [droped]) - print(output) - diff --git a/doc/paddle/api/paddle/nn/functional/common/label_smooth_cn.rst b/doc/paddle/api/paddle/nn/functional/common/label_smooth_cn.rst deleted file mode 100644 index 62292e20d0bbe1245f67a0f58f57a5941f5a9911..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/common/label_smooth_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_label_smooth: - -label_smooth -------------------------------- - -.. py:function:: paddle.fluid.layers.label_smooth(label, prior_dist=None, epsilon=0.1, dtype='float32', name=None) - -:alias_main: paddle.nn.functional.label_smooth -:alias: paddle.nn.functional.label_smooth,paddle.nn.functional.common.label_smooth -:old_api: paddle.fluid.layers.label_smooth - - - -该OP实现了标签平滑的功能。标签平滑是一种对分类器层进行正则化的机制,称为标签平滑正则化(LSR)。由于直接优化正确标签的对数似然可能会导致过拟合,降低模型的适应能力,因此提出了标签平滑的方法来降低模型置信度。 - -标签平滑使用标签 :math:`y` 和一些固定模式随机分布变量 :math:`\mu` 。对 :math:`k` 标签,标签平滑的计算方式如下。 - -.. math:: - - \tilde{y_k} = (1 - \epsilon) * y_k + \epsilon * \mu_k, - -其中 :math:`1-\epsilon` 和 :math:`\epsilon` 分别是权重, :math:`\tilde{y_k}` 是平滑后的标签,通常 :math:`\mu` 使用均匀分布。 - - -关于更多标签平滑的细节, `查看论文 `_ 。 - - -参数: - - **label** (Variable) - 包含标签数据的输入变量。 标签数据应使用 one-hot 表示,是维度为 :math:`[N_1, ..., Depth]` 的多维Tensor,其中Depth为字典大小。 - - **prior_dist** (Variable,可选) - 用于平滑标签的先验分布,是维度为 :math:`[1,class\_num]` 的2D Tensor。 如果未设置,则使用均匀分布。默认值为None。 - - **epsilon** (float,可选) - 用于混合原始真实分布和固定分布的权重。默认值为0.1。 - - **dtype** (np.dtype|core.VarDesc.VarType|str,可选) - 输入 ``Tensor`` 的数据类型,,数据类型可以为”float32“或”float64“。默认值为”float32“。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:为平滑后标签的 ``Tensor`` ,数据类型为dtype设置的数据类型,维度也与输入的label参数维度相同。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - label = layers.data(name="label", shape=[1], dtype="float32") - one_hot_label = layers.one_hot(input=label, depth=10) - smooth_label = layers.label_smooth(label=one_hot_label, epsilon=0.1, dtype="float32") - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/common/one_hot_cn.rst b/doc/paddle/api/paddle/nn/functional/common/one_hot_cn.rst deleted file mode 100644 index 2aaaf117e6fc9dc5ab26032db91bef286f14e567..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/common/one_hot_cn.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. _cn_api_fluid_layers_one_hot: - -one_hot -------------------------------- - -.. py:function:: paddle.fluid.layers.one_hot(input, depth, allow_out_of_range=False) - - - - -**注意:此OP要求输入Tensor shape的最后一维必须为1。此OP将在未来的版本中被移除!推荐使用fluid.** :ref:`cn_api_fluid_one_hot` 。 - -该OP将输入(input)中的每个id转换为一个one-hot向量,其长度为 ``depth`` ,该id对应的向量维度上的值为1,其余维度的值为0。 - -输出的Tensor(或LoDTensor)的shape是将输入shape的最后一维替换为depth的维度。 - -- 示例1(allow_out_of_range=False): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [3], [0]] - depth = 4 - - 输出: - Out.shape = [4, 4] - Out.data = [[0., 1., 0., 0.], - [0., 1., 0., 0.], - [0., 0., 0., 1.], - [1., 0., 0., 0.]] - -- 示例2 (allow_out_of_range=True): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [5], [0]] - depth = 4 - allow_out_of_range=True - - 输出: - Out.shape = [4, 4] - Out.data = [[0., 1., 0., 0.], - [0., 1., 0., 0.], - [0., 0., 0., 0.], ## 这一维的值是5,超过了depth,因此填成0 - [1., 0., 0., 0.]] - -- 示例3 (allow_out_of_range=False): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [5], [0]] - depth = 4 - allow_out_of_range=False - - 输出:抛出 Illegal value 的异常 - X中第2维的值是5,超过了depth,而allow_out_of_range=False表示不允许超过,因此抛异常。 - - -参数: - - **input** (Variable) - 维度为 :math:`[N_1, ..., N_n, 1]` 的多维Tensor或LoDTensor,维度至少两维,且最后一维必须是1。数据类型为int32或int64。 - - **depth** (int) - 用于定义一个one-hot向量的长度。若输入为词id,则 ``depth`` 通常取值为词典大小。 - - **allow_out_of_range** (bool) - 指明input中所包含的id值是否可以大于depth值。当超过depth时,如果 `allow_out_of_range` 为False,则会抛出 `Illegal value` 的异常;如果设置为True,该id对应的向量为0向量。默认值为False。 - -返回:转换后的one_hot Tensor或LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - # 该代码对应上述第一个示例,其中输入label的shape是[4, 1],输出one_hot_label的shape是[4, 4] - label = fluid.layers.data(name="label", shape=[4, 1], append_batch_size=False, dtype="int64") - one_hot_label = fluid.layers.one_hot(input=label, depth=4) diff --git a/doc/paddle/api/paddle/nn/functional/common/pad2d_cn.rst b/doc/paddle/api/paddle/nn/functional/common/pad2d_cn.rst deleted file mode 100644 index 08e937f50a7eb33bb21adadc2039984ff221cf31..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/common/pad2d_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_layers_pad2d: - -pad2d -------------------------------- - -.. py:function:: paddle.fluid.layers.pad2d(input, paddings=[0, 0, 0, 0], mode='constant', pad_value=0.0, data_format='NCHW', name=None) - -:alias_main: paddle.nn.functional.pad2d -:alias: paddle.nn.functional.pad2d,paddle.nn.functional.common.pad2d -:old_api: paddle.fluid.layers.pad2d - - - -该OP依照 paddings 和 mode 属性对input进行2维 ``pad`` 。 - -参数: - - **input** (Variable) - 类型为float32的4-D Tensor, format为 `[N, C, H, W]` 或 `[N, H, W, C]` 。 - - **paddings** (Variable | List[int32]) - 填充大小。如果paddings是一个List,它必须包含四个整数 `[padding_top, padding_bottom, padding_left, padding_right]` 。 - 如果paddings是Variable, 则是类型为int32 的1-D Tensor,shape是 `[4]` 。默认值为 `[0,0,0,0]` 。 - - **mode** (str) - padding的三种模式,分别为 `'constant'` (默认)、 `'reflect'` 、 `'edge'` 。 `'constant'` 为填充常数 `pad_value` , `'reflect'` 为填充以input边界值为轴的映射, `'edge'` 为填充input边界值。具体结果可见以下示例。默认值为 `'constant'` 。 - - **pad_value** (float32) - 以 `'constant'` 模式填充区域时填充的值。默认值为0.0。 - - **data_format** (str) - 指定input的format,可为 `'NCHW'` 和 `'NHWC'` ,默认值为 `'NCHW'` 。 - - **name** (str, 可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,缺省值为None。 -返回: 对input进行2维 ``pad`` 的结果,数据类型和input一样的4-D Tensor。 - -返回类型:Variable - -**示例**: - -.. code-block:: text - - Input = [[[[1., 2., 3.], - [4., 5., 6.]]]] - - Case 0: - paddings = [0, 1, 2, 3], - mode = 'constant' - pad_value = 0 - Out = [[[[0., 0., 1., 2., 3., 0., 0., 0.], - [0., 0., 4., 5., 6., 0., 0., 0.], - [0., 0., 0., 0., 0., 0., 0., 0.]]]] - - Case 1: - paddings = [0, 1, 2, 1], - mode = 'reflect' - Out = [[[[3., 2., 1., 2., 3., 2.], - [6., 5., 4., 5., 6., 5.], - [3., 2., 1., 2., 3., 2.]]]] - - Case 2: - paddings = [0, 1, 2, 1], - mode = 'edge' - Out = [[[[1., 1., 1., 2., 3., 3.], - [4., 4., 4., 5., 6., 6.], - [4., 4., 4., 5., 6., 6.]]]] - - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.data(name='data', shape=[None, 3, 32, 32], dtype='float32') - result = fluid.layers.pad2d(input=data, paddings=[0, 1, 2, 3], mode='reflect') diff --git a/doc/paddle/api/paddle/nn/functional/common/pad_cn.rst b/doc/paddle/api/paddle/nn/functional/common/pad_cn.rst deleted file mode 100644 index a9ed06ded042fe47826667b3d70acfe766181c21..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/common/pad_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_pad: - -pad -------------------------------- - -.. py:function:: paddle.fluid.layers.pad(x, paddings, pad_value=0.0, name=None) - -:alias_main: paddle.nn.functional.pad -:alias: paddle.nn.functional.pad,paddle.nn.functional.common.pad -:old_api: paddle.fluid.layers.pad - - - -该OP在Tensor上填充一个由 ``pad_value`` 给出的常数值,填充宽度由 ``paddings`` 指定。 -其中,维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 - -**示例**: - -.. code-block:: text - - Given: - x = [[1, 2], [3, 4]] - - paddings = [0, 1, 1, 2] - - pad_value = 0 - - Return: - out = [[0, 1, 2, 0, 0] - [0, 3, 4, 0, 0] - [0, 0, 0, 0, 0]] - - -参数: - - **x** (Variable) — 多维Tensor,数据类型为float32 - - **paddings** (list of integers) — 整数列表,指定每个维度填充值的个数。维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 ``paddings`` 长度必须是 ``rank(x)×2`` - - **pad_value** (float32, 可选) — 用来填充的常量值,数据类型为float。默认值为0. - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 填充后的Tensor,数据类型与输入 ``x`` 相同 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - # x 为一个秩为2的张量 - import paddle.fluid as fluid - x = fluid.data(name='data', shape=[300, 300], dtype='float32') - out = fluid.layers.pad(x=x, paddings=[0, 1, 1, 2], pad_value=0.) - - diff --git a/doc/paddle/api/paddle/nn/functional/common/pad_constant_like_cn.rst b/doc/paddle/api/paddle/nn/functional/common/pad_constant_like_cn.rst deleted file mode 100644 index 8f0bad53df1e4c53ef64baa921b1153404d98a5b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/common/pad_constant_like_cn.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. _cn_api_fluid_layers_pad_constant_like: - -pad_constant_like -------------------------------- - -.. py:function:: paddle.fluid.layers.pad_constant_like(x, y, pad_value=0.0, name=None) - -:alias_main: paddle.nn.functional.pad_constant_like -:alias: paddle.nn.functional.pad_constant_like,paddle.nn.functional.common.pad_constant_like -:old_api: paddle.fluid.layers.pad_constant_like - - - -该OP使用 ``pad_value`` 填充 ``y`` ,填充到每个维度值的数量由x和y的形状而指定,((0,x.shape[0] - y.shape[0]), ..., (0, x.shape[i] - y.shape[i]), ..., (0, x.shape[n] - y.shape[n]))是每个维度填充的宽度,对于维度i,填充宽度 ``(0, x.shape[i] - y.shape[i])`` ,表示在y的第i维开头不填充,而在末尾填充 ``x.shape[i] - y.shape[i]`` 个位置。该OP要求y与x具有相同的秩,并且对每个维度i, ``y.shape[i] <= x.shape[i]`` 。 - -**示例**: - -.. code-block:: text - - Given: - X = [[[[ 0, 1, 2], - [ 3, 4, 5]], - [[ 6, 7, 8], - [ 9, 10, 11]], - [[12, 13, 14], - [15, 16, 17]]], - [[[18, 19, 20], - [21, 22, 23]], - [[24, 25, 26], - [27, 28, 29]], - [[30, 31, 32], - [33, 34, 35]]]] - - X.shape = (2, 3, 2, 3) - - Y = [[[[35, 36, 37]], - [[38, 39, 40]], - [[41, 42, 43]]]] - - Y.shape = (1, 3, 1, 3) - - And - pad_value = 0. - - Return: - Out = [[[[35, 36, 37], - [ 0, 0, 0]], - [[38, 39, 40], - [ 0, 0, 0]], - [[41, 42, 43], - [ 0, 0, 0]]], - [[[ 0, 0, 0], - [ 0, 0, 0]], - [[ 0, 0, 0], - [ 0, 0, 0]], - [[ 0, 0, 0], - [ 0, 0, 0]]]] - - Out.shape = [2, 3, 2, 3] - - -参数: - - **x** (Variable)- 多维Tensor - - **y** (Variable)- 多维Tensor,与x具有相同的秩,而且对任意维度 ``i`` ,要求满足 ``y.shape[i] <= x.shape[i]`` 。数据类型为float32或float64 - - **pad_value** (float,可选) - 用于填充的常量值。默认值为0. - - **name** (str | None) - (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:经过维度填充后的Tensor,与x具有相同的shape,与y具有相同的数据类型 - -返回类型: Variable - -**示例代码** - -.. code-block:: python - - # x是秩为4的tensor, x.shape = (2, 3, 2, 3) - # y是秩为4的tensor, y.shape = (1, 3, 1, 3) - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[2,3,2,3], dtype='float32') - y = fluid.data(name='y', shape=[1,3,1,3], dtype='float32') - out = fluid.layers.pad_constant_like(x=x, y=y, pad_value=0.) - # out是秩为4的tensor, out.shape = [2, 3 ,2 , 3] - - - - diff --git a/doc/paddle/api/paddle/nn/functional/common/unfold_cn.rst b/doc/paddle/api/paddle/nn/functional/common/unfold_cn.rst deleted file mode 100644 index 4422467062eb9865d286f8a08faf834b4d256c76..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/common/unfold_cn.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. _cn_api_fluid_layers_unfold: - -unfold -------------------------------- - -.. py:function:: paddle.fluid.layers.unfold(x, kernel_size, strides=1, paddings=0, dilation=1, name=None) - -:alias_main: paddle.nn.functional.unfold -:alias: paddle.nn.functional.unfold,paddle.nn.functional.common.unfold -:old_api: paddle.fluid.layers.unfold - - - -该OP实现的功能与卷积中用到的im2col函数一样,通常也被称作为im2col过程。对于每一个卷积核覆盖下的区域,元素会被重新排成一列。当卷积核在整个图片上滑动时,将会形成一系列的列向量。对于每一个输入形状为[N, C, H, W]的 ``x`` ,都将会按照下面公式计算出一个形状为[N, Cout, Lout]的输出。 - - -.. math:: - - dkernel[0] &= dilations[0] * (kernel\_sizes[0] - 1) + 1 - - dkernel[1] &= dilations[1] * (kernel\_sizes[1] - 1) + 1 - - hout &= \frac{H + paddings[0] + paddings[2] - dkernel[0]}{strides[0]} + 1 - - wout &= \frac{W + paddings[1] + paddings[3] - dkernel[1]}{strides[1]} + 1 - - Cout &= C * kernel\_sizes[0] * kernel\_sizes[1] - - Lout &= hout * wout - -**样例**: - -:: - - Given: - x.shape = [5, 10, 25, 25] - kernel_size = [3, 3] - strides = 1 - paddings = 1 - - Return: - out.shape = [5, 90, 625] - - -参数: - - **x** (Variable) – 输入4-D Tensor,形状为[N, C, H, W],数据类型为float32或者float64 - - **kernel_size** (int|list of int) – 卷积核的尺寸,整数或者整型列表。如果为整型列表,应包含两个元素 ``[k_h, k_w]`` ,卷积核大小为 ``k_h * k_w`` ;如果为整数k,会被当作整型列表 ``[k, k]`` 处理 - - **strides** (int|list of int,可选) – 卷积步长,整数或者整型列表。如果为整型列表,应该包含两个元素 ``[stride_h, stride_w]`` 。如果为整数,则 ``stride_h = stride_w = strides`` 。默认值为1 - - **paddings** (int|list of int,可选) – 每个维度的扩展, 整数或者整型列表。如果为整型列表,长度应该为4或者2;长度为4 对应的padding参数是:[padding_top, padding_left,padding_bottom, padding_right],长度为2对应的padding参数是[padding_h, padding_w],会被当作[padding_h, padding_w, padding_h, padding_w]处理。如果为整数padding,则会被当作[padding, padding, padding, padding]处理。默认值为0 - - **dilations** (int|list of int,可选) – 卷积膨胀,整型列表或者整数。如果为整型列表,应该包含两个元素[dilation_h, dilation_w]。如果是整数dilation,会被当作整型列表[dilation, dilation]处理。默认值为1 - - **name** (str|None,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - - -返回: unfold操作之后的结果,形状如上面所描述的[N, Cout, Lout],Cout每一个滑动block里面覆盖的元素个数,Lout是滑动block的个数,数据类型与 ``x`` 相同 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name = 'data', shape = [3, 224, 224], dtype = 'float32') - y = fluid.layers.unfold(x, [3, 3], 1, 1, 1) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/continuous_value_model_cn.rst b/doc/paddle/api/paddle/nn/functional/continuous_value_model_cn.rst deleted file mode 100644 index bdc610b1739df00f4d04f96ee501cfff7e107a94..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/continuous_value_model_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_continuous_value_model: - -continuous_value_model -------------------------------- - -.. py:function:: paddle.fluid.layers.continuous_value_model(input, cvm, use_cvm=True) - -:alias_main: paddle.nn.functional.continuous_value_model -:alias: paddle.nn.functional.continuous_value_model,paddle.nn.functional.extension.continuous_value_model -:old_api: paddle.fluid.layers.continuous_value_model - - - -**注意:该OP仅支持在CPU运行。** - -该OP在CTR项目中,用于去除或处理 ``input`` 中的展示和点击值。 - -输入 ``input`` 是一个含展示(show)和点击(click)的词向量,其形状为 :math:`[N, D]` (N为batch大小,D为 `2 + 嵌入维度` ),show和click占据词向量D的前两维。如果 ``use_cvm=True`` ,它会计算 :math:`log(show)` 和 :math:`log(click)` ,输出的形状为 :math:`[N, D]` 。如果 ``use_cvm=False`` ,它会从输入 ``input`` 中移除show和click,输出的形状为 :math:`[N, D - 2]` 。 ``cvm`` 为show和click信息,维度为 :math:`[N, 2]` 。 - -参数: - - **input** (Variable) - cvm操作的输入张量。维度为 :math:`[N, D]` 的2-D LoDTensor。 N为batch大小, D为 `2 + 嵌入维度` , `lod level = 1` 。 - - **cvm** (Variable) - cvm操作的展示和点击张量。维度为 :math:`[N, 2]` 的2-D Tensor。 N为batch大小,2为展示和点击值。 - - **use_cvm** (bool) - 是否使用展示和点击信息。如果使用,输出维度和输入相等,对 ``input`` 中的展示和点击值取log;如果不使用,输出维度为输入减2(移除展示和点击值)。 - -返回:Variable(LoDTensor)变量, :math:`[N, M]` 的2-D LoDTensor。如果 ``use_cvm=True`` ,M等于输入的维度D,否则M等于 `D - 2` 。 - -返回类型:变量(Variable),数据类型与 ``input`` 一致。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[-1, 1], lod_level=1, append_batch_size=False, dtype="int64") - label = fluid.layers.data(name="label", shape=[-1, 1], append_batch_size=False, dtype="int64") - embed = fluid.layers.embedding( - input=input, - size=[100, 11], - dtype='float32') - label_shape = fluid.layers.shape(label) - ones = fluid.layers.fill_constant(shape=[label_shape[0], 1], dtype="int64", value=1) - show_clk = fluid.layers.cast(fluid.layers.concat([ones, label], axis=1), dtype='float32') - show_clk.stop_gradient = True - input_with_cvm = fluid.layers.continuous_value_model(embed, show_clk, True) - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/conv2d_cn.rst b/doc/paddle/api/paddle/nn/functional/conv2d_cn.rst deleted file mode 100644 index 4ae868dfea111869eaa664cc4ca7a763c86651c3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/conv2d_cn.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _cn_api_fluid_layers_conv2d: - -conv2d -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv2d(input, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format="NCHW") - -:api_attr: 声明式编程模式(静态图) - - - -该OP是二维卷积层(convolution2D layer),根据输入、滤波器、步长(stride)、填充(padding)、膨胀比例(dilations)一组参数计算输出特征层大小。输入和输出是NCHW或NHWC格式,其中N是批尺寸,C是通道数,H是特征高度,W是特征宽度。滤波器是MCHW格式,M是输出图像通道数,C是输入图像通道数,H是滤波器高度,W是滤波器宽度。如果组数(groups)大于1,C等于输入图像通道数除以组数的结果。详情请参考UFLDL's : `卷积 `_ 。如果bias_attr不为False,卷积计算会添加偏置项。如果指定了激活函数类型,相应的激活函数会作用在最终结果上。 - -对每个输入X,有等式: - -.. math:: - - Out = \sigma \left ( W * X + b \right ) - -其中: - - :math:`X` :输入值,NCHW或NHWC格式的4-D Tensor - - :math:`W` :滤波器值,MCHW格式的4-D Tensor - - :math:`*` :卷积操作 - - :math:`b` :偏置值,2-D Tensor,形状为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值,NCHW或NHWC格式的4-D Tensor, 和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入形状::math:`(N,C_{in},H_{in},W_{in})` - - 滤波器形状: :math:`(C_{out},C_{in},H_{f},W_{f})` - -- 输出: - - 输出形状: :math:`(N,C_{out},H_{out},W_{out})` - -其中 - -.. math:: - - H_{out} &= \frac{\left ( H_{in} + padding\_height\_top + padding\_height\_bottom-\left ( dilation[0]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - W_{out} &= \frac{\left ( W_{in} + padding\_width\_left + padding\_width\_right -\left ( dilation[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - -如果 ``padding`` = "SAME": - -.. math:: - H_{out} = \frac{(H_{in} + stride[0] - 1)}{stride[0]} - -.. math:: - W_{out} = \frac{(W_{in} + stride[1] - 1)}{stride[1]} - -如果 ``padding`` = "VALID": - -.. math:: - H_{out} = \frac{\left ( H_{in} -\left ( dilation[0]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - W_{out} = \frac{\left ( W_{in} -\left ( dilation[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - -参数: - - **input** (Variable) - 形状为 :math:`[N, C, H, W]` 或 :math:`[N, H, W, C]` 的4-D Tensor,N是批尺寸,C是通道数,H是特征高度,W是特征宽度,数据类型为float16, float32或float64。 - - **num_filters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - - **filter_size** (int|list|tuple) - 滤波器大小。如果它是一个列表或元组,则必须包含两个整数值:(filter_size_height,filter_size_width)。若为一个整数,filter_size_height = filter_size_width = filter_size。 - - **stride** (int|list|tuple,可选) - 步长大小。滤波器和输入进行卷积计算时滑动的步长。如果它是一个列表或元组,则必须包含两个整型数:(stride_height,stride_width)。若为一个整数,stride_height = stride_width = stride。默认值:1。 - - **padding** (int|list|tuple|str,可选) - 填充大小。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含4个二元组:当 ``data_format`` 为"NCHW"时为 [[0,0], [0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NHWC"时为[[0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含4个整数值:[padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含2个整数值:[padding_height, padding_width],此时padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_height = padding_width = padding。默认值:0。 - - **dilation** (int|list|tuple,可选) - 膨胀比例大小。空洞卷积时会使用该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息。如果膨胀比例为列表或元组,则必须包含两个整型数:(dilation_height,dilation_width)。若为一个整数,dilation_height = dilation_width = dilation。默认值:1。 - - **groups** (int,可选) - 二维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=n,输入和滤波器分别根据通道数量平均分为n组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算,……,第n组滤波器和第n组输入进行卷积计算。默认值:1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool,可选)- 指定偏置参数属性的对象。若 ``bias_attr`` 为bool类型,只支持为False,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool,可选)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **act** (str,可选) - 激活函数类型, 如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` 。如果设为None,则未添加激活函数。默认值:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值:None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:4-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回卷积计算的结果,如果指定激活层,则返回卷积和激活计算之后的最终结果。 - -返回类型:Variable。 - -抛出异常: - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``input`` 的通道数未被明确定义。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有4个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果输入不是4-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - - ``ShapeError`` - 如果输出的通道数不能被 ``groups`` 整除。 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv2d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv2d(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/conv2d_transpose_cn.rst b/doc/paddle/api/paddle/nn/functional/conv2d_transpose_cn.rst deleted file mode 100644 index 3223f07188db98723157b6d8a53336dd9291653a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/conv2d_transpose_cn.rst +++ /dev/null @@ -1,120 +0,0 @@ -.. _cn_api_fluid_layers_conv2d_transpose: - -conv2d_transpose -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv2d_transpose(input, num_filters, output_size=None, filter_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format='NCHW') - -:api_attr: 声明式编程模式(静态图) - - - -二维转置卷积层(Convlution2D transpose layer) - -该层根据输入(input)、滤波器(filter)和卷积核膨胀比例(dilations)、步长(stride)、填充(padding)来计算输出特征层大小或者通过output_size指定输出特征层大小。输入(Input)和输出(Output)为NCHW或NHWC格式,其中N为批尺寸,C为通道数(channel),H为特征层高度,W为特征层宽度。滤波器是MCHW格式,M是输出图像通道数,C是输入图像通道数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入图像通道数除以组数的结果。转置卷积的计算过程相当于卷积的反向计算。转置卷积又被称为反卷积(但其实并不是真正的反卷积)。欲了解转置卷积层细节,请参考下面的说明和 参考文献_ 。如果参数bias_attr不为False, 转置卷积计算会添加偏置项。如果act不为None,则转置卷积计算之后添加相应的激活函数。 - -.. _参考文献: https://arxiv.org/pdf/1603.07285.pdf - - -输入 :math:`X` 和输出 :math:`Out` 函数关系如下: - -.. math:: - Out=\sigma (W*X+b)\\ - -其中: - - :math:`X` : 输入,具有NCHW或NHWC格式的4-D Tensor - - :math:`W` : 滤波器,具有NCHW格式的4-D Tensor - - :math:`*` : 卷积计算(注意:转置卷积本质上的计算还是卷积) - - :math:`b` : 偏置(bias),2-D Tensor,形状为 ``[M,1]`` - - :math:`σ` : 激活函数 - - :math:`Out` : 输出值,NCHW或NHWC格式的4-D Tensor, 和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入Tensor的形状: :math:`(N,C_{in}, H_{in}, W_{in})` - - 滤波器的形状 : :math:`(C_{in}, C_{out}, H_f, W_f)` - -- 输出: - - 输出Tensor的形状 : :math:`(N,C_{out}, H_{out}, W_{out})` - -其中 - -.. math:: - - & H'_{out} = (H_{in}-1)*strides[0] - pad\_height\_top - pad\_height\_bottom + dilations[0]*(H_f-1)+1\\ - & W'_{out} = (W_{in}-1)*strides[1]- pad\_width\_left - pad\_width\_right + dilations[1]*(W_f-1)+1 \\ - & H_{out}\in[H'_{out},H'_{out} + strides[0])\\ - & W_{out}\in[W'_{out},W'_{out} + strides[1])\\ - -如果 ``padding`` = "SAME": - -.. math:: - & H'_{out} = \frac{(H_{in} + stride[0] - 1)}{stride[0]}\\ - & W'_{out} = \frac{(W_{in} + stride[1] - 1)}{stride[1]}\\ - -如果 ``padding`` = "VALID": - -.. math:: - & H'_{out} = (H_{in}-1)*strides[0] + dilations[0]*(H_f-1)+1\\ - & W'_{out} = (W_{in}-1)*strides[1] + dilations[1]*(W_f-1)+1 \\ - -注意: - -如果output_size为None,则 :math:`H_{out}` = :math:`H^\prime_{out}` , :math:`W_{out}` = :math:`W^\prime_{out}` ;否则,指定的output_size_height(输出特征层的高) :math:`H_{out}` 应当介于 :math:`H^\prime_{out}` 和 :math:`H^\prime_{out} + strides[0]` 之间(不包含 :math:`H^\prime_{out} + strides[0]` ), 并且指定的output_size_width(输出特征层的宽) :math:`W_{out}` 应当介于 :math:`W^\prime_{out}` 和 :math:`W^\prime_{out} + strides[1]` 之间(不包含 :math:`W^\prime_{out} + strides[1]` )。 - -由于转置卷积可以当成是卷积的反向计算,而根据卷积的输入输出计算公式来说,不同大小的输入特征层可能对应着相同大小的输出特征层,所以对应到转置卷积来说,固定大小的输入特征层对应的输出特征层大小并不唯一。 - -如果指定了output_size, ``conv2d_transpose`` 可以自动计算滤波器的大小。 - -参数: - - **input** (Variable)- 形状为 :math:`[N, C, H, W]` 或 :math:`[N, H, W, C]` 的4-D Tensor,N是批尺寸,C是通道数,H是特征高度,W是特征宽度。数据类型:float32或float64。 - - **num_filters** (int) - 滤波器(卷积核)的个数,与输出图片的通道数相同。 - - **output_size** (int|tuple,可选) - 输出图片的大小。如果output_size是一个元组,则必须包含两个整型数,(output_size_height,output_size_width)。如果output_size=None,则内部会使用filter_size、padding和stride来计算output_size。如果output_size和filter_size是同时指定的,那么它们应满足上面的公式。默认:None。output_size和filter_size不能同时为None。 - - **filter_size** (int|tuple,可选) - 滤波器大小。如果filter_size是一个元组,则必须包含两个整型数,(filter_size_height, filter_size_width)。否则,filter_size_height = filter_size_width = filter_size。如果filter_size=None,则必须指定output_size, ``conv2d_transpose`` 内部会根据output_size、padding和stride计算出滤波器大小。默认:None。output_size和filter_size不能同时为None。 - - **padding** (int|list|tuple|str,可选) - 填充padding大小。padding参数在输入特征层每边添加 ``dilation * (kernel_size - 1) - padding`` 个0。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含4个二元组:当 ``data_format`` 为"NCHW"时为 [[0,0], [0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NHWC"时为[[0,0], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含4个整数值:[padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含2个整数值:[padding_height, padding_width],此时padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_height = padding_width = padding。默认值:0。 - - **stride** (int|tuple,可选) - 步长stride大小。滤波器和输入进行卷积计算时滑动的步长。如果stride是一个元组,则必须包含两个整型数,形式为(stride_height,stride_width)。否则,stride_height = stride_width = stride。默认:stride = 1。 - - **dilation** (int|tuple,可选) - 膨胀比例(dilation)大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 `_ 较好理解。如果膨胀比例dilation是一个元组,那么元组必须包含两个整型数,形式为(dilation_height, dilation_width)。否则,dilation_height = dilation_width = dilation。默认:dilation= 1。 - - **groups** (int,可选) - 二维转置卷积层的组数。从Alex Krizhevsky的CNN Deep论文中的群卷积中受到启发,当group=2时,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认:group = 1。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv2d_transpose算子默认的权重初始化是Xavier。 - - **bias_attr** (ParamAttr|False,可选)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv2d_transpose算子默认的偏置初始化是0.0。 - - **use_cudnn** (bool,可选) - 是否使用cudnn内核,只有已安装cudnn库时才有效。默认:True。 - - **act** (str,可选) - 激活函数类型,如果设置为None,则不使用激活函数。默认:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:4-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回转置卷积计算的结果,如果指定激活层,则返回转置卷积和激活计算之后的最终结果。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` : 如果输入的shape、filter_size、stride、padding和groups不匹配,抛出ValueError - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有4个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ValueError`` - 如果 ``output_size`` 和 ``filter_size`` 同时为None。 - - ``ShapeError`` - 如果输入不是4-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv2d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv2d_transpose(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) - - diff --git a/doc/paddle/api/paddle/nn/functional/conv3d_cn.rst b/doc/paddle/api/paddle/nn/functional/conv3d_cn.rst deleted file mode 100644 index 7468274e7a27a5ce3984d4fb1e0d13daa2237b05..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/conv3d_cn.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. _cn_api_fluid_layers_conv3d: - -conv3d -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv3d(input, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format="NCDHW") - -:api_attr: 声明式编程模式(静态图) - - - -该OP是三维卷积层(convolution3D layer),根据输入、滤波器、步长(stride)、填充(padding)、膨胀比例(dilations)一组参数计算得到输出特征层大小。输入和输出是NCDHW或NDWHC格式,其中N是批尺寸,C是通道数,D是特征层深度,H是特征层高度,W是特征层宽度。三维卷积(Convlution3D)和二维卷积(Convlution2D)相似,但多了一维深度信息(depth)。如果bias_attr不为False,卷积计算会添加偏置项。如果指定了激活函数类型,相应的激活函数会作用在最终结果上。 - -对每个输入X,有等式: - -.. math:: - - Out = \sigma \left ( W * X + b \right ) - -其中: - - :math:`X` :输入值,NCDHW或NDHWC格式的5-D Tensor - - :math:`W` :滤波器值,MCDHW格式的5-D Tensor - - :math:`*` :卷积操作 - - :math:`b` :偏置值,2-D Tensor,形为 ``[M,1]`` - - :math:`\sigma` :激活函数 - - :math:`Out` :输出值, NCDHW或NDHWC格式的5-D Tensor,和 ``X`` 的形状可能不同 - -**示例** - -- 输入: - - 输入形状: :math:`(N, C_{in}, D_{in}, H_{in}, W_{in})` - - 滤波器形状: :math:`(C_{out}, C_{in}, D_f, H_f, W_f)` - -- 输出: - - 输出形状: :math:`(N, C_{out}, D_{out}, H_{out}, W_{out})` - -其中 - -.. math:: - - D_{out} &= \frac{\left ( D_{in} + padding\_depth\_front + padding\_depth\_back-\left ( dilation[0]*\left ( D_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - H_{out} &= \frac{\left ( H_{in} + padding\_height\_top + padding\_height\_bottom-\left ( dilation[1]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - - W_{out} &= \frac{\left ( W_{in} + padding\_width\_left + padding\_width\_right -\left ( dilation[2]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[2]}+1 - -如果 ``padding`` = "SAME": - -.. math:: - D_{out} = \frac{(D_{in} + stride[0] - 1)}{stride[0]} - - H_{out} = \frac{(H_{in} + stride[1] - 1)}{stride[1]} - - W_{out} = \frac{(W_{in} + stride[2] - 1)}{stride[2]} - -如果 ``padding`` = "VALID": - -.. math:: - D_{out} = \frac{\left ( D_{in} -\left ( dilation[0]*\left ( D_{f}-1 \right )+1 \right ) \right )}{stride[0]}+1 - - H_{out} = \frac{\left ( H_{in} -\left ( dilation[1]*\left ( H_{f}-1 \right )+1 \right ) \right )}{stride[1]}+1 - - W_{out} = \frac{\left ( W_{in} -\left ( dilation[2]*\left ( W_{f}-1 \right )+1 \right ) \right )}{stride[2]}+1 - -参数: - - **input** (Variable) - 形状为 :math:`[N, C, D, H, W]` 或 :math:`[N, D, H, W, C]` 的5-D Tensor,N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度,数据类型为float16, float32或float64。 - - **num_fliters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - - **filter_size** (int|list|tuple) - 滤波器大小。如果它是一个列表或元组,则必须包含三个整数值:(filter_size_depth, filter_size_height,filter_size_width)。若为一个整数,则filter_size_depth = filter_size_height = filter_size_width = filter_size。 - - **stride** (int|list|tuple,可选) - 步长大小。滤波器和输入进行卷积计算时滑动的步长。如果它是一个列表或元组,则必须包含三个整型数:(stride_depth, stride_height, stride_width)。若为一个整数,stride_depth = stride_height = stride_width = stride。默认值:1。 - - **padding** (int|list|tuple|str,可选) - 填充大小。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含5个二元组:当 ``data_format`` 为"NCDHW"时为 [[0,0], [0,0], [padding_depth_front, padding_depth_back], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right]],当 ``data_format`` 为"NDHWC"时为[[0,0], [padding_depth_front, padding_depth_back], [padding_height_top, padding_height_bottom], [padding_width_left, padding_width_right], [0,0]];(2)包含6个整数值:[padding_depth_front, padding_depth_back, padding_height_top, padding_height_bottom, padding_width_left, padding_width_right];(3)包含3个整数值:[padding_depth, padding_height, padding_width],此时 padding_depth_front = padding_depth_back = padding_depth, padding_height_top = padding_height_bottom = padding_height, padding_width_left = padding_width_right = padding_width。若为一个整数,padding_depth = padding_height = padding_width = padding。默认值:0。 - - **dilation** (int|list|tuple,可选) - 膨胀比例大小。空洞卷积时会使用该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息。如果膨胀比例为列表或元组,则必须包含三个整型数:(dilation_depth, dilation_height,dilation_width)。若为一个整数,dilation_depth = dilation_height = dilation_width = dilation。默认值:1。 - - **groups** (int,可选) - 三维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=n,输入和滤波器分别根据通道数量平均分为n组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算,……,第n组滤波器和第n组输入进行卷积计算。默认值:1。 - - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr|bool,可选)- 指定偏置参数属性的对象。若 ``bias_attr`` 为bool类型,只支持为False,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **use_cudnn** (bool,可选)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **act** (str,可选) - 激活函数类型, 如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` 。如果设为None,则未添加激活函数。默认值:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值:None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCDHW"和"NDHWC"。N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度。默认值:"NCDHW"。 - -返回:5-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回卷积计算的结果,如果指定激活层,则返回卷积和激活计算之后的最终结果。 - -返回类型:Variable。 - -抛出异常: - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCDHW"也不是"NDHWC"。 - - ``ValueError`` - 如果 ``input`` 的通道数未被明确定义。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有5个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果输入不是5-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - - ``ShapeError`` - 如果输出的通道数不能被 ``groups`` 整除。 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 12, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv3d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv3d(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 12, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) - - diff --git a/doc/paddle/api/paddle/nn/functional/conv3d_transpose_cn.rst b/doc/paddle/api/paddle/nn/functional/conv3d_transpose_cn.rst deleted file mode 100644 index 0331df5d6a4fab39a78c68190b0b1066ec5681a9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/conv3d_transpose_cn.rst +++ /dev/null @@ -1,124 +0,0 @@ -.. _cn_api_fluid_layers_conv3d_transpose: - -conv3d_transpose -------------------------------- - - -.. py:function:: paddle.fluid.layers.conv3d_transpose(input, num_filters, output_size=None, filter_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, name=None, data_format='NCDHW') - -:api_attr: 声明式编程模式(静态图) - - - -三维转置卷积层(Convlution3D transpose layer) - -该层根据输入(input)、滤波器(filter)和卷积核膨胀比例(dilations)、步长(stride)、填充(padding)来计算输出特征层大小或者通过output_size指定输出特征层大小。输入(Input)和输出(Output)为NCDHW或者NDHWC格式。其中N为批尺寸,C为通道数(channel),D为特征深度,H为特征层高度,W为特征层宽度。转置卷积的计算过程相当于卷积的反向计算。转置卷积又被称为反卷积(但其实并不是真正的反卷积)。欲了解卷积转置层细节,请参考下面的说明和 参考文献_ 。如果参数bias_attr不为False, 转置卷积计算会添加偏置项。如果act不为None,则转置卷积计算之后添加相应的激活函数。 - -.. _参考文献: http://www.matthewzeiler.com/wp-content/uploads/2017/07/cvpr2010.pdf - -输入 :math:`X` 和输出 :math:`Out` 函数关系如下: - -.. math:: - \\Out=\sigma (W*X+b)\\ - -其中: - - :math:`X` : 输入,具有NCDHW或NDHWC格式的5-D Tensor - - :math:`W` : 滤波器,具有NCDHW格式的5-D Tensor - - :math:`*` : 卷积操作(注意:转置卷积本质上的计算还是卷积) - - :math:`b` : 偏置(bias),2-D Tensor,形状为 ``[M,1]`` - - :math:`σ` : 激活函数 - - :math:`Out` : 输出值,NCDHW或NDHWC格式的5-D Tensor,和 ``X`` 的形状可能不同 - -**示例** - -输入: - - 输入的shape::math:`(N,C_{in}, D_{in}, H_{in}, W_{in})` - - 滤波器的shape::math:`(C_{in}, C_{out}, D_f, H_f, W_f)` - - - -输出: - - 输出的shape::math:`(N,C_{out}, D_{out}, H_{out}, W_{out})` - - -其中: - -.. math:: - - & D'_{out}=(D_{in}-1)*strides[0] - pad\_depth\_front - pad\_depth\_back + dilations[0]*(D_f-1)+1\\ - & H'_{out}=(H_{in}-1)*strides[1] - pad\_height\_top - pad\_height\_bottom + dilations[1]*(H_f-1)+1\\ - & W'_{out}=(W_{in}-1)*strides[2] - pad\_width\_left - pad\_width\_right + dilations[2]*(W_f-1)+1\\ - & D_{out}\in[D'_{out},D'_{out} + strides[0])\\ - & H_{out}\in[H'_{out},H'_{out} + strides[1])\\ - & W_{out}\in[W'_{out},W'_{out} + strides[2])\\ - -如果 ``padding`` = "SAME": - -.. math:: - D'_{out} = \frac{(D_{in} + stride[0] - 1)}{stride[0]}\\ - H'_{out} = \frac{(H_{in} + stride[1] - 1)}{stride[1]}\\ - W'_{out} = \frac{(W_{in} + stride[2] - 1)}{stride[2]}\\ - -如果 ``padding`` = "VALID": - -.. math:: - D'_{out}=(D_{in}-1)*strides[0] + dilations[0]*(D_f-1)+1\\ - H'_{out}=(H_{in}-1)*strides[1] + dilations[1]*(H_f-1)+1\\ - W'_{out}=(W_{in}-1)*strides[2] + dilations[2]*(W_f-1)+1\\ - -注意: - -如果output_size为None,则 :math:`D_{out}` = :math:`D^\prime_{out}` , :math:`H_{out}` = :math:`H^\prime_{out}` , :math:`W_{out}` = :math:`W^\prime_{out}` ;否则,指定的output_size_depth(输出特征层的深度) :math:`D_{out}` 应当介于 :math:`D^\prime_{out}` 和 :math:`D^\prime_{out} + strides[0]` 之间(不包含 :math:`D^\prime_{out} + strides[0]` ),指定的output_size_height(输出特征层的高) :math:`H_{out}` 应当介于 :math:`H^\prime_{out}` 和 :math:`H^\prime_{out} + strides[1]` 之间(不包含 :math:`H^\prime_{out} + strides[1]` ), 并且指定的output_size_width(输出特征层的宽) :math:`W_{out}` 应当介于 :math:`W^\prime_{out}` 和 :math:`W^\prime_{out} + strides[2]` 之间(不包含 :math:`W^\prime_{out} + strides[2]` )。 - -由于转置卷积可以当成是卷积的反向计算,而根据卷积的输入输出计算公式来说,不同大小的输入特征层可能对应着相同大小的输出特征层,所以对应到转置卷积来说,固定大小的输入特征层对应的输出特征层大小并不唯一。 - -如果指定了output_size, ``conv3d_transpose`` 可以自动计算滤波器的大小。 - -参数: - - **input** (Variable)- 形状为 :math:`[N, C, D, H, W]` 或 :math:`[N, D, H, W, C]` 的5-D Tensor,N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度,数据类型:float32或float64。 - - **num_filters** (int) - 滤波器(卷积核)的个数,与输出的图片的通道数相同。 - - **output_size** (int|tuple,可选) - 输出图片的大小。如果output_size是一个元组,则必须包含三个整型数,(output_size_depth,output_size_height,output_size_width)。如果output_size=None,则内部会使用filter_size、padding和stride来计算output_size。如果output_size和filter_size是同时指定的,那么它们应满足上面的公式。默认:None。output_size和filter_size不能同时为None。 - - **filter_size** (int|tuple,可选) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_depth,filter_size_height, filter_size_width)。否则,filter_size_depth = filter_size_height = filter_size_width = filter_size。如果filter_size=None,则必须指定output_size, ``conv2d_transpose`` 内部会根据output_size、padding和stride计算出滤波器大小。默认:None。output_size和filter_size不能同时为None。 - - **padding** (int|list|tuple|str,可选) - 填充padding大小。padding参数在输入特征层每边添加 ``dilation * (kernel_size - 1) - padding`` 个0。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``padding`` = "SAME"或 ``padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含5个二元组:当 ``data_format`` 为"NCDHW"时为 [[0,0], [0,0], [pad_depth_front, pad_depth_back], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right]],当 ``data_format`` 为"NDHWC"时为[[0,0], [pad_depth_front, pad_depth_back], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right], [0,0]];(2)包含6个整数值:[pad_depth_front, pad_depth_back, pad_height_top, pad_height_bottom, pad_width_left, pad_width_right];(3)包含3个整数值:[pad_depth, pad_height, pad_width],此时 pad_depth_front = pad_depth_back = pad_depth, pad_height_top = pad_height_bottom = pad_height, pad_width_left = pad_width_right = pad_width。若为一个整数,pad_depth = pad_height = pad_width = padding。默认值:0。 - - **stride** (int|tuple,可选) - 步长stride大小。滤波器和输入进行卷积计算时滑动的步长。如果stride是一个元组,那么元组的形式为(stride_depth,stride_height,stride_width)。否则,stride_depth = stride_height = stride_width = stride。默认:stride = 1。 - - **dilation** (int|tuple,可选) - 膨胀比例dilation大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 `_ 较好理解。如果膨胀比例dilation是一个元组,那么元组的形式为(dilation_depth,dilation_height, dilation_width)。否则,dilation_depth = dilation_height = dilation_width = dilation。默认:dilation= 1。 - - **groups** (int,可选) - 三维转置卷积层的组数。从Alex Krizhevsky的CNN Deep论文中的群卷积中受到启发,当group=2时,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认:group = 1。 - - **param_attr** (ParamAttr,可选) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv3d_transpose算子默认的权重初始化是Xavier。 - - **bias_attr** (ParamAttr|False,可选)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。conv3d_transpose算子默认的偏置初始化是0.0。 - - **use_cudnn** (bool,可选) - 是否使用cudnn内核,只有已安装cudnn库时才有效。默认:True。 - - **act** (str,可选) - 激活函数类型,如果设置为None,则不使用激活函数。默认:None。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCDHW"和"NDHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCDHW"。 - -返回:5-D Tensor,数据类型与 ``input`` 一致。如果未指定激活层,则返回转置卷积计算的结果,如果指定激活层,则返回转置卷积和激活计算之后的最终结果。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` - 如果输入的shape、filter_size、stride、padding和groups不匹配。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCDHW"也不是"NDHWC"。 - - ``ValueError`` - 如果 ``padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``padding`` 含有5个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ValueError`` - 如果 ``output_size`` 和 ``filter_size`` 同时为None。 - - ``ShapeError`` - 如果输入不是5-D Tensor。 - - ``ShapeError`` - 如果输入和滤波器的维度大小不相同。 - - ``ShapeError`` - 如果输入的维度大小与 ``stride`` 之差不是2。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name='data', shape=[3, 12, 32, 32], dtype='float32') - param_attr = fluid.ParamAttr(name='conv3d.weight', initializer=fluid.initializer.Xavier(uniform=False), learning_rate=0.001) - res = fluid.layers.conv3d_transpose(input=data, num_filters=2, filter_size=3, act="relu", param_attr=param_attr) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(1, 3, 12, 32, 32).astype("float32") - output = exe.run(feed={"data": x}, fetch_list=[res]) - print(output) diff --git a/doc/paddle/api/paddle/nn/functional/diag_embed_cn.rst b/doc/paddle/api/paddle/nn/functional/diag_embed_cn.rst deleted file mode 100644 index f41a82046486ffc2f9229c5d20def7a8bf648d4b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/diag_embed_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_functional_diag_embed: - -diag_embed -------------------------------- - -.. py:function:: paddle.functional.diag_embed(input, offset=0, dim1=-2, dim2=-1): - -:alias_main: paddle.nn.functional.diag_embed -:alias: paddle.nn.functional.diag_embed,paddle.nn.functional.extension.diag_embed - - - - 该 OP 创建一个 Tensor,其在指定的 2D 平面(由 ``dim1`` 和 ``dim2`` 指定)上的对角线由输入 ``input`` 填充。 - 默认的,指定的 2D 平面由返回 Tensor 的最后两维组成。 - - 参数 ``offset`` 确定在指定的二维平面中填充对角线的位置: - - - 如果 offset = 0,则填充主对角线。 - - 如果 offset > 0,则填充主对角线右上的对角线。 - - 如果 offset < 0,则填充主对角线左下的对角线。 - -参数: - - **input** (Variable|numpy.ndarray)- 输入变量,至少为 1D 数组,支持数据类型为 float32,float64,int32,int64。 - - **offset** (int ,可选)- 从指定的二维平面中获取对角线的位置,默认值为 0,既主对角线。 - - **dim1** (int , 可选)- 填充对角线的二维平面的第一维,默认值为 -2。 - - **dim2** (int , 可选)- 填充对角线的二维平面的第二维,默认值为 -1。 - -返回: 指定二维平面填充了对角线的 Tensor。数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle.nn.functional as F - import paddle.fluid.dygraph as dg - import numpy as np - - diag_embed = np.random.randn(2, 3).astype('float32') - # [[ 0.7545889 , -0.25074545, 0.5929117 ], - # [-0.6097662 , -0.01753256, 0.619769 ]] - with dg.guard(): - data1 = F.diag_embed(diag_embed) - data1.numpy() - # [[[ 0.7545889 , 0. , 0. ], - # [ 0. , -0.25074545, 0. ], - # [ 0. , 0. , 0.5929117 ]], - - # [[-0.6097662 , 0. , 0. ], - # [ 0. , -0.01753256, 0. ], - # [ 0. , 0. , 0.619769 ]]] - - data2 = F.diag_embed(diag_embed, offset=-1, dim1=0, dim2=2) - data2.numpy() - # [[[ 0. , 0. , 0. , 0. ], - # [ 0.7545889 , 0. , 0. , 0. ], - # [ 0. , -0.25074545, 0. , 0. ], - # [ 0. , 0. , 0.5929117 , 0. ]], - # - # [[ 0. , 0. , 0. , 0. ], - # [-0.6097662 , 0. , 0. , 0. ], - # [ 0. , -0.01753256, 0. , 0. ], - # [ 0. , 0. , 0.619769 , 0. ]]] - - data3 = F.diag_embed(diag_embed, offset=1, dim1=0, dim2=2) - data3.numpy() - # [[[ 0. , 0.7545889 , 0. , 0. ], - # [ 0. , -0.6097662 , 0. , 0. ]], - # - # [[ 0. , 0. , -0.25074545, 0. ], - # [ 0. , 0. , -0.01753256, 0. ]], - # - # [[ 0. , 0. , 0. , 0.5929117 ], - # [ 0. , 0. , 0. , 0.619769 ]], - # - # [[ 0. , 0. , 0. , 0. ], - # [ 0. , 0. , 0. , 0. ]]] diff --git a/doc/paddle/api/paddle/nn/functional/dropout_cn.rst b/doc/paddle/api/paddle/nn/functional/dropout_cn.rst deleted file mode 100644 index 8c748ec91af6395405bb46a43b3e94b59ebfa153..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/dropout_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_dropout: - -dropout -------------------------------- - -.. py:function:: paddle.fluid.layers.dropout(x,dropout_prob,is_test=False,seed=None,name=None,dropout_implementation='downgrade_in_infer') - -:alias_main: paddle.nn.functional.dropout -:alias: paddle.nn.functional.dropout,paddle.nn.functional.common.dropout -:old_api: paddle.fluid.layers.dropout - - - -dropout操作 - -丢弃或者保持x的每个元素独立。Dropout是一种正则化手段,通过在训练过程中阻止神经元节点间的相关性来减少过拟合。根据给定的丢弃概率,dropout操作符按丢弃概率随机将一些神经元输出设置为0,其他的仍保持不变。 - -dropout op可以从Program中删除,提高执行效率。 - -参数: - - **x** (Variable) - 输入,多维Tensor。数据类型:float32和float64。 - - **dropout_prob** (float32) - 输入单元的丢弃概率,即输入单元设置为0的概率。 - - **is_test** (bool) - 标记是否是测试阶段。默认:False。 - - **seed** (int) - 整型数据,用于创建随机种子。如果该参数设为None,则使用随机种子。注:如果给定一个整型种子,始终丢弃相同的输出单元。训练过程中勿用固定不变的种子。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - **dropout_implementation** (str) - 丢弃单元的方式,有两种'downgrade_in_infer'和'upscale_in_train'两种选择,默认:'downgrade_in_infer'。具体作用可以参考一下描述。 - - 1. downgrade_in_infer(default), 在预测时减小输出结果 - - - train: out = input * mask - - - inference: out = input * (1.0 - dropout_prob) - - (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``dropout_prob`` ) - - 2. upscale_in_train, 增加训练时的结果 - - - train: out = input * mask / ( 1.0 - dropout_prob ) - - - inference: out = input - - (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``dropout_prob`` ) - -dropout操作符可以从程序中移除,使程序变得高效。 - -返回:Tensor。经过丢弃部分数据之后的结果,与输入X形状相同的张量。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - x = fluid.layers.data(name="x", shape=[32, 32], dtype="float32") - droped = fluid.layers.dropout(x, dropout_prob=0.5) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - np_x = np.random.random(size=(32, 32)).astype('float32') - output = exe.run(feed={"x": np_x}, fetch_list = [droped]) - print(output) - diff --git a/doc/paddle/api/paddle/nn/functional/elu_cn.rst b/doc/paddle/api/paddle/nn/functional/elu_cn.rst deleted file mode 100644 index 6d527ce9359d4b2561e7018b72e79839d158d8c2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/elu_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_elu: - -elu -------------------------------- - -.. py:function:: paddle.fluid.layers.elu(x, alpha=1.0, name=None) - -:alias_main: paddle.nn.functional.elu -:alias: paddle.nn.functional.elu,paddle.nn.functional.activation.elu -:old_api: paddle.fluid.layers.elu - - - -ELU激活层(ELU Activation Operator) - -根据 https://arxiv.org/abs/1511.07289 对输入Tensor中每个元素应用以下计算。 - -.. math:: - \\out=max(0,x)+min(0,α∗(e^{x}−1))\\ - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型为float32或float64。 - - **alpha** (float, 可选) - ELU的alpha值,默认值为1.0。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为None。 - -返回: 输出为Tensor,与 ``x`` 维度相同、数据类型相同。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - input_elu = np.array([[-1,6],[1,15.6]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(input_elu) - y = fluid.layers.elu(x, alpha=0.2) - print(y.numpy()) - # [[-0.12642411 6. ] - # [ 1. 15.6 ]] diff --git a/doc/paddle/api/paddle/nn/functional/erf_cn.rst b/doc/paddle/api/paddle/nn/functional/erf_cn.rst deleted file mode 100644 index c30dc7175303dc3890049ad49cf5ee39505ece2c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/erf_cn.rst +++ /dev/null @@ -1,75 +0,0 @@ -.. _cn_api_fluid_layers_erf: - -erf -------------------------------- - -.. py:function:: paddle.fluid.layers.erf(x) - -:alias_main: paddle.erf -:alias: paddle.erf,paddle.tensor.erf,paddle.tensor.math.erf,paddle.nn.functional.erf,paddle.nn.functional.activation.erf -:old_api: paddle.fluid.layers.erf - - - -逐元素计算 Erf 激活函数。更多细节请参考 `Error function `_ 。 - - -.. math:: - out = \frac{2}{\sqrt{\pi}} \int_{0}^{x}e^{- \eta^{2}}d\eta - -参数: - - **x** (Variable) - Erf Op 的输入,多维 Tensor 或 LoDTensor,数据类型为 float16, float32 或 float64。 - -返回: - - 多维 Tensor 或 LoDTensor, 数据类型为 float16, float32 或 float64, 和输入 x 的数据类型相同,形状和输入 x 相同。 - -返回类型: - - Variable - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.erf(x) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[ 0.4643714 , -1.1509596 , 1.2538221 ], - # [ 0.34369683, 0.27478245, 1.1805398 ]], dtype=float32) - y_np - # array([[ 0.48863927, -0.8964121 , 0.9237998 ], - # [ 0.37307587, 0.30242872, 0.9049887 ]], dtype=float32) - -.. code-block:: python - - # imperative mode - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.erf(x) - y_np = y.numpy() - data - # array([[ 0.4643714 , -1.1509596 , 1.2538221 ], - # [ 0.34369683, 0.27478245, 1.1805398 ]], dtype=float32) - y_np - # array([[ 0.48863927, -0.8964121 , 0.9237998 ], - # [ 0.37307587, 0.30242872, 0.9049887 ]], dtype=float32) diff --git a/doc/paddle/api/paddle/nn/functional/extension/add_position_encoding_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/add_position_encoding_cn.rst deleted file mode 100644 index abba3377ba359ac496848262f1fe29705ea504b0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/add_position_encoding_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_add_position_encoding: - -add_position_encoding -------------------------------- - -.. py:function:: paddle.fluid.layers.add_position_encoding(input, alpha, beta, name=None) - -:alias_main: paddle.nn.functional.add_position_encoding -:alias: paddle.nn.functional.add_position_encoding,paddle.nn.functional.extension.add_position_encoding -:old_api: paddle.fluid.layers.add_position_encoding - - - -该OP将输入inpu中每个位置(序列中的位置)的特征与对应的位置编码加权求和,位置编码可参考论文: `Attention Is All You Need `_ - -输出的计算公式如下: - -.. math:: - - PE(pos, 2i) &= \sin{(pos / 10000^{2i / P})}\\ - PE(pos, 2i + 1) &= \cos{(pos / 10000^{2i / P})}\\ - Out(:, pos, i) &= \alpha * input(:, pos, i) + \beta * PE(pos, i) - -其中: - - PE(pos, 2i): pos位置对应的编码中偶数特征位上的值 - - PE(pos, 2i + 1): pos位置对应的编码中奇数特征位上的值 - -参数: - - **input** (Variable) – Tensor或LoD level为1的LoDTensor。Tensor时,其形状为 :math:`[N, M, P]` ,其中 :math:`N` 表示batch size, :math:`M` 表示序列长度, :math:`P` 为特征维度大小;LoDTensor时,其形状为 :math:`[N, P]` ,其中 :math:`N` 表示所有序列长度之和, :math:`P` 为特征维度大小。数据类型为float32或float64。 - - **alpha** (float) – 加权求和时输入input的权重系数 - - **beta** (float) – 加权求和时位置编码的权重系数 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: 加上位置编码后的Tensor或LoDTensor,和输入(input)具有相同数据类型和形状及LoD信息。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - tensor = fluid.data( - name='tensor', - shape=[None, 64, 512], - dtype='float32') - position_tensor = fluid.layers.add_position_encoding( - input=tensor, alpha=1.0, beta=1.0) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/extension/continuous_value_model_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/continuous_value_model_cn.rst deleted file mode 100644 index bdc610b1739df00f4d04f96ee501cfff7e107a94..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/continuous_value_model_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_continuous_value_model: - -continuous_value_model -------------------------------- - -.. py:function:: paddle.fluid.layers.continuous_value_model(input, cvm, use_cvm=True) - -:alias_main: paddle.nn.functional.continuous_value_model -:alias: paddle.nn.functional.continuous_value_model,paddle.nn.functional.extension.continuous_value_model -:old_api: paddle.fluid.layers.continuous_value_model - - - -**注意:该OP仅支持在CPU运行。** - -该OP在CTR项目中,用于去除或处理 ``input`` 中的展示和点击值。 - -输入 ``input`` 是一个含展示(show)和点击(click)的词向量,其形状为 :math:`[N, D]` (N为batch大小,D为 `2 + 嵌入维度` ),show和click占据词向量D的前两维。如果 ``use_cvm=True`` ,它会计算 :math:`log(show)` 和 :math:`log(click)` ,输出的形状为 :math:`[N, D]` 。如果 ``use_cvm=False`` ,它会从输入 ``input`` 中移除show和click,输出的形状为 :math:`[N, D - 2]` 。 ``cvm`` 为show和click信息,维度为 :math:`[N, 2]` 。 - -参数: - - **input** (Variable) - cvm操作的输入张量。维度为 :math:`[N, D]` 的2-D LoDTensor。 N为batch大小, D为 `2 + 嵌入维度` , `lod level = 1` 。 - - **cvm** (Variable) - cvm操作的展示和点击张量。维度为 :math:`[N, 2]` 的2-D Tensor。 N为batch大小,2为展示和点击值。 - - **use_cvm** (bool) - 是否使用展示和点击信息。如果使用,输出维度和输入相等,对 ``input`` 中的展示和点击值取log;如果不使用,输出维度为输入减2(移除展示和点击值)。 - -返回:Variable(LoDTensor)变量, :math:`[N, M]` 的2-D LoDTensor。如果 ``use_cvm=True`` ,M等于输入的维度D,否则M等于 `D - 2` 。 - -返回类型:变量(Variable),数据类型与 ``input`` 一致。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[-1, 1], lod_level=1, append_batch_size=False, dtype="int64") - label = fluid.layers.data(name="label", shape=[-1, 1], append_batch_size=False, dtype="int64") - embed = fluid.layers.embedding( - input=input, - size=[100, 11], - dtype='float32') - label_shape = fluid.layers.shape(label) - ones = fluid.layers.fill_constant(shape=[label_shape[0], 1], dtype="int64", value=1) - show_clk = fluid.layers.cast(fluid.layers.concat([ones, label], axis=1), dtype='float32') - show_clk.stop_gradient = True - input_with_cvm = fluid.layers.continuous_value_model(embed, show_clk, True) - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/extension/filter_by_instag_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/filter_by_instag_cn.rst deleted file mode 100644 index 212eef72dc7a6b3dc1506270feabc78fcf29c2f1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/filter_by_instag_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_filter_by_instag: - -filter_by_instag -------------------------------- - -.. py:function:: paddle.fluid.layers.filter_by_instag(ins, ins_tag, filter_tag, is_lod) - -:alias_main: paddle.nn.functional.filter_by_instag -:alias: paddle.nn.functional.filter_by_instag,paddle.nn.functional.extension.filter_by_instag -:old_api: paddle.fluid.layers.filter_by_instag - - - -此函数通过instag来过滤ins batch,大量属于同样的tags的样本,我们可以指定我们想要的一些tags,属于这些tags的样本将会被保留在输出中,其余的将会移除。比如,一个batch有4个样本,每个样本都有自己的tag表。 - -Ins | Ins_Tag | - -|:—–:|:——:| - -| 0 | 0, 1 | - -| 1 | 1, 3 | - -| 2 | 0, 3 | - -| 3 | 2, 6 | - -Lod为[1,1,1,1],filter tags为[1],从上面的定义中,带有标签[1]的样本将会通过filter,所以,样本0和1将会通过并且出现在输出中。准确来说,如果 ``is_lod`` 为false,它是一个等于值全为1的lod_tensor的普通的tensor,和上面的例子很相似。 - -参数: - - **ins** (Variable) - 输入变量(LoDTensor),通常为2D向量,第一个维度可以有lod info,也可以没有。 - - **ins_tag** (Variable) - 输入变量(LoDTensor),通常为1维列表,通过lod info来分割。 - - **filter_tag** (Variable) - 输入变量(1D Tensor/List),通常为持有tags的列表。 - - **is_lod** (Bool) – 指定样本是否为lod tensor的布尔值。 - - **out_val_if_empty** (Int64) - 如果batch内样本被全部过滤,输出会被指定成这个值。 - -返回:过滤之后的样本(LoDTensor)和 损失权重(Tensor)。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid.layers as layers - ins = layers.data(name='Ins', shape=[-1,32], lod_level=0, dtype='float64') - ins_tag = layers.data(name='Ins_tag', shape=[-1,16], lod_level=0, dtype='int64') - filter_tag = layers.data(name='Filter_tag', shape=[-1,16], dtype='int64') - out, loss_weight = layers.filter_by_instag(ins, ins_tag, filter_tag, True) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/extension/multiclass_nms_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/multiclass_nms_cn.rst deleted file mode 100644 index 12e3c804d95d81742116abfbf8bc71090621db1c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/multiclass_nms_cn.rst +++ /dev/null @@ -1,85 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.multiclass_nms -:alias: paddle.nn.functional.multiclass_nms,paddle.nn.functional.extension.multiclass_nms -:old_api: paddle.fluid.layers.multiclass_nms - - - -**多分类NMS** - -该OP用于对边界框(bounding box)和评分(scores)执行多类非极大值抑制(NMS)。 - -在NMS中,如果提供 ``score_threshold`` 阈值,则此OP贪心地选择所有得分(scores)高于 ``score_threshold`` 的检测边界框(bounding box)的子集,如果nms_top_k大于-1,则选择最大的nms_top_k置信度分数。 接着,该OP依据 adaptive nms(基于 ``nms_threshold`` 和 ``nms_eta``),删除与已选择的框IOU(交并比)高于nms_threshold 的重叠框。 - -在NMS步骤后,如果keep_top_k大于-1,则每个图像最多保留keep_top_k个框(bounding box)。 - -计算示例: - .. code-block:: text - - 如果: - box1.data = (2.0, 3.0, 7.0, 5.0) 数据格式为 (xmin, ymin, xmax, ymax) - box1.scores = (0.7, 0.2, 0.4) 其中 (label0.score=0.7, label1.score=0.2, label2.cores=0.4) - box2.data = (3.0, 4.0, 8.0, 5.0) - box2.score = (0.3, 0.3, 0.1) - nms_threshold = 0.3 - background_label = 0 - score_threshold = 0 - 则: - iou = 4/11 > 0.3 - out.data = [[1, 0.3, 3.0, 4.0, 8.0, 5.0], - [2, 0.4, 2.0, 3.0, 7.0, 5.0]] - - 输出数据格式为 (label, confidence, xmin, ymin, xmax, ymax) - - - -参数: - - **bboxes** (Variable) – 支持两种类型的边界框(bounding box): - - 1. (Tensor)形为[N,M,4 或 8、16、24、32]的3-D张量,表示将预测M个边界框的预测位置, N是批大小(batch size)。当边界框(bounding box)大小等于4时,每个边界框有四个坐标值,布局为[xmin,ymin,xmax,ymax]。数据类型为float32或float64。 - 2. (LoDTensor)形状为[M,C,4] M是边界框的个数,C是类别个数。数据类型为float32或float64 - - - **scores** (Variable) – 支持两种类型的分数: - - 1. (Tensor)具有形状[N,C,M]的3-D张量表示预测的置信度。 N是批量大小 batch size,C是种类数目,M是边界框bounding box的数量。对于每个类别,存在对应于M个边界框的总M个分数。请注意,M等于bboxes的第二维。数据类型为float32或float64。 - 2. (LoDTensor)具有形状[M,C]的2-D LoDTensor。 M是bbox的数量,C是种类数目。在这种情况下,输入bboxes应该是形为[M,C,4]的第二种情况。数据类型为float32或float64。 - - - **background_label** (int) – 背景标签(类别)的索引,如果设置为 0 ,则忽略背景标签(类别)。如果设置为 -1 ,则考虑所有类别。默认值:0 - - **score_threshold** (float) – 过滤掉低置信度分数的边界框的阈值。如果没有提供,请考虑所有边界框。 - - **nms_top_k** (int) – 基于 score_threshold 的过滤检测后,根据置信度保留的最大检测次数。 - - **nms_threshold** (float) – 在NMS中用于剔除检测框IOU的阈值,默认值:0.3 。 - - **nms_eta** (float) – 在NMS中用于调整 nms_threshold 的参数,设为1时表示nms_threshold不变。默认值:1.0 。 - - **keep_top_k** (int) – NMS步骤后每个图像要保留的总bbox数。 -1表示在NMS步骤之后保留所有bbox。 - - **normalized** (bool) – 检测是否已经经过正则化。默认值:True 。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为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}) - -返回类型:Variable,数据类型与输入一致。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - 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) - - - diff --git a/doc/paddle/api/paddle/nn/functional/extension/polygon_box_transform_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/polygon_box_transform_cn.rst deleted file mode 100644 index 06fa39efbdc758bc5e03dcf64e9554d2f627086b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/polygon_box_transform_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_layers_polygon_box_transform: - -polygon_box_transform -------------------------------- - -.. py:function:: paddle.fluid.layers.polygon_box_transform(input, name=None) - -:alias_main: paddle.nn.functional.polygon_box_transform -:alias: paddle.nn.functional.polygon_box_transform,paddle.nn.functional.extension.polygon_box_transform -:old_api: paddle.fluid.layers.polygon_box_transform - - - -**PolygonBoxTransform 算子** - -该op用于将偏移坐标改变为真实的坐标。 - -输入4-D Tensor是检测网络最终的几何输出。我们使用 2*n 个数来表示从 polygon_box 中的 n 个顶点(vertice)到像素位置的偏移。由于每个距离偏移包含两个数 :math:`(x_i, y_i)` ,所以几何输出通道数为 2*n。 - -参数: - - **input** (Variable) - 形状为 :math:`[batch\_size,geometry\_channels,height,width]` 的4-D Tensor,数据类型为float32或float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:polygon_box_transform输出的真实坐标,是一个 4-D Tensor。数据类型为float32或float64。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name='input', shape=[4, 10, 5, 5], - append_batch_size=False, dtype='float32') - out = fluid.layers.polygon_box_transform(input) - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/extension/random_crop_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/random_crop_cn.rst deleted file mode 100644 index e9a229030384d8a9dd28ca0308654510f2326008..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/random_crop_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_random_crop: - -random_crop -------------------------------- - -.. py:function:: paddle.fluid.layers.random_crop(x, shape, seed=None) - -:alias_main: paddle.nn.functional.random_crop -:alias: paddle.nn.functional.random_crop,paddle.nn.functional.extension.random_crop -:old_api: paddle.fluid.layers.random_crop - - - -该操作对batch中每个实例进行随机裁剪,即每个实例的裁剪位置不同,裁剪位置由均匀分布随机数生成器决定。所有裁剪后的实例都具有相同的维度,由 ``shape`` 参数决定。 - -参数: - - **x(Variable)** - 多维Tensor。 - - **shape(list(int))** - 裁剪后最后几维的形状,注意, ``shape`` 的个数小于 ``x`` 的秩。 - - **seed(int|Variable,可选)** - 设置随机数种子,默认情况下,种子是[-65536,-65536)中一个随机数,如果类型是Variable,要求数据类型是int64,默认值:None。 - -返回: 裁剪后的Tensor。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - img = fluid.data("img", [None, 3, 256, 256]) - # cropped_img的shape: [-1, 3, 224, 224] - cropped_img = fluid.layers.random_crop(img, shape=[3, 224, 224]) - - # cropped_img2的shape: [-1, 2, 224, 224] - # cropped_img2 = fluid.layers.random_crop(img, shape=[2,224, 224]) - - # cropped_img3的shape: [-1, 3, 128, 224] - # cropped_img3 = fluid.layers.random_crop(img, shape=[128, 224]) - - - diff --git a/doc/paddle/api/paddle/nn/functional/extension/rpn_target_assign_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/rpn_target_assign_cn.rst deleted file mode 100644 index 3edc0ee06ede956fc25791c2c833ea6b473c2c9e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/rpn_target_assign_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_rpn_target_assign: - -rpn_target_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.rpn_target_assign(bbox_pred, cls_logits, anchor_box, anchor_var, gt_boxes, is_crowd, im_info, rpn_batch_size_per_im=256, rpn_straddle_thresh=0.0, rpn_fg_fraction=0.5, rpn_positive_overlap=0.7, rpn_negative_overlap=0.3, use_random=True) - -:alias_main: paddle.nn.functional.rpn_target_assign -:alias: paddle.nn.functional.rpn_target_assign,paddle.nn.functional.extension.rpn_target_assign -:old_api: paddle.fluid.layers.rpn_target_assign - - - -该OP用于为anchors分配分类标签和回归标签,以便用这些标签对RPN进行训练。 - -该OP将anchors分为两种类别,正和负。根据Faster-RCNN的paper,正类别anchor包括以下两种anchor: - -- 在与一个ground-truth boxes相交的所有anchor中,IoU最高的anchor -- 和任意一个ground-truth box的IoU超出了阈值 ``rpn_positive_overlap`` - -负类别anchor是和任何ground-truth boxes的IoU都低于阈值 ``rpn_negative_overlap`` 的anchor. - -正负anchors之外的anchors不会被选出来参与训练。 - -回归标签是ground-truth boxes和正类别anchor的偏移值。 - -参数: - - **bbox_pred** (Variable) - Shape为 ``[batch_size,M,4]`` 的3-D Tensor,表示M个边界框的预测位置。每个边界框有四个坐标值,即 ``[xmin,ymin,xmax,ymax]`` 。数据类型支持float32和float64。 - - **cls_logits** (Variable)- Shape为 ``[batch_size,M,1]`` 的3-D Tensor,表示预测的置信度。1是frontground和background的sigmoid,M是边界框的数量。数据类型支持float32和float64。 - - **anchor_box** (Variable) - Shape为 ``[M,4]`` 的2-D Tensor,它拥有M个框,每个框可表示为 ``[xmin,ymin,xmax,ymax]`` , ``[xmin,ymin]`` 是anchor框的左上部坐标,如果输入是图像特征图,则它们接近坐标系的原点。 ``[xmax,ymax]`` 是anchor框的右下部坐标。数据类型支持float32和float64。 - - **anchor_var** (Variable) - Shape为 ``[M,4]`` 的2-D Tensor,它拥有anchor的expand方差。数据类型支持float32和float64。 - - **gt_boxes** (Variable) - Shape为 ``[Ng,4]`` 的2-D LoDTensor, ``Ng`` 是一个batch内输入groundtruth boxes的总数。数据类型支持float32和float64。 - - **is_crowd** (Variable) –Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于标记boxes是否是crowd。数据类型支持int32。 - - **im_info** (Variable) - Shape为[N,3]的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和feature map相对于原始图像缩放的比例。数据类型支持int32。 - - **rpn_batch_size_per_im** (int,可选) - 整型数字。每个图像中RPN示例总数。数据类型支持int32。缺省值为256。 - - **rpn_straddle_thresh** (float,可选) - 浮点数字。超出图像外部 ``straddle_thresh`` 个像素的RPN anchors会被删除。数据类型支持float32。缺省值为0.0。 - - **rpn_fg_fraction** (float,可选) - 浮点数字。标记为foreground boxes的数量占batch内总体boxes的比例。 数据类型支持float32。缺省值为0.5。 - - **rpn_positive_overlap** (float,可选) - 浮点数字。和任意一个groundtruth box的 ``IoU`` 超出了阈值 ``rpn_positive_overlap`` 的box被判定为正类别。 数据类型支持float32。缺省值为0.7。 - - **rpn_negative_overlap** (float,可选) - 浮点数字。负类别anchor是和任何ground-truth boxes的IoU都低于阈值 ``rpn_negative_overlap`` 的anchor。 数据类型支持float32。缺省值为0.3。 - - **use_random** (bool,可选) – 布尔类型。是否使用随机采样来选择foreground boxes和background boxes。缺省值为True。 - -返回: 元组。格式为 ``(predicted_scores, predicted_location, target_label, target_bbox, bbox_inside_weight)`` - - **predicted_scores** (Varible) - RPN预测的类别结果。Shape为 ``[F + B,1]`` 的2D Tensor。 ``F`` 为foreground anchor的数量,B为background anchor的数量。数据类型与 ``bbox_pred`` 一致。 - - **predicted_location** (Variable) - RPN预测的位置结果。Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - - **target_label** (Variable) - Shape为 ``[F + B,1]`` 的2D Tensor。数据类型为int32。 - - **target_bbox** (Variable) - Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - - **Bbox_inside_weight** (Variable) - Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - -返回类型:元组 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - bbox_pred = fluid.layers.data(name='bbox_pred', shape=[100, 4], - append_batch_size=False, dtype='float32') - cls_logits = fluid.layers.data(name='cls_logits', shape=[100, 1], - append_batch_size=False, dtype='float32') - anchor_box = fluid.layers.data(name='anchor_box', shape=[20, 4], - append_batch_size=False, dtype='float32') - anchor_var = fluid.layers.data(name='anchor_var', shape=[20, 4], - append_batch_size=False, dtype='float32') - gt_boxes = fluid.layers.data(name='gt_boxes', shape=[10, 4], - append_batch_size=False, dtype='float32') - is_crowd = fluid.layers.data(name='is_crowd', shape=[1], - append_batch_size=False, dtype='float32') - im_info = fluid.layers.data(name='im_infoss', shape=[1, 3], - append_batch_size=False, dtype='float32') - loc_pred, score_pred, loc_target, score_target, bbox_inside_weight= - fluid.layers.rpn_target_assign(bbox_pred, cls_logits, - anchor_box, anchor_var, gt_boxes, is_crowd, im_info) - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/extension/similarity_focus_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/similarity_focus_cn.rst deleted file mode 100644 index 5024493c825ea66ac0ed63ec35f05cc73e2e45e9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/similarity_focus_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_layers_similarity_focus: - -similarity_focus -------------------------------- - -.. py:function:: paddle.fluid.layers.similarity_focus(input, axis, indexes, name=None) - -:alias_main: paddle.nn.functional.similarity_focus -:alias: paddle.nn.functional.similarity_focus,paddle.nn.functional.extension.similarity_focus -:old_api: paddle.fluid.layers.similarity_focus - - - -**实现SimilarityFocus(相似度聚焦)运算** - -通过以下三个步骤,该层生成一个和输入 ``input`` 同形的 similarity focus mask(相似度聚焦掩码): - -1. 根据 ``axis`` 和 ``indexes`` 提取一个三维张量,第一维为batch大小。 - 例如,如果 ``axis=1, indexes=[a]`` , 将得到矩阵 T=X[:, a, :, :] 。 - 该例中,如果输入X的形为 (BatchSize, A, B, C) ,则输出张量T的形为 (BatchSize, B, C) 。 -2. 对于每一个索引,在输出T中找到最大值。所以同一行、同一列最多只有一个数字,这意味着如果在第i行,第j列中找到最大值,那么在相应行、列中的其他数值都将被忽略。然后再在剩余的数值中找到下一个最大值。显然,将会产生 min(B,C)个数字,并把三维相似聚焦掩码张量相应位置的元素置为1,其余则置为0。对每个索引按元素进行or运算。 -3. 将这个三维相似度聚焦掩码张量 broadcast 成输入 ``input`` 的形状 - -请参考 `Similarity Focus Layer `_ 。 - -:: - - 例如 : - - 给定四维张量 x 形为 (BatchSize, C, A, B), 其中C 为通道Channel数目, - 特征图(feature map)的形为(A,B): - - x.shape = (2, 3, 2, 2) - x.data = [[[[0.8, 0.1], - [0.4, 0.5]], - - [[0.9, 0.7], - [0.9, 0.9]], - - [[0.8, 0.9], - [0.1, 0.2]]], - - - [[[0.2, 0.5], - [0.3, 0.4]], - - [[0.9, 0.7], - [0.8, 0.4]], - - [[0.0, 0.2], - [0.4, 0.7]]]] - - 给定轴: 1 (即channel轴) - 给定索引: [0] - - 于是我们得到一个与输入同形的四维输出张量: - out.shape = (2, 3, 2, 2) - out.data = [[[[1.0, 0.0], - [0.0, 1.0]], - - [[1.0, 0.0], - [0.0, 1.0]], - - [[1.0, 0.0], - [0.0, 1.0]]], - - [[[0.0, 1.0], - [1.0, 0.0]], - - [[0.0, 1.0], - [1.0, 0.0]], - - [[0.0, 1.0], - [1.0, 0.0]]]] - - - -参数: - - **input** (Variable) – 输入张量,应为一个四维张量,形为[BatchSize, A, B, C],数据类型为 float32 或者 float64。 - - **axis** (int) – 指明要选择的轴。 可能取值为 1, 2 或 3。 - - **indexes** (list) – 指明选择维度的索引列表。 - -返回:一个和输入 Variable 同形状、同数据类型的 Variable - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data( - name='data', shape=[-1, 3, 2, 2], dtype='float32') - fluid.layers.similarity_focus(input=data, axis=1, indexes=[0]) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/extension/target_assign_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/target_assign_cn.rst deleted file mode 100644 index 61bd9787dad47e8778d9259dd2d2c4dbbefeddd8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/target_assign_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_layers_target_assign: - -target_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.target_assign(input, matched_indices, negative_indices=None, mismatch_value=None, name=None) - -:alias_main: paddle.nn.functional.target_assign -:alias: paddle.nn.functional.target_assign,paddle.nn.functional.extension.target_assign -:old_api: paddle.fluid.layers.target_assign - - - -对于每个实例,根据 ``match_indices`` 和 ``negative_indices`` 位置索引, 给输入 ``out`` 和 ``out_weight`` 赋值。输入 ``input`` 和 ``negative_indices`` 均为2-D LoDTensor。假如 ``input`` 中每个实例的行偏移称作lod,该操作计算步骤如下: - -1.根据match_indices赋值: - -.. code-block:: text - - If id = match_indices[i][j] > 0, - - out[i][j][0 : K] = X[lod[i] + id][j % P][0 : K] - out_weight[i][j] = 1. - - Otherwise, - - out[j][j][0 : K] = {mismatch_value, mismatch_value, ...} - out_weight[i][j] = 0. - -2.如果提供neg_indices,则再次依据该输入赋值: - -neg_indices中的第i个实例的索引称作neg_indice,则对于第i个实例: - -.. code-block:: text - - for id in neg_indice: - out[i][id][0 : K] = {mismatch_value, mismatch_value, ...} - out_weight[i][id] = 1.0 - -参数: - - **input** (Variable) - 输入为3-D LoDTensor,为了方便在上述文档中解释,假如维度是[M,P,K]。 - - **matched_indices** (Variable) - 输入为2-D Tensor,数据类型为int32,表示在输入中匹配位置,具体计算如上,同样,为了方便解释,假如维度大小为[N,P],如果 ``matched_indices[i][j]`` 为-1,表示在第 ``i`` 个实例中第j列项没有任何匹配项,输出会设置成 ``mismatch_value`` 。 - - **negative_indices** (Variable,可选) - 维度为2-D LoDTensor,数据类型为int32。可以不设置,如果设置,会依据该位置索引再次给输出赋值,具体参考上述文档。 - - **mismatch_value** (float32,可选) - 未匹配的位置填充值。 - - **name** (str) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:返回一个元组(out,out_weight)。out是三维张量,维度为[N,P,K],N和P与 ``matched_indices`` 中的N和P一致,K和输入X中的K一致。 ``out_weight`` 的维度为[N,P,1]。 - -返回类型:tuple(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data( - name='x', - shape=[4, 20, 4], - dtype='float', - lod_level=1) - matched_id = fluid.data( - name='indices', - shape=[8, 20], - dtype='int32') - trg, trg_weight = fluid.layers.target_assign( - x, - matched_id, - mismatch_value=0) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/extension/temporal_shift_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/temporal_shift_cn.rst deleted file mode 100644 index acde7a2951aeaec7760094c27332bbe023da3cdc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/temporal_shift_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_temporal_shift: - -temporal_shift -------------------------------- -.. py:function:: paddle.fluid.layers.temporal_shift(x, seg_num, shift_ratio=0.25, name=None) - -:alias_main: paddle.nn.functional.temporal_shift -:alias: paddle.nn.functional.temporal_shift,paddle.nn.functional.extension.temporal_shift -:old_api: paddle.fluid.layers.temporal_shift - - - -该OP用于对输入X做时序通道T上的位移操作,为TSM(Temporal Shift Module)中使用的操作。 - -输入(X)的形状应为[N*T, C, H, W],N是批大小,T是 ``seg_num`` 指定的时间段号,C是通道号,H和W是特征的高度和宽度。 - -时间偏移计算如下: - -步骤1:将输入(X)reshape为[N, T, C, H, W]。 - -步骤2:填充0到第二个(T)尺寸的变形结果,填充宽度每边为1,填充结果的形状为[N,T+2,C,H,W]。 - -步骤3:假设 ``shift_ratio`` 为1/4,切片填充结果如下: - -.. math:: - - slice1 &= x[:, :T, :C/4, :, :] - - slice2 &= x[:, 2:T+2, C/4:C/2, :, :] - - slice3 &= x[:, 1:T+1, C/2:, :, :] - -步骤4:沿第3(C)维连接三个切片,并将结果重塑为[N*T, C, H, W]。 - -有关时序移动的详细信息,请参阅文件: `Temporal Shift Module `_ - -参数: - - **x** (Variable) – 时移算符的输入张量。维度为 :math:`[N*T,C,H,W]` 的4-D Tensor。N为批量大小,T为时间段数,C为信道数,H为特征高度,W为特征宽度,数据类型为float32或float64。 - - **seg_num** (int) – 时间段编号,这应该是一个正整数。 - - **shift_ratio** (float) – 通道的移位比、通道的第一个 ``shift_ratio`` 部分沿时间维度移动-1,通道的第二个 ``shift_ratio`` 部分沿时间维度移动1,范围须在[0, 0.5]内。默认值0.25 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - -返回:Variable(Tensor) 时序位移后的输出张量,维度与输入 ``x`` 一致。 - -返回类型:变量(Variable),数据类型与输入 ``x`` 一致。 - -抛出异常: ``TypeError`` – seg_num 必须是int类型 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.data(name='input', shape=[None,4,2,2], dtype='float32') - out = fluid.layers.temporal_shift(x=input, seg_num=2, shift_ratio=0.2) - - - diff --git a/doc/paddle/api/paddle/nn/functional/extension/warpctc_cn.rst b/doc/paddle/api/paddle/nn/functional/extension/warpctc_cn.rst deleted file mode 100644 index dbb4c4ca829330844170359127680fe870ac618c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/extension/warpctc_cn.rst +++ /dev/null @@ -1,98 +0,0 @@ -.. _cn_api_fluid_layers_warpctc: - -warpctc -------------------------------- - -.. py:function:: paddle.fluid.layers.warpctc(input, label, blank=0, norm_by_times=False, input_length=None, label_length=None) - -:alias_main: paddle.nn.functional.warpctc -:alias: paddle.nn.functional.warpctc,paddle.nn.functional.extension.warpctc -:old_api: paddle.fluid.layers.warpctc - - - -该OP用于计算 `CTC loss `_ 。该OP的底层调用了第三方 `baidu-research::warp-ctc `_ 的实现。 - -参数: - - **input** (Variable) - 可以是3-D Tensor或2-D LoDTensor。当输入类型是3-D Tensor时,则表示输入是经过padding的定长序列,其 shape 必须是 ``[seq_length, batch_size, num_classes + 1]`` 。当输入类型是2-D LoDTensor时,则表示输入为变长序列,其shape必须为 ``[Lp,num_classes+1]`` , ``Lp`` 是所有输入序列长度之和。以上 shape 中的 ``num_classes`` 是实际类别数,不包括空白标签。该输入不需要经过 softmax 操作,因为该OP的内部对 ``input`` 做了 softmax 操作。数据类型仅支持float32。 - - **label** (Variable) - 可以是3-D Tensor或2-D LoDTensor,需要跟 ``input`` 保持一致。当输入类型为3-D Tensor时,表示输入是经过 padding 的定长序列,其 shape 为 ``[batch_size, label_length]`` ,其中, ``label_length`` 是最长的 label 序列的长度。当输入类型是2-D LoDTensor时,则表示输入为变长序列,其shape必须为 ``[Lp, 1]`` , 其中 ``Lp`` 是所有 label 序列的长度和。 ``label`` 中的数值为字符ID。数据类型支持int32。 - - **blank** (int,可选) - 空格标记的ID,其取值范围为 ``[0,num_classes+1)`` 。数据类型支持int32。缺省值为0。 - - **norm_by_times** (bool,可选) - 是否根据序列长度对梯度进行正则化。数据类型支持 bool 。缺省值为False。 - - **input_length** (Variable) - 必须是1-D Tensor。仅在输入为定长序列时使用,表示输入数据中每个序列的长度,shape为 ``[batch_size]`` 。数据类型支持int64。默认为None。 - - **label_length** (Variable) - 必须是1-D Tensor。仅在label为定长序列时使用,表示 label 中每个序列的长度,shape为 ``[batch_size]`` 。数据类型支持int64。默认为None。 - -返回:Shape为[batch_size,1]的2-D Tensor,表示每一个序列的CTC loss。数据类型与 ``input`` 一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - # using LoDTensor - import paddle.fluid as fluid - import numpy as np - - # lengths of logit sequences - seq_lens = [2,6] - # lengths of label sequences - label_lens = [2,3] - # class num - class_num = 5 - - logits = fluid.data(name='logits',shape=[None, class_num+1], - dtype='float32',lod_level=1) - label = fluid.data(name='label', shape=[None, 1], - dtype='int32', lod_level=1) - cost = fluid.layers.warpctc(input=logits, label=label) - place = fluid.CPUPlace() - x = fluid.create_lod_tensor( - np.random.rand(np.sum(seq_lens), class_num+1).astype("float32"), - [seq_lens], place) - y = fluid.create_lod_tensor( - np.random.randint(0, class_num, [np.sum(label_lens), 1]).astype("int32"), - [label_lens], place) - exe = fluid.Executor(place) - output= exe.run(fluid.default_main_program(), - feed={"logits": x,"label": y}, - fetch_list=[cost.name]) - print(output) - -.. code-block:: python - - # using Tensor - import paddle.fluid as fluid - import numpy as np - - # length of the longest logit sequence - max_seq_length = 5 - # length of the longest label sequence - max_label_length = 3 - # number of logit sequences - batch_size = 16 - # class num - class_num = 5 - logits = fluid.data(name='logits', - shape=[max_seq_length, batch_size, class_num+1], - dtype='float32') - logits_length = fluid.data(name='logits_length', shape=[None], - dtype='int64') - label = fluid.data(name='label', shape=[batch_size, max_label_length], - dtype='int32') - label_length = fluid.data(name='labels_length', shape=[None], - dtype='int64') - cost = fluid.layers.warpctc(input=logits, label=label, - input_length=logits_length, - label_length=label_length) - place = fluid.CPUPlace() - x = np.random.rand(max_seq_length, batch_size, class_num+1).astype("float32") - y = np.random.randint(0, class_num, [batch_size, max_label_length]).astype("int32") - exe = fluid.Executor(place) - output= exe.run(fluid.default_main_program(), - feed={"logits": x, - "label": y, - "logits_length": np.array([max_seq_length]*batch_size).astype("int64"), - "labels_length": np.array([max_label_length]*batch_size).astype("int64")}, - fetch_list=[cost.name]) - print(output) - diff --git a/doc/paddle/api/paddle/nn/functional/filter_by_instag_cn.rst b/doc/paddle/api/paddle/nn/functional/filter_by_instag_cn.rst deleted file mode 100644 index 212eef72dc7a6b3dc1506270feabc78fcf29c2f1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/filter_by_instag_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_filter_by_instag: - -filter_by_instag -------------------------------- - -.. py:function:: paddle.fluid.layers.filter_by_instag(ins, ins_tag, filter_tag, is_lod) - -:alias_main: paddle.nn.functional.filter_by_instag -:alias: paddle.nn.functional.filter_by_instag,paddle.nn.functional.extension.filter_by_instag -:old_api: paddle.fluid.layers.filter_by_instag - - - -此函数通过instag来过滤ins batch,大量属于同样的tags的样本,我们可以指定我们想要的一些tags,属于这些tags的样本将会被保留在输出中,其余的将会移除。比如,一个batch有4个样本,每个样本都有自己的tag表。 - -Ins | Ins_Tag | - -|:—–:|:——:| - -| 0 | 0, 1 | - -| 1 | 1, 3 | - -| 2 | 0, 3 | - -| 3 | 2, 6 | - -Lod为[1,1,1,1],filter tags为[1],从上面的定义中,带有标签[1]的样本将会通过filter,所以,样本0和1将会通过并且出现在输出中。准确来说,如果 ``is_lod`` 为false,它是一个等于值全为1的lod_tensor的普通的tensor,和上面的例子很相似。 - -参数: - - **ins** (Variable) - 输入变量(LoDTensor),通常为2D向量,第一个维度可以有lod info,也可以没有。 - - **ins_tag** (Variable) - 输入变量(LoDTensor),通常为1维列表,通过lod info来分割。 - - **filter_tag** (Variable) - 输入变量(1D Tensor/List),通常为持有tags的列表。 - - **is_lod** (Bool) – 指定样本是否为lod tensor的布尔值。 - - **out_val_if_empty** (Int64) - 如果batch内样本被全部过滤,输出会被指定成这个值。 - -返回:过滤之后的样本(LoDTensor)和 损失权重(Tensor)。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid.layers as layers - ins = layers.data(name='Ins', shape=[-1,32], lod_level=0, dtype='float64') - ins_tag = layers.data(name='Ins_tag', shape=[-1,16], lod_level=0, dtype='int64') - filter_tag = layers.data(name='Filter_tag', shape=[-1,16], dtype='int64') - out, loss_weight = layers.filter_by_instag(ins, ins_tag, filter_tag, True) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/gelu_cn.rst b/doc/paddle/api/paddle/nn/functional/gelu_cn.rst deleted file mode 100644 index c234e3b574b2ee089f6cc39b000f28590ad1630d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/gelu_cn.rst +++ /dev/null @@ -1,82 +0,0 @@ -.. _cn_api_fluid_layers_gelu: - -gelu -------------------------------- - -.. py:function:: paddle.fluid.layers.gelu(x) - -:alias_main: paddle.nn.functional.gelu -:alias: paddle.nn.functional.gelu,paddle.nn.functional.activation.gelu -:old_api: paddle.fluid.layers.gelu - - - -逐元素计算 Gelu激活函数。更多细节请参考 `Gaussian Error Linear Units `_ 。 - -如果使用近似计算: - -.. math:: - out = 0.5 * x * (1 + tanh(\sqrt{\frac{2}{\pi}} * (x + 0.044715x^{3}))) - -如果不使用近似计算: - -.. math:: - out = 0.5 * x * (1 + erf(\frac{x}{\sqrt{2}})) - -参数: - - **x** (Variable) - Gelu Op 的输入,多维 Tensor 或 LoDTensor,数据类型为 float32 或 float64。 - - **approximate** (bool, 可选) - 是否使用近似计算,默认值为 False。 - -返回: - - 多维 Tensor 或 LoDTensor, 数据类型为 float32 或 float64, 和输入 x 的数据类型相同,形状和输入 x 相同。 - -返回类型: - - Variable - -**代码示例**: - -.. code-block:: python - - # declarative mode - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.gelu(x) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[ 0.87165993, -1.0541513 , -0.37214822], - # [ 0.15647964, 0.32496083, 0.33045998]], dtype=float32) - y_np - # array([[ 0.70456535, -0.15380788, -0.13207214], - # [ 0.08796856, 0.20387867, 0.2080159 ]], dtype=float32) - -.. code-block:: python - - # imperative mode - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.gelu(x) - y_np = y.numpy() - data - # array([[ 0.87165993, -1.0541513 , -0.37214822], - # [ 0.15647964, 0.32496083, 0.33045998]], dtype=float32) - y_np - # array([[ 0.70456535, -0.15380788, -0.13207214], - # [ 0.08796856, 0.20387867, 0.2080159 ]], dtype=float32) diff --git a/doc/paddle/api/paddle/nn/functional/hard_shrink_cn.rst b/doc/paddle/api/paddle/nn/functional/hard_shrink_cn.rst deleted file mode 100644 index d139a6a8fe52833cfa1e682bdcc7940d613b2270..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/hard_shrink_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_fluid_layers_hard_shrink: - -hard_shrink -------------------------------- - -.. py:function:: paddle.fluid.layers.hard_shrink(x,threshold=None) - -:alias_main: paddle.nn.functional.hard_shrink -:alias: paddle.nn.functional.hard_shrink,paddle.nn.functional.activation.hard_shrink -:old_api: paddle.fluid.layers.hard_shrink - - - -HardShrink激活函数(HardShrink activation operator) - - -.. math:: - - out = \begin{cases} - x, \text{if } x > \lambda \\ - x, \text{if } x < -\lambda \\ - 0, \text{otherwise} - \end{cases} - -参数: - - **x** - HardShrink激活函数的输入 - - **threshold** (FLOAT)-HardShrink激活函数的threshold值。[默认:0.5] - -返回:HardShrink激活函数的输出 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[784]) - result = fluid.layers.hard_shrink(x=data, threshold=0.3) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/hard_sigmoid_cn.rst b/doc/paddle/api/paddle/nn/functional/hard_sigmoid_cn.rst deleted file mode 100644 index f015a799c57376ee406cbac16d68d8a98b72dda4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/hard_sigmoid_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_layers_hard_sigmoid: - -hard_sigmoid -------------------------------- - -.. py:function:: paddle.fluid.layers.hard_sigmoid(x, slope=0.2, offset=0.5, name=None) - -:alias_main: paddle.nn.functional.hard_sigmoid -:alias: paddle.nn.functional.hard_sigmoid,paddle.nn.functional.activation.hard_sigmoid -:old_api: paddle.fluid.layers.hard_sigmoid - - - -sigmoid的分段线性逼近激活函数,速度比sigmoid快,详细解释参见 https://arxiv.org/abs/1603.00391。 - -.. math:: - - \\out=\max(0,\min(1,slope∗x+offset))\\ - -参数: - - **x** (Variable) - 该OP的输入为多维Tensor。数据类型必须为float32或float64。 - - **slope** (float,可选) - 斜率。值必须为正数,默认值为0.2。 - - **offset** (float,可选) - 偏移量。默认值为0.5。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:激活后的Tensor,形状、数据类型和 ``x`` 一致。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.fill_constant(shape=[3, 2], value=0.5, dtype='float32') # [[0.5, 0.5], [0.5, 0.5], [0.5, 0.5]] - result = fluid.layers.hard_sigmoid(data) # [[0.6, 0.6], [0.6, 0.6], [0.6, 0.6]] diff --git a/doc/paddle/api/paddle/nn/functional/hard_swish_cn.rst b/doc/paddle/api/paddle/nn/functional/hard_swish_cn.rst deleted file mode 100644 index 8118ea27a2f2c6f1855e02cd8451a1de6d11151a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/hard_swish_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_layers_hard_swish: - -hard_swish -------------------------------- - -.. py:function:: paddle.fluid.layers.hard_swish(x, threshold=6.0, scale=6.0, offset=3.0, name=None) - -:alias_main: paddle.nn.functional.hard_swish -:alias: paddle.nn.functional.hard_swish,paddle.nn.functional.activation.hard_swish -:old_api: paddle.fluid.layers.hard_swish - - - -该OP实现了hard_swish激活函数。hard_swish激活函数在MobileNetV3架构中被提出,相较于swish函数,具有数值稳定性好,计算速度快等优点,具体原理请参考: https://arxiv.org/pdf/1905.02244.pdf - - :math:`out = \frac{x * (min(max(0, x+offset), threshold))}{scale}` - - 阈值 ``threshold`` 和缩放因子 ``scale`` 为正数,位移 ``offset`` 正负均可,建议使用默认参数。 - -参数: - - **x** (Variable) - 输入特征,多维Tensor。数据类型为float32或float64。 - - **threshold** (float,可选) - 激活操作中Relu函数的阈值,默认值为6.0。 - - **scale** (float,可选) - 激活操作的缩放因子,默认值为6.0。 - - **offset** (float,可选) - 激活操作的位移,默认值为3.0。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:经过hard_swish计算后的结果,数据类型及维度和x相同。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - DATATYPE='float32' - shape = [1,4] - - x_data = np.array([i for i in range(1,5)]).reshape(shape).astype(DATATYPE) - - x = fluid.layers.data(name="x", shape=shape, dtype=DATATYPE) - y = fluid.layers.hard_swish(x) - - place = fluid.CUDAPlace(0) - exe = fluid.Executor(place) - out, = exe.run(feed={'x':x_data}, fetch_list=[y.name]) - print(out) # [[0.66666667, 1.66666667,3., 4.]] - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/hsigmoid_cn.rst b/doc/paddle/api/paddle/nn/functional/hsigmoid_cn.rst deleted file mode 100644 index fa8a9704fe470bea9ceef5c53506ece75b80a44d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/hsigmoid_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_hsigmoid: - -hsigmoid -------------------------------- - - -.. py:function:: paddle.fluid.layers.hsigmoid(input, label, num_classes, param_attr=None, bias_attr=None, name=None, path_table=None, path_code=None, is_custom=False, is_sparse=False) - -:api_attr: 声明式编程模式(静态图) - - - -层次sigmoid(hierarchical sigmoid),该OP通过构建一个分类二叉树来降低计算复杂度,主要用于加速语言模型的训练过程。 - -该OP建立的二叉树中每个叶节点表示一个类别(单词),每个非叶子节点代表一个二类别分类器(sigmoid)。对于每个类别(单词),都有一个从根节点到它的唯一路径,hsigmoid累加这条路径上每个非叶子节点的损失得到总损失。 - -相较于传统softmax的计算复杂度 :math:`O(N)` ,hsigmoid可以将计算复杂度降至 :math:`O(logN)` ,其中 :math:`N` 表示类别总数(字典大小)。 - -若使用默认树结构,请参考 `Hierarchical Probabilistic Neural Network Language Model `_ 。 - -若使用自定义树结构,请将参数 ``is_custom`` 设置为True,并完成以下步骤(以语言模型为例): - -1. 使用自定义词典来建立二叉树,每个叶结点都应该是词典中的单词; - -2. 建立一个dict类型数据结构,用于存储 **单词id -> 该单词叶结点至根节点路径** 的映射,即路径表 ``path_table`` 参数; - -3. 建立一个dict类型数据结构,用于存储 **单词id -> 该单词叶结点至根节点路径的编码** 的映射,即路径编码 ``path_code`` 参数。 编码是指每次二分类的标签,1为真,0为假; - -4. 每个单词都已经有自己的路径和路径编码,当对于同一批输入进行操作时,可以同时传入一批路径和路径编码进行运算。 - -参数: - - **input** (Variable) - 输入Tensor。数据类型为float32或float64,形状为 ``[N, D]`` ,其中 ``N`` 为minibatch的大小,``D`` 为特征大小。 - - **label** (Variable) - 训练数据的标签。数据类型为int64,形状为 ``[N, 1]`` 。 - - **num_classes** (int) - 类别总数(字典大小)必须大于等于2。若使用默认树结构,即当 ``is_custom=False`` 时 ,必须设置该参数。若使用自定义树结构,即当 ``is_custom=True`` 时,它取值应为自定义树结构的非叶节点的个数,用于指定二分类的类别总数。 - - **param_attr** (ParamAttr,可选) - 该OP可学习参数的属性。可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 该OP将利用 ``param_attr`` 属性来创建ParamAttr实例。如果没有设置 ``param_attr`` 的初始化函数,那么参数将采用Xavier初始化。默认值为None。 - - **bias_attr** (ParamAttr, 可选) - 该OP的偏置参数的属性。可以设置为None或者一个ParamAttr的类(ParamAttr中可以指定参数的各种属性)。 该OP将利用 ``bias_attr`` 属性来创建ParamAttr实例。如果没有设置 ``bias_attr`` 的初始化函数,参数初始化为0.0。默认值为None。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **path_table** (Variable,可选) – 存储每一批样本从类别(单词)到根节点的路径,按照从叶至根方向存储。 数据类型为int64,形状为 ``[N, L]`` ,其中L为路径长度。``path_table`` 和 ``path_code`` 应具有相同的形状, 对于每个样本i,path_table[i]为一个类似np.ndarray的结构,该数组内的每个元素都是其双亲结点权重矩阵的索引。默认值为None。 - - **path_code** (Variable,可选) – 存储每一批样本从类别(单词)到根节点的路径编码,按从叶至根方向存储。数据类型为int64,形状为 ``[N, L]``。默认值为None。 - - **is_custom** (bool,可选) – 是否使用用户自定义二叉树取代默认二叉树结构。如果设置为True,请务必设置 ``path_table`` , ``path_code`` , ``num_classes`` ,否则必须设置num_classes。默认值为False。 - - **is_sparse** (bool,可选) – 是否使用稀疏更新方式。如果设置为True,W的梯度和输入梯度将会变得稀疏。默认值为False。 - -返回: 层次sigmoid计算后的Tensor,形状为[N, 1],数据类型和 ``input`` 一致。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.fill_constant(shape=[4, 3], value=0.9, dtype='float32') - # x = [[0.9, 0.9, 0.9], [0.9, 0.9, 0.9], [0.9, 0.9, 0.9], [0.9, 0.9, 0.9]] - y = fluid.layers.fill_constant( - shape=[4, 1], value=1, dtype='int64') - # y = [[1], [1], [1], [1]] - out = fluid.layers.hsigmoid(input=x, label=y, num_classes=2, param_attr=fluid.initializer.Constant( - value=0.05), bias_attr=fluid.initializer.Constant(value=.0)) - # out = [[0.62792355], [0.62792355], [0.62792355], [0.62792355]] diff --git a/doc/paddle/api/paddle/nn/functional/interpolate_cn.rst b/doc/paddle/api/paddle/nn/functional/interpolate_cn.rst deleted file mode 100644 index 1b1c1e3a629fcb38be1ec0c49fb580e1c8313962..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/interpolate_cn.rst +++ /dev/null @@ -1,208 +0,0 @@ -.. _cn_api_paddle_nn_functioanl_interpolate: - -Inerpolate -------------------------------- - -.. py:function:: paddle.nn.functioanl.interpolate(input, out_shape=None, scale=None, name=None, resample='BILINEAR', actual_shape=None, align_corners=True, align_mode=1, data_format='NCHW') - -:alias_main: paddle.nn.functional.interpolate -:alias: paddle.nn.functional.interpolate,paddle.nn.functional.common.interpolate - - - -**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 - -该OP用于调整一个batch中图片的大小。 - -输入为4-D Tensor时形状为(num_batches, channels, in_h, in_w)或者(num_batches, in_h, in_w, channels),输入为5-D Tensor时形状为(num_batches, channels, in_d, in_h, in_w)或者(num_batches, in_d, in_h, in_w, channels),并且调整大小只适用于深度,高度和宽度对应的维度。 - -支持的插值方法: - - NEAREST:最近邻插值 - - BILINEAR:双线性插值 - - TRALINEAR:三线性插值 - - BICUBIC:双三次插值 - - - - -最近邻插值是在输入张量的高度和宽度上进行最近邻插值。 - -双线性插值是线性插值的扩展,用于在直线2D网格上插值两个变量(例如,该操作中的H方向和W方向)的函数。 关键思想是首先在一个方向上执行线性插值,然后在另一个方向上再次执行线性插值。 - -三线插值是线性插值的一种扩展,是3参数的插值方程(比如op里的D,H,W方向),在三个方向上进行线性插值。 - -双三次插值是在二维网格上对数据点进行插值的三次插值的扩展,它能创造出比双线性和最近临插值更为光滑的图像边缘。 - -Align_corners和align_mode是可选参数,插值的计算方法可以由它们选择。 - -示例: - -:: - - - scale 计算方法: - - if align_corners = True && out_size > 1 : - - scale_factor = (in_size-1.0)/(out_size-1.0) - - else: - - scale_factor = float(in_size/out_size) - - - 不同插值方式的输出纬度计算规则: - - Nearest neighbor interpolation: - - if: - align_corners = False - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = \left \lfloor {H_{in} * scale_{}factor}} \right \rfloor - W_out = \left \lfloor {W_{in} * scale_{}factor}} \right \rfloor - - else: - align_corners = True - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = round(H_{in} * scale_{factor}) - W_out = round(W_{in} * scale_{factor}) - - Bilinear interpolation: - - if: - align_corners = False , align_mode = 0 - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - - else: - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - - Bicubic interpolation: - - if: - align_corners = False - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - else: - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - - Trilinear interpolation: - - if: - align_corners = False , align_mode = 0 - - input : (N,C,D_in,H_in,W_in) - output: (N,C,D_out,H_out,W_out) where: - - D_out = (D_{in}+0.5) * scale_{factor} - 0.5 - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - - else: - - input : (N,C,D_in,H_in,W_in) - output: (N,C,D_out,H_out,W_out) where: - - D_out = D_{in} * scale_{factor} - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - - -有关最近邻插值的详细信息,请参阅维基百科: -https://en.wikipedia.org/wiki/Nearest-neighbor_interpolation - -有关双线性插值的详细信息,请参阅维基百科: -https://en.wikipedia.org/wiki/Bilinear_interpolation - -有关三线插值的详细信息,请参阅维基百科: -https://en.wikipedia.org/wiki/Trilinear_interpolation - -有关双三次插值的详细信息,请参阅维基百科: -https://en.wikipedia.org/wiki/Bicubic_interpolation - -参数: - - **input** (Variable) - 4-D或5-D Tensor,数据类型为float32、float64或uint8,其数据格式由参数 ``data_format`` 指定。 - - **out_shape** (list|tuple|Variable|None) - 输出Tensor,输入为4D张量时,形状为为(out_h, out_w)的2-D Tensor。输入为5-D Tensor时,形状为(out_d, out_h, out_w)的3-D Tensor。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者形状为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。默认值为None。 - - **scale** (float|Variable|None)-输入的高度或宽度的乘数因子 。 out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值为None。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - **resample** (str) - 插值方法。支持“双线性”,“三线性”,“临近插值”,"双三次"。默认值为双线性插值。 - - **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。如果希望动态指定输出形状,建议使用 :code:`out_shape` ,因为 :code:`actual_shape` 未来将被弃用。在使用actual_shape指定输出形状时,还需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值:None - - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值为True - - **align_mode** (int)- 双线性插值的可选项。 可以是 '0' 代表src_idx = scale *(dst_indx + 0.5)-0.5;如果为'1' ,代表src_idx = scale * dst_index。 - - **data_format** (str,可选)- 指定输入的数据格式,输出的数据格式将与输入保持一致。对于4-D Tensor,支持 NCHW(num_batches, channels, height, width) 或者 NHWC(num_batches, height, width, channels),对于5-D Tensor,支持 NCDHW(num_batches, channels, depth, height, width)或者 NDHWC(num_batches, depth, height, width, channels),默认值:'NCHW'。 - -返回:4-D Tensor,形状为 (num_batches, channels, out_h, out_w) 或 (num_batches, out_h, out_w, channels);或者5-D Tensor,形状为 (num_batches, channels, out_d, out_h, out_w) 或 (num_batches, out_d, out_h, out_w, channels)。 - -返回类型: 变量(variable) - -抛出异常: - - :code:`TypeError` - out_shape应该是一个列表、元组或变量。 - - :code:`TypeError` - actual_shape应该是变量或None。 - - :code:`ValueError` - image_resize的"resample"只能是"BILINEAR"或"TRILINEAR"或"NEAREST"或"BICUBIC"。 - - :code:`ValueError` - out_shape 和 scale 不可同时为 None。 - - :code:`ValueError` - out_shape 的长度必须为2如果输入是4D张量。 - - :code:`ValueError` - out_shape 的长度必须为3如果输入是5D张量。 - - :code:`ValueError` - scale应大于0。 - - :code:`TypeError` - align_corners 应为bool型。 - - :code:`ValueError` - align_mode 只能取 ‘0’ 或 ‘1’。 - - :code:`ValueError` - data_format 只能取 ‘NCHW’、‘NHWC’、‘NCDHW’ 或者 ‘NDHWC’。 - - -**代码示例** - -.. code-block:: python - - import paddle - import numpy as np - input = fluid.data(name="input", shape=[None,3,6,10]) - output = paddle.nn.functional.interpolate(input=input,out_shape=[12,12]) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - input_data = np.random.rand(2,3,6,10).astype("float32") - output_data = exe.run(fluid.default_main_program(), - feed={"input":input_data}, - fetch_list=[output], - return_numpy=True) - print(output_data[0].shape) - # (2, 3, 12, 12) - - #imperative mode - import paddle.fluid.dygraph as dg - with dg.guard(place) as g: - input = dg.to_variable(input_data) - output = paddle.nn.functional.interpolate(input=input, out_shape=[12,12]) - print(output.shape) - # [2L, 3L, 12L, 12L] - diff --git a/doc/paddle/api/paddle/nn/functional/label_smooth_cn.rst b/doc/paddle/api/paddle/nn/functional/label_smooth_cn.rst deleted file mode 100644 index 62292e20d0bbe1245f67a0f58f57a5941f5a9911..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/label_smooth_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_label_smooth: - -label_smooth -------------------------------- - -.. py:function:: paddle.fluid.layers.label_smooth(label, prior_dist=None, epsilon=0.1, dtype='float32', name=None) - -:alias_main: paddle.nn.functional.label_smooth -:alias: paddle.nn.functional.label_smooth,paddle.nn.functional.common.label_smooth -:old_api: paddle.fluid.layers.label_smooth - - - -该OP实现了标签平滑的功能。标签平滑是一种对分类器层进行正则化的机制,称为标签平滑正则化(LSR)。由于直接优化正确标签的对数似然可能会导致过拟合,降低模型的适应能力,因此提出了标签平滑的方法来降低模型置信度。 - -标签平滑使用标签 :math:`y` 和一些固定模式随机分布变量 :math:`\mu` 。对 :math:`k` 标签,标签平滑的计算方式如下。 - -.. math:: - - \tilde{y_k} = (1 - \epsilon) * y_k + \epsilon * \mu_k, - -其中 :math:`1-\epsilon` 和 :math:`\epsilon` 分别是权重, :math:`\tilde{y_k}` 是平滑后的标签,通常 :math:`\mu` 使用均匀分布。 - - -关于更多标签平滑的细节, `查看论文 `_ 。 - - -参数: - - **label** (Variable) - 包含标签数据的输入变量。 标签数据应使用 one-hot 表示,是维度为 :math:`[N_1, ..., Depth]` 的多维Tensor,其中Depth为字典大小。 - - **prior_dist** (Variable,可选) - 用于平滑标签的先验分布,是维度为 :math:`[1,class\_num]` 的2D Tensor。 如果未设置,则使用均匀分布。默认值为None。 - - **epsilon** (float,可选) - 用于混合原始真实分布和固定分布的权重。默认值为0.1。 - - **dtype** (np.dtype|core.VarDesc.VarType|str,可选) - 输入 ``Tensor`` 的数据类型,,数据类型可以为”float32“或”float64“。默认值为”float32“。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:为平滑后标签的 ``Tensor`` ,数据类型为dtype设置的数据类型,维度也与输入的label参数维度相同。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - - label = layers.data(name="label", shape=[1], dtype="float32") - one_hot_label = layers.one_hot(input=label, depth=10) - smooth_label = layers.label_smooth(label=one_hot_label, epsilon=0.1, dtype="float32") - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/leaky_relu_cn.rst b/doc/paddle/api/paddle/nn/functional/leaky_relu_cn.rst deleted file mode 100644 index 736a39e0dfded848089f7511031addc5cf71dfe4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/leaky_relu_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_leaky_relu: - -leaky_relu -------------------------------- - -.. py:function:: paddle.fluid.layers.leaky_relu(x, alpha=0.02, name=None) - -:alias_main: paddle.nn.functional.leaky_relu -:alias: paddle.nn.functional.leaky_relu,paddle.nn.functional.activation.leaky_relu -:old_api: paddle.fluid.layers.leaky_relu - - - -LeakyRelu激活函数 - -.. math:: out=max(x,α∗x) - -参数: - - **x** (Variable) - 输入的多维LoDTensor/Tensor,数据类型为:float32,float64。 - - **alpha** (float) - 负斜率,缺省值为0.02。 - - **name** (str,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 与 ``x`` 维度相同,数据类型相同的LodTensor/Tensor。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # Graph Organizing - x = fluid.layers.data(name="x", shape=[2], dtype="float32") - res = fluid.layers.leaky_relu(x, alpha=0.1) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - x_i = np.array([[-1, 2], [3, -4]]).astype(np.float32) - res_val, = exe.run(fluid.default_main_program(), feed={'x':x_i}, fetch_list=[res]) - print(res_val) # [[-0.1, 2], [3, -0.4]] - - diff --git a/doc/paddle/api/paddle/nn/functional/learning_rate/cosine_decay_cn.rst b/doc/paddle/api/paddle/nn/functional/learning_rate/cosine_decay_cn.rst deleted file mode 100644 index 9117c06dd61c6bef978cde326fd64075fdeb7657..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/learning_rate/cosine_decay_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_cosine_decay: - -cosine_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.cosine_decay(learning_rate, step_each_epoch, epochs) - -:alias_main: paddle.nn.functional.cosine_decay -:alias: paddle.nn.functional.cosine_decay,paddle.nn.functional.learning_rate.cosine_decay -:old_api: paddle.fluid.layers.cosine_decay - - - -使用 cosine decay 的衰减方式进行学习率调整。 - -在训练模型时,建议一边进行训练一边降低学习率。 通过使用此方法,学习速率将通过如下cosine衰减策略进行衰减: - -.. math:: - decayed\_lr = learning\_rate * 0.5 * (cos(epoch * math.pi / epochs) + 1) - - -参数: - - **learning_rate** (Variable | float) - 初始学习率。 - - **step_each_epoch** (int) - 一次迭代中的步数。 - - **epochs** - 总迭代次数。 - - - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - lr = fluid.layers.cosine_decay( learning_rate = base_lr, step_each_epoch=10000, epochs=120) - - - diff --git a/doc/paddle/api/paddle/nn/functional/learning_rate/exponential_decay_cn.rst b/doc/paddle/api/paddle/nn/functional/learning_rate/exponential_decay_cn.rst deleted file mode 100644 index edda7f819c0ba67b216aa4c4426e3ebfa0df6ee5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/learning_rate/exponential_decay_cn.rst +++ /dev/null @@ -1,58 +0,0 @@ -.. _cn_api_fluid_layers_exponential_decay: - -exponential_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.exponential_decay(learning_rate,decay_steps,decay_rate,staircase=False) - -:alias_main: paddle.nn.functional.exponential_decay -:alias: paddle.nn.functional.exponential_decay,paddle.nn.functional.learning_rate.exponential_decay -:old_api: paddle.fluid.layers.exponential_decay - - - -在学习率上运用指数衰减。 - -训练模型时,在训练过程中降低学习率。每 ``decay_steps`` 步骤中以 ``decay_rate`` 衰减学习率。 - -学习率衰减计算方式如下。 - -.. code-block:: text - - if staircase == True: - decayed_learning_rate = learning_rate * decay_rate ^ floor(global_step / decay_steps) - else: - decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps) - -参数: - - **learning_rate** (Variable|float) - 初始学习率,类型可以为学习率变量(Variable)或float型常量。 - - **decay_steps** (int) - 学习率衰减步长,见以上衰减运算。 - - **decay_rate** (float) - 学习率衰减率。见以上衰减运算。 - - **staircase** (bool) - 若为True,按离散区间衰减学习率,即每 ``decay_steps`` 步学习率衰减 ``decay_rate`` 。若为False,则按以上衰减运算持续衰减。默认False。 - -返回:Variable(Tensor) 随step衰减的学习率变量,维度为 :math:`[1]` 的1-D Tensor。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.layers.exponential_decay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True)) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/learning_rate/inverse_time_decay_cn.rst b/doc/paddle/api/paddle/nn/functional/learning_rate/inverse_time_decay_cn.rst deleted file mode 100644 index 1b7abf3fab067769c21faf730179f8fc88e32785..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/learning_rate/inverse_time_decay_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_fluid_layers_inverse_time_decay: - -inverse_time_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.inverse_time_decay(learning_rate, decay_steps, decay_rate, staircase=False) - -:alias_main: paddle.nn.functional.inverse_time_decay -:alias: paddle.nn.functional.inverse_time_decay,paddle.nn.functional.learning_rate.inverse_time_decay -:old_api: paddle.fluid.layers.inverse_time_decay - - - -在初始学习率上运用逆时衰减。 - -训练模型时,最好在训练过程中降低学习率。通过执行该函数,将对初始学习率运用逆时衰减函数。 - -逆时衰减计算方式如下。 - -.. code-block:: python - - if staircase == True: - decayed_learning_rate = learning_rate / (1 + decay_rate * floor(global_step / decay_step)) - else: - decayed_learning_rate = learning_rate / (1 + decay_rate * global_step / decay_step) - -参数: - - **learning_rate** (Variable|float) - 初始学习率,类型可以为学习率变量(Variable)或float型常量。 - - **decay_steps** (int) - 学习率衰减步长,见以上衰减运算。 - - **decay_rate** (float) - 学习率衰减率。见以上衰减运算。 - - **staircase** (bool) - 若为True,按离散区间衰减学习率,即每 ``decay_steps`` 步多衰减 ``decay_rate`` 倍。若为False,则按以上衰减运算持续衰减。默认False。 - -返回:Variable(Tensor) 随step衰减的学习率变量,维度为 :math:`[1]` 的1-D Tensor。 - -返回类型:变量(Variable) - -**示例代码:** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.layers.natural_exp_decay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True)) - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/learning_rate/linear_lr_warmup_cn.rst b/doc/paddle/api/paddle/nn/functional/learning_rate/linear_lr_warmup_cn.rst deleted file mode 100644 index c480c68d074b01191296b96e8ec8d506fbfa437f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/learning_rate/linear_lr_warmup_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_linear_lr_warmup: - -linear_lr_warmup -------------------------------- - -.. py:function:: paddle.fluid.layers.linear_lr_warmup(learning_rate, warmup_steps, start_lr, end_lr) - -:alias_main: paddle.nn.functional.linear_lr_warmup -:alias: paddle.nn.functional.linear_lr_warmup,paddle.nn.functional.learning_rate.linear_lr_warmup -:old_api: paddle.fluid.layers.linear_lr_warmup - - - - -该OP使用学习率优化策略-线性学习率热身(warm up)对学习率进行初步调整。在正常调整学习率之前,先逐步增大学习率,具体原理可参考: `Bag of Tricks for Image Classification with Convolutional Neural Networks `_ - -当训练步数(global_step)小于热身步数(warmup_steps)时,学习率lr按如下方式更新: - -.. code-block:: text - - linear_step = end_lr - start_lr - lr = start_lr + linear_step * (global_step / warmup_steps) - -其中start_lr为warm up起始学习率,end_lr为最终学习率; - -当训练步数(global_step)大于等于热身步数(warmup_steps)时,学习率lr为: - -.. code-block:: text - - lr = learning_rate - -其中learning_rate为热身之后的学习率。 - -参数: - - **learning_rate** (Variable|float) - 热身之后的学习率,它可以是数据类型为float32的1D-Tensor或单个浮点数。 - - **warmup_steps** (int) - 进行warm up过程的步数。 - - **start_lr** (float) - warm up的起始学习率。 - - **end_lr** (float) - warm up的最终学习率。 - -返回:进行热身衰减后的学习率,数据类型与learning_rate相同。 - -返回类型:Variable - - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - - boundaries = [100, 200] - lr_steps = [0.1, 0.01, 0.001] - learning_rate = fluid.layers.piecewise_decay(boundaries, lr_steps) #case1, Tensor - #learning_rate = 0.1 #case2, float32 - warmup_steps = 50 - start_lr = 1. / 3. - end_lr = 0.1 - decayed_lr = fluid.layers.linear_lr_warmup(learning_rate, - warmup_steps, start_lr, end_lr) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - out, = exe.run(fetch_list=[decayed_lr.name]) - print(out) - # case1: [0.33333334] - # case2: [0.33333334] diff --git a/doc/paddle/api/paddle/nn/functional/learning_rate/natural_exp_decay_cn.rst b/doc/paddle/api/paddle/nn/functional/learning_rate/natural_exp_decay_cn.rst deleted file mode 100644 index 8fc60de95cc71c793c0d3b825bf63817654fbacc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/learning_rate/natural_exp_decay_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_natural_exp_decay: - -natural_exp_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.natural_exp_decay(learning_rate, decay_steps, decay_rate, staircase=False) - -:alias_main: paddle.nn.functional.natural_exp_decay -:alias: paddle.nn.functional.natural_exp_decay,paddle.nn.functional.learning_rate.natural_exp_decay -:old_api: paddle.fluid.layers.natural_exp_decay - - - -将自然指数衰减运用到初始学习率上。 - -训练模型时,在训练过程中降低学习率。 自然指数衰减使用自然指数来计算衰减倍率,每 ``decay_steps`` 步衰减倍率的自然指数幂次项上增加 ``decay_rate`` 。 - -自然指数学习率衰减计算方式如下。 - -.. code-block:: python - - if not staircase: - decayed_learning_rate = learning_rate * exp(- decay_rate * (global_step / decay_steps)) - else: - decayed_learning_rate = learning_rate * exp(- decay_rate * floor(global_step / decay_steps)) - -参数: - - **learning_rate** (Variable|float) - 初始学习率,类型可以为学习率变量(Variable)或float型常量。 - - **decay_steps** (int) - 学习率衰减步长,见以上衰减运算。 - - **decay_rate** (float) - 学习率衰减率。见以上衰减运算。 - - **staircase** (bool) - 若为True,按离散区间衰减学习率,即每 ``decay_steps`` 步衰减倍率的自然指数幂次项上增加 ``decay_rate`` 。若为False,则按以上衰减运算持续衰减。默认False。 - -返回:Variable(Tensor) 随step衰减的学习率变量,维度为 :math:`[1]` 的1-D Tensor。 - -返回类型:变量(Variable) - -**示例代码:** - -.. code-block:: python - - import paddle.fluid as fluid - base_lr = 0.1 - sgd_optimizer = fluid.optimizer.SGD( - learning_rate=fluid.layers.natural_exp_decay( - learning_rate=base_lr, - decay_steps=10000, - decay_rate=0.5, - staircase=True)) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/learning_rate/noam_decay_cn.rst b/doc/paddle/api/paddle/nn/functional/learning_rate/noam_decay_cn.rst deleted file mode 100644 index 00a7ad2321b6864891b8cd1c8d04a32b39c30b5e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/learning_rate/noam_decay_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_noam_decay: - -noam_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.noam_decay(d_model, warmup_steps) - -:alias_main: paddle.nn.functional.noam_decay -:alias: paddle.nn.functional.noam_decay,paddle.nn.functional.learning_rate.noam_decay -:old_api: paddle.fluid.layers.noam_decay - - - -Noam衰减方法 - -noam衰减的numpy实现如下: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - # 设置超参数 - base_lr = 0.01 - d_model = 2 - current_steps = 20 - warmup_steps = 200 - # 计算 - lr_value = base_lr * np.power(d_model, -0.5) * np.min([ - np.power(current_steps, -0.5), - np.power(warmup_steps, -1.5) * current_steps]) - -请参照 `attention is all you need `_ - -参数: - - **d_model** (Variable|int) - 模型的输入、输出向量特征维度。类型可设置为标量Tensor,或int值。 - - **warmup_steps** (Variable|int) - 预热步数,类型可设置为标量Tensor,或int值。 - - **learning_rate** (Variable|float|int,可选) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的int类型。默认值为1.0。 - -返回:衰减的学习率 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - warmup_steps = 100 - learning_rate = 0.01 - lr = fluid.layers.learning_rate_scheduler.noam_decay( - 1/(warmup_steps *(learning_rate ** 2)), - warmup_steps, - learning_rate) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/learning_rate/piecewise_decay_cn.rst b/doc/paddle/api/paddle/nn/functional/learning_rate/piecewise_decay_cn.rst deleted file mode 100644 index ecb2cd6274244631a6390f22a3c09aded78fef1a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/learning_rate/piecewise_decay_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_piecewise_decay: - -piecewise_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.piecewise_decay(boundaries,values) - -:alias_main: paddle.nn.functional.piecewise_decay -:alias: paddle.nn.functional.piecewise_decay,paddle.nn.functional.learning_rate.piecewise_decay -:old_api: paddle.fluid.layers.piecewise_decay - - - -对初始学习率进行分段衰减。 - -该算法可用如下代码描述。 - -.. code-block:: text - - boundaries = [10000, 20000] - values = [1.0, 0.5, 0.1] - if step < 10000: - learning_rate = 1.0 - elif 10000 <= step < 20000: - learning_rate = 0.5 - else: - learning_rate = 0.1 - -参数: - - **boundaries(list)** - 代表步数的数字 - - **values(list)** - 学习率的值,不同的步边界中的学习率值 - -返回:衰减的学习率 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - boundaries = [10000, 20000] - values = [1.0, 0.5, 0.1] - optimizer = fluid.optimizer.Momentum( - momentum=0.9, - learning_rate=fluid.layers.piecewise_decay(boundaries=boundaries, values=values), - regularization=fluid.regularizer.L2Decay(1e-4)) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/learning_rate/polynomial_decay_cn.rst b/doc/paddle/api/paddle/nn/functional/learning_rate/polynomial_decay_cn.rst deleted file mode 100644 index e03443b0bd7d02177ef045393595f8d06dc4abf5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/learning_rate/polynomial_decay_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_fluid_layers_polynomial_decay: - -polynomial_decay -------------------------------- - -.. py:function:: paddle.fluid.layers.polynomial_decay(learning_rate,decay_steps,end_learning_rate=0.0001,power=1.0,cycle=False) - -:alias_main: paddle.nn.functional.polynomial_decay -:alias: paddle.nn.functional.polynomial_decay,paddle.nn.functional.learning_rate.polynomial_decay -:old_api: paddle.fluid.layers.polynomial_decay - - - -对初始学习率使用多项式衰减 - -.. code-block:: text - - if cycle: - decay_steps = decay_steps * ceil(global_step / decay_steps) - else: - global_step = min(global_step, decay_steps) - decayed_learning_rate = (learning_rate - end_learning_rate) * - (1 - global_step / decay_steps) ^ power + end_learning_rate - -参数: - - **learning_rate** (Variable|float) - 训练过程中的初始学习率,数据类型为float的常数或变量。 - - **decay_steps** (int) - 衰减步数 - - **end_learning_rate** (float) - 训练过程的最终学习率 - - **power** (float) - 多项式衰减系数 - - **cycle** (bool) - step 超出 decay_steps 后是否继续循环,默认为False - -返回:衰减的学习率 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - start_lr = 0.01 - total_step = 5000 - end_lr = 0 - lr = fluid.layers.polynomial_decay( - start_lr, total_step, end_lr, power=1) - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/lod/hash_cn.rst b/doc/paddle/api/paddle/nn/functional/lod/hash_cn.rst deleted file mode 100644 index a25828a10dc67b9697541d6e83234272ffbbb81a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/lod/hash_cn.rst +++ /dev/null @@ -1,58 +0,0 @@ -.. _cn_api_fluid_layers_hash: - -hash -------------------------------- - -.. py:function:: paddle.fluid.layers.hash(input, hash_size, num_hash=1, name=None) - -:alias_main: paddle.nn.functional.hash -:alias: paddle.nn.functional.hash,paddle.nn.functional.lod.hash -:old_api: paddle.fluid.layers.hash - - - -该OP将输入 hash 成为一个整数,该数的值小于给定的 ``hash_size`` 。**仅支持输入为LoDTensor**。 - -该OP使用的哈希算法是:xxHash - `Extremely fast hash algorithm `_ - - -参数: - - **input** (Variable) - 输入是一个 **二维** ``LoDTensor`` 。**输入维数必须为2**。数据类型为:int32、int64。**仅支持LoDTensor**。 - - **hash_size** (int) - 哈希算法的空间大小。输出值将保持在 :math:`[0, hash\_size)` 范围内。 - - **num_hash** (int) - 哈希次数。默认值为1。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:``LoDTensor`` - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - place = fluid.core.CPUPlace() - - # 构建网络 - x = fluid.data(name="x", shape=[2, 2], dtype="int32", lod_level=1) - res = fluid.layers.hash(name="res", input=x, hash_size=1000, num_hash=4) - - # 创建CPU执行器 - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - in1 = np.array([[1,2],[3,4]]).astype("int32") - print(in1) - x_i = fluid.create_lod_tensor(in1, [[0, 2]], place) - res = exe.run(fluid.default_main_program(), feed={'x':x_i}, fetch_list=[res], return_numpy=False) - print(np.array(res[0])) - # [[[722] - # [407] - # [337] - # [395]] - # [[603] - # [590] - # [386] - # [901]]] diff --git a/doc/paddle/api/paddle/nn/functional/logsigmoid_cn.rst b/doc/paddle/api/paddle/nn/functional/logsigmoid_cn.rst deleted file mode 100644 index 94ba6048566ebe86ee6de81466bef0b5dac0d8d8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/logsigmoid_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_logsigmoid: - -logsigmoid -------------------------------- - -.. py:function:: paddle.fluid.layers.logsigmoid(x, name=None) - -:alias_main: paddle.nn.functional.logsigmoid -:alias: paddle.nn.functional.logsigmoid,paddle.nn.functional.activation.logsigmoid -:old_api: paddle.fluid.layers.logsigmoid - - - -Logsigmoid激活函数 - - -.. math:: - - out = \log \frac{1}{1 + e^{-x}} - - -参数: - - **x** (Variable)- 张量(Tensor) - - **name** (str|None) - 该层名称(可选),若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.logsigmoid(data) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/bpr_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/bpr_loss_cn.rst deleted file mode 100644 index 06195e5198988de8eb5cbdaf2460ea20bc3482bb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/bpr_loss_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_bpr_loss: - -bpr_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.bpr_loss(input, label, name=None) - -:alias_main: paddle.nn.functional.bpr_loss -:alias: paddle.nn.functional.bpr_loss,paddle.nn.functional.loss.bpr_loss -:old_api: paddle.fluid.layers.bpr_loss - - - - -贝叶斯个性化排序损失函数(Bayesian Personalized Ranking Loss Operator ) - -该OP属于pairwise类型的损失函数。损失值由下式计算而得: - -.. math:: - - Y[i] = 1/(N[i] - 1) * \sum_j{\log(\sigma(X[i, Label[i]]-X[i, j]))} - -其中: - - :math:`X` :输入值,一个形为[T x D]的2-D Tensor, 此处为logit值。 - - :math:`N[i]` : 在时间步i的正例和负例的总和。 - - :math:`Label[i]` :在时间步i的正例下标。 - - :math:`\sigma` :激活函数。 - - :math:`Y` :输出值,一个形为[T x 1]的2-D Tensor。 - - -更多细节请参考 `Session Based Recommendations with Recurrent Neural Networks` - -参数: - - **input** (Variable) - 形为[T x D] , Tensor类型时T为batch大小,LoDTensor类型时T为mini-batch的总时间步。D 为正例加负例的个数。该输入为logits而非概率。数据类型是float32或float64。 - - **label** (Variable) - 形为[T x 1],表示input中正例的下标,数据类型为int64。。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 形为[T x 1]的2D张量,数据类型同input相同,表示bpr损失值。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - neg_size = 3 - # label=[0] - label = fluid.layers.data( - name="label", shape=[1], dtype="int64") - # predict = [0.1, 0.2, 0.3, 0.4] - predict = fluid.layers.data( - name="predict", shape=[neg_size + 1], dtype="float32") - # bpr_Loss : label [0] 表示predict中下标0表示正例,即为0.1, 负例有3个为0.2,0.3,0.4 - cost = fluid.layers.bpr_loss(input=predict, label=label) - diff --git a/doc/paddle/api/paddle/nn/functional/loss/center_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/center_loss_cn.rst deleted file mode 100644 index 82be3da0d52e96c7f9a3d97f1943691513ab4450..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/center_loss_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_center_loss: - -center_loss -------------------------------- - - -.. py:function:: paddle.fluid.layers.center_loss(input, label, num_classes, alpha, param_attr, update_center=True) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.functional.center_loss -:alias: paddle.nn.functional.center_loss,paddle.nn.functional.loss.center_loss -:old_api: paddle.fluid.layers.center_loss - - - -该OP接收一个来自于最后一个隐藏层的输出和目标标签作为输入,返回损失值。为每一个类别提供一个类别中心,计算mini-batch中每个样本与对应类别中心的距离的平均值作为center loss。 - -对于输入,\(X\)和标签\(Y\),计算公式为: - - .. math:: - - out = \frac{1}{2}(X - Y)^2 - - - -参数: - - - **input** (Variable) - 输入形状为[N x M]的2维张量,数据类型为float32,float64。 - - **label** (Variable) - 输入的标签,一个形状为为[N x 1]的2维张量,N表示batch size,数据类型为int32。 - - **num_class** (int32) - 输入类别的数量。 - - **alpha** (float32|float64|Variable) - 学习率。数据类型为float32或者float64。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **update_center** (bool) - 是否更新类别中心的参数。 - -返回:形状为[N x 1]的2维Tensor|LoDTensor。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - input = fluid.layers.data(name='x',shape=[20,30],dtype='float32') - label = fluid.layers.data(name='y',shape=[20,1],dtype='int64') - num_classes = 1000 - alpha = 0.01 - param_attr = fluid.initializer.Xavier(uniform=False) - center_loss=fluid.layers.center_loss(input=input, - label=label, - num_classes=1000, - alpha=alpha, - param_attr=fluid.initializer.Xavier(uniform=False), - update_center=True) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/cross_entropy_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/cross_entropy_cn.rst deleted file mode 100644 index be571e656a7ee8cdfbd68af0038fa31a0a7fafc5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/cross_entropy_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_cross_entropy: - -cross_entropy -------------------------------- - -.. py:function:: paddle.fluid.layers.cross_entropy(input, label, soft_label=False, ignore_index=-100) - -:alias_main: paddle.nn.functional.cross_entropy -:alias: paddle.nn.functional.cross_entropy,paddle.nn.functional.loss.cross_entropy -:old_api: paddle.fluid.layers.cross_entropy - - - -该OP计算输入input和标签label间的交叉熵,可用于计算硬标签或软标签的交叉熵。 - -1. 硬标签交叉熵算法:若soft_label = False, :math:`label[i_1, i_2, ..., i_k]` 表示每个样本的硬标签值: - - .. math:: - \\output[i_1, i_2, ..., i_k]=-log(input[i_1, i_2, ..., i_k, j]), label[i_1, i_2, ..., i_k] = j, j != ignore\_index\\ - -2. 软标签交叉熵算法:若soft_label = True, :math:`label[i_1, i_2, ..., i_k, j]` 表明每个样本对应类别j的软标签值: - - .. math:: - \\output[i_1, i_2, ..., i_k]= -\sum_{j}label[i_1,i_2,...,i_k,j]*log(input[i_1, i_2, ..., i_k,j])\\ - -参数: - - **input** (Variable) – 维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - - **label** (Variable) – 输入input对应的标签值。若soft_label=False,要求label维度为 :math:`[N_1, N_2, ..., N_k]` 或 :math:`[N_1, N_2, ..., N_k, 1]` ,数据类型为int64,且值必须大于等于0且小于D;若soft_label=True,要求label的维度、数据类型与input相同,且每个样本各软标签的总和为1。 - - **soft_label** (bool) – 指明label是否为软标签。默认为False,表示label为硬标签;若soft_label=True则表示软标签。 - - **ignore_index** (int) – 指定一个忽略的标签值,此标签值不参与计算,负值表示无需忽略任何标签值。仅在soft_label=False时有效。 默认值为-100。 - -返回: 表示交叉熵结果的Tensor,数据类型与input相同。若soft_label=False,则返回值维度与label维度相同;若soft_label=True,则返回值维度为 :math:`[N_1, N_2, ..., N_k, 1]` 。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - class_num = 7 - x = fluid.layers.data(name='x', shape=[3, 10], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - predict = fluid.layers.fc(input=x, size=class_num, act='softmax') - cost = fluid.layers.cross_entropy(input=predict, label=label) diff --git a/doc/paddle/api/paddle/nn/functional/loss/dice_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/dice_loss_cn.rst deleted file mode 100644 index af63877e359bf830d35985556e6e94e215adba75..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/dice_loss_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_dice_loss: - -dice_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.dice_loss(input, label, epsilon=1e-05) - -:alias_main: paddle.nn.functional.dice_loss -:alias: paddle.nn.functional.dice_loss,paddle.nn.functional.loss.dice_loss -:old_api: paddle.fluid.layers.dice_loss - - - -该OP用来比较预测结果跟标签之间的相似度,通常用于二值图像分割,即标签为二值,也可以做多标签的分割。 - -dice_loss定义为: - -.. math:: - dice\_loss &= 1- \frac{2 * intersection\_area}{total\_rea}\\ - &= \frac{(total\_area−intersection\_area)−intersection\_area}{total\_area}\\ - &= \frac{union\_area−intersection\_area}{total\_area} - -参数: - - **input** (Variable) - 分类的预测概率,秩大于等于2的多维Tensor,维度为 :math:`[N_1, N_2, ..., N_k, D]` 。第一个维度的大小是batch_size,最后一维的大小D是类别数目。数据类型是float32或者float64 - - **label** (Variable)- 正确的标注数据(groud truth),与输入 ``input`` 的秩相同的Tensor,维度为 :math:`[N_1, N_2, ..., N_k, 1]` 。第一个维度的大小是batch_size,最后一个维度的大小是1。数据类型为int32或者int64 - - **epsilon** (float,可选) - 将会加到分子和分母上的数,浮点型的数值。如果输入和标签都为空,则确保dice为1。默认值:0.00001 - -返回: 按上述公式计算出来的损失函数的结果所表示的Tensor,shape为[batch_size, 1],数据类型与 ``input`` 相同 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='data', shape = [3, 224, 224, 2], dtype='float32') - label = fluid.layers.data(name='label', shape=[3, 224, 224, 1], dtype='float32') - predictions = fluid.layers.softmax(x) - loss = fluid.layers.dice_loss(input=predictions, label=label) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/edit_distance_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/edit_distance_cn.rst deleted file mode 100644 index 5d35868e1336614c624f5565429537bb6698e146..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/edit_distance_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_edit_distance: - - -edit_distance -------------------------------- - -.. py:function:: paddle.fluid.layers.edit_distance(input,label,normalized=True,ignored_tokens=None, input_length=None, label_length=None) - -:alias_main: paddle.nn.functional.edit_distance -:alias: paddle.nn.functional.edit_distance,paddle.nn.functional.loss.edit_distance -:old_api: paddle.fluid.layers.edit_distance - - - -该OP计算一批给定字符串及其参照字符串间的编辑距离。编辑距离也称Levenshtein距离,通过计算从一个字符串变成另一个字符串所需的最少操作步骤来衡量两个字符串的相异度。这里的操作包括插入、删除和替换。 - -比如给定假设字符串A=“kitten”和参照字符串B=“sitting”,从A变换成B编辑距离为3,至少需要两次替换和一次插入: - -“kitten”->“sitten”->“sittn”->“sitting” - -输入为LoDTensor/Tensor,包含假设字符串(带有表示批尺寸的总数)和分离信息(具体为LoD信息或者 ``input_length`` )。并且批尺寸大小的参照字符串和输入LoDTensor的顺序保持一致。 - -输出包含批尺寸大小的结果,代表一对字符串中每个字符串的编辑距离。如果Attr(normalized)为真,编辑距离则处以参照字符串的长度。 - -参数: - - **input** (Variable) - 假设字符串的索引,rank为2的Tensor或LoDTensor,数据类型为int64。 - - **label** (Variable) - 参照字符串的索引,rank为2的Tensor或LoDTensor,数据类型为int64。 - - **normalized** (bool)-表示是否用参照字符串的长度进行归一化,默认值为True。 - - **ignored_tokens** (list)-计算编辑距离前需要移除的token,默认值为None。 - - **name** (None|str) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_name` ,默认值为None。 - -返回:包含有形为[batch_size,1]的编辑距离和形为[ ]的序列数元组。 - -返回类型:元组 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # 使用 LoDTensor - x_lod = fluid.layers.data(name='x_lod', shape=[1], dtype='int64', lod_level=1) - y_lod = fluid.layers.data(name='y_lod', shape=[1], dtype='int64', lod_level=1) - distance_lod, seq_num_lod = fluid.layers.edit_distance(input=x_lod, label=y_lod) - - # 使用 Tensor - x_seq_len = 5 - y_seq_len = 6 - x_pad = fluid.layers.data(name='x_pad', shape=[x_seq_len], dtype='int64') - y_pad = fluid.layers.data(name='y_pad', shape=[y_seq_len], dtype='int64') - x_len = fluid.layers.data(name='x_len', shape=[], dtype='int64') - y_len = fluid.layers.data(name='y_len', shape=[], dtype='int64') - distance_pad, seq_num_pad = fluid.layers.edit_distance( - input=x_pad, label=y_pad, input_length=x_len, label_length=y_len) diff --git a/doc/paddle/api/paddle/nn/functional/loss/huber_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/huber_loss_cn.rst deleted file mode 100644 index 753e38949351d8d6001d3e6df6799a8c27fa68bf..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/huber_loss_cn.rst +++ /dev/null @@ -1,58 +0,0 @@ -.. _cn_api_fluid_layers_huber_loss: - -huber_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.huber_loss(input, label, delta) - -:alias_main: paddle.nn.functional.huber_loss -:alias: paddle.nn.functional.huber_loss,paddle.nn.functional.loss.huber_loss -:old_api: paddle.fluid.layers.huber_loss - - - - -该OP计算输入(input)与标签(label)之间的Huber损失。Huber损失是常用的回归损失之一,相较于平方误差损失,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] 或[batch_size]的Tensor。数据类型为float32或float64。 - - **label** (Variable) - 输入的真实标签,维度为[batch_size, 1] 或[batch_size]的Tensor。数据类型为float32或float64。 - - **delta** (float) - Huber损失的阈值参数,用于控制Huber损失对线性误差或平方误差的侧重。数据类型为float32。 - -返回: 计算出的Huber损失,数据维度和数据类型与label相同的Tensor。 - -返回类型: Variable - - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - DATATYPE='float32' - input_data = np.array([[1.],[2.],[3.],[4.]]).astype(DATATYPE) - label_data = np.array([[3.],[3.],[4.],[4.]]).astype(DATATYPE) - - x = fluid.layers.data(name='input', shape=[1], dtype=DATATYPE) - y = fluid.layers.data(name='label', shape=[1], dtype=DATATYPE) - loss = fluid.layers.huber_loss(input=x, label=y, delta=1.0) - - place = fluid.CPUPlace() - #place = fluid.CUDAPlace(0) - exe = fluid.Executor(place) - HuberLoss, = exe.run(feed={'input':input_data ,'label':label_data}, fetch_list=[loss.name]) - print(HuberLoss) #[[1.5], [0.5], [0.5], [0. ]], dtype=float32 diff --git a/doc/paddle/api/paddle/nn/functional/loss/iou_similarity_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/iou_similarity_cn.rst deleted file mode 100644 index befe69f841dcf40fdf4a70e34a91d59673af978d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/iou_similarity_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_iou_similarity: - -iou_similarity -------------------------------- - -.. py:function:: paddle.fluid.layers.iou_similarity(x, y, box_normalized=True, name=None) - -:alias_main: paddle.nn.functional.iou_similarity -:alias: paddle.nn.functional.iou_similarity,paddle.nn.functional.loss.iou_similarity -:old_api: paddle.fluid.layers.iou_similarity - - - -**IOU Similarity Operator** - -计算两个框列表的intersection-over-union(IOU)。框列表 :math:`X` 应为LoDTensor, :math:`Y` 是普通张量, :math:`X` 成批输入的所有实例共享 :math:`Y` 中的框。给定框A和框B,IOU的运算如下: - -.. math:: - IOU(A, B) = \frac{area(A\cap B)}{area(A)+area(B)-area(A\cap B)} - -参数: - - **x** (Variable) - 框列表 :math:`X` 是二维LoDTensor,维度为 :math:`[N,4]` ,存有 :math:`N` 个框,每个框表示为 :math:`[xmin, ymin, xmax, ymax]` ,:math:`X` 的维度为 :math:`[N,4]` 。如果输入是图像特征图,:math:`[xmin, ymin]` 表示框的左上角坐标,接近坐标轴的原点。:math:`[xmax, ymax]` 表示框的右下角坐标。该张量包含批次输入的LoD信息。该批次输入的一个实例能容纳不同的项数。数据类型为float32或float64。 - - **y** (Variable) - 框列表 :math:`Y` 是二维张量,存有 :math:`M` 个框,每个框表示为 :math:`[xmin, ymin, xmax, ymax]` ,:math:`Y` 的维度为 :math:`[M,4]`。如果输入是图像特征图,:math:`[xmin, ymin]` 表示框的左上角坐标,接近坐标轴的原点。:math:`[xmax, ymax]` 表示框的右下角坐标。数据类型为float32或float64。 - - **box_normalized** (bool) - 先验框坐标是否正则化,即是否在[0, 1]区间内。默认值为true - -返回:维度为 :math:`[N,M]` 的LoDTensor,代表每一对iou分数,数据类型与 :math:`X` 相同 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.layers.data(name='x', shape=[4], dtype='float32') - y = fluid.layers.data(name='y', shape=[4], dtype='float32') - iou = fluid.layers.iou_similarity(x=x, y=y) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/kldiv_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/kldiv_loss_cn.rst deleted file mode 100644 index 8fc92afbd9748fe5499eb8e8aa0e9add97d24d8b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/kldiv_loss_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_layers_kldiv_loss: - -kldiv_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.kldiv_loss(x, target, reduction='mean', name=None) - -:alias_main: paddle.nn.functional.kldiv_loss -:alias: paddle.nn.functional.kldiv_loss,paddle.nn.functional.loss.kldiv_loss -:old_api: paddle.fluid.layers.kldiv_loss - - - -该OP计算输入(X)和输入(Target)之间的Kullback-Leibler散度损失。注意其中输入(X)应为对数概率值,输入(Target)应为概率值。 - -kL发散损失计算如下: - -.. math:: - - l(x, y) = y * (log(y) - x) - -:math:`x` 为输入(X),:math:`y` 输入(Target)。 - -当 ``reduction`` 为 ``none`` 时,输出损失与输入(x)形状相同,各点的损失单独计算,不会对结果做reduction 。 - -当 ``reduction`` 为 ``mean`` 时,输出损失为[1]的形状,输出为所有损失的平均值。 - -当 ``reduction`` 为 ``sum`` 时,输出损失为[1]的形状,输出为所有损失的总和。 - -当 ``reduction`` 为 ``batchmean`` 时,输出损失为[N]的形状,N为批大小,输出为所有损失的总和除以批量大小。 - -参数: - - **x** (Variable) - KL散度损失算子的输入张量。维度为[N, \*]的多维Tensor,其中N是批大小,\*表示任何数量的附加维度,数据类型为float32或float64。 - - **target** (Variable) - KL散度损失算子的张量。与输入 ``x`` 的维度和数据类型一致的多维Tensor。 - - **reduction** (Variable)-要应用于输出的reduction类型,可用类型为‘none’ | ‘batchmean’ | ‘mean’ | ‘sum’,‘none’表示无reduction,‘batchmean’ 表示输出的总和除以批大小,‘mean’ 表示所有输出的平均值,‘sum’表示输出的总和。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:Variable(Tensor) KL散度损失。 - -返回类型:变量(Variable),数据类型与输入 ``x`` 一致。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - # 'batchmean' reduction, loss shape 为[N] - x = fluid.data(name='x', shape=[None,4,2,2], dtype='float32') # shape=[-1, 4, 2, 2] - target = fluid.layers.data(name='target', shape=[4,2,2], dtype='float32') - loss = fluid.layers.kldiv_loss(x=x, target=target, reduction='batchmean') # shape=[-1] - - # 'mean' reduction, loss shape 为[1] - x = fluid.data(name='x', shape=[None,4,2,2], dtype='float32') # shape=[-1, 4, 2, 2] - target = fluid.layers.data(name='target', shape=[4,2,2], dtype='float32') - loss = fluid.layers.kldiv_loss(x=x, target=target, reduction='mean') # shape=[1] - - # 'sum' reduction, loss shape 为[1] - x = fluid.data(name='x', shape=[None,4,2,2], dtype='float32') # shape=[-1, 4, 2, 2] - target = fluid.layers.data(name='target', shape=[4,2,2], dtype='float32') - loss = fluid.layers.kldiv_loss(x=x, target=target, reduction='sum') # shape=[1] - - # 'none' reduction, loss shape 与X相同 - x = fluid.data(name='x', shape=[None,4,2,2], dtype='float32') # shape=[-1, 4, 2, 2] - target = fluid.layers.data(name='target', shape=[4,2,2], dtype='float32') - loss = fluid.layers.kldiv_loss(x=x, target=target, reduction='none') # shape=[-1, 4, 2, 2] - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/log_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/log_loss_cn.rst deleted file mode 100644 index aea52ab5f87ec3c61174a6516f10a650037007e5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/log_loss_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_log_loss: - -log_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.log_loss(input, label, epsilon=0.0001, name=None) - -:alias_main: paddle.nn.functional.log_loss -:alias: paddle.nn.functional.log_loss,paddle.nn.functional.loss.log_loss -:old_api: paddle.fluid.layers.log_loss - - - -**负log loss层** - -该 OP 对输入的预测结果和目标标签进行计算,返回负对数损失值。 - -.. math:: - - Out = -label * \log{(input + \epsilon)} - (1 - label) * \log{(1 - input + \epsilon)} - - -参数: - - **input** (Variable) – 形为 [N x 1] 的二维张量, 其中 N 为 batch 大小。该输入是由前驱算子计算得来的概率, 数据类型是 float32。 - - **label** (Variable) – 形为 [N x 1] 的二维张量,真值标签, 其中 N 为 batch 大小,数据类型是 float32。 - - **epsilon** (float) – epsilon - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 形为[N x 1]的二维张量,计算出的负log_loss值,数据类型为 float32 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - label = fluid.data(name='label', shape=[None, 1], dtype='float32') - prob = fluid.data(name='prob', shape=[None, 1], dtype='float32') - cost = fluid.layers.log_loss(input=prob, label=label) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/margin_rank_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/margin_rank_loss_cn.rst deleted file mode 100644 index 0412f85fc6f91c9534d485ab7ac7584d74e80251..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/margin_rank_loss_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_margin_rank_loss: - -margin_rank_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.margin_rank_loss(label, left, right, margin=0.1, name=None) - -:alias_main: paddle.nn.functional.margin_rank_loss -:alias: paddle.nn.functional.margin_rank_loss,paddle.nn.functional.loss.margin_rank_loss -:old_api: paddle.fluid.layers.margin_rank_loss - - - -margin rank loss(间隔排序损失)层。在排序问题中,它可以比较来自排序网络的输入 ``left`` 和输入 ``right`` 的得分。 - -可用如下等式定义: - -.. math:: - rank\_loss = max(0, -label * (left - right) + margin) - - -参数: - - **label** (Variable) – 表示输入 ``left`` 的真实排序是否高于输入 ``right`` , 数据类型为 float32。 - - **left** (Variable) – 输入 ``left`` 的排序得分, 数据类型为 float32 。 - - **right** (Variable) – 输入 ``right`` 的排序得分, 数据类型为 float32。 - - **margin** (float) – 指定的间隔。 - - **name** (str,可选) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 排序损失 - -返回类型: Variable - -抛出异常: - - ``ValueError`` - ``label`` , ``left`` , ``right`` 有一者不为Variable类型时,抛出此异常 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - label = fluid.layers.data(name="label", shape=[-1, 1], dtype="float32") - left = fluid.layers.data(name="left", shape=[-1, 1], dtype="float32") - right = fluid.layers.data(name="right", shape=[-1, 1], dtype="float32") - out = fluid.layers.margin_rank_loss(label, left, right) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/mse_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/mse_loss_cn.rst deleted file mode 100644 index 59678570f9e91da8e2ad46212955ea0802f8a462..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/mse_loss_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_fluid_layers_mse_loss: - -mse_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.mse_loss(input,label) - -:alias_main: paddle.nn.functional.mse_loss -:alias: paddle.nn.functional.mse_loss,paddle.nn.functional.loss.mse_loss -:old_api: paddle.fluid.layers.mse_loss - - - -该OP用于计算预测值和目标值的均方差误差。 - -对于预测值input和目标值label,公式为: - -.. math:: - - Out = MEAN((input-label)^{2}) - -参数: - - **input** (Variable) - 预测值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - - **label** (Variable) - 目标值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - -返回:预测值和目标值的均方差 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - y = fluid.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.data(name='y_predict', shape=[1], dtype='float32') - cost = fluid.layers.mse_loss(input=y_predict, label=y) - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/npair_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/npair_loss_cn.rst deleted file mode 100644 index 2b6c681656b6c7d452fcdf1999d52dd2c2cdcad1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/npair_loss_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_npair_loss: - -npair_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.npair_loss(anchor, positive, labels, l2_reg=0.002) - -:alias_main: paddle.nn.functional.npair_loss -:alias: paddle.nn.functional.npair_loss,paddle.nn.functional.loss.npair_loss -:old_api: paddle.fluid.layers.npair_loss - - - -**Npair Loss Layer** - -参考阅读 `Improved Deep Metric Learning with Multi class N pair Loss Objective `_ - -NPair损失需要成对的数据。NPair损失分为两部分:第一部分是对嵌入向量进行L2正则化;第二部分是每一对数据的相似性矩阵的每一行和映射到ont-hot之后的标签的交叉熵损失的和。 - -参数: - - **anchor** (Variable) - 锚点图像的嵌入Tensor,形状为[batch_size, embedding_dims]的2-D Tensor。数据类型:float32和float64。 - - **positive** (Variable) - 正例图像的嵌入Tensor,形状为[batch_size, embedding_dims]的2-D Tensor。数据类型:float32和float64。 - - **labels** (Variable) - 标签向量,形状为[batch_size]的1-DTensor。数据类型:float32、float64和int64。 - - **l2_reg** (float) - 嵌入向量的L2正则化系数,默认:0.002。 - -返回: Tensor。经过npair loss计算之后的结果,是一个值。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - anchor = fluid.layers.data( - name = 'anchor', shape = [18, 6], dtype = 'float32', append_batch_size=False) - positive = fluid.layers.data( - name = 'positive', shape = [18, 6], dtype = 'float32', append_batch_size=False) - labels = fluid.layers.data( - name = 'labels', shape = [18], dtype = 'float32', append_batch_size=False) - - res = fluid.layers.npair_loss(anchor, positive, labels, l2_reg = 0.002) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - a = np.random.rand(18, 6).astype("float32") - p = np.random.rand(18, 6).astype("float32") - l = np.random.rand(18).astype("float32") - output = exe.run(feed={"anchor": a, "positive": p, "labels": l}, fetch_list=[res]) - print(output) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/rank_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/rank_loss_cn.rst deleted file mode 100644 index 3f6f5b2a83df84fa477006499891176be909b1bf..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/rank_loss_cn.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. _cn_api_fluid_layers_rank_loss: - -rank_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.rank_loss(label, left, right, name=None) - -:alias_main: paddle.nn.functional.rank_loss -:alias: paddle.nn.functional.rank_loss,paddle.nn.functional.loss.rank_loss -:old_api: paddle.fluid.layers.rank_loss - - - -该OP实现了RankNet模型中的排序损失层。RankNet是一种文档对(pairwise)排序模型,训练样本由一对文档(假设用A、B来表示)组成。标签(假设用P来表示)表示A的排名是否高于B。更多详情请参考:`RankNet `_ - -排序损失层有三个输入: :math:`o_i` 、 :math:`o_j` 和 :math:`\tilde{P_{ij}}` ,输入分别表示RankNet模型对文档A、B的输出得分和标签P的值;排序损失层的输入是批输入数据(批大小大于等于1);标签P的取值可以为: {0, 1} 或 {0, 0.5, 1} ,其中,0.5表示输入文档对排序相同。输入数据的排序损失 :math:`C_{i,j}` 计算过程如下: - -.. math:: - - C_{i,j} &= -\tilde{P_{ij}} * o_{i,j} + \log(1 + e^{o_{i,j}}) - - o_{i,j} &= o_i - o_j - - \tilde{P_{i,j}} &= \left \{0, 0.5, 1 \right \} \ or \ \left \{0, 1 \right \} - -参数: - - **label** (Variable):维度为 :math:`[batch,1]` 的2-D ``Tensor`` ,数据类型为float32。其中batch表示批数据的大小。表示A的排名是否高于B。 - - **left** (Variable):维度为 :math:`[batch,1]` 的2-D ``Tensor`` ,数据类型为float32。其中batch表示批数据的大小。表示RankNet对文档A的输出得分。 - - **right** (Variable):维度为 :math:`[batch,1]` 的2-D ``Tensor`` ,数据类型为float32。其中batch表示批数据的大小。表示RankNet对文档B的输出得分。 - - **name** (str, 可选):具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:表示排序损失层输出值的 ``Tensor`` ,数据类型为float32,返回值维度为 :math:`[batch,1]` 。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` - 输入 ``label`` , ``left`` ,和 ``right`` 至少有一个不是 ``Variable`` 类型。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - label = fluid.layers.data(name="label", shape=[-1, 1], dtype="float32") - left = fluid.layers.data(name="left", shape=[-1, 1], dtype="float32") - right = fluid.layers.data(name="right", shape=[-1, 1], dtype="float32") - out = fluid.layers.rank_loss(label, left, right) - diff --git a/doc/paddle/api/paddle/nn/functional/loss/sampled_softmax_with_cross_entropy_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/sampled_softmax_with_cross_entropy_cn.rst deleted file mode 100644 index 82ca1725079152ea0b411e64ccde808984d8a5a9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/sampled_softmax_with_cross_entropy_cn.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _cn_api_fluid_layers_sampled_softmax_with_cross_entropy: - -sampled_softmax_with_cross_entropy ----------------------------------------------- - -.. py:function:: paddle.fluid.layers.sampled_softmax_with_cross_entropy(logits, label, num_samples, num_true=1, remove_accidental_hits=True, use_customized_samples=False, customized_samples=None, customized_probabilities=None, seed=0) - -:alias_main: paddle.nn.functional.sampled_softmax_with_cross_entropy -:alias: paddle.nn.functional.sampled_softmax_with_cross_entropy,paddle.nn.functional.loss.sampled_softmax_with_cross_entropy -:old_api: paddle.fluid.layers.sampled_softmax_with_cross_entropy - - - -**Sampled Softmax With Cross Entropy Operator** - -对于较大的输出类,采样的交叉熵损失Softmax被广泛地用作输出层。该运算符为所有示例采样若干个样本,并计算每行采样张量的SoftMax标准化值,然后计算交叉熵损失。 - -由于此运算符在内部对逻辑执行SoftMax,因此它需要未分级的逻辑。此运算符不应与SoftMax运算符的输出一起使用,因为这样会产生不正确的结果。 - -对于T真标签(T>=1)的示例,我们假设每个真标签的概率为1/T。对于每个样本,使用对数均匀分布生成S个样本。真正的标签与这些样本连接起来,形成每个示例的T+S样本。因此,假设逻辑的形状是[N x K],样本的形状是[N x(T+S)]。对于每个取样标签,计算出一个概率,对应于[Jean et al., 2014]( `http://arxiv.org/abs/1412.2007 `_ )中的Q(y|x)。 - -根据采样标签对逻辑进行采样。如果remove_accidental_hits为“真”,如果sample[i, j] 意外匹配“真”标签,则相应的sampled_logits[i, j]减去1e20,使其SoftMax结果接近零。然后用logQ(y|x)减去采样的逻辑,这些采样的逻辑和重新索引的标签被用来计算具有交叉熵的SoftMax。 - -参数: - - **logits** (Variable)- 非比例对数概率,是一个二维张量,形状为[N x K]。N是批大小,K是类别号。 - - **label** (Variable)- 基本事实,是一个二维张量。label是一个张量,其形状为[N x T],其中T是每个示例的真实标签数。 - - **num_samples** (int)- 每个示例的数目num_samples应该小于类的数目。 - - **num_true** (int)- 每个训练实例的目标类别总数。 - - **remove_accidental_hits** (bool)- 指示采样时是否删除意外命中的标签。如果为真,如果一个sample[i,j]意外地碰到了真标签,那么相应的sampled_logits[i,j]将被减去1e20,使其SoftMax结果接近零。默认值为True。 - - **use_customized_samples** (bool)- 是否使用自定义样本和可能性对logits进行抽样。 - - **customized_samples** (Variable)- 用户定义的示例,它是一个具有形状[N, T + S]的二维张量。S是num_samples,T是每个示例的真标签数。 - - **customized_probabilities** (Variable)- 用户定义的样本概率,与customized_samples形状相同的二维张量。 - - **seed** (int)- 用于生成随机数的随机种子,在采样过程中使用。默认值为0。 - -返回:交叉熵损失,是一个二维张量,形状为[N x 1]。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - input = fluid.layers.data(name='data', shape=[256], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - fc = fluid.layers.fc(input=input, size=100) - out = fluid.layers.sampled_softmax_with_cross_entropy( - logits=fc, label=label, num_samples=25) - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/sigmoid_cross_entropy_with_logits_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/sigmoid_cross_entropy_with_logits_cn.rst deleted file mode 100644 index 18506b0f583475bad23de7f9b3c1e805ca9ada16..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/sigmoid_cross_entropy_with_logits_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_layers_sigmoid_cross_entropy_with_logits: - -sigmoid_cross_entropy_with_logits -------------------------------- - -.. py:function:: paddle.fluid.layers.sigmoid_cross_entropy_with_logits(x, label, ignore_index=-100, name=None, normalize=False) - -:alias_main: paddle.nn.functional.sigmoid_cross_entropy_with_logits -:alias: paddle.nn.functional.sigmoid_cross_entropy_with_logits,paddle.nn.functional.loss.sigmoid_cross_entropy_with_logits -:old_api: paddle.fluid.layers.sigmoid_cross_entropy_with_logits - - - -在每个类别独立的分类任务中,该OP可以计算按元素的概率误差。可以将其视为预测数据点的标签,其中标签不是互斥的。例如,一篇新闻文章可以同时关于政治,科技,体育或者同时不包含这些内容。 - -logistic loss可通过下式计算: - -.. math:: - loss = -Labels * log(sigma(X)) - (1 - Labels) * log(1 - sigma(X)) - -已知: - -.. math:: - sigma(X) = \frac{1}{1 + exp(-X)} - -代入上方计算logistic loss公式中: - -.. math:: - loss = X - X * Labels + log(1 + exp(-X)) - -为了计算稳定性,防止 :math:`exp(-X)` 溢出,当 :math:`X<0` 时,loss将采用以下公式计算: - -.. math:: - loss = max(X, 0) - X * Labels + log(1 + exp(-|X|)) - -输入 ``X`` 和 ``label`` 都可以携带LoD信息。然而输出仅采用输入 ``X`` 的LoD。 - - - -参数: - - **x** (Variable) - (Tensor, 默认 Tensor),形为 N x D 的二维张量,N为batch大小,D为类别数目。该输入是一个由先前运算得出的logit组成的张量。logit是未标准化(unscaled)的log概率, 公式为 :math:`log(\frac{p}{1-p})`, 数据类型为float32或float64。 - - **label** (Variable) - (Tensor, 默认 Tensor) 具有和 ``X`` 相同数据类型,相同形状的二维张量。该输入张量代表了每个logit的可能标签。 - - **ignore_index** (int) - (int,默认kIgnoreIndex)指定被忽略的目标值,它不会影响输入梯度。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **normalize** (bool) - 如果为true,则将输出除以除去ignore_index对应目标外的目标数,默认为False。 - -返回: Variable(Tensor, 默认Tensor), 形为 N x D 的二维张量,其值代表了按元素的logistic loss,数据类型为float32或float64。 - -返回类型:变量(Variable) - - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data( - name='data', shape=[10], dtype='float32') - label = fluid.layers.data( - name='data', shape=[10], dtype='float32') - loss = fluid.layers.sigmoid_cross_entropy_with_logits( - x=input, - label=label, - ignore_index=-1, - normalize=True) # or False - # loss = fluid.layers.reduce_sum(loss) # loss之和 - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/sigmoid_focal_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/sigmoid_focal_loss_cn.rst deleted file mode 100644 index 2f47561a89a4560e0c39553205b4d7fa68c7a841..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/sigmoid_focal_loss_cn.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. _cn_api_fluid_layers_sigmoid_focal_loss: - -sigmoid_focal_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.sigmoid_focal_loss(x, label, fg_num, gamma=2.0, alpha=0.25) - -:alias_main: paddle.nn.functional.sigmoid_focal_loss -:alias: paddle.nn.functional.sigmoid_focal_loss,paddle.nn.functional.loss.sigmoid_focal_loss -:old_api: paddle.fluid.layers.sigmoid_focal_loss - - - -`Focal Loss `_ 被提出用于解决计算机视觉任务中前景-背景不平衡的问题。该OP先计算输入x中每个元素的sigmoid值,然后计算sigmoid值与类别目标值label之间的Focal Loss。 - -Focal Loss的计算过程如下: - -.. math:: - - \mathop{loss_{i,\,j}}\limits_{i\in\mathbb{[0,\,N-1]},\,j\in\mathbb{[0,\,C-1]}}=\left\{ - \begin{array}{rcl} - - \frac{1}{fg\_num} * \alpha * {(1 - \sigma(x_{i,\,j}))}^{\gamma} * \log(\sigma(x_{i,\,j})) & & {(j +1) = label_{i,\,0}}\\ - - \frac{1}{fg\_num} * (1 - \alpha) * {\sigma(x_{i,\,j})}^{ \gamma} * \log(1 - \sigma(x_{i,\,j})) & & {(j +1)!= label_{i,\,0}} - \end{array} \right. - -其中,已知: - -.. math:: - - \sigma(x_{i,\,j}) = \frac{1}{1 + \exp(-x_{i,\,j})} - - -参数: - - **x** (Variable) – 维度为 :math:`[N, C]` 的2-D Tensor,表示全部样本的分类预测值。其中,第一维N是批量内参与训练的样本数量,例如在目标检测中,样本为框级别,N为批量内所有图像的正负样本的数量总和;在图像分类中,样本为图像级别,N为批量内的图像数量总和。第二维:math:`C` 是类别数量( **不包括背景类** )。数据类型为float32或float64。 - - **label** (Variable) – 维度为 :math:`[N, 1]` 的2-D Tensor,表示全部样本的分类目标值。其中,第一维N是批量内参与训练的样本数量,第二维1表示每个样本只有一个类别目标值。正样本的目标类别值的取值范围是 :math:`[1, C]` , 负样本的目标类别值是0。数据类型为int32。 - - **fg_num** (Variable) – 维度为 :math:`[1]` 的1-D Tensor,表示批量内正样本的数量,需在进入此OP前获取正样本的数量。数据类型为int32。 - - **gamma** (int|float) – 用于平衡易分样本和难分样本的超参数, 默认值设置为2.0。 - - **alpha** (int|float) – 用于平衡正样本和负样本的超参数,默认值设置为0.25。 - - -返回: 输入x中每个元素的Focal loss,即维度为 :math:`[N, C]` 的2-D Tensor。 - -返回类型: 变量(Variable),数据类型为float32或float64。 - -**代码示例** - -.. code-block:: python - - - import numpy as np - import paddle.fluid as fluid - - num_classes = 10 # exclude background - image_width = 16 - image_height = 16 - batch_size = 32 - max_iter = 20 - - - def gen_train_data(): - x_data = np.random.uniform(0, 255, (batch_size, 3, image_height, - image_width)).astype('float64') - label_data = np.random.randint(0, num_classes, - (batch_size, 1)).astype('int32') - return {"x": x_data, "label": label_data} - - - def get_focal_loss(pred, label, fg_num, num_classes): - pred = fluid.layers.reshape(pred, [-1, num_classes]) - label = fluid.layers.reshape(label, [-1, 1]) - label.stop_gradient = True - loss = fluid.layers.sigmoid_focal_loss( - pred, label, fg_num, gamma=2.0, alpha=0.25) - loss = fluid.layers.reduce_sum(loss) - return loss - - - def build_model(mode='train'): - x = fluid.data(name="x", shape=[-1, 3, -1, -1], dtype='float64') - output = fluid.layers.pool2d(input=x, pool_type='avg', global_pooling=True) - output = fluid.layers.fc( - input=output, - size=num_classes, - # Notice: size is set to be the number of target classes (excluding backgorund) - # because sigmoid activation will be done in the sigmoid_focal_loss op. - act=None) - if mode == 'train': - label = fluid.data(name="label", shape=[-1, 1], dtype='int32') - # Obtain the fg_num needed by the sigmoid_focal_loss op: - # 0 in label represents background, >=1 in label represents foreground, - # find the elements in label which are greater or equal than 1, then - # computed the numbers of these elements. - data = fluid.layers.fill_constant(shape=[1], value=1, dtype='int32') - fg_label = fluid.layers.greater_equal(label, data) - fg_label = fluid.layers.cast(fg_label, dtype='int32') - fg_num = fluid.layers.reduce_sum(fg_label) - fg_num.stop_gradient = True - avg_loss = get_focal_loss(output, label, fg_num, num_classes) - return avg_loss - else: - # During evaluating or testing phase, - # output of the final fc layer should be connected to a sigmoid layer. - pred = fluid.layers.sigmoid(output) - return pred - - - loss = build_model('train') - moment_optimizer = fluid.optimizer.MomentumOptimizer( - learning_rate=0.001, momentum=0.9) - moment_optimizer.minimize(loss) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - for i in range(max_iter): - outs = exe.run(feed=gen_train_data(), fetch_list=[loss.name]) - print(outs) diff --git a/doc/paddle/api/paddle/nn/functional/loss/smooth_l1_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/smooth_l1_cn.rst deleted file mode 100755 index 8b19838d11e7bc0687873b8a880c0d407328cbdd..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/smooth_l1_cn.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. _cn_api_fluid_layers_smooth_l1: - -smooth_l1 -------------------------------- - -.. py:function:: paddle.fluid.layers.smooth_l1(x, y, inside_weight=None, outside_weight=None, sigma=None) - -:alias_main: paddle.nn.functional.smooth_l1 -:alias: paddle.nn.functional.smooth_l1,paddle.nn.functional.loss.smooth_l1 -:old_api: paddle.fluid.layers.smooth_l1 - - - -该layer计算变量 ``x`` 和 ``y`` 的smooth L1 loss,它以 ``x`` 和 ``y`` 的第一维大小作为批处理大小。对于每个实例,按元素计算smooth L1 loss,然后计算所有loss。输出变量的形状是[batch_size, 1] - - -参数: - - **x** (Tensor|LoDTensor) - 数据类型为float32,rank至少为2的张量。smooth L1损失函数的输入,shape为[batch_size, dim1,…,dimN]。 - - **y** (Tensor|LoDTensor) - 数据类型为float32,rank至少为2的张量。与 ``x`` shape相同的目标值。 - - **inside_weight** (Tensor|None) - 数据类型为float32,rank至少为2的张量。这个输入是可选的,与x的shape应该相同。如果给定, ``(x - y)`` 的结果将乘以这个张量元素。 - - **outside_weight** (Tensor|None) - 数据类型为float32,一个rank至少为2的张量。这个输入是可选的,它的shape应该与 ``x`` 相同。 smooth L1 loss的输出会乘以这个张量。 - - **sigma** (float|NoneType) - smooth L1 loss layer的超参数。标量,默认值为1.0。 - -返回: smooth L1损失的输出值, shape为 [batch_size, 1] - -返回类型:Variable(Tensor),数据类型为float32的Tensor。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.data(name="x", shape=[-1, 3], dtype="float32") - label = fluid.layers.data(name="y", shape=[-1, 3], dtype="float32") - result = fluid.layers.smooth_l1(data,label) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(3,3).astype("float32") - y = np.random.rand(3,3).astype("float32") - output= exe.run(feed={"x":x, "y":y}, - fetch_list=[result]) - print(output) - """ - output: - [array([[0.08220536], - [0.36652038], - [0.20541131]], dtype=float32)] - """ - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/softmax_with_cross_entropy_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/softmax_with_cross_entropy_cn.rst deleted file mode 100644 index 9b3539fac66fb03c84eead625c1096dce81af80c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/softmax_with_cross_entropy_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_softmax_with_cross_entropy: - -softmax_with_cross_entropy -------------------------------- - -.. py:function:: paddle.fluid.layers.softmax_with_cross_entropy(logits, label, soft_label=False, ignore_index=-100, numeric_stable_mode=True, return_softmax=False, axis=-1) - -:alias_main: paddle.nn.functional.softmax_with_cross_entropy -:alias: paddle.nn.functional.softmax_with_cross_entropy,paddle.nn.functional.loss.softmax_with_cross_entropy -:old_api: paddle.fluid.layers.softmax_with_cross_entropy - - - -该OP实现了softmax交叉熵损失函数。该函数会将softmax操作、交叉熵损失函数的计算过程进行合并,从而提供了数值上更稳定的梯度值。 - -因为该运算对 ``logits`` 的 ``axis`` 维执行softmax运算,所以它需要未缩放的 ``logits`` 。该运算不应该对softmax运算的输出进行操作,否则会产生错误的结果。 - -当 ``soft_label`` 为 ``False`` 时, ``label`` 除了 ``axis`` 维度上的形状为1,其余维度和 ``logits`` 一致,表示一批数据中的每一个样本仅可分类到一个类别。 - -涉及到的等式如下: - -1. 硬标签(每个样本仅可分到一个类别) - -.. math:: - loss_j = -\text{logits}_{label_j} +\log\left(\sum_{i=0}^{K}\exp(\text{logits}_i)\right), j = 1,..., K - -2. 软标签(每个样本以一定的概率被分配至多个类别中,概率和为1) - -.. math:: - loss_j = -\sum_{i=0}^{K}\text{label}_i\left(\text{logits}_i - \log\left(\sum_{i=0}^{K}\exp(\text{logits}_i)\right)\right), j = 1,...,K - -3. 如果 ``numeric_stable_mode`` 为 ``True`` ,softmax结果首先经由下式计算得出,然后使用softmax结果和 ``label`` 计算交叉熵损失。 - -.. math:: - max_j &= \max_{i=0}^{K}{\text{logits}_i} \\ - log\_max\_sum_j &= \log\sum_{i=0}^{K}\exp(logits_i - max_j)\\ - softmax_j &= \exp(logits_j - max_j - {log\_max\_sum}_j) - -参数: - - **logits** (Variable) - 维度为任意维的多维 ``Tensor`` ,数据类型为float32或float64。表示未缩放的输入。 - - **label** (Variable) - 如果 ``soft_label`` 为True, ``label`` 是一个和 ``logits`` 维度相同的的 ``Tensor`` 。如果 ``soft_label`` 为False, ``label`` 是一个在axis维度上大小为1,其它维度上与 ``logits`` 维度相同的 ``Tensor`` 。 - - **soft_label** (bool, 可选) - 指明是否将输入标签当作软标签。默认值:False。 - - **ignore_index** (int, 可选) - 指明要无视的目标值,使其不对输入梯度有贡献。仅在 ``soft_label`` 为False时有效,默认值:kIgnoreIndex(-100)。 - - **numeric_stable_mode** (bool, 可选) – 指明是否使用一个具有更佳数学稳定性的算法。仅在 ``soft_label`` 为 False的GPU模式下生效。若 ``soft_label`` 为 True或者执行设备为CPU,算法一直具有数学稳定性。注意使用稳定算法时速度可能会变慢。默认值:True。 - - **return_softmax** (bool, 可选) – 指明是否在返回交叉熵计算结果的同时返回softmax结果。默认值:False。 - - **axis** (int, 可选) – 执行softmax计算的维度索引。其范围为 :math:`[-1,rank-1]` ,其中 ``rank`` 是输入 ``logits`` 的秩。默认值:-1。 - -返回: - - 如果 ``return_softmax`` 为 False,则返回交叉熵损失结果的 ``Tensor`` ,数据类型和 ``logits`` 一致,除了 ``axis`` 维度上的形状为1,其余维度和 ``logits`` 一致。 - - 如果 ``return_softmax`` 为 True,则返回交叉熵损失结果的 ``Tensor`` 和softmax结果的 ``Tensor`` 组成的元组。其中交叉熵损失结果的数据类型和 ``logits`` 一致,除了 ``axis`` 维度上的形状为1,其余维度上交叉熵损失结果和 ``logits`` 一致;softmax结果的数据类型和 ``logits`` 一致,维度和 ``logits`` 一致。 - -返回类型:变量或者两个变量组成的元组 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name='data', shape=[128], dtype='float32') - label = fluid.layers.data(name='label', shape=[1], dtype='int64') - fc = fluid.layers.fc(input=data, size=100) - out = fluid.layers.softmax_with_cross_entropy(logits=fc, label=label) - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/square_error_cost_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/square_error_cost_cn.rst deleted file mode 100644 index 8fbec73a269091f9d671e11d1f182a98140272ed..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/square_error_cost_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_fluid_layers_square_error_cost: - -square_error_cost -------------------------------- - -.. py:function:: paddle.fluid.layers.square_error_cost(input,label) - -:alias_main: paddle.nn.functional.square_error_cost -:alias: paddle.nn.functional.square_error_cost,paddle.nn.functional.loss.square_error_cost -:old_api: paddle.fluid.layers.square_error_cost - - - -该OP用于计算预测值和目标值的方差估计。 - -对于预测值input和目标值label,公式为: - -.. math:: - - Out = (input-label)^{2} - -参数: - - **input** (Variable) - 预测值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - - **label** (Variable) - 目标值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - -返回:预测值和目标值的方差 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.data(name='y_predict', shape=[1], dtype='float32') - cost = fluid.layers.square_error_cost(input=y_predict, label=y) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/ssd_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/ssd_loss_cn.rst deleted file mode 100644 index da9949a0eea3405be4372eecb2e673e0ad0166d0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/ssd_loss_cn.rst +++ /dev/null @@ -1,101 +0,0 @@ -.. _cn_api_fluid_layers_ssd_loss: - -ssd_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.ssd_loss(location, confidence, gt_box, gt_label, prior_box, prior_box_var=None, background_label=0, overlap_threshold=0.5, neg_pos_ratio=3.0, neg_overlap=0.5, loc_loss_weight=1.0, conf_loss_weight=1.0, match_type='per_prediction', mining_type='max_negative', normalize=True, sample_size=None) - -:alias_main: paddle.nn.functional.ssd_loss -:alias: paddle.nn.functional.ssd_loss,paddle.nn.functional.loss.ssd_loss -:old_api: paddle.fluid.layers.ssd_loss - - - -该OP用于SSD物体检测算法的多窗口损失层 - -该层用于计算SSD的损失,给定位置偏移预测,置信度预测,候选框和真实框标签,以及难样本挖掘的类型。通过执行以下步骤,返回的损失是本地化损失(或回归损失)和置信度损失(或分类损失)的加权和: - -1、通过二分匹配算法查找匹配的边界框。 - - 1.1、计算真实框与先验框之间的IOU相似度。 - - 1.2、通过二分匹配算法计算匹配的边界框。 - -2、计算难分样本的置信度 - - 2.1、根据匹配的索引获取目标标签。 - - 2.2、计算置信度损失。 - -3、应用难样本挖掘算法来获取负样本索引并更新匹配的索引。 - -4、分配分类和回归目标 - - 4.1、根据生成的候选框bbox进行编码。 - - 4.2、分配回归目标。 - - 4.3、分配分类目标。 - -5、计算总体的物体损失。 - - 5.1计算置信度(confidence)损失。 - - 5.1计算回归(location)损失。 - - 5.3计算总体加权损失。 - -参数: - - **location** (Variable)- 位置预测,具有形状[N,Np,4]的3D-Tensor,N是batch大小,Np是每个实例的预测总数。 4是坐标的维数,布局是[xmin,ymin,xmax,ymax],xmin,ymin代表box左上坐标,xmax,ymax代表box右下坐标,数据类型为float32或float64。 - - **confidence** (Variable) - 置信度(分类)预测,具有形状[N,Np,C]的3D-Tensor,N是batch大小,Np是每个实例的预测总数,C是类别数量,数据类型为float32或float64。 - - **gt_box** (Variable)- 真实框(bbox),具有形状[Ng,4]的2D LoDTensor,Ng是mini-batch输入的真实框(bbox)的总数,4是坐标的维数,布局是[xmin,ymin,xmax,ymax],xmin,ymin代表box左上坐标,xmax,ymax代表box右下坐标,数据类型为float32或float64。 - - **gt_label** (Variable)- ground-truth标签, 具有形状[Ng,1]的2D LoDTensor,Ng是mini-batch输入的真实框(bbox)的总数,1表示类别号,数据类型为float32或float64。 - - **prior_box** (Variable)- 检测网络生成的候选框, 具有形状[Np,4]的2D-Tensor,Np是生成的候选框总数,4是坐标的维数,布局是[xmin,ymin,xmax,ymax],xmin,ymin代表box左上坐标,xmax,ymax代表box右下坐标,数据类型为float32或float64。。 - - **prior_box_var** (Variable)- 候选框的方差, 具有形状[Np,4]的2D张量,形状及数据类型同 ``prior_box`` 。 - - **background_label** (int)- background标签的索引,默认为0。 - - **overlap_threshold** (float)- 额外匹配的bbox阈值,当找到匹配的框,如果 ``match_type`` 为'per_prediction',使用 ``overlap_threshold`` 确定额外匹配的bbox。默认为0.5。 - - **neg_pos_ratio** (float)- 负框与正框的比率,仅在 ``mining_type`` 为'max_negative'时使用,默认为3.0。 - - **neg_overlap** (float)- 不匹配预测的负重叠上限。仅当 ``mining_type`` 为'max_negative'时使用,默认为0.5。 - - **loc_loss_weight** (float)- 回归损失的权重,默认为1.0。 - - **conf_loss_weight** (float)- 置信度损失的权重,默认为1.0。 - - **match_type** (str)- 训练期间匹配方法的类型应为'bipartite'或'per_prediction',默认为'per_prediction'。 - - **mining_type** (str)- 难样本挖掘类型,分为'hard_example'或'max_negative',目前只支持'max_negative'。 - - **normalize** (bool)- 是否通过输出位置的总数将SSD损失标准化,默认为True。 - - **sample_size** (int)- 负样本框的最大样本大小,仅在 ``mining_type`` 为'hard_example'时使用。 - -返回: Variable(Tensor) 定位损失和置信度损失的加权和, 具有形状[N * Np,1], N是batch大小,Np是每个实例的预测总数,数据类型为float32或float64。 - -抛出异常: ``ValueError`` - 如果 ``mining_type`` 是'hard_example',目前只支持 ``max_negative`` 的挖掘类型。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - pb = fluid.layers.data( - name='prior_box', - shape=[10, 4], - append_batch_size=False, - dtype='float32') - pbv = fluid.layers.data( - name='prior_box_var', - shape=[10, 4], - append_batch_size=False, - dtype='float32') - loc = fluid.layers.data(name='target_box', shape=[10, 4], dtype='float32') - scores = fluid.layers.data(name='scores', shape=[10, 21], dtype='float32') - gt_box = fluid.layers.data( - name='gt_box', shape=[4], lod_level=1, dtype='float32') - gt_label = fluid.layers.data( - name='gt_label', shape=[1], lod_level=1, dtype='float32') - loss = fluid.layers.ssd_loss(loc, scores, gt_box, gt_label, pb, pbv) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/loss/teacher_student_sigmoid_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/loss/teacher_student_sigmoid_loss_cn.rst deleted file mode 100644 index 84d1000cf3ee645af81f4f1588043c349fe30d0a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/loss/teacher_student_sigmoid_loss_cn.rst +++ /dev/null @@ -1,54 +0,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) - -:alias_main: paddle.nn.functional.teacher_student_sigmoid_loss -:alias: paddle.nn.functional.teacher_student_sigmoid_loss,paddle.nn.functional.loss.teacher_student_sigmoid_loss -:old_api: paddle.fluid.layers.teacher_student_sigmoid_loss - - - -**Teacher Student Log Loss Layer(教师--学生对数损失层)** - -定制化需求,用于student萃取teacher的值。此图层接受输入预测和目标标签,并返回teacher_student损失。 -z表示是否点击,z'表示teacher q值。label取值范围{-2,-1,[0, 2]} -teacher q值不存在时,点击时label为-1,否则为-2。 -teacher q值存在时,点击时label为z',否则为1 + z'。 - -.. math:: - - loss = max(x, 0) - x * z + log(1 + exp(-abs(x))) + max(x, 0) - x * z' + log(1 + exp(-abs(x))) - -其中: - - :math:`x` :预测输入值。 - - :math:`z` :是否点击。 - - :math:`z'` :teacher q值。 - - -参数: - - **input** (Variable) – 形状为[N x 1]的2-d Tensor,其中N是批大小batch size。 该输入是由前一个运算计算而得的概率,数据类型为float32或者float64。 - - **label** (Variable) – 具有形状[N x 1]的2-d Tensor的真实值,其中N是批大小batch_size,数据类型为float32或者float64。 - - **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 Tensor,teacher_student_sigmoid_loss。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - batch_size = 64 - label = fluid.layers.data( - name="label", shape=[batch_size, 1], dtype="int64", append_batch_size=False) - similarity = fluid.layers.data( - name="similarity", shape=[batch_size, 1], dtype="float32", append_batch_size=False) - cost = fluid.layers.teacher_student_sigmoid_loss(input=similarity, label=label) - - diff --git a/doc/paddle/api/paddle/nn/functional/maxout_cn.rst b/doc/paddle/api/paddle/nn/functional/maxout_cn.rst deleted file mode 100644 index 2f73289029229de4436d34bb99030a5eb958d1fb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/maxout_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_maxout: - -maxout -------------------------------- - -.. py:function:: paddle.fluid.layers.maxout(x, groups, name=None, axis=1) - -:alias_main: paddle.nn.functional.maxout -:alias: paddle.nn.functional.maxout,paddle.nn.functional.activation.maxout -:old_api: paddle.fluid.layers.maxout - - - -假设输入形状为(N, Ci, H, W),输出形状为(N, Co, H, W),则 :math:`Co=Ci/groups` 运算公式如下: - -.. math:: - - y_{si+j} &= \max_k x_{gsi + sk + j} \\ - g &= groups \\ - s &= \frac{input.size}{num\_channels} \\ - 0 \le &i < \frac{num\_channels}{groups} \\ - 0 \le &j < s \\ - 0 \le &k < groups - - -请参阅论文: - - Maxout Networks: http://www.jmlr.org/proceedings/papers/v28/goodfellow13.pdf - - Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks: https://arxiv.org/pdf/1312.6082v4.pdf - -参数: - - **x** (Variable) - 4-D Tensor,maxout算子的输入张量,其数据类型为float32,数据格式为NCHW或NHWC,其中N为 batch size ,C为通道数,H和W为特征图的高和宽。 - - **groups** (int) - 指定将输入张量的channel通道维度进行分组的数目。输出的通道数量为通道数除以组数。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **axis** (int) - 指定通道所在维度的索引。当数据格式为NCHW时,axis应该被设置为1,当数据格式为NHWC时,axis应该被设置为-1或者3。默认值:1。 - -返回:4-D Tensor,数据类型和格式与 `x` 一致。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` - 如果 ``axis`` 既不是1,也不是-1或3。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.data( - name='data', - shape=[None, 256, 32, 32], - dtype='float32') - out = fluid.layers.maxout(input, groups=2) diff --git a/doc/paddle/api/paddle/nn/functional/multiclass_nms_cn.rst b/doc/paddle/api/paddle/nn/functional/multiclass_nms_cn.rst deleted file mode 100644 index 12e3c804d95d81742116abfbf8bc71090621db1c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/multiclass_nms_cn.rst +++ /dev/null @@ -1,85 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.multiclass_nms -:alias: paddle.nn.functional.multiclass_nms,paddle.nn.functional.extension.multiclass_nms -:old_api: paddle.fluid.layers.multiclass_nms - - - -**多分类NMS** - -该OP用于对边界框(bounding box)和评分(scores)执行多类非极大值抑制(NMS)。 - -在NMS中,如果提供 ``score_threshold`` 阈值,则此OP贪心地选择所有得分(scores)高于 ``score_threshold`` 的检测边界框(bounding box)的子集,如果nms_top_k大于-1,则选择最大的nms_top_k置信度分数。 接着,该OP依据 adaptive nms(基于 ``nms_threshold`` 和 ``nms_eta``),删除与已选择的框IOU(交并比)高于nms_threshold 的重叠框。 - -在NMS步骤后,如果keep_top_k大于-1,则每个图像最多保留keep_top_k个框(bounding box)。 - -计算示例: - .. code-block:: text - - 如果: - box1.data = (2.0, 3.0, 7.0, 5.0) 数据格式为 (xmin, ymin, xmax, ymax) - box1.scores = (0.7, 0.2, 0.4) 其中 (label0.score=0.7, label1.score=0.2, label2.cores=0.4) - box2.data = (3.0, 4.0, 8.0, 5.0) - box2.score = (0.3, 0.3, 0.1) - nms_threshold = 0.3 - background_label = 0 - score_threshold = 0 - 则: - iou = 4/11 > 0.3 - out.data = [[1, 0.3, 3.0, 4.0, 8.0, 5.0], - [2, 0.4, 2.0, 3.0, 7.0, 5.0]] - - 输出数据格式为 (label, confidence, xmin, ymin, xmax, ymax) - - - -参数: - - **bboxes** (Variable) – 支持两种类型的边界框(bounding box): - - 1. (Tensor)形为[N,M,4 或 8、16、24、32]的3-D张量,表示将预测M个边界框的预测位置, N是批大小(batch size)。当边界框(bounding box)大小等于4时,每个边界框有四个坐标值,布局为[xmin,ymin,xmax,ymax]。数据类型为float32或float64。 - 2. (LoDTensor)形状为[M,C,4] M是边界框的个数,C是类别个数。数据类型为float32或float64 - - - **scores** (Variable) – 支持两种类型的分数: - - 1. (Tensor)具有形状[N,C,M]的3-D张量表示预测的置信度。 N是批量大小 batch size,C是种类数目,M是边界框bounding box的数量。对于每个类别,存在对应于M个边界框的总M个分数。请注意,M等于bboxes的第二维。数据类型为float32或float64。 - 2. (LoDTensor)具有形状[M,C]的2-D LoDTensor。 M是bbox的数量,C是种类数目。在这种情况下,输入bboxes应该是形为[M,C,4]的第二种情况。数据类型为float32或float64。 - - - **background_label** (int) – 背景标签(类别)的索引,如果设置为 0 ,则忽略背景标签(类别)。如果设置为 -1 ,则考虑所有类别。默认值:0 - - **score_threshold** (float) – 过滤掉低置信度分数的边界框的阈值。如果没有提供,请考虑所有边界框。 - - **nms_top_k** (int) – 基于 score_threshold 的过滤检测后,根据置信度保留的最大检测次数。 - - **nms_threshold** (float) – 在NMS中用于剔除检测框IOU的阈值,默认值:0.3 。 - - **nms_eta** (float) – 在NMS中用于调整 nms_threshold 的参数,设为1时表示nms_threshold不变。默认值:1.0 。 - - **keep_top_k** (int) – NMS步骤后每个图像要保留的总bbox数。 -1表示在NMS步骤之后保留所有bbox。 - - **normalized** (bool) – 检测是否已经经过正则化。默认值:True 。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为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}) - -返回类型:Variable,数据类型与输入一致。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - 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) - - - diff --git a/doc/paddle/api/paddle/nn/functional/norm/l2_normalize_cn.rst b/doc/paddle/api/paddle/nn/functional/norm/l2_normalize_cn.rst deleted file mode 100644 index f0e50f6af88923236a3ab8661d70ec10fe29ccc0..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/norm/l2_normalize_cn.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _cn_api_fluid_layers_l2_normalize: - -l2_normalize -------------------------------- - -.. py:function:: paddle.fluid.layers.l2_normalize(x,axis,epsilon=1e-12,name=None) - -:alias_main: paddle.nn.functional.l2_normalize -:alias: paddle.nn.functional.l2_normalize,paddle.nn.functional.norm.l2_normalize -:old_api: paddle.fluid.layers.l2_normalize - - - -该OP计算欧几里得距离之和对x进行归一化。对于1-D张量(系数矩阵的维度固定为0) -计算公式如下: - -.. math:: - - y=\frac{x}{\sqrt{\sum x^{2}+epsilon}} - -对于输入为多维Tensor的情况,该OP分别对维度轴上的每个1-D切片单独归一化 - -参数: - - **x** (Variable) - 维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - - **axis** (int) - 归一化的轴。如果轴小于0,归一化的维是rank(X)+axis。其中,-1用来表示最后一维。 - - **epsilon** (float) - epsilon,用于避免除0,默认值为1e-12。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - 返回:与输入x的维度一致的Tensor - - 返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="data", - shape=(3, 17, 13), - dtype="float32") - normed = fluid.layers.l2_normalize(x=data, axis=1) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/norm/lrn_cn.rst b/doc/paddle/api/paddle/nn/functional/norm/lrn_cn.rst deleted file mode 100644 index 0465849f1c66e0bb8ce6bbdf3c987e45de01bffb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/norm/lrn_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_lrn: - -lrn -------------------------------- - -.. py:function:: paddle.fluid.layers.lrn(input, n=5, k=1.0, alpha=0.0001, beta=0.75, name=None, data_format='NCHW') - -:alias_main: paddle.nn.functional.lrn -:alias: paddle.nn.functional.lrn,paddle.nn.functional.norm.lrn -:old_api: paddle.fluid.layers.lrn - - - - -该OP实现了局部响应正则化层(Local Response Normalization Layer),用于对局部输入区域正则化,执行一种侧向抑制(lateral inhibition)。更多详情参考: `ImageNet Classification with Deep Convolutional Neural Networks `_ - -其中 ``input`` 是mini-batch的输入特征。计算过程如下: - -.. math:: - - Output(i,x,y) = Input(i,x,y)/\left ( k+\alpha \sum_{j=max(0,i-n/2)}^{min(C-1,i+n/2)}(Input(j,x,y))^2 \right )^\beta - -在以上公式中: - - :math:`n` :累加的通道数 - - :math:`k` :位移 - - :math:`\alpha` : 缩放参数 - - :math:`\beta` : 指数参数 - - -参数: - - **input** (Variable)- 输入特征,形状为[N,C,H,W]或者[N,H,W,C]的4D-Tensor,其中N为batch大小,C为输入通道数,H为特征高度,W为特征宽度。必须包含4个维度,否则会抛出 ``ValueError`` 的异常。数据类型为float32。 - - **n** (int,可选) - 累加的通道数,默认值为5。 - - **k** (float,可选)- 位移,正数。默认值为1.0。 - - **alpha** (float,可选)- 缩放参数,正数。默认值为1e-4。 - - **beta** (float,可选)- 指数,正数。默认值为0.75。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - - -返回:局部响应正则化得到的输出特征,数据类型及维度和input相同。 - -返回类型:Variable - -抛出异常: - - ``ValueError`` : 如果输入不是4-D Tensor。 - - ``ValueError`` - 如果 ``data_format`` 不是"NCHW"或者"NHWC"。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data( - name="data", shape=[3, 112, 112], dtype="float32") - lrn = fluid.layers.lrn(input=data) - print(lrn.shape) # [-1, 3, 112, 112] - print(lrn.dtype) # float32 diff --git a/doc/paddle/api/paddle/nn/functional/one_hot_cn.rst b/doc/paddle/api/paddle/nn/functional/one_hot_cn.rst deleted file mode 100644 index 2aaaf117e6fc9dc5ab26032db91bef286f14e567..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/one_hot_cn.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. _cn_api_fluid_layers_one_hot: - -one_hot -------------------------------- - -.. py:function:: paddle.fluid.layers.one_hot(input, depth, allow_out_of_range=False) - - - - -**注意:此OP要求输入Tensor shape的最后一维必须为1。此OP将在未来的版本中被移除!推荐使用fluid.** :ref:`cn_api_fluid_one_hot` 。 - -该OP将输入(input)中的每个id转换为一个one-hot向量,其长度为 ``depth`` ,该id对应的向量维度上的值为1,其余维度的值为0。 - -输出的Tensor(或LoDTensor)的shape是将输入shape的最后一维替换为depth的维度。 - -- 示例1(allow_out_of_range=False): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [3], [0]] - depth = 4 - - 输出: - Out.shape = [4, 4] - Out.data = [[0., 1., 0., 0.], - [0., 1., 0., 0.], - [0., 0., 0., 1.], - [1., 0., 0., 0.]] - -- 示例2 (allow_out_of_range=True): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [5], [0]] - depth = 4 - allow_out_of_range=True - - 输出: - Out.shape = [4, 4] - Out.data = [[0., 1., 0., 0.], - [0., 1., 0., 0.], - [0., 0., 0., 0.], ## 这一维的值是5,超过了depth,因此填成0 - [1., 0., 0., 0.]] - -- 示例3 (allow_out_of_range=False): - -.. code-block:: python - - 输入: - X.shape = [4, 1] - X.data = [[1], [1], [5], [0]] - depth = 4 - allow_out_of_range=False - - 输出:抛出 Illegal value 的异常 - X中第2维的值是5,超过了depth,而allow_out_of_range=False表示不允许超过,因此抛异常。 - - -参数: - - **input** (Variable) - 维度为 :math:`[N_1, ..., N_n, 1]` 的多维Tensor或LoDTensor,维度至少两维,且最后一维必须是1。数据类型为int32或int64。 - - **depth** (int) - 用于定义一个one-hot向量的长度。若输入为词id,则 ``depth`` 通常取值为词典大小。 - - **allow_out_of_range** (bool) - 指明input中所包含的id值是否可以大于depth值。当超过depth时,如果 `allow_out_of_range` 为False,则会抛出 `Illegal value` 的异常;如果设置为True,该id对应的向量为0向量。默认值为False。 - -返回:转换后的one_hot Tensor或LoDTensor,数据类型为float32。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - # 该代码对应上述第一个示例,其中输入label的shape是[4, 1],输出one_hot_label的shape是[4, 4] - label = fluid.layers.data(name="label", shape=[4, 1], append_batch_size=False, dtype="int64") - one_hot_label = fluid.layers.one_hot(input=label, depth=4) diff --git a/doc/paddle/api/paddle/nn/functional/pad2d_cn.rst b/doc/paddle/api/paddle/nn/functional/pad2d_cn.rst deleted file mode 100644 index 08e937f50a7eb33bb21adadc2039984ff221cf31..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/pad2d_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_layers_pad2d: - -pad2d -------------------------------- - -.. py:function:: paddle.fluid.layers.pad2d(input, paddings=[0, 0, 0, 0], mode='constant', pad_value=0.0, data_format='NCHW', name=None) - -:alias_main: paddle.nn.functional.pad2d -:alias: paddle.nn.functional.pad2d,paddle.nn.functional.common.pad2d -:old_api: paddle.fluid.layers.pad2d - - - -该OP依照 paddings 和 mode 属性对input进行2维 ``pad`` 。 - -参数: - - **input** (Variable) - 类型为float32的4-D Tensor, format为 `[N, C, H, W]` 或 `[N, H, W, C]` 。 - - **paddings** (Variable | List[int32]) - 填充大小。如果paddings是一个List,它必须包含四个整数 `[padding_top, padding_bottom, padding_left, padding_right]` 。 - 如果paddings是Variable, 则是类型为int32 的1-D Tensor,shape是 `[4]` 。默认值为 `[0,0,0,0]` 。 - - **mode** (str) - padding的三种模式,分别为 `'constant'` (默认)、 `'reflect'` 、 `'edge'` 。 `'constant'` 为填充常数 `pad_value` , `'reflect'` 为填充以input边界值为轴的映射, `'edge'` 为填充input边界值。具体结果可见以下示例。默认值为 `'constant'` 。 - - **pad_value** (float32) - 以 `'constant'` 模式填充区域时填充的值。默认值为0.0。 - - **data_format** (str) - 指定input的format,可为 `'NCHW'` 和 `'NHWC'` ,默认值为 `'NCHW'` 。 - - **name** (str, 可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,缺省值为None。 -返回: 对input进行2维 ``pad`` 的结果,数据类型和input一样的4-D Tensor。 - -返回类型:Variable - -**示例**: - -.. code-block:: text - - Input = [[[[1., 2., 3.], - [4., 5., 6.]]]] - - Case 0: - paddings = [0, 1, 2, 3], - mode = 'constant' - pad_value = 0 - Out = [[[[0., 0., 1., 2., 3., 0., 0., 0.], - [0., 0., 4., 5., 6., 0., 0., 0.], - [0., 0., 0., 0., 0., 0., 0., 0.]]]] - - Case 1: - paddings = [0, 1, 2, 1], - mode = 'reflect' - Out = [[[[3., 2., 1., 2., 3., 2.], - [6., 5., 4., 5., 6., 5.], - [3., 2., 1., 2., 3., 2.]]]] - - Case 2: - paddings = [0, 1, 2, 1], - mode = 'edge' - Out = [[[[1., 1., 1., 2., 3., 3.], - [4., 4., 4., 5., 6., 6.], - [4., 4., 4., 5., 6., 6.]]]] - - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.data(name='data', shape=[None, 3, 32, 32], dtype='float32') - result = fluid.layers.pad2d(input=data, paddings=[0, 1, 2, 3], mode='reflect') diff --git a/doc/paddle/api/paddle/nn/functional/pad_cn.rst b/doc/paddle/api/paddle/nn/functional/pad_cn.rst deleted file mode 100644 index a9ed06ded042fe47826667b3d70acfe766181c21..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/pad_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_pad: - -pad -------------------------------- - -.. py:function:: paddle.fluid.layers.pad(x, paddings, pad_value=0.0, name=None) - -:alias_main: paddle.nn.functional.pad -:alias: paddle.nn.functional.pad,paddle.nn.functional.common.pad -:old_api: paddle.fluid.layers.pad - - - -该OP在Tensor上填充一个由 ``pad_value`` 给出的常数值,填充宽度由 ``paddings`` 指定。 -其中,维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 - -**示例**: - -.. code-block:: text - - Given: - x = [[1, 2], [3, 4]] - - paddings = [0, 1, 1, 2] - - pad_value = 0 - - Return: - out = [[0, 1, 2, 0, 0] - [0, 3, 4, 0, 0] - [0, 0, 0, 0, 0]] - - -参数: - - **x** (Variable) — 多维Tensor,数据类型为float32 - - **paddings** (list of integers) — 整数列表,指定每个维度填充值的个数。维度 ``i`` 中 ``x`` 内容前填充的值个数用 ``paddings[2*i]`` 表示,维度 ``i`` 中 ``x`` 内容后填充的值个数用 ``paddings[2*i+1]`` 表示。 ``paddings`` 长度必须是 ``rank(x)×2`` - - **pad_value** (float32, 可选) — 用来填充的常量值,数据类型为float。默认值为0. - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 填充后的Tensor,数据类型与输入 ``x`` 相同 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - # x 为一个秩为2的张量 - import paddle.fluid as fluid - x = fluid.data(name='data', shape=[300, 300], dtype='float32') - out = fluid.layers.pad(x=x, paddings=[0, 1, 1, 2], pad_value=0.) - - diff --git a/doc/paddle/api/paddle/nn/functional/pad_constant_like_cn.rst b/doc/paddle/api/paddle/nn/functional/pad_constant_like_cn.rst deleted file mode 100644 index 8f0bad53df1e4c53ef64baa921b1153404d98a5b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/pad_constant_like_cn.rst +++ /dev/null @@ -1,86 +0,0 @@ -.. _cn_api_fluid_layers_pad_constant_like: - -pad_constant_like -------------------------------- - -.. py:function:: paddle.fluid.layers.pad_constant_like(x, y, pad_value=0.0, name=None) - -:alias_main: paddle.nn.functional.pad_constant_like -:alias: paddle.nn.functional.pad_constant_like,paddle.nn.functional.common.pad_constant_like -:old_api: paddle.fluid.layers.pad_constant_like - - - -该OP使用 ``pad_value`` 填充 ``y`` ,填充到每个维度值的数量由x和y的形状而指定,((0,x.shape[0] - y.shape[0]), ..., (0, x.shape[i] - y.shape[i]), ..., (0, x.shape[n] - y.shape[n]))是每个维度填充的宽度,对于维度i,填充宽度 ``(0, x.shape[i] - y.shape[i])`` ,表示在y的第i维开头不填充,而在末尾填充 ``x.shape[i] - y.shape[i]`` 个位置。该OP要求y与x具有相同的秩,并且对每个维度i, ``y.shape[i] <= x.shape[i]`` 。 - -**示例**: - -.. code-block:: text - - Given: - X = [[[[ 0, 1, 2], - [ 3, 4, 5]], - [[ 6, 7, 8], - [ 9, 10, 11]], - [[12, 13, 14], - [15, 16, 17]]], - [[[18, 19, 20], - [21, 22, 23]], - [[24, 25, 26], - [27, 28, 29]], - [[30, 31, 32], - [33, 34, 35]]]] - - X.shape = (2, 3, 2, 3) - - Y = [[[[35, 36, 37]], - [[38, 39, 40]], - [[41, 42, 43]]]] - - Y.shape = (1, 3, 1, 3) - - And - pad_value = 0. - - Return: - Out = [[[[35, 36, 37], - [ 0, 0, 0]], - [[38, 39, 40], - [ 0, 0, 0]], - [[41, 42, 43], - [ 0, 0, 0]]], - [[[ 0, 0, 0], - [ 0, 0, 0]], - [[ 0, 0, 0], - [ 0, 0, 0]], - [[ 0, 0, 0], - [ 0, 0, 0]]]] - - Out.shape = [2, 3, 2, 3] - - -参数: - - **x** (Variable)- 多维Tensor - - **y** (Variable)- 多维Tensor,与x具有相同的秩,而且对任意维度 ``i`` ,要求满足 ``y.shape[i] <= x.shape[i]`` 。数据类型为float32或float64 - - **pad_value** (float,可选) - 用于填充的常量值。默认值为0. - - **name** (str | None) - (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:经过维度填充后的Tensor,与x具有相同的shape,与y具有相同的数据类型 - -返回类型: Variable - -**示例代码** - -.. code-block:: python - - # x是秩为4的tensor, x.shape = (2, 3, 2, 3) - # y是秩为4的tensor, y.shape = (1, 3, 1, 3) - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[2,3,2,3], dtype='float32') - y = fluid.data(name='y', shape=[1,3,1,3], dtype='float32') - out = fluid.layers.pad_constant_like(x=x, y=y, pad_value=0.) - # out是秩为4的tensor, out.shape = [2, 3 ,2 , 3] - - - - diff --git a/doc/paddle/api/paddle/nn/functional/polygon_box_transform_cn.rst b/doc/paddle/api/paddle/nn/functional/polygon_box_transform_cn.rst deleted file mode 100644 index 06fa39efbdc758bc5e03dcf64e9554d2f627086b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/polygon_box_transform_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_layers_polygon_box_transform: - -polygon_box_transform -------------------------------- - -.. py:function:: paddle.fluid.layers.polygon_box_transform(input, name=None) - -:alias_main: paddle.nn.functional.polygon_box_transform -:alias: paddle.nn.functional.polygon_box_transform,paddle.nn.functional.extension.polygon_box_transform -:old_api: paddle.fluid.layers.polygon_box_transform - - - -**PolygonBoxTransform 算子** - -该op用于将偏移坐标改变为真实的坐标。 - -输入4-D Tensor是检测网络最终的几何输出。我们使用 2*n 个数来表示从 polygon_box 中的 n 个顶点(vertice)到像素位置的偏移。由于每个距离偏移包含两个数 :math:`(x_i, y_i)` ,所以几何输出通道数为 2*n。 - -参数: - - **input** (Variable) - 形状为 :math:`[batch\_size,geometry\_channels,height,width]` 的4-D Tensor,数据类型为float32或float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:polygon_box_transform输出的真实坐标,是一个 4-D Tensor。数据类型为float32或float64。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name='input', shape=[4, 10, 5, 5], - append_batch_size=False, dtype='float32') - out = fluid.layers.polygon_box_transform(input) - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/pooling/adaptive_pool2d_cn.rst b/doc/paddle/api/paddle/nn/functional/pooling/adaptive_pool2d_cn.rst deleted file mode 100644 index c2a5026955e2e2c1e5484ec1799ced2851921a88..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/pooling/adaptive_pool2d_cn.rst +++ /dev/null @@ -1,98 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.adaptive_pool2d -:alias: paddle.nn.functional.adaptive_pool2d,paddle.nn.functional.pooling.adaptive_pool2d -:old_api: paddle.fluid.layers.adaptive_pool2d - - - -该OP使用上述输入参数的池化配置,为二维空间自适应池化操作,根据 ``input`` , 池化类型 ``pool_type`` , 池化核大小 ``pool_size`` 这些参数得到输出。 - -输入X和输出Out是NCHW格式,N为批大小,C是通道数,H是特征高度,W是特征宽度。参数 ``pool_size`` 含有两个整型元素, 分别代表高度和宽度上的参数。输出Out的H和W维由 ``pool_size`` 决定,即输出shape为 :math:`\left ( N,C,pool_size[0],pool_size[1] \right )` - - -对于平均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) - 池化操作的输入张量,维度为 :math:`[N, C, H, W]` 的4-D Tensor。 输入张量的格式为NCHW,其中N是batch大小,C是通道数,H是特征的高度,W是特征的宽度,数据类型为float32或float64。 - - **pool_size** (int|list|tuple) - 池化核大小。 如果池化核大小是元组或列表,则它必须包含两个整数(pool_size_Height,pool_size_Width。若为一个整数,则表示H和W维度上均为该值。 - - **pool_type** (string)- 池化类型,可输入“max”代表max-pooling,或者“avg”代表average-pooling。 - - **require_index** (bool) - 如果为False,则输出中带有最大池化点所在的索引。 如果pool_type为avg,该项不可被设置为True, 默认False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - - -返回: Variable(Tensor) 自适应池化结果张量 - -返回类型:变量(Variable),数据类型与 ``input`` 一致 - - -抛出异常: - - - ``ValueError`` – ``pool_type`` 不是 ‘max’ 或 ‘avg’ - - ``ValueError`` – 当 ``pool_type`` 是 ‘avg’ 时,错误地设置 ‘require_index’ 为true . - - ``ValueError`` – ``pool_size`` 应为一个长度为2的列表或元组 - -.. code-block:: python - - # average adaptive pool2d - # 假设输入形为[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]) - # - import paddle.fluid as fluid - data = fluid.data(name='data', shape=[None, 3, 32, 32], dtype='float32') - pool_out = fluid.layers.adaptive_pool2d( - input=data, - pool_size=[3, 3], - pool_type='avg') - - # max adaptive pool2d - # 假设输入形为[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] = max(input[:, :, hstart: hend, wstart: wend]) - # - import paddle.fluid as fluid - data = fluid.data(name='data', shape=[None, 3, 32, 32], dtype='float32') - pool_out = fluid.layers.adaptive_pool2d( - input=data, - pool_size=[3, 3], - pool_type='max') - - - - diff --git a/doc/paddle/api/paddle/nn/functional/pooling/adaptive_pool3d_cn.rst b/doc/paddle/api/paddle/nn/functional/pooling/adaptive_pool3d_cn.rst deleted file mode 100644 index ec7c4d13210b745f6dba3bd307ab1587558c2535..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/pooling/adaptive_pool3d_cn.rst +++ /dev/null @@ -1,116 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.adaptive_pool3d -:alias: paddle.nn.functional.adaptive_pool3d,paddle.nn.functional.pooling.adaptive_pool3d -:old_api: paddle.fluid.layers.adaptive_pool3d - - - -该OP使用上述输入参数的池化配置,为二维空间自适应池化操作,根据 ``input`` , 池化类型 ``pool_type`` , 池化核大小 ``pool_size`` 这些参数得到输出。 - -输入X和输出Out是NCDHW格式,N为批大小,D是特征深度,C是通道数,H是特征高度,W是特征宽度。参数 ``pool_size`` 含有两个整型元素, 分别代表深度,高度和宽度上的参数。输出Out的D, H和W维由 ``pool_size`` 决定,即输出shape为 :math:`\left ( N,C,pool_size[0],pool_size[1],pool_size[2] \right )` - - -对于平均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) - 池化操作的输入张量,维度为 :math:`[N, C, D, H, W]` 的5-D Tensor。 输入张量的格式为NCDHW,其中N是batch大小,C是通道数,D为特征的深度,H是特征的高度,W是特征的宽度,数据类型为float32或float64。 - - **pool_size** (int|list|tuple) - 池化核大小。 如果池化核大小是元组或列表,则它必须包含三个整数(Depth, Height, Width)。若为一个整数,则表示D, H和W维度上均为该值。 - - **pool_type** (string)- 池化类型,可输入“max”代表max-pooling,或者“avg”代表average-pooling。 - - **require_index** (bool) - 如果为True,则输出中带有最大池化点所在的索引。 如果pool_type为avg,该项不可被设置为True, 默认False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - - -返回: Variable(Tensor) 自适应池化结果张量 - -返回类型:变量(Variable),数据类型与 ``input`` 一致 - - -抛出异常: - - - ``ValueError`` – ``pool_type`` 不是 ‘max’ 或 ‘avg’ - - ``ValueError`` – 当 ``pool_type`` 是 ‘avg’ 时,错误地设置 ‘require_index’ 为true . - - ``ValueError`` – ``pool_size`` 应为一个长度为3的列表或元组 - -.. code-block:: python - - # average adaptive pool2d - # 假设输入形为[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]) - # - - import paddle.fluid as fluid - - data = fluid.data(name='data', shape=[None, 3, 32, 32, 32], dtype='float32') - pool_out = fluid.layers.adaptive_pool3d( - input=data, - pool_size=[3, 3, 3], - pool_type='avg') - - # max adaptive pool2d - # 假设输入形为[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]) - # - - import paddle.fluid as fluid - - data = fluid.data(name='data', shape=[None, 3, 32, 32, 32], dtype='float32') - pool_out = fluid.layers.adaptive_pool3d( - input=data, - pool_size=[3, 3, 3], - pool_type='max') - - - - diff --git a/doc/paddle/api/paddle/nn/functional/pooling/pool2d_cn.rst b/doc/paddle/api/paddle/nn/functional/pooling/pool2d_cn.rst deleted file mode 100644 index d1990be374c9807f6272937e7e6c6d75e3e89062..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/pooling/pool2d_cn.rst +++ /dev/null @@ -1,215 +0,0 @@ -.. _cn_api_fluid_layers_pool2d: - -pool2d -------------------------------- - -.. py:function:: paddle.fluid.layers.pool2d(input, pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, name=None, exclusive=True, data_format="NCHW") - -:alias_main: paddle.nn.functional.pool2d -:alias: paddle.nn.functional.pool2d,paddle.nn.functional.pooling.pool2d -:old_api: paddle.fluid.layers.pool2d - - - -该OP使用上述输入参数的池化配置,为二维空间池化操作,根据 ``input`` ,池化核大小 ``pool_size`` ,池化类型 ``pool_type`` ,步长 ``pool_stride`` ,填充 ``pool_padding`` 等参数得到输出。 - -输入 ``input`` 和输出(out)采用NCHW或NHWC格式,N为批大小,C是通道数,H是特征高度,W是特征宽度。 - -参数 ``pool_size`` 和 ``pool_stride`` 含有两个整型元素,分别表示高度和宽度维度上的参数。 - -输入 ``input`` 和输出(out)的形状可能不同。 - - -例如: - -输入: - ``input`` 的形状::math:`\left ( N,C,H_{in},W_{in} \right )` - -输出: - ``out`` 的形状::math:`\left ( N,C,H_{out},W_{out} \right )` - -如果 ``ceil_mode`` = false: - -.. math:: - H_{out} = \frac{(H_{in} - pool\_size[0] + pad\_height\_top + pad\_height\_bottom)}{pool\_stride[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - pool\_size[1] + pad\_width\_left + pad\_width\_right)}{pool\_stride[1]} + 1 - -如果 ``ceil_mode`` = true: - -.. math:: - H_{out} = \frac{(H_{in} - pool\_size[0] + pad\_height\_top + pad\_height\_bottom + pool\_stride[0] - 1)}{pool\_stride[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - pool\_size[1] + pad\_width\_left + pad\_width\_right + pool\_stride[1] - 1)}{pool\_stride[1]} + 1 - -如果 ``exclusive`` = false: - -.. math:: - hstart &= i * pool\_stride[0] - pad\_height\_top \\ - hend &= hstart + pool\_size[0] \\ - wstart &= j * pool\_stride[1] - pad\_width\_left \\ - wend &= wstart + pool\_size[1] \\ - Output(i ,j) &= \frac{sum(Input[hstart:hend, wstart:wend])}{pool\_size[0] * pool\_size[1]} - -如果 ``exclusive`` = true: - -.. math:: - hstart &= max(0, i * pool\_stride[0] - pad\_height\_top) \\ - hend &= min(H, hstart + pool\_size[0]) \\ - wstart &= max(0, j * pool\_stride[1] - pad\_width\_left) \\ - wend & = min(W, wstart + pool\_size[1]) \\ - Output(i ,j) & = \frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)} - -如果 ``pool_padding`` = "SAME": - -.. math:: - H_{out} = \frac{(H_{in} + pool\_stride[0] - 1)}{pool\_stride[0]} - -.. math:: - W_{out} = \frac{(W_{in} + pool\_stride[1] - 1)}{pool\_stride[1]} - -如果 ``pool_padding`` = "VALID": - -.. math:: - H_{out} = \frac{(H_{in} - pool\_size[0])}{pool\_stride[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - pool\_size[1])}{pool\_stride[1]} + 1 - -参数: - - **input** (Variable) - 形状为 :math:`[N, C, H, W]` 或 :math:`[N, H, W, C]` 的4-D Tensor,N是批尺寸,C是通道数,H是特征高度,W是特征宽度,数据类型为float32或float64。 - - **pool_size** (int|list|tuple) - 池化核的大小。如果它是一个元组或列表,那么它包含两个整数值:(pool_size_Height, pool_size_Width)。若为一个整数,则表示H和W维度上均为该值,比如若pool_size=2, 则池化核大小为[2,2]。 - - **pool_type** (str) - 池化类型,可以为"max"或"avg","max"对应max-pooling,"avg"对应average-pooling。默认值:"max"。 - - **pool_stride** (int|list|tuple) - 池化层的步长。如果它是一个元组或列表,它将包含两个整数:(pool_stride_Height, pool_stride_Width)。若为一个整数,则表示H和W维度上均为该值,比如若pool_stride=3, 则池化层步长为[3,3]。默认值:1。 - - **pool_padding** (int|list|tuple|str) - 池化填充。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``pool_padding`` = "SAME"或 ``pool_padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含2个整数值:[pad_height, pad_width];(2)包含4个整数值:[pad_height_top, pad_height_bottom, pad_width_left, pad_width_right];(3)包含4个二元组:当 ``data_format`` 为"NCHW"时为 [[0,0], [0,0], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right]],当 ``data_format`` 为"NHWC"时为[[0,0], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right], [0,0]]。若为一个整数,则表示H和W维度上均为该值。默认值:0。 - - **global_pooling** (bool)- 是否用全局池化。如果global_pooling = True, 已设置的 ``pool_size`` 和 ``pool_padding`` 会被忽略, ``pool_size`` 将被设置为 :math:`[H_{in}, W_{in}]` , ``pool_padding`` 将被设置为0。默认值:False。 - - **use_cudnn** (bool)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **ceil_mode** (bool)- 是否用ceil函数计算输出高度和宽度。计算细节可参考上述 ``ceil_mode`` = true或 ``ceil_mode`` = false 时的计算公式。默认值:False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - - **exclusive** (bool) - 是否在平均池化模式忽略填充值。计算细节可参考上述 ``exclusive`` = true或 ``exclusive`` = false 时的计算公式。默认值:True。 - - **data_format** (str) - 输入和输出的数据格式,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回: 4-D Tensor,数据类型与 ``input`` 一致。 - -返回类型:Variable。 - -抛出异常: - - ``ValueError`` - 如果 ``pool_type`` 既不是"max"也不是"avg"。 - - ``ValueError`` - 如果 ``global_pooling`` 为False并且 ``pool_size`` 为-1。 - - ``TypeError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``pool_padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``pool_padding`` 是"VALID",但是 ``ceil_mode`` 是True。 - - ``ValueError`` - 如果 ``pool_padding`` 含有4个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果 ``input`` 既不是4-D Tensor 也不是5-D Tensor。 - - ``ShapeError`` - 如果 ``input`` 的维度减去 ``pool_stride`` 的尺寸大小不是2。 - - ``ShapeError`` - 如果 ``pool_size`` 和 ``pool_stride`` 的尺寸大小不相等。 - - ``ShapeError`` - 如果计算出的输出形状的元素值不大于0。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data_NCHW = fluid.data(name='data', shape=[None, 3, 8, 8], dtype='float32') - - data_NHWC = fluid.data(name='data', shape=[None, 8, 8, 3], dtype='float32') - - # example 1: - # ceil_mode = False - out_1 = fluid.layers.pool2d( - input=data_NCHW, # shape: [2, 3, 8, 8] - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding=[2,1], # it is same as pool_padding = [2,2,1,1] - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCHW") - # shape of out_1: [2, 3, 4, 3] - - # example 2: - # ceil_mode = True (different from example 1) - out_2 = fluid.layers.pool2d( - input=data_NCHW, - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding=[[0,0], [0,0], [2,2], [1,1]], # it is same as pool_padding = [2,2,1,1] - global_pooling=False, - ceil_mode=True, - exclusive=True, - data_format="NCHW") - # shape of out_2: [2, 3, 4, 4] which is different from out_1 - - # example 3: - # pool_padding = "SAME" (different from example 1) - out_3 = fluid.layers.pool2d( - input=data_NCHW, - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding="SAME", - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCHW") - # shape of out_3: [2, 3, 3, 3] which is different from out_1 - - # example 4: - # pool_padding = "VALID" (different from example 1) - out_4 = fluid.layers.pool2d( - input=data_NCHW, - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding="VALID", - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCHW") - # shape of out_4: [2, 3, 2, 2] which is different from out_1 - - # example 5: - # global_pooling = True (different from example 1) - # It will be set pool_size = [8,8] and pool_padding = [0,0] actually. - out_5 = fluid.layers.pool2d( - input=data_NCHW, - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding=[2,1], - global_pooling=True, - ceil_mode=False, - exclusive=True, - data_format="NCHW") - # shape of out_5: [2, 3, 1, 1] which is different from out_1 - - # example 6: - # data_format = "NHWC" (different from example 1) - out_6 = fluid.layers.pool2d( - input=data_NHWC, # shape: [2, 8, 8, 3] - pool_size=[3,3], - pool_type='avg', - pool_stride=[3,3], - pool_padding=[2,1], - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NHWC") - # shape of out_6: [2, 4, 3, 3] which is different from out_1 - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/pooling/pool3d_cn.rst b/doc/paddle/api/paddle/nn/functional/pooling/pool3d_cn.rst deleted file mode 100644 index d23d77b7247696b0b6e53b269a6d24b6f59e6b9d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/pooling/pool3d_cn.rst +++ /dev/null @@ -1,226 +0,0 @@ -.. _cn_api_fluid_layers_pool3d: - -pool3d -------------------------------- - -.. py:function:: paddle.fluid.layers.pool3d(input, pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, name=None, exclusive=True, data_format="NCDHW") - -:alias_main: paddle.nn.functional.pool3d -:alias: paddle.nn.functional.pool3d,paddle.nn.functional.pooling.pool3d -:old_api: paddle.fluid.layers.pool3d - - - -该OP使用上述输入参数的池化配置,为三维空间池化操作,根据 ``input`` ,池化核大小 ``pool_size`` ,池化类型 ``pool_type`` ,步长 ``pool_stride`` 和填充 ``pool_padding`` 等参数计算输出。 - -输入 ``input`` 和输出(Out)采用NCDHW或NDHWC格式,其中N是批大小,C是通道数,D,H和W分别是特征的深度,高度和宽度。 - -参数 ``pool_size`` 和 ``pool_stride`` 含有三个整型元素。 分别代表深度,高度和宽度维度上的参数。 - -输入 ``input`` 和输出(Out)的形状可能不同。 - - -例如: - -输入: - ``X`` 的形状: :math:`(N, C, D_{in}, H_{in}, W_{in})` - -输出: - ``out`` 的形状: :math:`(N, C, D_{out}, H_{out}, W_{out})` - -当 ``ceil_mode`` = false时, - -.. math:: - - D_{out} &= \frac{(D_{in} - pool\_size[0] + pad\_depth\_front + pad\_depth\_back)}{pool\_stride[0]} + 1\\ - H_{out} &= \frac{(H_{in} - pool\_size[1] + pad\_height\_top + pad\_height\_bottom)}{pool\_stride[1]} + 1\\ - W_{out} &= \frac{(W_{in} - pool\_size[2] + pad\_width\_left + pad\_width\_right)}{pool\_stride[2]} + 1 - -当 ``ceil_mode`` = true时, - -.. math:: - - D_{out} &= \frac{(D_{in} - pool\_size[0] + pad\_depth\_front + pad\_depth\_back + pool\_stride[0] -1)}{pool\_stride[0]} + 1\\ - H_{out} &= \frac{(H_{in} - pool\_size[1] + pad\_height\_top + pad\_height\_bottom + pool\_stride[1] -1)}{pool\_stride[1]} + 1\\ - W_{out} &= \frac{(W_{in} - pool\_size[2] + pad\_width\_left + pad\_width\_right + pool\_stride[2] -1)}{pool\_stride[2]} + 1 - -当 ``exclusive`` = false时, - -.. math:: - dstart &= i * pool\_stride[0] - pad\_depth\_front \\ - dend &= dstart + pool\_size[0] \\ - hstart &= j * pool\_stride[1] - pad\_height\_top \\ - hend &= hstart + pool\_size[1] \\ - wstart &= k * pool\_stride[2] - pad\_width\_left \\ - wend &= wstart + pool\_size[2] \\ - Output(i ,j, k) &= \frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{pool\_size[0] * pool\_size[1] * pool\_size[2]} - -如果 ``exclusive`` = true: - -.. math:: - dstart &= max(0, i * pool\_stride[0] - pad\_depth\_front) \\ - dend &= min(D, dstart + pool\_size[0]) \\ - hstart &= max(0, j * pool\_stride[1] - pad\_height\_top) \\ - hend &= min(H, hstart + pool\_size[1]) \\ - wstart &= max(0, k * pool\_stride[2] - pad\_width\_left) \\ - wend & = min(W, wstart + pool\_size[2]) \\ - Output(i ,j, k) & = \frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{(dend - dstart) * (hend - hstart) * (wend - wstart)} - -如果 ``pool_padding`` = "SAME": - -.. math:: - D_{out} = \frac{(D_{in} + pool\_stride[0] - 1)}{pool\_stride[0]} - -.. math:: - H_{out} = \frac{(H_{in} + pool\_stride[1] - 1)}{pool\_stride[1]} - -.. math:: - W_{out} = \frac{(W_{in} + pool\_stride[2] - 1)}{pool\_stride[2]} - -如果 ``pool_padding`` = "VALID": - -.. math:: - D_{out} = \frac{(D_{in} - pool\_size[0])}{pool\_stride[0]} + 1 - -.. math:: - H_{out} = \frac{(H_{in} - pool\_size[1])}{pool\_stride[1]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - pool\_size[2])}{pool\_stride[2]} + 1 - - -参数: - - **input** (Vairable) - 形状为 :math:`[N, C, D, H, W]` 或 :math:`[N, D, H, W, C]` 的5-D Tensor,N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度,数据类型为float32或float64。 - - **pool_size** (int|list|tuple) - 池化核的大小。如果它是一个元组或列表,那么它包含三个整数值,(pool_size_Depth, pool_size_Height, pool_size_Width)。若为一个整数,则表示D,H和W维度上均为该值,比如若pool_size=2, 则池化核大小为[2,2,2]。 - - **pool_type** (str) - 池化类型,可以为"max"或"avg","max" 对应max-pooling, "avg" 对应average-pooling。默认值:"max"。 - - **pool_stride** (int|list|tuple) - 池化层的步长。如果它是一个元组或列表,那么它包含三个整数值,(pool_stride_Depth, pool_stride_Height, pool_stride_Width)。若为一个整数,则表示D,H和W维度上均为该值,比如若pool_stride=3, 则池化层步长为[3,3,3]。默认值:1。 - - **pool_padding** (int|list|tuple|str) - 池化填充。如果它是一个字符串,可以是"VALID"或者"SAME",表示填充算法,计算细节可参考上述 ``pool_padding`` = "SAME"或 ``pool_padding`` = "VALID" 时的计算公式。如果它是一个元组或列表,它可以有3种格式:(1)包含3个整数值:[pad_depth, pad_height, pad_width];(2)包含6个整数值:[pad_depth_front, pad_depth_back, pad_height_top, pad_height_bottom, pad_width_left, pad_width_right];(3)包含5个二元组:当 ``data_format`` 为"NCDHW"时为[[0,0], [0,0], [pad_depth_front, pad_depth_back], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right]],当 ``data_format`` 为"NDHWC"时为[[0,0], [pad_depth_front, pad_depth_back], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right], [0,0]]。若为一个整数,则表示D、H和W维度上均为该值。默认值:0。 - - **global_pooling** (bool)- 是否用全局池化。如果global_pooling = True,已设置的 ``pool_size`` 和 ``pool_padding`` 会被忽略, ``pool_size`` 将被设置为 :math:`[D_{in}, H_{in}, W_{in}]` , ``pool_padding`` 将被设置为0。默认值:False。 - - **use_cudnn** (bool)- 是否使用cudnn内核。只有已安装cudnn库时才有效。默认值:True。 - - **ceil_mode** (bool)- 是否用ceil函数计算输出的深度、高度和宽度。计算细节可参考上述 ``ceil_mode`` = true或 ``ceil_mode`` = false 时的计算公式。默认值:False。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - - **exclusive** (bool) - 是否在平均池化模式忽略填充值。计算细节可参考上述 ``exclusive`` = true或 ``exclusive`` = false 时的计算公式。默认值:True。 - - **data_format** (str) - 输入和输出的数据格式,可以是"NCDHW"和"NDHWC"。N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度。默认值:"NDCHW"。 - -返回: 5-D Tensor,数据类型与 ``input`` 一致。 - -返回类型:Variable。 - -抛出异常: - - ``ValueError`` - 如果 ``pool_type`` 既不是"max"也不是"avg"。 - - ``ValueError`` - 如果 ``global_pooling`` 为False并且 ``pool_size`` 为-1。 - - ``TypeError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - - ``ValueError`` - 如果 ``pool_padding`` 是字符串,既不是"SAME"也不是"VALID"。 - - ``ValueError`` - 如果 ``pool_padding`` 是"VALID",但是 ``ceil_mode`` 是True。 - - ``ValueError`` - 如果 ``pool_padding`` 含有5个二元组,与批尺寸对应维度的值不为0或者与通道对应维度的值不为0。 - - ``ShapeError`` - 如果 ``input`` 既不是4-D Tensor 也不是5-D Tensor。 - - ``ShapeError`` - 如果 ``input`` 的维度减去 ``pool_stride`` 的尺寸大小不是2。 - - ``ShapeError`` - 如果 ``pool_size`` 和 ``pool_stride`` 的尺寸大小不相等。 - - ``ShapeError`` - 如果计算出的输出形状的元素值不大于0。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data_NCDHW = fluid.data(name='data', shape=[None, 3, 8, 8, 8], dtype='float32') - - data_NDHWC = fluid.data(name='data', shape=[None, 8, 8, 8, 3], dtype='float32') - - # example 1: - # ceil_mode = False - out_1 = fluid.layers.pool3d( - input=data_NCDHW, # shape: [2, 3, 8, 8, 8] - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding=[2,2,1], # it is same as pool_padding = [2,2,2,2,1,1] - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCDHW") - # shape of out_1: [2, 3, 4, 4, 3] - - # example 2: - # ceil_mode = True (different from example 1) - out_2 = fluid.layers.pool3d( - input=data_NCDHW, - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding=[[0,0], [0,0], [2,2], [2,2], [1,1]], # it is same as pool_padding = [2,2,2,2,1,1] - global_pooling=False, - ceil_mode=True, - exclusive=True, - data_format="NCDHW") - # shape of out_2: [2, 3, 4, 4, 4] which is different from out_1 - - # example 3: - # pool_padding = "SAME" (different from example 1) - out_3 = fluid.layers.pool3d( - input=data_NCDHW, - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding="SAME", - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCDHW") - # shape of out_3: [2, 3, 3, 3, 3] which is different from out_1 - - # example 4: - # pool_padding = "VALID" (different from example 1) - out_4 = fluid.layers.pool3d( - input=data_NCDHW, - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding="VALID", - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NCDHW") - # shape of out_4: [2, 3, 2, 2, 2] which is different from out_1 - - # example 5: - # global_pooling = True (different from example 1) - # It will be set pool_size = [8,8,8] and pool_padding = [0,0,0] actually. - out_5 = fluid.layers.pool3d( - input=data_NCDHW, - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding=[2,2,1], - global_pooling=True, - ceil_mode=False, - exclusive=True, - data_format="NCDHW") - # shape of out_5: [2, 3, 1, 1, 1] which is different from out_1 - - # example 6: - # data_format = "NDHWC" (different from example 1) - out_6 = fluid.layers.pool3d( - input=data_NHWC, # shape: [2, 8, 8, 8, 3] - pool_size=[3,3,3], - pool_type='avg', - pool_stride=[3,3,3], - pool_padding=[2,2,1], - global_pooling=False, - ceil_mode=False, - exclusive=True, - data_format="NDHWC") - # shape of out_6: [2, 4, 4, 3, 3] which is different from out_1 - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/random_crop_cn.rst b/doc/paddle/api/paddle/nn/functional/random_crop_cn.rst deleted file mode 100644 index e9a229030384d8a9dd28ca0308654510f2326008..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/random_crop_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_random_crop: - -random_crop -------------------------------- - -.. py:function:: paddle.fluid.layers.random_crop(x, shape, seed=None) - -:alias_main: paddle.nn.functional.random_crop -:alias: paddle.nn.functional.random_crop,paddle.nn.functional.extension.random_crop -:old_api: paddle.fluid.layers.random_crop - - - -该操作对batch中每个实例进行随机裁剪,即每个实例的裁剪位置不同,裁剪位置由均匀分布随机数生成器决定。所有裁剪后的实例都具有相同的维度,由 ``shape`` 参数决定。 - -参数: - - **x(Variable)** - 多维Tensor。 - - **shape(list(int))** - 裁剪后最后几维的形状,注意, ``shape`` 的个数小于 ``x`` 的秩。 - - **seed(int|Variable,可选)** - 设置随机数种子,默认情况下,种子是[-65536,-65536)中一个随机数,如果类型是Variable,要求数据类型是int64,默认值:None。 - -返回: 裁剪后的Tensor。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - img = fluid.data("img", [None, 3, 256, 256]) - # cropped_img的shape: [-1, 3, 224, 224] - cropped_img = fluid.layers.random_crop(img, shape=[3, 224, 224]) - - # cropped_img2的shape: [-1, 2, 224, 224] - # cropped_img2 = fluid.layers.random_crop(img, shape=[2,224, 224]) - - # cropped_img3的shape: [-1, 3, 128, 224] - # cropped_img3 = fluid.layers.random_crop(img, shape=[128, 224]) - - - diff --git a/doc/paddle/api/paddle/nn/functional/relu6_cn.rst b/doc/paddle/api/paddle/nn/functional/relu6_cn.rst deleted file mode 100644 index 05c83c7e5e48c6fda17a075dd8bbd13f00c62c02..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/relu6_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_layers_relu6: - -relu6 -------------------------------- - -.. py:function:: paddle.fluid.layers.relu6(x, threshold=6.0, name=None) - -:alias_main: paddle.nn.functional.relu6 -:alias: paddle.nn.functional.relu6,paddle.nn.functional.activation.relu6 -:old_api: paddle.fluid.layers.relu6 - - - -relu6激活函数 - -.. math:: out=min(max(0, x), threshold) - - -参数: - - **x** (Variable) - 输入的多维 ``Tensor`` ,数据类型为:float32、float64。 - - **threshold** (float) - relu6的阈值。默认值为6.0 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 与 ``x`` 维度相同、数据类型相同的 ``Tensor``。 - -返回类型: Variable - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[-1,0],[2.5,7.8]]) - with fluid.dygraph.guard(): - x1 = fluid.dygraph.to_variable(in1) - out1 = fluid.layers.relu6(x=x1, threshold=6.0) - print(out1.numpy()) - # [[0. 0. ] - # [2.5 6. ]] diff --git a/doc/paddle/api/paddle/nn/functional/relu_cn.rst b/doc/paddle/api/paddle/nn/functional/relu_cn.rst deleted file mode 100644 index 6df2e05bea36cf96f6990269d6bb77952f15549e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/relu_cn.rst +++ /dev/null @@ -1,37 +0,0 @@ -.. _cn_api_fluid_layers_relu: - -relu -------------------------------- - -.. py:function:: paddle.fluid.layers.relu(x, name=None) - - - - -ReLU(Rectified Linear Unit)激活函数 - -.. math:: Out=max(0,x) - - -参数: - - **x** (Variable) - 输入的多维 ``Tensor`` ,数据类型为:float32、float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 与 ``x`` 维度相同、数据类型相同的 ``Tensor`` 。 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[-1,0],[1,2.6]]) - with fluid.dygraph.guard(): - x1 = fluid.dygraph.to_variable(in1) - out1 = fluid.layers.relu(x1) - print(out1.numpy()) - # [[0. 0. ] - # [1. 2.6]] diff --git a/doc/paddle/api/paddle/nn/functional/row_conv_cn.rst b/doc/paddle/api/paddle/nn/functional/row_conv_cn.rst deleted file mode 100644 index ab16bdbfbb86e42131b331a373b8e66e2a1099c1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/row_conv_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_row_conv: - -row_conv -------------------------------- - - -.. py:function:: paddle.fluid.layers.row_conv(input, future_context_size, param_attr=None, act=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口为行卷积(Row-convolution operator)或称之为超前卷积(lookahead convolution),最早介绍于DeepSpeech2论文中,论文链接: - - ``_ - -双向的RNN在深度语音模型中很有用,它通过对整个序列执行正向和反向传递来学习序列的表示。然而,与单向RNNs不同的是,在线部署和低延迟设置中,双向RNNs具有难度。超前卷积将来自未来子序列的信息以一种高效的方式进行计算,以改进单向递归神经网络。 row convolution operator 与一维序列卷积不同,计算方法如下: - -给定输入序列长度为 :math:`t` 的输入序列 :math:`X` 和输入维度 :math:`D` ,以及一个大小为 :math:`context * D` 的滤波器 :math:`W` ,输出序列卷积为: - -.. math:: - out_i = \sum_{j=i}^{i+context-1} X_{j} · W_{j-i} - -公式中: - - :math:`out_i` : 第i行输出变量形为[1, D]. - - :math:`context` : 下文(future context)大小 - - :math:`X_j` : 第j行输出变量,形为[1,D] - - :math:`W_{j-i}` : 第(j-i)行参数,其形状为[1,D]。 - -详细请参考 `设计文档 `_ 。 - -参数: - - **input** (Variable) -- 支持输入为LodTensor和Tensor,输入类型可以是[float32, float64],它支持可变时间长度的输入序列。当输入input为LodTensor时,其内部张量是一个具有形状(T x N)的矩阵,其中T是这个mini batch中的总的timestep,N是输入数据维数。当输入input为Tensor时,其形状为(B x T x N)的三维矩阵,B为mini batch大小,T为每个batch输入中的最大timestep,N是输入数据维数。当输入input为LoDTensor,形状为[9, N],LoD信息为[2, 3, 4],等价于输入input为形状是[3, 4, N]的Tensor。 - - **future_context_size** (int) -- 下文大小。请注意,卷积核的shape是[future_context_size + 1, N],N和输入input的数据维度N保持一致。 - - **param_attr** (ParamAttr) -- 参数的属性,包括名称、初始化器等。 - - **act** (str) -- 非线性激活函数。 - -返回:表示row_conv计算结果的Variable,数据类型、维度和输入input相同。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # LoDTensor input - x = fluid.layers.data(name='x', shape=[9, 16], - dtype='float32', lod_level=3, - append_batch_size=False) - out = fluid.layers.row_conv(input=x, future_context_size=2) - - # Tensor input - x = fluid.layers.data(name='x', shape=[9, 4, 16], - dtype='float32', - append_batch_size=False) - out = fluid.layers.row_conv(input=x, future_context_size=2) - - - diff --git a/doc/paddle/api/paddle/nn/functional/rpn_target_assign_cn.rst b/doc/paddle/api/paddle/nn/functional/rpn_target_assign_cn.rst deleted file mode 100644 index 3edc0ee06ede956fc25791c2c833ea6b473c2c9e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/rpn_target_assign_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_rpn_target_assign: - -rpn_target_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.rpn_target_assign(bbox_pred, cls_logits, anchor_box, anchor_var, gt_boxes, is_crowd, im_info, rpn_batch_size_per_im=256, rpn_straddle_thresh=0.0, rpn_fg_fraction=0.5, rpn_positive_overlap=0.7, rpn_negative_overlap=0.3, use_random=True) - -:alias_main: paddle.nn.functional.rpn_target_assign -:alias: paddle.nn.functional.rpn_target_assign,paddle.nn.functional.extension.rpn_target_assign -:old_api: paddle.fluid.layers.rpn_target_assign - - - -该OP用于为anchors分配分类标签和回归标签,以便用这些标签对RPN进行训练。 - -该OP将anchors分为两种类别,正和负。根据Faster-RCNN的paper,正类别anchor包括以下两种anchor: - -- 在与一个ground-truth boxes相交的所有anchor中,IoU最高的anchor -- 和任意一个ground-truth box的IoU超出了阈值 ``rpn_positive_overlap`` - -负类别anchor是和任何ground-truth boxes的IoU都低于阈值 ``rpn_negative_overlap`` 的anchor. - -正负anchors之外的anchors不会被选出来参与训练。 - -回归标签是ground-truth boxes和正类别anchor的偏移值。 - -参数: - - **bbox_pred** (Variable) - Shape为 ``[batch_size,M,4]`` 的3-D Tensor,表示M个边界框的预测位置。每个边界框有四个坐标值,即 ``[xmin,ymin,xmax,ymax]`` 。数据类型支持float32和float64。 - - **cls_logits** (Variable)- Shape为 ``[batch_size,M,1]`` 的3-D Tensor,表示预测的置信度。1是frontground和background的sigmoid,M是边界框的数量。数据类型支持float32和float64。 - - **anchor_box** (Variable) - Shape为 ``[M,4]`` 的2-D Tensor,它拥有M个框,每个框可表示为 ``[xmin,ymin,xmax,ymax]`` , ``[xmin,ymin]`` 是anchor框的左上部坐标,如果输入是图像特征图,则它们接近坐标系的原点。 ``[xmax,ymax]`` 是anchor框的右下部坐标。数据类型支持float32和float64。 - - **anchor_var** (Variable) - Shape为 ``[M,4]`` 的2-D Tensor,它拥有anchor的expand方差。数据类型支持float32和float64。 - - **gt_boxes** (Variable) - Shape为 ``[Ng,4]`` 的2-D LoDTensor, ``Ng`` 是一个batch内输入groundtruth boxes的总数。数据类型支持float32和float64。 - - **is_crowd** (Variable) –Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于标记boxes是否是crowd。数据类型支持int32。 - - **im_info** (Variable) - Shape为[N,3]的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和feature map相对于原始图像缩放的比例。数据类型支持int32。 - - **rpn_batch_size_per_im** (int,可选) - 整型数字。每个图像中RPN示例总数。数据类型支持int32。缺省值为256。 - - **rpn_straddle_thresh** (float,可选) - 浮点数字。超出图像外部 ``straddle_thresh`` 个像素的RPN anchors会被删除。数据类型支持float32。缺省值为0.0。 - - **rpn_fg_fraction** (float,可选) - 浮点数字。标记为foreground boxes的数量占batch内总体boxes的比例。 数据类型支持float32。缺省值为0.5。 - - **rpn_positive_overlap** (float,可选) - 浮点数字。和任意一个groundtruth box的 ``IoU`` 超出了阈值 ``rpn_positive_overlap`` 的box被判定为正类别。 数据类型支持float32。缺省值为0.7。 - - **rpn_negative_overlap** (float,可选) - 浮点数字。负类别anchor是和任何ground-truth boxes的IoU都低于阈值 ``rpn_negative_overlap`` 的anchor。 数据类型支持float32。缺省值为0.3。 - - **use_random** (bool,可选) – 布尔类型。是否使用随机采样来选择foreground boxes和background boxes。缺省值为True。 - -返回: 元组。格式为 ``(predicted_scores, predicted_location, target_label, target_bbox, bbox_inside_weight)`` - - **predicted_scores** (Varible) - RPN预测的类别结果。Shape为 ``[F + B,1]`` 的2D Tensor。 ``F`` 为foreground anchor的数量,B为background anchor的数量。数据类型与 ``bbox_pred`` 一致。 - - **predicted_location** (Variable) - RPN预测的位置结果。Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - - **target_label** (Variable) - Shape为 ``[F + B,1]`` 的2D Tensor。数据类型为int32。 - - **target_bbox** (Variable) - Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - - **Bbox_inside_weight** (Variable) - Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - -返回类型:元组 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - bbox_pred = fluid.layers.data(name='bbox_pred', shape=[100, 4], - append_batch_size=False, dtype='float32') - cls_logits = fluid.layers.data(name='cls_logits', shape=[100, 1], - append_batch_size=False, dtype='float32') - anchor_box = fluid.layers.data(name='anchor_box', shape=[20, 4], - append_batch_size=False, dtype='float32') - anchor_var = fluid.layers.data(name='anchor_var', shape=[20, 4], - append_batch_size=False, dtype='float32') - gt_boxes = fluid.layers.data(name='gt_boxes', shape=[10, 4], - append_batch_size=False, dtype='float32') - is_crowd = fluid.layers.data(name='is_crowd', shape=[1], - append_batch_size=False, dtype='float32') - im_info = fluid.layers.data(name='im_infoss', shape=[1, 3], - append_batch_size=False, dtype='float32') - loc_pred, score_pred, loc_target, score_target, bbox_inside_weight= - fluid.layers.rpn_target_assign(bbox_pred, cls_logits, - anchor_box, anchor_var, gt_boxes, is_crowd, im_info) - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/selu_cn.rst b/doc/paddle/api/paddle/nn/functional/selu_cn.rst deleted file mode 100644 index 4aee591bcc8dd87d0df0e9f0ef8faed224d5c5f1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/selu_cn.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. _cn_api_fluid_layers_selu: - -selu -------------------------------- - -.. py:function:: paddle.fluid.layers.selu(x, scale=None, alpha=None, name=None) - -:alias_main: paddle.nn.functional.selu -:alias: paddle.nn.functional.selu,paddle.nn.functional.activation.selu -:old_api: paddle.fluid.layers.selu - - - -SeLU激活函数,其公式如下: - -.. math:: - selu= \lambda* - \begin{cases} - x &\quad \text{ if } x>0 \\ - \alpha * e^x - \alpha &\quad \text{ if } x<=0 - \end{cases} - -输入 ``x`` 可以选择性携带LoD信息。输出和它共享此LoD信息(如果有)。 - -参数: - - **x** (Variable) - 输入变量,为数据类型为float32,float64的多维Tensor或者LoDTensor。 - - **scale** (float,可选) – 可选,表示SeLU激活函数中的λ的值,其默认值为 1.0507009873554804934193349852946。 详情请见: `Self-Normalizing Neural Networks `_。 - - **alpha** (float,可选) – 可选,表示SeLU激活函数中的α的值,其默认值为 1.6732632423543772848170429916717。 详情请见: `Self-Normalizing Neural Networks `_。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:一个Tensor,shape和输入Tensor相同。 - -返回类型:Variable(Tensor|LoDTensor),LoD信息与输入Tensor一致。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - inputs = fluid.layers.data(name="x", shape=[2, 2], dtype="float32") - output = fluid.layers.selu(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([[0, 1],[2, 3]]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) # [array([[0. , 1.050701],[2.101402, 3.152103]], dtype=float32)] - - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/sigmoid_cn.rst b/doc/paddle/api/paddle/nn/functional/sigmoid_cn.rst deleted file mode 100755 index fb5ccd21da695a2f3c840663797b66a5ccaff54c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/sigmoid_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_sigmoid: - -sigmoid -------------------------------- - -.. py:function:: paddle.fluid.layers.sigmoid(x, name=None) - - - - -sigmoid激活函数 - -.. math:: - out = \frac{1}{1 + e^{-x}} - - -参数: - - - **x** (Tensor|LoDTensor)- 数据类型为float32,float64。激活函数的输入值。 - - **name** (str|None) - 该层名称(可选)。若为空,则自动为该层命名。默认:None - -返回:激活函数的输出值 - -返回类型:Variable(Tensor),数据类型为float32的Tensor。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.layers.data(name="input", shape=[-1, 3]) - result = fluid.layers.sigmoid(data) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(3, 3) - output= exe.run(feed={"input": x}, - fetch_list=[result[0]]) - print(output) - """ - output: - [array([0.50797188, 0.71353652, 0.5452265 ])] - """ - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/similarity_focus_cn.rst b/doc/paddle/api/paddle/nn/functional/similarity_focus_cn.rst deleted file mode 100644 index 5024493c825ea66ac0ed63ec35f05cc73e2e45e9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/similarity_focus_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_layers_similarity_focus: - -similarity_focus -------------------------------- - -.. py:function:: paddle.fluid.layers.similarity_focus(input, axis, indexes, name=None) - -:alias_main: paddle.nn.functional.similarity_focus -:alias: paddle.nn.functional.similarity_focus,paddle.nn.functional.extension.similarity_focus -:old_api: paddle.fluid.layers.similarity_focus - - - -**实现SimilarityFocus(相似度聚焦)运算** - -通过以下三个步骤,该层生成一个和输入 ``input`` 同形的 similarity focus mask(相似度聚焦掩码): - -1. 根据 ``axis`` 和 ``indexes`` 提取一个三维张量,第一维为batch大小。 - 例如,如果 ``axis=1, indexes=[a]`` , 将得到矩阵 T=X[:, a, :, :] 。 - 该例中,如果输入X的形为 (BatchSize, A, B, C) ,则输出张量T的形为 (BatchSize, B, C) 。 -2. 对于每一个索引,在输出T中找到最大值。所以同一行、同一列最多只有一个数字,这意味着如果在第i行,第j列中找到最大值,那么在相应行、列中的其他数值都将被忽略。然后再在剩余的数值中找到下一个最大值。显然,将会产生 min(B,C)个数字,并把三维相似聚焦掩码张量相应位置的元素置为1,其余则置为0。对每个索引按元素进行or运算。 -3. 将这个三维相似度聚焦掩码张量 broadcast 成输入 ``input`` 的形状 - -请参考 `Similarity Focus Layer `_ 。 - -:: - - 例如 : - - 给定四维张量 x 形为 (BatchSize, C, A, B), 其中C 为通道Channel数目, - 特征图(feature map)的形为(A,B): - - x.shape = (2, 3, 2, 2) - x.data = [[[[0.8, 0.1], - [0.4, 0.5]], - - [[0.9, 0.7], - [0.9, 0.9]], - - [[0.8, 0.9], - [0.1, 0.2]]], - - - [[[0.2, 0.5], - [0.3, 0.4]], - - [[0.9, 0.7], - [0.8, 0.4]], - - [[0.0, 0.2], - [0.4, 0.7]]]] - - 给定轴: 1 (即channel轴) - 给定索引: [0] - - 于是我们得到一个与输入同形的四维输出张量: - out.shape = (2, 3, 2, 2) - out.data = [[[[1.0, 0.0], - [0.0, 1.0]], - - [[1.0, 0.0], - [0.0, 1.0]], - - [[1.0, 0.0], - [0.0, 1.0]]], - - [[[0.0, 1.0], - [1.0, 0.0]], - - [[0.0, 1.0], - [1.0, 0.0]], - - [[0.0, 1.0], - [1.0, 0.0]]]] - - - -参数: - - **input** (Variable) – 输入张量,应为一个四维张量,形为[BatchSize, A, B, C],数据类型为 float32 或者 float64。 - - **axis** (int) – 指明要选择的轴。 可能取值为 1, 2 或 3。 - - **indexes** (list) – 指明选择维度的索引列表。 - -返回:一个和输入 Variable 同形状、同数据类型的 Variable - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data( - name='data', shape=[-1, 3, 2, 2], dtype='float32') - fluid.layers.similarity_focus(input=data, axis=1, indexes=[0]) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/soft_relu_cn.rst b/doc/paddle/api/paddle/nn/functional/soft_relu_cn.rst deleted file mode 100644 index dc8912ca4f15478b703df53a3f1a58f7e97c5668..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/soft_relu_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_fluid_layers_soft_relu: - -soft_relu -------------------------------- - -.. py:function:: paddle.fluid.layers.soft_relu(x, threshold=40.0, name=None) - -:alias_main: paddle.nn.functional.soft_relu -:alias: paddle.nn.functional.soft_relu,paddle.nn.functional.activation.soft_relu -:old_api: paddle.fluid.layers.soft_relu - - - -SoftReLU 激活函数. - -.. math:: out=ln(1+exp(max(min(x,threshold),-threshold))) - -参数: - - **x** (Variable) - SoftReLU激活函数的输入,为数据类型为float32,float64的多维Tensor或者LoDTensor。 - - **threshold** (float) - SoftRelu的阈值,默认为40.0。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:一个Tensor,shape和输入Tensor相同。 - -返回类型:Variable(Tensor|LoDTensor),LoD信息与输入Tensor一致。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - inputs = fluid.layers.data(name="x", shape=[2, 2], dtype="float32") - output = fluid.layers.soft_relu(inputs, threshold=20.0) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.array([[0, 1],[2, 3]]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) # [array([[0.6931472, 1.3132616], [2.126928 , 3.0485873]], dtype=float32)] - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/softplus_cn.rst b/doc/paddle/api/paddle/nn/functional/softplus_cn.rst deleted file mode 100644 index 34ffe22854ec38f6e4d6379ff4925f002005901a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/softplus_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_softplus: - -softplus -------------------------------- - -.. py:function:: paddle.fluid.layers.softplus(x,name=None) - -:alias_main: paddle.nn.functional.softplus -:alias: paddle.nn.functional.softplus,paddle.nn.functional.activation.softplus -:old_api: paddle.fluid.layers.softplus - - - -softplus激活函数 - -.. math:: - out = \ln(1 + e^{x}) - -参数: - - **x** (Variable) - 张量(Tensor) - - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.softplus(data) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/softshrink_cn.rst b/doc/paddle/api/paddle/nn/functional/softshrink_cn.rst deleted file mode 100644 index b3a1af822dfe31a96ad9802e5b4795f1ea10624c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/softshrink_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_softshrink: - -softshrink -------------------------------- - -.. py:function:: paddle.fluid.layers.softshrink(x, alpha=None) - -:alias_main: paddle.nn.functional.softshrink -:alias: paddle.nn.functional.softshrink,paddle.nn.functional.activation.softshrink -:old_api: paddle.fluid.layers.softshrink - - - -Softshrink激活函数 - -.. math:: - out = \begin{cases} - x - \alpha, \text{if } x > \alpha \\ - x + \alpha, \text{if } x < -\alpha \\ - 0, \text{otherwise} - \end{cases} - -参数: - - **x** (Variable0 - 张量(Tensor) - - **alpha** (float) - 上面公式中alpha的值 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.softshrink(data) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/softsign_cn.rst b/doc/paddle/api/paddle/nn/functional/softsign_cn.rst deleted file mode 100644 index ca46bf270800dd0764d000c9b3275a45553c0bb1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/softsign_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_softsign: - -softsign -------------------------------- - -.. py:function:: paddle.fluid.layers.softsign(x,name=None) - -:alias_main: paddle.nn.functional.softsign -:alias: paddle.nn.functional.softsign,paddle.nn.functional.activation.softsign -:old_api: paddle.fluid.layers.softsign - - - - -softsign激活函数 - -.. math:: - out = \frac{x}{1 + |x|} - -参数: - - **x** (Variable) - 张量(Tensor) - - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.softsign(data) - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/swish_cn.rst b/doc/paddle/api/paddle/nn/functional/swish_cn.rst deleted file mode 100644 index 85ab54d4c1830bdac80f80e1e1454dc3e0308808..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/swish_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_swish: - -swish -------------------------------- - -.. py:function:: paddle.fluid.layers.swish(x, beta=1.0, name=None) - -:alias_main: paddle.nn.functional.swish -:alias: paddle.nn.functional.swish,paddle.nn.functional.activation.swish -:old_api: paddle.fluid.layers.swish - - - -逐元素计算 Swish 激活函数,参考 `Searching for Activation Functions `_ 。 - -.. math:: - out = \frac{x}{1 + e^{- beta * x}} - -参数: - - **x** (Variable) - 多维 Tensor 或 LoDTensor,数据类型为 float32,float64。 - - **beta** (float) - Swish operator 的常量 beta,默认值为 1.0。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - Swish op 的结果,多维 Tensor 或 LoDTensor。数据类型为 float32 或 float64,数据类型以及形状和输入 x 一致。 - -返回类型: - - Variable - - -**代码示例:** - -.. code-block:: python - - # 静态图使用 - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.swish(x, beta=2.0) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - start = fluid.default_startup_program() - main = fluid.default_main_program() - - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[-1.1239197 , 1.3391294 , 0.03921051], - # [ 1.1970421 , 0.02440812, 1.2055548 ]], dtype=float32) - y_np - # array([[-0.2756806 , 1.0610548 , 0.01998957], - # [ 0.9193261 , 0.01235299, 0.9276883 ]], dtype=float32) - -.. code-block:: python - - # 动态图使用 - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.swish(x) - y_np = y.numpy() - data - # array([[-0.0816701 , 1.1603649 , -0.88325626], - # [ 0.7522361 , 1.0978601 , 0.12987892]], dtype=float32) - y_np - # array([[-0.03916847, 0.8835007 , -0.25835553], - # [ 0.51126915, 0.82324016, 0.06915068]], dtype=float32) - - diff --git a/doc/paddle/api/paddle/nn/functional/tanh_shrink_cn.rst b/doc/paddle/api/paddle/nn/functional/tanh_shrink_cn.rst deleted file mode 100644 index 6002d1216918b363c9c7a890d40456c37e9b88f5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/tanh_shrink_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_tanh_shrink: - -tanh_shrink -------------------------------- - -.. py:function:: paddle.fluid.layers.tanh_shrink(x, name=None) - -:alias_main: paddle.nn.functional.tanh_shrink -:alias: paddle.nn.functional.tanh_shrink,paddle.nn.functional.activation.tanh_shrink -:old_api: paddle.fluid.layers.tanh_shrink - - - -tanh_shrink激活函数 - -.. math:: - out = x - \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} - -参数: - - - **x** - TanhShrink算子的输入 - - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - -返回: 张量(Tensor) - -返回类型: 变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[32, 784]) - result = fluid.layers.tanh_shrink(data) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/target_assign_cn.rst b/doc/paddle/api/paddle/nn/functional/target_assign_cn.rst deleted file mode 100644 index 61bd9787dad47e8778d9259dd2d2c4dbbefeddd8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/target_assign_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_layers_target_assign: - -target_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.target_assign(input, matched_indices, negative_indices=None, mismatch_value=None, name=None) - -:alias_main: paddle.nn.functional.target_assign -:alias: paddle.nn.functional.target_assign,paddle.nn.functional.extension.target_assign -:old_api: paddle.fluid.layers.target_assign - - - -对于每个实例,根据 ``match_indices`` 和 ``negative_indices`` 位置索引, 给输入 ``out`` 和 ``out_weight`` 赋值。输入 ``input`` 和 ``negative_indices`` 均为2-D LoDTensor。假如 ``input`` 中每个实例的行偏移称作lod,该操作计算步骤如下: - -1.根据match_indices赋值: - -.. code-block:: text - - If id = match_indices[i][j] > 0, - - out[i][j][0 : K] = X[lod[i] + id][j % P][0 : K] - out_weight[i][j] = 1. - - Otherwise, - - out[j][j][0 : K] = {mismatch_value, mismatch_value, ...} - out_weight[i][j] = 0. - -2.如果提供neg_indices,则再次依据该输入赋值: - -neg_indices中的第i个实例的索引称作neg_indice,则对于第i个实例: - -.. code-block:: text - - for id in neg_indice: - out[i][id][0 : K] = {mismatch_value, mismatch_value, ...} - out_weight[i][id] = 1.0 - -参数: - - **input** (Variable) - 输入为3-D LoDTensor,为了方便在上述文档中解释,假如维度是[M,P,K]。 - - **matched_indices** (Variable) - 输入为2-D Tensor,数据类型为int32,表示在输入中匹配位置,具体计算如上,同样,为了方便解释,假如维度大小为[N,P],如果 ``matched_indices[i][j]`` 为-1,表示在第 ``i`` 个实例中第j列项没有任何匹配项,输出会设置成 ``mismatch_value`` 。 - - **negative_indices** (Variable,可选) - 维度为2-D LoDTensor,数据类型为int32。可以不设置,如果设置,会依据该位置索引再次给输出赋值,具体参考上述文档。 - - **mismatch_value** (float32,可选) - 未匹配的位置填充值。 - - **name** (str) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:返回一个元组(out,out_weight)。out是三维张量,维度为[N,P,K],N和P与 ``matched_indices`` 中的N和P一致,K和输入X中的K一致。 ``out_weight`` 的维度为[N,P,1]。 - -返回类型:tuple(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data( - name='x', - shape=[4, 20, 4], - dtype='float', - lod_level=1) - matched_id = fluid.data( - name='indices', - shape=[8, 20], - dtype='int32') - trg, trg_weight = fluid.layers.target_assign( - x, - matched_id, - mismatch_value=0) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/temporal_shift_cn.rst b/doc/paddle/api/paddle/nn/functional/temporal_shift_cn.rst deleted file mode 100644 index acde7a2951aeaec7760094c27332bbe023da3cdc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/temporal_shift_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_temporal_shift: - -temporal_shift -------------------------------- -.. py:function:: paddle.fluid.layers.temporal_shift(x, seg_num, shift_ratio=0.25, name=None) - -:alias_main: paddle.nn.functional.temporal_shift -:alias: paddle.nn.functional.temporal_shift,paddle.nn.functional.extension.temporal_shift -:old_api: paddle.fluid.layers.temporal_shift - - - -该OP用于对输入X做时序通道T上的位移操作,为TSM(Temporal Shift Module)中使用的操作。 - -输入(X)的形状应为[N*T, C, H, W],N是批大小,T是 ``seg_num`` 指定的时间段号,C是通道号,H和W是特征的高度和宽度。 - -时间偏移计算如下: - -步骤1:将输入(X)reshape为[N, T, C, H, W]。 - -步骤2:填充0到第二个(T)尺寸的变形结果,填充宽度每边为1,填充结果的形状为[N,T+2,C,H,W]。 - -步骤3:假设 ``shift_ratio`` 为1/4,切片填充结果如下: - -.. math:: - - slice1 &= x[:, :T, :C/4, :, :] - - slice2 &= x[:, 2:T+2, C/4:C/2, :, :] - - slice3 &= x[:, 1:T+1, C/2:, :, :] - -步骤4:沿第3(C)维连接三个切片,并将结果重塑为[N*T, C, H, W]。 - -有关时序移动的详细信息,请参阅文件: `Temporal Shift Module `_ - -参数: - - **x** (Variable) – 时移算符的输入张量。维度为 :math:`[N*T,C,H,W]` 的4-D Tensor。N为批量大小,T为时间段数,C为信道数,H为特征高度,W为特征宽度,数据类型为float32或float64。 - - **seg_num** (int) – 时间段编号,这应该是一个正整数。 - - **shift_ratio** (float) – 通道的移位比、通道的第一个 ``shift_ratio`` 部分沿时间维度移动-1,通道的第二个 ``shift_ratio`` 部分沿时间维度移动1,范围须在[0, 0.5]内。默认值0.25 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - -返回:Variable(Tensor) 时序位移后的输出张量,维度与输入 ``x`` 一致。 - -返回类型:变量(Variable),数据类型与输入 ``x`` 一致。 - -抛出异常: ``TypeError`` – seg_num 必须是int类型 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.data(name='input', shape=[None,4,2,2], dtype='float32') - out = fluid.layers.temporal_shift(x=input, seg_num=2, shift_ratio=0.2) - - - diff --git a/doc/paddle/api/paddle/nn/functional/thresholded_relu_cn.rst b/doc/paddle/api/paddle/nn/functional/thresholded_relu_cn.rst deleted file mode 100644 index e4942697680025e6145c476612d3a1668e643f47..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/thresholded_relu_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_thresholded_relu: - -thresholded_relu -------------------------------- - -.. py:function:: paddle.fluid.layers.thresholded_relu(x,threshold=None) - -:alias_main: paddle.nn.functional.thresholded_relu -:alias: paddle.nn.functional.thresholded_relu,paddle.nn.functional.activation.thresholded_relu -:old_api: paddle.fluid.layers.thresholded_relu - - - -逐元素计算 ThresholdedRelu激活函数。 - -.. math:: - - out = \left\{\begin{matrix} - x, &if x > threshold\\ - 0, &otherwise - \end{matrix}\right. - -参数: - - **x** (Variable) -ThresholdedRelu Op 的输入,多维 Tensor 或 LoDTensor,数据类型为 float32,float64。 - - **threshold** (float,可选)-激活函数的 threshold 值,如 threshold 值为 None,则其值为 1.0。 - -返回: - - 多维 Tensor 或 LoDTensor, 数据类型为 float32 或 float64, 和输入 x 的数据类型相同,形状和输入 x 相同。 - -返回类型: - - Variable - -**代码示例**: - -.. code-block:: python - - # 静态图使用 - import numpy as np - from paddle import fluid - - x = fluid.data(name="x", shape=(-1, 3), dtype="float32") - y = fluid.layers.thresholded_relu(x, threshold=0.1) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - start = fluid.default_startup_program() - main = fluid.default_main_program() - data = np.random.randn(2, 3).astype("float32") - exe.run(start) - y_np, = exe.run(main, feed={"x": data}, fetch_list=[y]) - - data - # array([[ 0.21134382, -1.1805999 , 0.32876605], - # [-1.2210793 , -0.7365624 , 1.0013918 ]], dtype=float32) - y_np - # array([[ 0.21134382, -0. , 0.32876605], - # [-0. , -0. , 1.0013918 ]], dtype=float32) - - -.. code-block:: python - - # 动态图使用 - import numpy as np - from paddle import fluid - import paddle.fluid.dygraph as dg - - data = np.random.randn(2, 3).astype("float32") - place = fluid.CPUPlace() - with dg.guard(place) as g: - x = dg.to_variable(data) - y = fluid.layers.thresholded_relu(x, threshold=0.1) - y_np = y.numpy() - data - # array([[ 0.21134382, -1.1805999 , 0.32876605], - # [-1.2210793 , -0.7365624 , 1.0013918 ]], dtype=float32) - y_np - # array([[ 0.21134382, -0. , 0.32876605], - # [-0. , -0. , 1.0013918 ]], dtype=float32) diff --git a/doc/paddle/api/paddle/nn/functional/unfold_cn.rst b/doc/paddle/api/paddle/nn/functional/unfold_cn.rst deleted file mode 100644 index 4422467062eb9865d286f8a08faf834b4d256c76..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/unfold_cn.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. _cn_api_fluid_layers_unfold: - -unfold -------------------------------- - -.. py:function:: paddle.fluid.layers.unfold(x, kernel_size, strides=1, paddings=0, dilation=1, name=None) - -:alias_main: paddle.nn.functional.unfold -:alias: paddle.nn.functional.unfold,paddle.nn.functional.common.unfold -:old_api: paddle.fluid.layers.unfold - - - -该OP实现的功能与卷积中用到的im2col函数一样,通常也被称作为im2col过程。对于每一个卷积核覆盖下的区域,元素会被重新排成一列。当卷积核在整个图片上滑动时,将会形成一系列的列向量。对于每一个输入形状为[N, C, H, W]的 ``x`` ,都将会按照下面公式计算出一个形状为[N, Cout, Lout]的输出。 - - -.. math:: - - dkernel[0] &= dilations[0] * (kernel\_sizes[0] - 1) + 1 - - dkernel[1] &= dilations[1] * (kernel\_sizes[1] - 1) + 1 - - hout &= \frac{H + paddings[0] + paddings[2] - dkernel[0]}{strides[0]} + 1 - - wout &= \frac{W + paddings[1] + paddings[3] - dkernel[1]}{strides[1]} + 1 - - Cout &= C * kernel\_sizes[0] * kernel\_sizes[1] - - Lout &= hout * wout - -**样例**: - -:: - - Given: - x.shape = [5, 10, 25, 25] - kernel_size = [3, 3] - strides = 1 - paddings = 1 - - Return: - out.shape = [5, 90, 625] - - -参数: - - **x** (Variable) – 输入4-D Tensor,形状为[N, C, H, W],数据类型为float32或者float64 - - **kernel_size** (int|list of int) – 卷积核的尺寸,整数或者整型列表。如果为整型列表,应包含两个元素 ``[k_h, k_w]`` ,卷积核大小为 ``k_h * k_w`` ;如果为整数k,会被当作整型列表 ``[k, k]`` 处理 - - **strides** (int|list of int,可选) – 卷积步长,整数或者整型列表。如果为整型列表,应该包含两个元素 ``[stride_h, stride_w]`` 。如果为整数,则 ``stride_h = stride_w = strides`` 。默认值为1 - - **paddings** (int|list of int,可选) – 每个维度的扩展, 整数或者整型列表。如果为整型列表,长度应该为4或者2;长度为4 对应的padding参数是:[padding_top, padding_left,padding_bottom, padding_right],长度为2对应的padding参数是[padding_h, padding_w],会被当作[padding_h, padding_w, padding_h, padding_w]处理。如果为整数padding,则会被当作[padding, padding, padding, padding]处理。默认值为0 - - **dilations** (int|list of int,可选) – 卷积膨胀,整型列表或者整数。如果为整型列表,应该包含两个元素[dilation_h, dilation_w]。如果是整数dilation,会被当作整型列表[dilation, dilation]处理。默认值为1 - - **name** (str|None,可选) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - - -返回: unfold操作之后的结果,形状如上面所描述的[N, Cout, Lout],Cout每一个滑动block里面覆盖的元素个数,Lout是滑动block的个数,数据类型与 ``x`` 相同 - -返回类型: Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name = 'data', shape = [3, 224, 224], dtype = 'float32') - y = fluid.layers.unfold(x, [3, 3], 1, 1, 1) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/affine_channel_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/affine_channel_cn.rst deleted file mode 100644 index c810d489a98304681ab230606d87b13bfed49ca4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/affine_channel_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_affine_channel: - -affine_channel -------------------------------- - -.. py:function:: paddle.fluid.layers.affine_channel(x, scale=None, bias=None, data_layout='NCHW', name=None,act=None) - -:alias_main: paddle.nn.functional.affine_channel -:alias: paddle.nn.functional.affine_channel,paddle.nn.functional.vision.affine_channel -:old_api: paddle.fluid.layers.affine_channel - - - -对输入的每个 channel 应用单独的仿射变换。用于将空间批量归一化替换为其等价的固定变换。 - -输入也可以是二维张量,并在第二维应用仿射变换。 - -参数: - - **x** (Variable): 特征图输入可以是一个具有NCHW格式或NHWC格式的的4-D张量。它也可以是二维张量,此时该算法应用于第二维度的仿射变换。数据类型为float32或float64。 - - **scale** (Variable): 维度为(C)的一维输入,第C个元素为输入的第C通道仿射变换的尺度因子。数据类型为float32或float64。 - - **bias** (Variable): 维度为(C)的一维输入,第C个元素是输入的第C个通道的仿射变换的偏置。数据类型为float32或float64。 - - **data_layout** (str,可选): 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。如果输入是一个2D张量,可以忽略该参数,默认值为"NCHW"。 - - **name** (str,可选): 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **act** (str,可选): 应用于该层输出的激活函数,默认值为None。 - -返回:与x具有相同维度和数据布局的张量, 数据类型与x相同 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name='data', shape=[3, 32, 32], - dtype='float32') - input_scale = fluid.layers.create_parameter(shape=[3], - dtype="float32") - input_bias = fluid.layers.create_parameter(shape=[3], - dtype="float32") - out = fluid.layers.affine_channel(data,scale=input_scale, - bias=input_bias) - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/affine_grid_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/affine_grid_cn.rst deleted file mode 100644 index 287116d9f5f6845eb0f874a78c329ca49676b14d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/affine_grid_cn.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _cn_api_fluid_layers_affine_grid: - -affine_grid -------------------------------- - -.. py:function:: paddle.fluid.layers.affine_grid(theta, out_shape, name=None) - -:alias_main: paddle.nn.functional.affine_grid -:alias: paddle.nn.functional.affine_grid,paddle.nn.functional.vision.affine_grid -:old_api: paddle.fluid.layers.affine_grid - - - -该OP用于生成仿射变换前后的feature maps的坐标映射关系。在视觉应用中,根据该OP得到的映射关系,将输入feature map的像素点变换到对应的坐标,就得到了经过仿射变换的feature map。 - -参数: - - **theta** (Variable) - Shape为 ``[batch_size, 2, 3]`` 的Tensor,表示batch_size个 ``2X3`` 的变换矩阵。数据类型支持float32,float64。 - - **out_shape** (Variable | list | tuple) - 类型可以是1-D Tensor、list或tuple。用于表示在仿射变换中的输出的shape,其格式 ``[N, C, H, W]`` ,分别为输出feature map的batch size、channel数量、高和宽。数据类型支持int32。 - - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:api_guide_Name ,默认值为None。 - -返回: Variable。Shape为 ``[N, H, W, 2]`` 的4-D Tensor,表示仿射变换前后的坐标的映射关系。其中,N、H、W分别为仿射变换中输出feature map的batch size、高和宽。 数据类型与 ``theta`` 一致。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - theta = fluid.layers.data(name="x", shape=[2, 3], dtype="float32") - out_shape = fluid.layers.data(name="y", shape=[-1], dtype="float32") - data = fluid.layers.affine_grid(theta, out_shape) - # or - data = fluid.layers.affine_grid(theta, [5, 3, 28, 28]) diff --git a/doc/paddle/api/paddle/nn/functional/vision/anchor_generator_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/anchor_generator_cn.rst deleted file mode 100644 index ada0130cce84b1f94d57f60859b04f3b83d1d6ca..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/anchor_generator_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_anchor_generator: - -anchor_generator -------------------------------- - -.. py:function:: paddle.fluid.layers.anchor_generator(input, anchor_sizes=None, aspect_ratios=None, variance=[0.1, 0.1, 0.2, 0.2], stride=None, offset=0.5, name=None) - -:alias_main: paddle.nn.functional.anchor_generator -:alias: paddle.nn.functional.anchor_generator,paddle.nn.functional.vision.anchor_generator -:old_api: paddle.fluid.layers.anchor_generator - - - -**Anchor generator operator** - -为RCNN算法生成anchor,输入的每一位产生N个anchor,N=size(anchor_sizes)*size(aspect_ratios)。生成anchor的顺序首先是aspect_ratios循环,然后是anchor_sizes循环。 - -参数: - - **input** (Variable) - 维度为[N,C,H,W]的4-D Tensor。数据类型为float32或float64。 - - **anchor_sizes** (float32|list|tuple,可选) - 生成anchor的anchor大小,以绝对像素的形式表示,例如:[64.,128.,256.,512.]。若anchor的大小为64,则意味着这个anchor的面积等于64**2。默认值为None。 - - **aspect_ratios** (float32|list|tuple,可选) - 生成anchor的高宽比,例如[0.5,1.0,2.0]。默认值为None。 - - **variance** (list|tuple,可选) - 变量,在框回归delta中使用,数据类型为float32。默认值为[0.1,0.1,0.2,0.2]。 - - **stride** (list|tuple,可选) - anchor在宽度和高度方向上的步长,比如[16.0,16.0],数据类型为float32。默认值为None。 - - **offset** (float32,可选) - 先验框的中心位移。默认值为0.5 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - - 表示输出anchor的Tensor,数据类型为float32或float64。维度为[H,W,num_anchors,4]。 ``H`` 是输入的高度, ``W`` 是输入的宽度, ``num_anchors`` 是输入每位的框数,每个anchor格式(未归一化)为(xmin,ymin,xmax,ymax) - - - 表示输出variance的Tensor,数据类型为float32或float64。维度为[H,W,num_anchors,4]。 ``H`` 是输入的高度, ``W`` 是输入的宽度, ``num_anchors`` 是输入每个位置的框数,每个变量的格式为(xcenter,ycenter,w,h)。 - - -返回类型:Variable - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - conv1 = fluid.data(name='conv1', shape=[None, 48, 16, 16], dtype='float32') - anchor, var = fluid.layers.anchor_generator( - input=conv1, - anchor_sizes=[64, 128, 256, 512], - aspect_ratios=[0.5, 1.0, 2.0], - variance=[0.1, 0.1, 0.2, 0.2], - stride=[16.0, 16.0], - offset=0.5) diff --git a/doc/paddle/api/paddle/nn/functional/vision/bipartite_match_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/bipartite_match_cn.rst deleted file mode 100644 index 23f2832d97d605b6a80af69ec8ceafbdc3ad9d40..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/bipartite_match_cn.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _cn_api_fluid_layers_bipartite_match: - -bipartite_match -------------------------------- - -.. py:function:: paddle.fluid.layers.bipartite_match(dist_matrix, match_type=None, dist_threshold=None, name=None) - -:alias_main: paddle.nn.functional.bipartite_match -:alias: paddle.nn.functional.bipartite_match,paddle.nn.functional.vision.bipartite_match -:old_api: paddle.fluid.layers.bipartite_match - - - -该OP实现了贪心二分匹配算法,该算法用于根据输入距离矩阵获得与最大距离的匹配。对于输入二维矩阵,二分匹配算法可以找到每一行的匹配列(匹配意味着最大距离),也可以找到每列的匹配行。此算子仅计算列到行的匹配索引。对于每个实例,匹配索引的数量是 -输入距离矩阵的列号。**该OP仅支持CPU** - -它有两个输出,匹配的索引和距离。简单的描述是该算法将最佳(最大距离)行实体与列实体匹配,并且匹配的索引在ColToRowMatchIndices的每一行中不重复。如果列实体与任何行实体不匹配,则ColToRowMatchIndices设置为-1。 - -注意:输入距离矩阵可以是LoDTensor(带有LoD)或Tensor。如果LoDTensor带有LoD,则ColToRowMatchIndices的高度是批量大小。如果是Tensor,则ColToRowMatchIndices的高度为1。 - -注意:此API是一个非常低级别的API。它由 ``ssd_loss`` 层使用。请考虑使用 ``ssd_loss`` 。 - -参数: - - **dist_matrix** (Variable)- 维度为:[K,M]的2-D LoDTensor,数据类型为float32或float64。它是由每行和每列来表示实体之间的成对距离矩阵。例如,假设一个实体是具有形状[K]的A,另一个实体是具有形状[M]的B. dist_matrix [i] [j]是A[i]和B[j]之间的距离。距离越大,匹配越好。注意:此张量可以包含LoD信息以表示一批输入。该批次的一个实例可以包含不同数量的实体。 - - **match_type** (str,可选)- 匹配方法的类型,应为'bipartite'或'per_prediction'。默认值为None,即'bipartite'。 - - **dist_threshold** (float32,可选)- 如果match_type为'per_prediction',则此阈值用于根据最大距离确定额外匹配的bbox,默认值为None,即0.5。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - - matched_indices(Variable)- 维度为[N,M]的2-D Tensor, 数据类型为int32。 N是批量大小。如果match_indices[i][j]为-1,则表示B[j]与第i个实例中的任何实体都不匹配。否则,这意味着在第i个实例中B[j]与行match_indices[i][j]匹配。第i个实>例的行号保存在match_indices[i][j]中。 - - matched_distance(Variable)- 维度为[N,M]的2-D Tensor, 数据类型为float32,。 N是批量大小。如果match_indices[i][j]为-1,则match_distance[i][j]也为-1.0。否则,假设match_distance[i][j]=d,并且每个实例的行偏移称为LoD。然后match_distance[i][j]=dist_matrix[d]+ LoD[i]][j]。 - - -返回类型:Tuple - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[None, 4], dtype='float32') - y = fluid.data(name='y', shape=[None, 4], dtype='float32') - iou = fluid.layers.iou_similarity(x=x, y=y) - matched_indices, matched_dist = fluid.layers.bipartite_match(iou) diff --git a/doc/paddle/api/paddle/nn/functional/vision/box_clip_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/box_clip_cn.rst deleted file mode 100644 index 2b5b4ad767b52a49333a9aada0cfce187e71aa1a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/box_clip_cn.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _cn_api_fluid_layers_box_clip: - -box_clip -------------------------------- - -.. py:function:: paddle.fluid.layers.box_clip(input, im_info, name=None) - -:alias_main: paddle.nn.functional.box_clip -:alias: paddle.nn.functional.box_clip,paddle.nn.functional.vision.box_clip -:old_api: paddle.fluid.layers.box_clip - - - -将检测框框剪切为 ``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) – 维度为[N_1, N_2, ..., N_k, 4]的多维Tensor,其中最后一维为box坐标维度。数据类型为float32或float64。 - - **im_info** (Variable) – 维度为[N, 3]的2-D Tensor,N为输入图片个数。具有(高度height,宽度width,比例scale)图像的信息,其中高度和宽度是输入大小,比例是输入大小和原始大小的比率。数据类型为float32或float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 表示剪切后的检测框的Tensor或LoDTensor,数据类型为float32或float64,形状与输入检测框相同 - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - boxes = fluid.data( - name='boxes', shape=[None, 8, 4], dtype='float32', lod_level=1) - im_info = fluid.data(name='im_info', shape=[None, 3]) - out = fluid.layers.box_clip( - input=boxes, im_info=im_info) diff --git a/doc/paddle/api/paddle/nn/functional/vision/box_coder_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/box_coder_cn.rst deleted file mode 100644 index eb991c1e53e93aa4bfa4b0aa512cf5d78465ee84..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/box_coder_cn.rst +++ /dev/null @@ -1,96 +0,0 @@ -.. _cn_api_fluid_layers_box_coder: - -box_coder -------------------------------- - -.. py:function:: paddle.fluid.layers.box_coder(prior_box, prior_box_var, target_box, code_type='encode_center_size', box_normalized=True, name=None, axis=0) - -:alias_main: paddle.nn.functional.box_coder -:alias: paddle.nn.functional.box_coder,paddle.nn.functional.vision.box_coder -:old_api: paddle.fluid.layers.box_coder - - - -Bounding Box Coder - -编码/解码带有先验框信息的目标边界框 - -编码规则描述如下: - -.. math:: - - ox &= (tx - px)/pw/pxv - - oy &= (ty - py)/ph/pyv - - ow &= log(abs(tw/pw))/pwv - - oh &= log(abs(th/ph))/phv - -解码规则描述如下: - -.. math:: - - ox &= (pw * pxv * tx * + px ) - tw/2 - - oy &= (ph * pyv * ty * + py ) - th/2 - - ow &= exp(pwv * tw ) * pw + tw/2 - - oh &= exp(phv * th ) * ph + th/2 - -其中tx,ty,tw,th分别表示目标框的中心坐标、宽度和高度。同样地,px,py,pw,ph表示先验框地中心坐标、宽度和高度。pxv,pyv,pwv,phv表示先验框变量,ox,oy,ow,oh表示编码/解码坐标、宽度和高度。 - - -在Box Decoding期间,支持两种broadcast模式。 假设目标框具有形状[N,M,4],并且prior框的形状可以是[N,4]或[M,4]。 然后,prior框将沿指定的轴broadcast到目标框。 - - -参数: - - **prior_box** (Variable) - 维度为[M,4]的2-D Tensor,M表示存储M个框,数据类型为float32或float64。先验框,每个框代表[xmin,ymin,xmax,ymax],[xmin,ymin]是先验框的左顶点坐标,如果输入数图像特征图,则接近坐标原点。[xmax,ymax]是先验框的右底点坐 -标 - - **prior_box_var** (list|Variable|None) - 支持三种输入类型,一是维度为:math:`[M,4]`的2-D Tensor,存储M个先验框的variance,数据类型为float32或float64。另外是一个长度为4的列表,所有先验框共用这个列表中的variance,数据类型为float32或float64。为None时不参与计算。 - - **target_box** (Variable) - 数据类型为float,double的Tensor或者LoDTensor,当code_type为‘encode_center_size’,输入是二维LoDTensor,维度为[N,4],N为目标框的个数,目标框的格式与先验框相同。当code_type为‘decode_center_size’,输>入为3-D Tensor,维度为[N,M,4]。通常N表示产生检测框的个数,M表示类别数。此时目标框为偏移量。 - - **code_type** (str) - 编码类型用目标框,可以是encode_center_size或decode_center_size,默认值为`encode_center_size` - - **box_normalized** (bool) - 先验框坐标是否正则化,即是否在[0, 1]区间内。默认值为true - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **axis** (int32) – 在PriorBox中为axis指定的轴broadcast以进行框解码,例如,如果axis为0,TargetBox具有形状[N,M,4]且PriorBox具有形状[M,4],则PriorBox将broadcast到[N,M,4]用于解码。仅在code_type为decode_center_size时有效。默认值为0 - - -返回: - - 表示解码或编码结果的Tensor或LoDTensor。数据类型为float32或float64。 - - ``code_type`` 为 ``‘encode_center_size’`` 时,形状为[N,M,4]的编码结果,N为目标框的个数,M为先验框的个数。 - - ``code_type`` 为 ``‘decode_center_size’`` 时,形状为[N,M,4]的解码结果,形状与输入目标框相同。 - - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # For encode - prior_box_encode = fluid.data(name='prior_box_encode', - shape=[512, 4], - dtype='float32') - target_box_encode = fluid.data(name='target_box_encode', - shape=[81,4], - dtype='float32') - output_encode = fluid.layers.box_coder(prior_box=prior_box_encode, - prior_box_var=[0.1,0.1,0.2,0.2], - target_box=target_box_encode, - code_type="encode_center_size") - # For decode - prior_box_decode = fluid.data(name='prior_box_decode', - shape=[512, 4], - dtype='float32') - target_box_decode = fluid.data(name='target_box_decode', - shape=[512,81,4], - dtype='float32') - output_decode = fluid.layers.box_coder(prior_box=prior_box_decode, - prior_box_var=[0.1,0.1,0.2,0.2], - target_box=target_box_decode, - code_type="decode_center_size", - box_normalized=False, - axis=1) diff --git a/doc/paddle/api/paddle/nn/functional/vision/box_decoder_and_assign_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/box_decoder_and_assign_cn.rst deleted file mode 100644 index df65ef34c8563521040a6851646e4b23192f7424..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/box_decoder_and_assign_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_layers_box_decoder_and_assign: - -box_decoder_and_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.box_decoder_and_assign(prior_box, prior_box_var, target_box, box_score, box_clip, name=None) - -:alias_main: paddle.nn.functional.box_decoder_and_assign -:alias: paddle.nn.functional.box_decoder_and_assign,paddle.nn.functional.vision.box_decoder_and_assign -:old_api: paddle.fluid.layers.box_decoder_and_assign - - - -边界框编码器。 - -根据先验框来解码目标边界框。 - -解码方案为: - -.. math:: - - ox &= (pw \times pxv \times tx + px) - \frac{tw}{2}\\ - oy &= (ph \times pyv \times ty + py) - \frac{th}{2}\\ - ow &= \exp (pwv \times tw) \times pw + \frac{tw}{2}\\ - oh &= \exp (phv \times th) \times ph + \frac{th}{2} - -其中tx,ty,tw,th分别表示目标框的中心坐标,宽度和高度。 类似地,px,py,pw,ph表示prior_box(anchor)的中心坐标,宽度和高度。 pxv,pyv,pwv,phv表示prior_box的variance,ox,oy,ow,oh表示decode_box中的解码坐标,宽度和高度。 - -box decode过程得出decode_box,然后分配方案如下所述: - -对于每个prior_box,使用最佳non-background(非背景)类的解码值来更新prior_box位置并获取output_assign_box。 因此,output_assign_box的形状与PriorBox相同。 - - - -参数: - - **prior_box** (Variable) - 维度为[N,4]的2-D Tensor,包含N个框,数据类型为float32或float64。每个框表示为[xmin,ymin,xmax,ymax], [xmin,ymin]是anchor框的左上坐标,如果输入是图像特征图,则它们接近坐标系的原点。 [xmax,ymax]是anchor框的右下坐标 - - **prior_box_var** (Variable) - 维度为[N,4]的2-D Tensor,包含N组variance。数据类型为float32或float64。 prior_box_var默认将所有元素设置为1 - - **target_box** (Variable) - 维度为[N,classnum * 4]的2-D Tensor或LoDTensor,拥有N个目标框,数据类型为float32或float64。 - - **box_score** (Variable) - 维度为[N,classnum]的2-D Tensor或LoDTensor,拥有N个目标框,数据类型为float32或float64。表示每个框属于各分类概率值。 - - **box_clip** (float32) - 裁剪框以防止溢出,默认值为4.135(即np.log(1000. / 16.)) - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: - - - 表示解压检测框的Tensor或LoDTensor,数据类型为float32,float64。维度为[N,classnum * 4],N个prior_box解码得到的N个目标框的结果。 - - 表示输出最佳检测框的Tensor或LoDTensor,数据类型为float32,float64。维度为[N,4],N个prior_box解码后得到目标框,再选择最佳非背景类的目标框结果。 - - -返回类型:Tuple - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - pb = fluid.data( - name='prior_box', shape=[None, 4], dtype='float32') - pbv = fluid.data( - name='prior_box_var', shape=[4], dtype='float32') - loc = fluid.data( - name='target_box', shape=[None, 4*81], dtype='float32') - scores = fluid.data( - name='scores', shape=[None, 81], dtype='float32') - decoded_box, output_assign_box = fluid.layers.box_decoder_and_assign( - pb, pbv, loc, scores, 4.135) - diff --git a/doc/paddle/api/paddle/nn/functional/vision/collect_fpn_proposals_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/collect_fpn_proposals_cn.rst deleted file mode 100644 index 9c00888befa5a82ec0296f9f51496bea1697f273..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/collect_fpn_proposals_cn.rst +++ /dev/null @@ -1,55 +0,0 @@ -.. _cn_api_fluid_layers_collect_fpn_proposals: - -collect_fpn_proposals -------------------------------- - -.. py:function:: paddle.fluid.layers.collect_fpn_proposals(multi_rois, multi_scores, min_level, max_level, post_nms_top_n, name=None) - -:alias_main: paddle.nn.functional.collect_fpn_proposals -:alias: paddle.nn.functional.collect_fpn_proposals,paddle.nn.functional.vision.collect_fpn_proposals -:old_api: paddle.fluid.layers.collect_fpn_proposals - - - -**该op仅支持LoDTensor输入**。连接多级RoIs(感兴趣区域)并依据multi_scores选择N个RoIs。此操作执行以下步骤: -1、选择num_level个RoIs和scores作为输入:num_level = max_level - min_level -2、连接num_level个RoIs和scores。 -3、对scores排序并选择post_nms_top_n个scores。 -4、通过scores中的选定位置收集RoIs。 -5、通过对应的batch_id重新对RoIs排序。 - - -参数: - - **multi_rois** (list) – 要收集的RoIs列表,列表中的元素为[N, 4]的2-D LoDTensor, 数据类型为float32或float64,其中N为RoI的个数。 - - **multi_scores** (list) - 要收集的RoIs对应分数的列表,列表中的元素为[N, 1]的2-D LoDTensor, 数据类型为float32或float64,其中N为RoI的个数。 - - **min_level** (int) - 要收集的FPN层的最低级 - - **max_level** (int) – 要收集的FPN层的最高级 - - **post_nms_top_n** (int) – 所选RoIs的数目 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:表示选定具有高分数的RoIs的LoDTensor,数据类型为float32或float64,同时具有LoD信息,维度为[M, 4],其中M为post_nms_top_n。 - - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - multi_rois = [] - multi_scores = [] - for i in range(4): - multi_rois.append(fluid.data( - name='roi_'+str(i), shape=[None, 4], dtype='float32', lod_level=1)) - for i in range(4): - multi_scores.append(fluid.data( - name='score_'+str(i), shape=[None, 1], dtype='float32', lod_level=1)) - - fpn_rois = fluid.layers.collect_fpn_proposals( - multi_rois=multi_rois, - multi_scores=multi_scores, - min_level=2, - max_level=5, - post_nms_top_n=2000) diff --git a/doc/paddle/api/paddle/nn/functional/vision/deformable_roi_pooling_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/deformable_roi_pooling_cn.rst deleted file mode 100644 index bcccb58ca3fd10fd79903184f59362b936e63804..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/deformable_roi_pooling_cn.rst +++ /dev/null @@ -1,102 +0,0 @@ -.. _cn_api_fluid_layers_deformable_roi_pooling: - -deformable_roi_pooling -------------------------------- - -.. py:function:: paddle.fluid.layers.deformable_roi_pooling(input, rois, trans, no_trans=False, spatial_scale=1.0, group_size=[1, 1], pooled_height=1, pooled_width=1, part_size=None, sample_per_part=1, trans_std=0.1, position_sensitive=False, name=None) - -:alias_main: paddle.nn.functional.deformable_roi_pooling -:alias: paddle.nn.functional.deformable_roi_pooling,paddle.nn.functional.vision.deformable_roi_pooling -:old_api: paddle.fluid.layers.deformable_roi_pooling - - - -可变形感兴趣区域(ROI)池化层 - -该OP对输入进行了可形变的感兴趣区域(ROI)池化操作。如同 `可形变卷积网络 `_ 描述的一样,它将为每个bin中的像素获取一个偏移量,以便于在合适的位置进行池化。在完成可变形感兴趣区域(ROI)池化操作之后,批量数将变为候选框的数量。 - -可变形感兴趣区域(ROI)池化包含三个步骤: - -1、将获取的候选区域按照设定的池化宽度和池化高度划分成相同大小的区域。 - -2、将得到的位置偏移量添加到候选区域的像素来得到新的位置,并且通过双线性插值去获取那些偏移之后位置不为整数的像素的值。 - -3、在每一个bin中去均匀采样一些像素点,获取其中的均值去作为我们的输出。 - - -参数: - - **input** (Variable) - 可变形感兴趣区域(ROI)池化层的输入,输入为数据类型为float32的Tensor。输入张量的形状为[N,C,H,W]。其中N是批量大小,C是输入通道的数量,H是特征的高度,W是特征的宽度。 - - **rois** (Variable)- 将池化的ROIs(感兴趣区域),应为一个形状为(num_rois,4)的2-D LoDTensor,且lod level为1。其中值为[[x1,y1,x2,y2],...],(x1,y1)为左上角坐标,(x2, y2)为右下角坐标。 - - **trans** (Variable)- 池化时ROIs上的特征偏移,输入为数据类型为float32的Tensor。格式为[N,C,H,W],其中N是ROIs的数量,C是通道的数量,指示x和y方向上的偏移距离,H是池化的高度,W是池化的宽度。 - - **no_trans** (bool)- 确定roi池化阶段是否加入偏移以获取新的输出。其中值为bool变量,取True或False。如果为True,则表示不加入偏移。默认为False。 - - **spatial_scale** (float) - 输入特征图的高度(或宽度)与原始图像高度(或宽度)的比率,其中数值的类型为float32,并且等于卷积图层中总步长的倒数,默认为1.0。 - - **group_size** (list|tuple)- 输入通道划分成的组数,输入为list 或者 tuple,其中数值类型为int32(例如,输入通道的数量是k1 * k2 * (C + 1),其中k1和k2是组宽度和高度,C + 1是输出通道的数量。如(4,6)中4是组的高度,6是组的宽度)。默认为[1,1]。 - - **pooled_height** (int)- 池化后输出的高度, 值的类型为int32,默认值:1。 - - **pooled_width** (int)- 池化后输出的宽度, 值的类型为int32, 默认值:1。 - - **part_size** (list|tuple)- 偏移的高度和宽度,如(4,6)代表高度为4、宽度为6,常规是高度和宽度等于pooled_height和pooled_width。默认为None,此时默认值为[pooled_height,pooled_width]。 - - **sample_per_part** (int)- 每个bin中的样本数量,设置值越大,采样结果越精细,但是更加消耗性能。默认为1。 - - **trans_std** (float)- 偏移系数,控制偏移量的大小,默认为0.1。 - - **position_sensitive** (bool)- 是否选择可变形位置敏感型感兴趣区域(PSROI)池化模式,数值类型为bool型。如果为False,输入维度和输出维度相等。如果为True,输入维度等于输出维度乘以pooled_width和pooled_height。默认为False。 - - **name** (str)- 此层的名称,默认为None。 - -返回: 可变形感兴趣区域(ROI)池化的输出,如果position_sensitive为False,输出维度和输出维度相等。如果position_sensitive为True,输出维度等于输入维度除以pooled_width和pooled_height。 - - -返回类型: Variable, 数据类型为float32. - -**代码示例** - -.. code-block:: python - - #position_sensitive=False - - import paddle.fluid as fluid - input = fluid.data(name="input", - shape=[2, 192, 64, 64], - dtype='float32') - rois = fluid.data(name="rois", - shape=[-1, 4], - dtype='float32', - lod_level=1) - trans = fluid.data(name="trans", - shape=[2, 384, 64, 64], - dtype='float32') - x = fluid.layers.deformable_roi_pooling(input=input, - rois=rois, - trans=trans, - no_trans=False, - spatial_scale=1.0, - group_size=(1, 1), - pooled_height=8, - pooled_width=8, - part_size=(8, 8), - sample_per_part=4, - trans_std=0.1, - position_sensitive=False) - - #position_sensitive=True - - import paddle.fluid as fluid - input = fluid.data(name="input", - shape=[2, 192, 64, 64], - dtype='float32') - rois = fluid.data(name="rois", - shape=[-1, 4], - dtype='float32', - lod_level=1) - trans = fluid.data(name="trans", - shape=[2, 384, 64, 64], - dtype='float32') - x = fluid.layers.deformable_roi_pooling(input=input, - rois=rois, - trans=trans, - no_trans=False, - spatial_scale=1.0, - group_size=(1, 1), - pooled_height=8, - pooled_width=8, - part_size=(8, 8), - sample_per_part=4, - trans_std=0.1, - position_sensitive=True) - diff --git a/doc/paddle/api/paddle/nn/functional/vision/density_prior_box_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/density_prior_box_cn.rst deleted file mode 100644 index c88bff497978ffa81b31b332df065ff2e265c77a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/density_prior_box_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_layers_density_prior_box: - -density_prior_box -------------------------------- - -.. py:function:: paddle.fluid.layers.density_prior_box(input, image, densities=None, fixed_sizes=None, fixed_ratios=None, variance=[0.1, 0.1, 0.2, 0.2], clip=False, steps=[0.0, 0.0], offset=0.5, flatten_to_2d=False, name=None) - -:alias_main: paddle.nn.functional.density_prior_box -:alias: paddle.nn.functional.density_prior_box,paddle.nn.functional.vision.density_prior_box -:old_api: paddle.fluid.layers.density_prior_box - - - - -该OP为SSD算法(Single Shot MultiBox Detector)生成density prior box,在每个 ``input`` 的位置产生N个候选框,其中,N由 ``densities`` , ``fixed_sizes`` 和 ``fixed_ratios`` 来计算。生成的每个输入位置附近的候选框中心(网格点)由 ``densities`` 和 ``density prior box`` 的数量计算,其中 ``density prior box`` 的数量由 ``fixed_sizes`` 和 ``fixed_ratios`` 决定。``fixed_sizes`` 和 ``densities`` 的大小一致。 - -.. math:: - - N\_density\_prior\_box =sum(N\_fixed\_ratios * {densities\_i}^2) - - -参数: - - **input** (Variable) - 形状为NCHW的4-D Tensor,数据类型为float32或float64。 - - **image** (Variable) - 输入图像,形状为NCHW的4-D Tensor,数据类型为float32或float64。 - - **densities** (list|tuple|None) - 生成的density prior boxes的densities,此属性应该是一个整数列表或数组。默认值为None。 - - **fixed_sizes** (list|tuple|None) - 生成的density prior boxes的大小,此属性应该为和 :attr:`densities` 有同样长度的列表或数组。默认值为None。 - - **fixed_ratios** (list|tuple|None) - 生成的density prior boxes的比值,如果该属性未被设置,同时 :attr:`densities` 和 :attr:`fix_sizes` 被设置,则 :attr:`aspect_ratios` 被用于生成 density prior boxes - - **variance** (list|tuple) - 将被用于density prior boxes编码的方差,默认值为:[0.1, 0.1, 0.2, 0.2] - - **clip** (bool) - 是否裁剪超出范围的box。默认值:False - - **step** (list|tuple) - Prior boxes在宽度和高度的步长,如果step[0]等于0.0或step[1]等于0.0, input的the density prior boxes的高度/宽度的步长将被自动计算。默认值:Default: [0., 0.] - - **offset** (float) - Prior boxes中心偏移值,默认为:0.5 - - **flatten_to_2d** (bool) - 是否将output prior boxes和方差 ``flatten`` 至2-D,其中第二个dim为4。默认值:False - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - -返回:含有两个变量的元组,包括: - 候选框: - - 当flatten_to_2d为False时,形状为[H, W, num_priors, 4]的4-D Tensor。 - 当flatten_to_2d为True时,形式为[H * W * num_priors, 4]的 2-D Tensor。 - 其中,H是输入的高度,W是输入的宽度,num_priors是输入中每个位置的候选框数。 - - 候选框的方差: - - 当flatten_to_2d为False时,形状为[H, W, num_priors, 4]的4-D Tensor。 - 当flatten_to_2d为True时,形式为[H * W * num_priors, 4]的2-D Tensor。 - 其中,H是输入的高度,W是输入的宽度,num_priors是输入中每个位置的候选框数。 - -返回类型:元组 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9]) - images = fluid.layers.data(name="images", shape=[3,9,12]) - box, var = fluid.layers.density_prior_box( - input=input, - image=images, - densities=[4, 2, 1], - fixed_sizes=[32.0, 64.0, 128.0], - fixed_ratios=[1.], - clip=True, - flatten_to_2d=True) diff --git a/doc/paddle/api/paddle/nn/functional/vision/detection_output_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/detection_output_cn.rst deleted file mode 100644 index 9d39e7881dc9b191dcec464b3a190404aef933d1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/detection_output_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_detection_output: - -detection_output -------------------------------- - -.. py:function:: paddle.fluid.layers.detection_output(loc, scores, prior_box, prior_box_var, background_label=0, nms_threshold=0.3, nms_top_k=400, keep_top_k=200, score_threshold=0.01, nms_eta=1.0) - -:alias_main: paddle.nn.functional.detection_output -:alias: paddle.nn.functional.detection_output,paddle.nn.functional.vision.detection_output -:old_api: paddle.fluid.layers.detection_output - - - -给定回归位置偏移、置信度以及先验框信息计算检测的输出,执行步骤如下: - - 1.根据先验框(``prior_box``)信息和回归位置偏移解码出预测框坐标。 - - 2.通过多类非极大值抑制(NMS)获得最终检测输出。 - -请注意,该操作符没有将最终输出边界框clip至图像大小。 - -参数: - - **loc** (Variable) - 3-D Tensor,数据类型为float32或float64,表示回归位置偏移。维度为[N,M,4],M是输入的预测bounding box的个数,N是batch size,每个bounding box有四个坐标值,格式为[xmin,ymin,xmax,ymax],[xmin,ymin]是左上角坐标,[xmax,ymax]是右下角坐标。 - - **scores** (Variable) - 3-D Tensor,数据类型为float32或float64,表示未归一化的置信度。维度为[N,M,C],N和M的含义同上,C是类别数。 - - **prior_box** (Variable) - 2-D Tensor,表示先验框。维度为[M,4],M是提取的先验框个数,格式为[xmin,ymin,xmax,ymax]。 - - **prior_box_var** (Variable) - 2-D Tensor,表示先验框的方差,和 ``prior_box`` 维度相同。 - - **background_label** (int) - 背景标签类别值,背景标签类别上不做NMS。若设为-1,将考虑所有类别。默认值是0。 - - **nms_threshold** (float) - 用于NMS的阈值(threshold),默认值是0.3。 - - **nms_top_k** (int) - 基于score_threshold过滤预测框后,NMS操作前,要挑选出的置信度高的预测框的个数。默认值是400。 - - **keep_top_k** (int) - NMS操作后,要挑选的bounding box总数。默认值是200。 - - **score_threshold** (float) - 置信度得分阈值(Threshold),在NMS之前用来过滤低置信数的边界框(bounding box)。若未提供,则考虑所有框。默认值是0.001。 - - **nms_eta** (float) - 一种adaptive NMS的参数,仅当该值小于1.0时才起作用。默认值是1.0。 - -返回: - 输出是2-D LoDTensor,形状为[No,6]。每行有6个值:[label,confidence,xmin,ymin,xmax,ymax]。No是该mini-batch总的检测框数。LoD的层级数为1,如果采用偏移的LoD表示,则第i个图像有 ``LoD[i+1] - LoD[i]`` 个检测结果,如果等于0,则表示无检测结果。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - pb = fluid.data(name='prior_box', shape=[10, 4], dtype='float32') - pbv = fluid.data(name='prior_box_var', shape=[10, 4], dtype='float32') - loc = fluid.data(name='target_box', shape=[2, 21, 4], dtype='float32') - scores = fluid.data(name='scores', shape=[2, 21, 10], dtype='float32') - nmsed_outs = fluid.layers.detection_output(scores=scores, - loc=loc, - prior_box=pb, - prior_box_var=pbv) - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/distribute_fpn_proposals_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/distribute_fpn_proposals_cn.rst deleted file mode 100644 index 33cbb83a59486ec75eef9962b0af3035f61e3415..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/distribute_fpn_proposals_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_distribute_fpn_proposals: - -distribute_fpn_proposals -------------------------------- - -.. py:function:: paddle.fluid.layers.distribute_fpn_proposals(fpn_rois, min_level, max_level, refer_level, refer_scale, name=None) - -:alias_main: paddle.nn.functional.distribute_fpn_proposals -:alias: paddle.nn.functional.distribute_fpn_proposals,paddle.nn.functional.vision.distribute_fpn_proposals -:old_api: paddle.fluid.layers.distribute_fpn_proposals - - - -**该op仅支持LoDTensor输入**。在 Feature Pyramid Networks(FPN)模型中,需要依据proposal的尺度和参考尺度与级别将所有proposal分配到不同的FPN级别中。 此外,为了恢复proposals的顺序,我们返回一个数组,该数组表示当前proposals中的原始RoIs索引。 要计算每个RoI的FPN级别,公式如下: - -.. math:: - roi\_scale &= \sqrt{BBoxArea(fpn\_roi)}\\ - level = floor(&\log(\frac{roi\_scale}{refer\_scale}) + refer\_level) - -其中BBoxArea方法用来计算每个RoI的区域。 - - -参数: - - **fpn_rois** (Variable) - 维度为[N,4]的2-D LoDTensor,其中N为检测框的个数,数据类型为float32或float64。 - - **min_level** (int32) - 产生proposal最低级别FPN层。 - - **max_level** (int32) - 产生proposal最高级别FPN层。 - - **refer_level** (int32) - 具有指定比例的FPN层的引用级别。 - - **refer_scale** (int32) - 具有指定级别的FPN层的引用比例。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - - multi_rois(List)- 长度为(max_level-min_level+1)的列表,其中元素为Variable,维度为[M, 4]的2-D LoDTensor,M为每个级别proposal的个数,数据类型为float32或float64。表示每个FPN级别包含的proposals。 - - restore_ind(Variable)- 维度为[N,1]的Tensor,N是总rois的数量。数据类型为int32。 它用于恢复fpn_rois的顺序。 - - -返回类型:Tuple - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - fpn_rois = fluid.data( - name='data', shape=[None, 4], dtype='float32', lod_level=1) - multi_rois, restore_ind = fluid.layers.distribute_fpn_proposals( - fpn_rois=fpn_rois, - min_level=2, - max_level=5, - refer_level=4, - refer_scale=224) diff --git a/doc/paddle/api/paddle/nn/functional/vision/fsp_matrix_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/fsp_matrix_cn.rst deleted file mode 100644 index 97937d7c8225b6be736eb2616a7a220ab35f4b7a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/fsp_matrix_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_fsp_matrix: - -fsp_matrix -------------------------------- - -.. py:function:: paddle.fluid.layers.fsp_matrix(x, y) - -:alias_main: paddle.nn.functional.fsp_matrix -:alias: paddle.nn.functional.fsp_matrix,paddle.nn.functional.vision.fsp_matrix -:old_api: paddle.fluid.layers.fsp_matrix - - - -**FSP matrix op** - -fsp_matrix op用于计算两个4-D Tensor特征图的求解过程(FSP)矩阵。假设特征图x的形状为 :math:`[x\_channel,h,w]` ,特征图y的形状为 :math:`[y\_channel,h,w]` ,fsp_matrix op分两步得到x和y的fsp矩阵: - -1.将x reshape到形状为 :math:`[x\_channel,h*w]` 的矩阵,将y reshape到形状为 :math:`[h*w,y\_channel]` 的矩阵。 - -2.对x和y做矩阵乘法得到形状为 :math:`[x\_channel,y\_channel]` 的fsp矩阵。 - -输出是一个batch的fsp矩阵。 - -参数: - - **x** (Variable): 一个形状为 :math:`[batch\_size, x\_channel, height, width]` 的 4-D 特征图Tensor, 数据类型为float32或float64。 - - **y** (Variable):一个形状为 :math:`[batch\_size, y\_channel, height, width]` 的 4-D 特征图Tensor, 数据类型为float32或float64。y_channel可以与输入(x)的x_channel不同,而其他维度必须与输入(x)相同。 - -返回:一个形状为 :math:`[batch\_size, x\_channel, y\_channel]` 的fsp矩阵, 是一个 3-D Tensor,数据类型与输入数据类型一致。其中,x_channel是输入x的通道数,y_channel是输入y的通道数。数据类型为float32或float64。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name='data', shape=[3, 32, 32]) - feature_map_0 = fluid.layers.conv2d(data, num_filters=2, - filter_size=3) - feature_map_1 = fluid.layers.conv2d(feature_map_0, num_filters=2, - filter_size=1) - loss = fluid.layers.fsp_matrix(feature_map_0, feature_map_1) - diff --git a/doc/paddle/api/paddle/nn/functional/vision/generate_mask_labels_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/generate_mask_labels_cn.rst deleted file mode 100644 index 51854d3898e3f968a1f6704b7784edbcc6155755..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/generate_mask_labels_cn.rst +++ /dev/null @@ -1,93 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.generate_mask_labels -:alias: paddle.nn.functional.generate_mask_labels,paddle.nn.functional.vision.generate_mask_labels -:old_api: paddle.fluid.layers.generate_mask_labels - - - -**为Mask-RCNN生成mask标签** - -对于给定的 RoI (Regions of Interest) 和 输入ground truth的分类标签和分割的坐标标签,采样出前景RoI,并返回其在输入 ``rois`` 中索引位置,并对每个RoI生成 :math:`K*M^{2}` 的二值mask标签。K为类别个数,M是RoI特征图大小。这些输出目标一般用于计算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 Tensor,数据类型为float32。 N是batch size,其每个元素是图像的高度、宽度、比例,比例是图片预处理时resize之后的大小和原始大小的比例 :math:`\frac{target\_size}{original\_size}` 。 - - **gt_classes** (Variable) – 维度为[M,1]的2-D LoDTensor,数据类型为int32,LoD层数为1。 M是的groud-truth总数,其每个元素是类别索引。 - - **is_crowd** (Variable) – 维度和 ``gt_classes`` 相同的 LoDTensor,数据类型为int32,每个元素指示一个ground-truth是否为crowd(crowd表示一组对象的集合)。 - - **gt_segms** (Variable) – 维度为[S,2]的2D LoDTensor,它的LoD层数为3,数据类型为float32。通常用户不需要理解LoD,但用户应该在Reader中返回正确的数据格式。LoD[0]表示每个实例中GT对象的数目。 LoD[1]表示每个GT对象的标签分段数。LoD[2]表示每个分段标签多边形(polygon)坐标点的个数。S为所有示例的标签的多边形坐标点的总数。每个元素是(x,y)坐标点。 - - **rois** (Variable) – 维度维度[R,4]的2-D LoDTensor,LoD层数为1,数据类型为float32。 R是RoI的总数,其中每个元素是在原始图像范围内具有(xmin,ymin,xmax,ymax)格式的bounding box。 - - **labels_int32** (Variable) – 形为[R,1]且类型为int32的2-D LoDTensor,数据类型为int32。 R与 ``rois`` 中的R含义相同。每个元素表示RoI框的一个类别标签索引。 - - **num_classes** (int) – 类别数目。 - - **resolution** (int) – 特征图分辨率大小。 - -返回: - - mask_rois (Variable): 维度为[P,4]的2-D LoDTensor,数据类型为float32。P是采样出的RoI总数,每个元素都是在原始图像大小范围内具有[xmin,ymin,xmax,ymax]格式的bounding box。 - - mask_rois_has_mask_int32(Variable):维度为[P,1]的2-D LoDTensor,数据类型为int32。每个元素表示采样出的RoI在输入 ``rois`` 内的位置索引。 - - mask_int32(Variable):维度为[P,K * M * M]的2-D LoDTensor,数据类型为int32。K为种类数,M为特征图的分辨率大小,每个元素都是二值mask标签。 - -返回类型:tuple(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - im_info = fluid.data(name="im_info", shape=[None, 3], dtype="float32") - gt_classes = fluid.data(name="gt_classes", shape=[None, 1], - dtype="float32", lod_level=1) - is_crowd = fluid.data(name="is_crowd", shape=[None, 1], - dtype="float32", lod_level=1) - gt_masks = fluid.data(name="gt_masks", shape=[None, 2], - dtype="float32", lod_level=3) - # rois, roi_labels 可以是fluid.layers.generate_proposal_labels的输出 - rois = fluid.data(name="rois", shape=[None, 4], - dtype="float32", lod_level=1) - roi_labels = fluid.data(name="roi_labels", shape=[None, 1], - dtype="int32", lod_level=1) - 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=roi_labels, - num_classes=81, - resolution=14) - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/generate_proposal_labels_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/generate_proposal_labels_cn.rst deleted file mode 100644 index a957d20deaa3b9f05ce21436c49526c760e5094f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/generate_proposal_labels_cn.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. _cn_api_fluid_layers_generate_proposal_labels: - -generate_proposal_labels -------------------------------- - -.. py:function:: paddle.fluid.layers.generate_proposal_labels(rpn_rois, gt_classes, is_crowd, gt_boxes, im_info, batch_size_per_im=256, fg_fraction=0.25, fg_thresh=0.25, bg_thresh_hi=0.5, bg_thresh_lo=0.0, bbox_reg_weights=[0.1, 0.1, 0.2, 0.2], class_nums=None, use_random=True, is_cls_agnostic=False, is_cascade_rcnn=False) - -:alias_main: paddle.nn.functional.generate_proposal_labels -:alias: paddle.nn.functional.generate_proposal_labels,paddle.nn.functional.vision.generate_proposal_labels -:old_api: paddle.fluid.layers.generate_proposal_labels - - - -**注意:该OP无对应的反向OP** - -该OP根据RPN预测产出的bounding boxes和groundtruth,抽取出用来计算loss的foreground boxes and background boxes。 - -RPN的输出经过 ``generate_proposals OP`` 的处理,产出 ``RPN RoIs`` ,即该OP的输入。然后,在该OP中按以下规则对 ``RPN RoIs`` 进行分类: - -- 与某个groundtruth的重叠面积大于 ``fg_thresh`` ,则该box被标记为foreground box。 -- 与某个groundtruth的重叠面积大于 ``bg_thresh_lo`` 且小于 ``bg_thresh_hi`` ,则该box被标记为background box。 - -按上述规则筛选出一批boxes后,在对这些boxes做随机采样,以保证foreground boxes的数量不高于batch_size_per_im * fg_fraction。 - -对最终得到的boxes, 我们给它们分配类别标签和回归目标(box label),并产出 ``bboxInsideWeights`` 和 ``BboxOutsideWeights`` 。 - -参数: - - **rpn_rois** (Variable) – Shape为 ``[N, 4]`` 的2-D LoDTensor。 其中,N为RoIs的个数。每个RoI以 :math:`[x_{min}, y_{min}, x_{max}, y_{max}]` 的格式表示,其中,:math:`x_{min}` 和 :math:`y_{min}` 为RoI的左上角坐标,:math:`x_{max}` 和 :math:`y_{max}` 为RoI的右下角坐标。数据类型支持float32和float64。 - - **gt_classes** (Variable) – Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于表示groundtruth boxes的类别ID。数据类型支持int32。 - - **is_crowd** (Variable) –Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于标记boxes是否是crowd。数据类型支持int32。 - - **gt_boxes** (Variable) – Shape为 ``[M, 4]`` 的2-D LoDTensor,M为groundtruth boxes的数量。每个box以 :math:`[x_{min}, y_{min}, x_{max}, y_{max}]` 的格式表示。 - - **im_info** (Variable) - Shape为 ``[N,3]`` 的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和 ``feature map`` 相对于原始图像缩放的比例。 - - **batch_size_per_im** (int,可选) – 整型数字。每张图片抽取出的的RoIs的数目。数据类型支持int32。缺省值为256。 - - **fg_fraction** (float,可选) – 浮点数值。在单张图片中,foreground boxes占所有boxes的比例。数据类型支持float32。缺省值为0.25。 - - **fg_thresh** (float,可选) – 浮点数值。foreground重叠阀值,用于筛选foreground boxes。数据类型支持float32。缺省值为0.25。 - - **bg_thresh_hi** (float,可选) – 浮点数值。background重叠阀值的上界,用于筛选background boxes。数据类型支持float32。缺省值为0.5。 - - **bg_thresh_lo** (float,可选) – 浮点数值。background重叠阀值的下界,用于筛选background boxes。数据类型支持float32。缺省值为0.0。 - - **bbox_reg_weights** (list|tuple,可选) – 列表或元组。Box 回归权重。数据类型支持float32。缺省值为[0.1,0.1,0.2,0.2]。 - - **class_nums** (int,可选) – 整型数字。类别数目。数据类型支持int32。缺省值为None。 - - **use_random** (bool,可选) – 布尔类型。是否使用随机采样来选择foreground boxes和background boxes。缺省值为True。 - - **is_cls_agnostic** (bool,可选)- 布尔类型。是否忽略类别,只做位置回归。缺省值为False。 - - **is_cascade_rcnn** (bool,可选)- 布尔类型。是否为 cascade RCNN 模型,为True时采样策略发生变化。缺省值为False。 - - -返回:元组,格式为 ``(rois, labels_int32, bbox_targets, bbox_inside_weights, bbox_outside_weights)`` ,其中,各个元素解释如下: - -- **rois** - Shape为 ``[P, 4]`` 的2-D LoDTensor,P一般是 ``batch_size_per_im * batch_size`` 。每个RoIs以 ``[xmin, ymin, xmax, ymax]`` 的格式表示。数据类型与 ``rpn_rois`` 一致。 -- **labels_int32** - Shape为 ``[P, 1]`` 的2-D LoDTensor,P一般是 ``batch_size_per_im * batch_size`` 。表示每个RoI的类别ID。数据类型为int32。 -- **bbox_targets** - Shape为 ``[P, 4 * class_num]`` 的2-D LoDTensor,表示所有RoIs的回归目标(box label)。数据类型与 ``rpn_rois`` 一致。 -- **bbox_inside_weights** - Shape为 ``[P, 4 * class_num]`` 的2-D LoDTensor。foreground boxes回归loss的权重。数据类型与 ``rpn_rois`` 一致。 -- **bbox_outside_weights** - Shape为 ``[P, 4 * class_num]`` 的2-D LoDTensor。回归loss的权重。数据类型与 ``rpn_rois`` 一致。 - -返回类型:元组 - - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - rpn_rois = fluid.layers.data(name='rpn_rois', shape=[2, 4], - append_batch_size=False, dtype='float32') - gt_classes = fluid.layers.data(name='gt_classes', shape=[8, 1], - append_batch_size=False, dtype='float32') - is_crowd = fluid.layers.data(name='is_crowd', shape=[8, 1], - append_batch_size=False, dtype='float32') - gt_boxes = fluid.layers.data(name='gt_boxes', shape=[8, 4], - append_batch_size=False, dtype='float32') - im_info = fluid.layers.data(name='im_info', shape=[10, 3], - append_batch_size=False, dtype='float32') - rois, labels, bbox, inside_weights, - outside_weights = fluid.layers.generate_proposal_labels( - rpn_rois, gt_classes, is_crowd, gt_boxes, im_info, - class_nums=10) - diff --git a/doc/paddle/api/paddle/nn/functional/vision/generate_proposals_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/generate_proposals_cn.rst deleted file mode 100644 index 7bd143ec306bbeac65430bca235d6dfc7eb32e45..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/generate_proposals_cn.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. _cn_api_fluid_layers_generate_proposals: - -generate_proposals -------------------------------- - -.. py:function:: paddle.fluid.layers.generate_proposals(scores, bbox_deltas, im_info, anchors, variances, pre_nms_top_n=6000, post_nms_top_n=1000, nms_thresh=0.5, min_size=0.1, eta=1.0, name=None) - -:alias_main: paddle.nn.functional.generate_proposals -:alias: paddle.nn.functional.generate_proposals,paddle.nn.functional.vision.generate_proposals -:old_api: paddle.fluid.layers.generate_proposals - - - - -该OP根据每个检测框为foreground对象的概率,推选生成用于后续检测网络的RoIs。 -其中的检测框根据 ``anchors`` 和 ``bbox_deltas`` 计算得到。 - - -该OP通过以下步骤生成 ``RoIs`` : - - 1、通过转置操作将 ``scores`` 和 ``bbox_deltas`` 的大小分别调整为 ``(H * W * A,1)`` 和 ``(H * W * A,4)`` 。 - - 2、根据 ``anchors`` 和 ``bbox_deltas`` 计算出候选框的位置。 - - 3、Clip boxes to image。 - - 4、删除面积较小的候选框。 - - 5、通过NMS选出满足条件的候选框作为结果。 - -参数: - - **scores** (Variable) - Shape为 ``[N,A,H,W]`` 的4-D Tensor,表示每个框包含object的概率。N是批量大小,A是anchor数,H和W是feature map的高度和宽度。数据类型支持float32。 - - **bbox_deltas** (Variable)- Shape为 ``[N,4 * A,H,W]`` 的4-D Tensor,表示预测出的候选框的位置和anchor的位置之间的距离。数据类型支持float32。 - - **im_info** (Variable) - Shape为 ``[N,3]`` 的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和feature map相对于原始图像缩放的比例。 - - **anchors** (Variable) - Shape为 ``[H,W,A,4]`` 的4-D Tensor。H和W是feature map的高度和宽度。A是每个位置的框的数量。每个anchor以 ``(xmin,ymin,xmax,ymax)`` 的格式表示,其中, ``xmin`` 和 ``ymin`` 为左上角的坐标, ``xmax`` 和 ``ymax`` 为右下角的坐标。 - - **variances** (Variable) - Shape为 ``[H,W,A,4]`` 的4-D Tensor,表示 ``anchors`` 的方差。每个anchor的方差都是 ``(xcenter,ycenter,w,h)`` 的格式表示。 - - **pre_nms_top_n** (int,可选) - 整型数字。每张图在NMS操作之前要保留的总框数。数据类型仅支持int32。缺省值为6000。 - - **post_nms_top_n** (int,可选) - 整型数字。每个图在NMS后要保留的总框数。数据类型仅支持int32。缺省值为1000。 - - **nms_thresh** (float,可选) - 浮点型数字。NMS中的阈值。数据类型仅支持float32。缺省值为0.5。 - - **min_size** (float,可选) - 浮点型数字。根据宽和高过滤候选框的阈值,宽或高小于该阈值的候选框将被过滤掉。数据类型仅支持float32。缺省值为0.1。 - - **eta** (float,可选) - 浮点型数字。自适应阈值的衰减系数。仅在自适应NMS中且自适应阈值大于0.5时生效,在每次迭代中 ``adaptive_threshold = adaptive_treshold * eta`` 。缺省值为1.0。 - - -返回: 元组,格式为 ``(rpn_rois, rpn_roi_probs)`` - -- **rpn_rois** (Variable) - 表示产出的RoIs, shape为 ``[N, 4]`` 的2D LoDTensor, N为RoIs的数量。数据类型与 ``scores`` 一致。 -- **rpn_roi_probs** (Variable) - 表示RoIs的得分,shape为 ``[N, 1]`` ,N为RoIs的数量。数据类型与 ``scores`` 一致。 - -返回类型:元组 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - scores = fluid.layers.data(name='scores', shape=[2, 4, 5, 5], - append_batch_size=False, dtype='float32') - bbox_deltas = fluid.layers.data(name='bbox_deltas', shape=[2, 16, 5, 5], - append_batch_size=False, dtype='float32') - im_info = fluid.layers.data(name='im_info', shape=[2, 3], - append_batch_size=False, dtype='float32') - anchors = fluid.layers.data(name='anchors', shape=[5, 5, 4, 4], - append_batch_size=False, dtype='float32') - variances = fluid.layers.data(name='variances', shape=[5, 5, 10, 4], - append_batch_size=False, dtype='float32') - rois, roi_probs = fluid.layers.generate_proposals(scores, bbox_deltas, - im_info, anchors, variances) diff --git a/doc/paddle/api/paddle/nn/functional/vision/grid_sampler_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/grid_sampler_cn.rst deleted file mode 100644 index 8871106520eea576edbddf0b606e8113cfd4e85f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/grid_sampler_cn.rst +++ /dev/null @@ -1,87 +0,0 @@ -.. _cn_api_fluid_layers_grid_sampler: - -grid_sampler -------------------------------- - -.. py:function:: paddle.fluid.layers.grid_sampler(x, grid, name=None) - -:alias_main: paddle.nn.functional.grid_sampler -:alias: paddle.nn.functional.grid_sampler,paddle.nn.functional.vision.grid_sampler -:old_api: paddle.fluid.layers.grid_sampler - - - -该OP基于flow field网格的对输入X进行双线性插值采样。网格通常由affine_grid生成, shape为[N, H, W, 2],是shape为[N, H, W]的采样点张量的(x, y)坐标。 -其中,x坐标是对输入数据X的第四个维度(宽度维度)的索引,y坐标是第三维度(高维度)的索引,最终输出采样值为采样点的4个最接近的角点的双线性插值结果,输出张量的shape为[N, C, H, W]。 - -step 1: - - 得到(x, y)网格坐标,缩放到[0,h -1/W-1] - -.. code-block:: text - - grid_x = 0.5 * (grid[:, :, :, 0] + 1) * (W - 1) grid_y = 0.5 * (grid[:, :, :, 1] + 1) * (H - 1) - -step 2: - - 在每个[H, W]区域用网格(X, y)作为输入数据X的索引,并将双线性插值点值由4个最近的点表示。 - -.. code-block:: text - - wn ------- y_n ------- en - | | | - | d_n | - | | | - x_w --d_w-- grid--d_e-- x_e - | | | - | d_s | - | | | - ws ------- y_s ------- wn - - x_w = floor(x) // west side x coord - x_e = x_w + 1 // east side x coord - y_n = floor(y) // north side y coord - y_s = y_s + 1 // south side y coord - d_w = grid_x - x_w // distance to west side - d_e = x_e - grid_x // distance to east side - d_n = grid_y - y_n // distance to north side - d_s = y_s - grid_y // distance to south side - wn = X[:, :, y_n, x_w] // north-west point value - en = X[:, :, y_n, x_e] // north-east point value - ws = X[:, :, y_s, x_w] // south-east point value - es = X[:, :, y_s, x_w] // north-east point value - - - output = wn * d_e * d_s + en * d_w * d_s - + ws * d_e * d_n + es * d_w * d_n - -参数: - - **x** (Variable): 输入张量,维度为 :math:`[N, C, H, W]` 的4-D Tensor,N为批尺寸,C是通道数,H是特征高度,W是特征宽度, 数据类型为float32或float64。 - - **grid** (Variable): 输入网格数据张量,维度为 :math:`[N, H, W, 2]` 的4-D Tensor,N为批尺寸,C是通道数,H是特征高度,W是特征宽度, 数据类型为float32或float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - -返回: Variable(Tensor): 输入X基于输入网格的双线性插值计算结果,维度为 :math:`[N, C, H, W]` 的4-D Tensor - -返回类型:变量(Variable),数据类型与 ``x`` 一致 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - # 一般与 affine_grid 组合使用 - x = fluid.data(name='x', shape=[None, 10, 32, 32], dtype='float32') - theta = fluid.layers.data(name='theta', shape=[2, 3], dtype='float32') - grid = fluid.layers.affine_grid(theta=theta, out_shape=[3, 10, 32, 32]) - out = fluid.layers.grid_sampler(x=x, grid=grid) - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/image_resize_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/image_resize_cn.rst deleted file mode 100644 index e0331de812743e569839bb9aa831b4667f0ce6a3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/image_resize_cn.rst +++ /dev/null @@ -1,192 +0,0 @@ -.. _cn_api_fluid_layers_image_resize: - -image_resize -------------------------------- - -.. py:function:: paddle.fluid.layers.image_resize(input, out_shape=None, scale=None, name=None, resample='BILINEAR', actual_shape=None, align_corners=True, align_mode=1, data_format='NCHW') - -:alias_main: paddle.nn.functional.image_resize -:alias: paddle.nn.functional.image_resize,paddle.nn.functional.vision.image_resize -:old_api: paddle.fluid.layers.image_resize - - - -**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 - -该OP用于调整一个batch中图片的大小。 - -输入为4-D Tensor时形状为(num_batches, channels, in_h, in_w)或者(num_batches, in_h, in_w, channels),输入为5-D Tensor时形状为(num_batches, channels, in_d, in_h, in_w)或者(num_batches, in_d, in_h, in_w, channels),并且调整大小只适用于深度,高度和宽度对应的维度。 - -支持的插值方法: - - BILINEAR:双线性插值 - - TRALINEAR:三线插值 - - NEAREST:最近邻插值 - - -最近邻插值是在输入张量的高度和宽度上进行最近邻插值。 - -双线性插值是线性插值的扩展,用于在直线2D网格上插值两个变量(例如,该操作中的H方向和W方向)的函数。 关键思想是首先在一个方向上执行线性插值,然后在另一个方向上再次执行线性插值。 - -三线插值是线性插值的一种扩展,是3参数的插值方程(比如op里的D,H,W方向),在三个方向上进行线性插值。 - -Align_corners和align_mode是可选参数,插值的计算方法可以由它们选择。 - -示例: - -:: - - For scale: - - if align_corners = True && out_size > 1 : - - scale_factor = (in_size-1.0)/(out_size-1.0) - - else: - - scale_factor = float(in_size/out_size) - - - Nearest neighbor interpolation: - - if: - align_corners = False - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = \left \lfloor {H_{in} * scale_{}factor}} \right \rfloor - W_out = \left \lfloor {W_{in} * scale_{}factor}} \right \rfloor - - else: - align_corners = True - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = round(H_{in} * scale_{factor}) - W_out = round(W_{in} * scale_{factor}) - - Bilinear interpolation: - - if: - align_corners = False , align_mode = 0 - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - - else: - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - - Trilinear interpolation: - - if: - align_corners = False , align_mode = 0 - - input : (N,C,D_in,H_in,W_in) - output: (N,C,D_out,H_out,W_out) where: - - D_out = (D_{in}+0.5) * scale_{factor} - 0.5 - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - - else: - - input : (N,C,D_in,H_in,W_in) - output: (N,C,D_out,H_out,W_out) where: - - D_out = D_{in} * scale_{factor} - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - - -有关最近邻插值的详细信息,请参阅维基百科: -https://en.wikipedia.org/wiki/Nearest-neighbor_interpolation - -有关双线性插值的详细信息,请参阅维基百科: -https://en.wikipedia.org/wiki/Bilinear_interpolation - -有关三线插值的详细信息,请参阅维基百科: -https://en.wikipedia.org/wiki/Trilinear_interpolation - -参数: - - **input** (Variable) - 4-D或5-D Tensor,数据类型为float32、float64或uint8,其数据格式由参数 ``data_format`` 指定。 - - **out_shape** (list|tuple|Variable|None) - 输出Tensor,输入为4D张量时,形状为为(out_h, out_w)的2-D Tensor。输入为5-D Tensor时,形状为(out_d, out_h, out_w)的3-D Tensor。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者形状为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。默认值为None。 - - **scale** (float|Variable|None)-输入的高度或宽度的乘数因子 。 out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值为None。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - **resample** (str) - 插值方法。支持“双线性”,“三线性”,“临近插值”。默认值为双线性插值。 - - **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。如果希望动态指定输出形状,建议使用 :code:`out_shape` ,因为 :code:`actual_shape` 未来将被弃用。在使用actual_shape指定输出形状时,还需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值:None - - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值为True - - **align_mode** (int)- 双线性插值的可选项。 可以是 '0' 代表src_idx = scale *(dst_indx + 0.5)-0.5;如果为'1' ,代表src_idx = scale * dst_index。 - - **data_format** (str,可选)- 指定输入的数据格式,输出的数据格式将与输入保持一致。对于4-D Tensor,支持 NCHW(num_batches, channels, height, width) 或者 NHWC(num_batches, height, width, channels),对于5-D Tensor,支持 NCDHW(num_batches, channels, depth, height, width)或者 NDHWC(num_batches, depth, height, width, channels),默认值:'NCHW'。 - -返回:4-D Tensor,形状为 (num_batches, channels, out_h, out_w) 或 (num_batches, out_h, out_w, channels);或者5-D Tensor,形状为 (num_batches, channels, out_d, out_h, out_w) 或 (num_batches, out_d, out_h, out_w, channels)。 - -返回类型: 变量(variable) - -抛出异常: - - :code:`TypeError` - out_shape应该是一个列表、元组或变量。 - - :code:`TypeError` - actual_shape应该是变量或None。 - - :code:`ValueError` - image_resize的"resample"只能是"BILINEAR"或"TRILINEAR"或"NEAREST"。 - - :code:`ValueError` - out_shape 和 scale 不可同时为 None。 - - :code:`ValueError` - out_shape 的长度必须为2如果输入是4D张量。 - - :code:`ValueError` - out_shape 的长度必须为3如果输入是5D张量。 - - :code:`ValueError` - scale应大于0。 - - :code:`TypeError` - align_corners 应为bool型。 - - :code:`ValueError` - align_mode 只能取 ‘0’ 或 ‘1’。 - - :code:`ValueError` - data_format 只能取 ‘NCHW’、‘NHWC’、‘NCDHW’ 或者 ‘NDHWC’。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32") - # input.shape = [-1, 3, 6, 9], where -1 indicates batch size, and it will get the exact value in runtime. - - out = fluid.layers.image_resize(input, out_shape=[12, 12], resample="NEAREST") - out0 = fluid.layers.image_resize(input, out_shape=[12, 12], resample="NEAREST") - # out0.shape = [-1, 3, 12, 12], it means out0.shape[0] = input.shape[0] in runtime. - - # out_shape is a list in which each element is a integer or a tensor Variable - dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False) - out1 = fluid.layers.image_resize(input, out_shape=[12, dim1], resample="NEAREST") - # out1.shape = [-1, 3, 12, -1] - - # out_shape is a 1-D tensor Variable - shape_tensor = fluid.layers.data(name="shape_tensor", shape=[2], dtype="int32", append_batch_size=False) - out2 = fluid.layers.image_resize(input, out_shape=shape_tensor, resample="NEAREST") - # out2.shape = [-1, 3, -1, -1] - - # when use actual_shape - actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[2], dtype="int32", append_batch_size=False) - out3 = fluid.layers.image_resize(input, out_shape=[4, 4], resample="NEAREST", actual_shape=actual_shape_tensor) - # out3.shape = [-1, 3, 4, 4] - - # scale is a Variable - scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False) - out4 = fluid.layers.image_resize(input, scale=scale_tensor) - # out4.shape = [-1, 3, -1, -1] - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/image_resize_short_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/image_resize_short_cn.rst deleted file mode 100644 index 93c8a9583d9329ef27606404b477dacc55bca21d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/image_resize_short_cn.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. _cn_api_fluid_layers_image_resize_short: - -image_resize_short -------------------------------- - -.. py:function:: paddle.fluid.layers.image_resize_short(input, out_short_len, resample='BILINEAR') - -:alias_main: paddle.nn.functional.image_resize_short -:alias: paddle.nn.functional.image_resize_short,paddle.nn.functional.vision.image_resize_short -:old_api: paddle.fluid.layers.image_resize_short - - - -该OP用于调整一批图片的大小。输入图像的短边将被调整为给定的out_short_len 。输入图像的长边按比例调整大小,最终图像的长宽比保持不变。 - -参数: - - **input** (Variable) - 图像调整图层的输入张量,这是一个维度为[num_batch, channels, in_h, in_w]的4-D Tensor。 - - **out_short_len** (int) - 输出图像的短边长度。 - - **resample** (str) - resample方法,默认为双线性插值。 - -返回: 4维张量,shape为(num_batches, channels, out_h, out_w) - -返回类型: 变量(variable) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32") - out = fluid.layers.image_resize_short(input, out_short_len=3) - diff --git a/doc/paddle/api/paddle/nn/functional/vision/pixel_shuffle_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/pixel_shuffle_cn.rst deleted file mode 100644 index 07b29dd8892aece514291f781a5e3918dc882834..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/pixel_shuffle_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_pixel_shuffle: - -pixel_shuffle -------------------------------- - -.. py:function:: paddle.fluid.layers.pixel_shuffle(x, upscale_factor) - -:alias_main: paddle.nn.functional.pixel_shuffle -:alias: paddle.nn.functional.pixel_shuffle,paddle.nn.functional.vision.pixel_shuffle -:old_api: paddle.fluid.layers.pixel_shuffle - - - -该OP将一个形为[N, C, H, W]的Tensor重新排列成形为 [N, C/r**2, H*r, W*r] 的Tensor。这样做有利于实现步长(stride)为1/r的高效sub-pixel(亚像素)卷积。详见Shi等人在2016年发表的论文 `Real Time Single Image and Video Super Resolution Using an Efficient Sub Pixel Convolutional Neural Network `_ 。 - -.. code-block:: text - - 给定一个形为 x.shape = [1, 9, 4, 4] 的4-D张量 - 设定:upscale_factor=3 - 那么输出张量的形为:[1, 1, 12, 12] - -参数: - - **x** (Variable)- 维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - - **upscale_factor** (int)- 增大空间分辨率的增大因子 - - -返回:根据新的维度信息进行重组的张量 - -返回类型: Variable - -抛出异常: ``ValueError`` - 如果upscale_factor的平方不能整除输入的通道维度(C)的大小。 - - -**示例代码** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[9,4,4]) - output = fluid.layers.pixel_shuffle(x=input, upscale_factor=3) - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/prior_box_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/prior_box_cn.rst deleted file mode 100644 index 85383fbbe6d7f3a60d449c0db069967a12606785..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/prior_box_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_layers_prior_box: - -prior_box -------------------------------- -.. py:function:: paddle.fluid.layers.prior_box(input,image,min_sizes=None,max_sizes=None,aspect_ratios=[1.0],variance=[0.1,0.1,0.2,0.2],flip=False,clip=False,steps=[0.0,0.0],offset=0.5,name=None,min_max_aspect_ratios_order=False) - -:alias_main: paddle.nn.functional.prior_box -:alias: paddle.nn.functional.prior_box,paddle.nn.functional.vision.prior_box -:old_api: paddle.fluid.layers.prior_box - - - -该OP为SSD(Single Shot MultiBox Detector)算法生成候选框。输入的每个位产生N个候选框,N由min_sizes,max_sizes和aspect_ratios的数目决定,候选框的尺寸在(min_size,max_size)之间,该尺寸根据aspect_ratios在序列中生成。 - -参数: - - **input** (Variable) - 形状为NCHW的4-DTensor,数据类型为float32或float64。 - - **image** (Variable) - PriorBoxOp的输入图像数据,形状为NCHW的4-D Tensor,数据类型为float32或float64。 - - **min_sizes** (list|tuple|float) - 生成的候选框的最小尺寸。 - - **max_sizes** (list|tuple|None) - 生成的候选框的最大尺寸。默认值为None - - **aspect_ratios** (list|tuple|float) - 生成的候选框的长宽比。默认值为[1.]。 - - **variance** (list|tuple) - 在候选框中解码的方差。默认值为[0.1,0.1,0.2,0.2]。 - - **flip** (bool) - 是否翻转。默认值为False。 - - **clip** (bool) - 是否裁剪。默认值为False。 - - **step** (list|tuple) - 候选框在width和height上的步长。如果step[0]等于0.0或者step[1]等于0.0,则自动计算候选框在宽度和高度上的步长。默认:[0.,0.] - - **offset** (float) - 候选框中心位移。默认:0.5 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - **min_max_aspect_ratios_order** (bool) - 若设为True,候选框的输出以[min, max, aspect_ratios]的顺序输出,和Caffe保持一致。请注意,该顺序会影响后面卷基层的权重顺序,但不影响最后的检测结果。默认:False。 - -返回:含有两个变量的元组,包括: - boxes: 候选框。形状为[H,W,num_priors,4]的4-D Tensor。其中,H是输入的高度,W是输入的宽度,num_priors是输入每位的总框数。 - variances: 候选框的方差,形状为[H,W,num_priors,4]的4-D Tensor。其中,H是输入的高度,W是输入的宽度,num_priors是输入每位的总框数。 - -返回类型:元组 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9]) - images = fluid.layers.data(name="images", shape=[3,9,12]) - box, var = fluid.layers.prior_box( - input=input, - image=images, - min_sizes=[100.], - flip=True, - clip=True) diff --git a/doc/paddle/api/paddle/nn/functional/vision/prroi_pool_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/prroi_pool_cn.rst deleted file mode 100644 index 43221ea069434bd83fd066e6f1091ca9332f2e7f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/prroi_pool_cn.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _cn_api_fluid_layers_prroi_pool: - -prroi_pool -------------------------------- - -.. py:function:: paddle.fluid.layers.prroi_pool(input, rois, output_channels, spatial_scale, pooled_height, pooled_width, name=None) - -:alias_main: paddle.nn.functional.prroi_pool -:alias: paddle.nn.functional.prroi_pool,paddle.nn.functional.vision.prroi_pool -:old_api: paddle.fluid.layers.prroi_pool - - - -PRROIPool运算 - -精确区域池化方法(Precise region of interest pooling,也称为PRROIPooling)是对输入的 "感兴趣区域"(RoI)执行插值处理,将离散的特征图数据映射到一个连续空间,使用二重积分再求均值的方式实现Pooling。 - -通过积分方式计算ROI特征,反向传播时基于连续输入值计算梯度,使得反向传播连续可导的PRROIPooling。 有关更多详细信息,请参阅 https://arxiv.org/abs/1807.11590。 - -参数: - - **input** (Variable) - (Tensor),PRROIPoolOp的输入。 输入张量的格式是NCHW。 其中N是批大小batch_size,C是输入通道的数量,H是输入特征图的高度,W是特征图宽度 - - **rois** (Variable) - 要进行池化的RoI(感兴趣区域)。应为一个形状为(num_rois, 4)的二维LoDTensor,其lod level为1。给出[[x1, y1, x2, y2], ...],(x1, y1)为左上角坐标,(x2, y2)为右下角坐标。 - - **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),PRROIPoolOp的输出是形为 (num_rois,output_channels,pooled_h,pooled_w) 的4-D Tensor。 - -返回类型: 变量(Variable) - -**代码示例:** - -.. code-block:: python - - ## prroi_pool without batch_roi_num - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[None, 490, 28, 28], dtype='float32') - rois = fluid.data(name='rois', shape=[None, 4], lod_level=1, dtype='float32') - pool_out = fluid.layers.prroi_pool(x, rois, 1.0, 7, 7) - - ## prroi_pool with batch_roi_num - batchsize=4 - x2 = fluid.data(name='x2', shape=[batchsize, 490, 28, 28], dtype='float32') - rois2 = fluid.data(name='rois2', shape=[batchsize, 4], dtype='float32') - batch_rois_num = fluid.data(name='rois_nums', shape=[batchsize], dtype='int64') - pool_out2 = fluid.layers.prroi_pool(x2, rois2, 1.0, 7, 7, batch_roi_nums=batch_rois_num) - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/psroi_pool_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/psroi_pool_cn.rst deleted file mode 100644 index 92a246f63c4c04e4955322e73359398f03dd17c6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/psroi_pool_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.psroi_pool -:alias: paddle.nn.functional.psroi_pool,paddle.nn.functional.vision.psroi_pool -:old_api: paddle.fluid.layers.psroi_pool - - - -**注意 rois必须为2维LoDTensor,lod_level为1** - -该OP执行PSROIPooling运算,是位置敏感的感兴趣区域池化方法(Position sensitive region of interest pooling,也称为PSROIPooling)。输入input是位置敏感的评分图,输入rois是感兴趣区域的位置坐标。PSROIPooling不同于普通ROIPooling的地方在于,输入input特征图的不同通道会跟输出特征图上的位置区域相关联,该方法是在R-FCN模型中首次提出来的,更多详细信息请参阅 https://arxiv.org/abs/1605.06409。 - - -**样例**: - -:: - - Given: - input.shape = [2, 490, 28, 28] - rois.shape = [5, 4], rois.lod = [[3, 2]] - output_channels = 10 - pooled_height = 7 - pooled_width = 7 - - Return: - out.shape = [5, 10, 7, 7], out.lod = [[3, 2]] - - -参数: - - **input** (Variable) - 输入特征图,4-D Tensor,格式是NCHW。 其中N是batch_size,C是输入通道的数量,H是输入特征图的高度,W是特征图宽度。数据类型是float32或者float64 - - **rois** (Variable) - 感兴趣区域,2-D LoDTensor,形状为(num_rois, 4),lod_level为1。形式如[x1, y1, x2, y2], ...],其中(x1, y1)为左上角坐标,(x2, y2)为右下角坐标。数据类型与input相同 - - **output_channels** (int) - 输出特征图的通道数。对于共C个种类的图像分类任务,output_channels应该是 ``(C + 1)`` ,其中1代表背景 - - **spatial_scale** (float) - 空间跨度因子,用于将 ``rois`` 中的坐标从其输入尺寸按比例映射到 ``input`` 特征图的尺寸 - - **pooled_height** (int) - 池化输出的高度 - - **pooled_width** (int) - 池化输出的宽度 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。 - -返回: 经过PSROIPooling之后的结果,形状为(num_rois,output_channels,pooled_height,pooled_width) 的4维LoDTensor,lod_level为1,数据类型与input相同,与rois具有相同的lod信息。 - -返回类型: Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[490, 28, 28], dtype='float32') - rois = fluid.layers.data(name='rois', shape=[4], lod_level=1, dtype='float32') - pool_out = fluid.layers.psroi_pool(x, rois, 10, 1.0, 7, 7) - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/resize_bilinear_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/resize_bilinear_cn.rst deleted file mode 100644 index d0fd0a3f2b04cbf90fe6d4944929b9c93cbaec5f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/resize_bilinear_cn.rst +++ /dev/null @@ -1,101 +0,0 @@ -.. _cn_api_fluid_layers_resize_bilinear: - -resize_bilinear -------------------------------- - -.. py:function:: paddle.fluid.layers.resize_bilinear(input, out_shape=None, scale=None, name=None, actual_shape=None, align_corners=True, align_mode=1, data_format='NCHW') - -:alias_main: paddle.nn.functional.resize_bilinear -:alias: paddle.nn.functional.resize_bilinear,paddle.nn.functional.vision.resize_bilinear -:old_api: paddle.fluid.layers.resize_bilinear - - - -**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 - -该OP应用双向性插值法调整输入图片的大小,输出形状按优先级由actual_shape、out_shape和scale指定。 - -双线性插值是对线性插值的扩展,即二维变量方向上(如h方向和w方向)插值。关键思想是先在一个方向上执行线性插值,然后再在另一个方向上执行线性插值。 - -详情请参阅 `维基百科 `_ 。 - -align_corners和align_mode是可选参数,插值的计算方法可以由它们选择。 - - -:: - - Example: - - For scale: - - if align_corners = True && out_size > 1 : - - scale_factor = (in_size-1.0)/(out_size-1.0) - - else: - - scale_factor = float(in_size/out_size) - - Bilinear interpolation: - - if align_corners = False , align_mode = 0 - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - - else: - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - - - -参数: - - **input** (Variable) - 4-D Tensor,数据类型为float32、float64或uint8,其数据格式由参数 ``data_format`` 指定。 - - **out_shape** (list|tuple|Variable|None) - 双线性层的输出形状,维度为[out_h, out_w]的二维Tensor。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者维度为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。默认值为None。 - - **scale** (float|Variable|None) - 用于输入高度或宽度的乘数因子。out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值为None。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。注意:如果希望动态指定输出形状,建议使用 :code:`out_shape` , 因为 :code:`actual_shape` 未来将被弃用。在使用actual_shape指定输出形状时,仍然需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值为None。 - - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值为True - - **align_mode** (int)- 双线性插值的可选项。 可以是'0'代表src_idx = scale *(dst_indx + 0.5)-0.5;如果为'1' ,代表src_idx = scale * dst_index。 - - **data_format** (str,可选)- 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:4-D Tensor,形状为 (num_batches, channels, out_h, out_w) 或 (num_batches, out_h, out_w, channels)。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32") - # input.shape = [-1, 3, 6, 9], where -1 indicates batch size, and it will get the exact value in runtime. - - out0 = fluid.layers.resize_bilinear(input, out_shape=[12, 12]) - # out0.shape = [-1, 3, 12, 12], it means out0.shape[0] = input.shape[0] in runtime. - - # out_shape is a list in which each element is a integer or a tensor Variable - dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False) - out1 = fluid.layers.resize_bilinear(input, out_shape=[12, dim1]) - # out1.shape = [-1, 3, 12, -1] - - # out_shape is a 1-D tensor Variable - shape_tensor = fluid.layers.data(name="shape_tensor", shape=[2], dtype="int32", append_batch_size=False) - out2 = fluid.layers.resize_bilinear(input, out_shape=shape_tensor) - # out2.shape = [-1, 3, -1, -1] - - # when use actual_shape - actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[2], dtype="int32", append_batch_size=False) - out3 = fluid.layers.resize_bilinear(input, out_shape=[4, 4], actual_shape=actual_shape_tensor) - # out3.shape = [-1, 3, 4, 4] - - # scale is a Variable - scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False) - out4 = fluid.layers.resize_bilinear(input, scale=scale_tensor) - # out4.shape = [-1, 3, -1, -1] diff --git a/doc/paddle/api/paddle/nn/functional/vision/resize_nearest_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/resize_nearest_cn.rst deleted file mode 100644 index 2d4ff2abf242b745703200a0fb7966486f8faefc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/resize_nearest_cn.rst +++ /dev/null @@ -1,111 +0,0 @@ -.. _cn_api_fluid_layers_resize_nearest: - -resize_nearest -------------------------------- - -.. py:function:: paddle.fluid.layers.resize_nearest(input, out_shape=None, scale=None, name=None, actual_shape=None, align_corners=True, data_format='NCHW') - -:alias_main: paddle.nn.functional.resize_nearest -:alias: paddle.nn.functional.resize_nearest,paddle.nn.functional.vision.resize_nearest -:old_api: paddle.fluid.layers.resize_nearest - - - -该OP对输入图片进行大小调整,在高度方向宽度方向进行最邻近插值(nearest neighbor interpolation)操作。 - -输出形状按优先级顺序依据 ``actual_shape`` , ``out_shape`` 和 ``scale`` 而定。 - -**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 - -:: - - Example: - - For scale: - - if align_corners = True && out_size > 1 : - - scale_factor = (in_size-1.0)/(out_size-1.0) - - else: - - scale_factor = float(in_size/out_size) - - - Nearest neighbor interpolation: - - if align_corners = False - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = \left \lfloor {H_{in} * scale_{}factor}} \right \rfloor - W_out = \left \lfloor {W_{in} * scale_{}factor}} \right \rfloor - - else: - align_corners = True - - input : (N,C,H_in,W_in) - output: (N,C,H_out,W_out) where: - - H_out = round(H_{in} * scale_{factor}) - W_out = round(W_{in} * scale_{factor}) - -最邻近插值的详细介绍请参照: `Wiki Nearest-neighbor interpolation `_ - - -参数: - - **input** (Variable) - 4-D Tensor,数据类型为float32、float64或uint8,其数据格式由参数 ``data_format`` 指定。 - - **out_shape** (list|tuple|Variable|None) - 双线性插值法调整后的输出,维度为[out_h, out_w]的2-D Tensor。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者shape为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。默认值为None。 - - **scale** (float|Variable|None) – 输入高宽的乘数因子。 ``out_shape`` 和 ``scale`` 二者至少设置其一。 ``out_shape`` 具有比 ``scale`` 更高的优先级。 默认值为None。 - - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - - **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。注意:如果希望动态指定输出形状,建议使用 :code:`out_shape` , 因为 :code:`actual_shape` 未来将被弃用。在使用actual_shape指定输出形状时,仍然需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值为None。 - - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值为True。 - - **data_format** (str,可选)- 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:4-D Tensor,形状为 (num_batches, channels, out_h, out_w) 或 (num_batches, out_h, out_w, channels)。 - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32") - # input.shape = [-1, 3, 6, 9], where -1 indicates batch size, and it will get the exact value in runtime. - - out0 = fluid.layers.resize_nearest(input, out_shape=[12, 12]) - # out0.shape = [-1, 3, 12, 12], it means out0.shape[0] = input.shape[0] in runtime. - - # out_shape is a list in which each element is a integer or a tensor Variable - dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False) - out1 = fluid.layers.resize_nearest(input, out_shape=[12, dim1]) - # out1.shape = [-1, 3, 12, -1] - - # out_shape is a 1-D tensor Variable - shape_tensor = fluid.layers.data(name="resize_shape", shape=[2], dtype="int32", append_batch_size=False) - out2 = fluid.layers.resize_nearest(input, out_shape=shape_tensor) - # out2.shape = [-1, 3, -1, -1] - - # when use actual_shape - actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[2], dtype="int32", append_batch_size=False) - out3 = fluid.layers.resize_nearest(input, out_shape=[4, 4], actual_shape=actual_shape_tensor) - # out3.shape = [-1, 3, 4, 4] - - # scale is a Variable - scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False) - out4 = fluid.layers.resize_nearest(input, scale=scale_tensor) - # out4.shape = [-1, 3, -1, -1] - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/resize_trilinear_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/resize_trilinear_cn.rst deleted file mode 100644 index 58c62c6ca849b47d12ff1188b88e3cc3797030d2..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/resize_trilinear_cn.rst +++ /dev/null @@ -1,96 +0,0 @@ -.. _cn_api_fluid_layers_resize_trilinear: - -resize_trilinear -------------------------------- - -.. py:function:: paddle.fluid.layers.resize_trilinear(input, out_shape=None, scale=None, name=None, actual_shape=None, align_corners=True, align_mode=1, data_format='NCDHW') - -:alias_main: paddle.nn.functional.resize_trilinear -:alias: paddle.nn.functional.resize_trilinear,paddle.nn.functional.vision.resize_trilinear -:old_api: paddle.fluid.layers.resize_trilinear - - - -**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 - -该层对输入进行放缩,基于给定的由 ``actual_shape`` , ``out_shape`` , ``scale`` 确定的输出shape,进行三线插值。三线插值是包含三个参数的线性插值方程(D方向,H方向, W方向),在一个3D格子上进行三个方向的线性插值。更多细节,请参考维基百科:https://en.wikipedia.org/wiki/Trilinear_interpolation -Align_corners和align_mode都是可选参数,可以用来设置插值的计算方法,如下: - -:: - - Example: - - For scale: - - if align_corners = True && out_size > 1 : - - scale_factor = (in_size-1.0)/(out_size-1.0) - - else: - - scale_factor = float(in_size/out_size) - - Bilinear interpolation: - - if: - align_corners = False , align_mode = 0 - - input : (N,C,D_in,H_in,W_in) - output: (N,C,D_out,H_out,W_out) where: - - D_out = (D_{in}+0.5) * scale_{factor} - 0.5 - H_out = (H_{in}+0.5) * scale_{factor} - 0.5 - W_out = (W_{in}+0.5) * scale_{factor} - 0.5 - - - else: - - input : (N,C,D_in,H_in,W_in) - output: (N,C,D_out,H_out,W_out) where: - - D_out = D_{in} * scale_{factor} - H_out = H_{in} * scale_{factor} - W_out = W_{in} * scale_{factor} - -参数: - - **input** (Variable) – 5-D Tensor,数据类型为float32、float64或uint8,其数据格式由参数 ``data_format`` 指定。 - - **out_shape** (list|tuple|Variable|None) – 调整最近邻层的输出形状,形式为(out_h, out_w)。默认值:None。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者shape为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。 - - **scale** (float|None) – 输入高、宽的乘法器。 ``out_shape`` 和 ``scale`` 二者至少设置其一。 ``out_shape`` 具有比 ``scale`` 更高的优先级。 默认: None - - **name** (str|None) – 输出变量的命名 - - **actual_shape** (Variable) – 可选输入, 动态设置输出张量的形状。 如果提供该值, 图片放缩会依据此形状进行, 而非依据 ``out_shape`` 和 ``scale`` 。 即为, ``actual_shape`` 具有最高的优先级。 如果想动态指明输出形状,推荐使用 ``out_shape`` ,因为 ``actual_shape`` 未来将被弃用。 当使用 ``actual_shape`` 来指明输出形状, ``out_shape`` 和 ``scale`` 也应该进行设置, 否则在图形生成阶段将会报错。默认: None - - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值:True - - **align_mode** (bool) - (int,默认为'1'),双线性插值选项,src_idx = scale*(dst_index+0.5)-0.5时取'0',src_idx = scale*dst_index时取'1'。 - - **data_format** (str,可选)- 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCDHW"和"NDHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCDHW"。 - -返回:5-D Tensor,形状为 (num_batches, channels, out_d, out_h, out_w) 或 (num_batches, out_d, out_h, out_w, channels)。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[3,6,9,11], dtype="float32") - # input.shape = [-1, 3, 6, 9, 11], where -1 indicates batch size, and it will get the exact value in runtime. - - out0 = fluid.layers.resize_trilinear(input, out_shape=[12, 12, 12]) - # out0.shape = [-1, 3, 12, 12, 12], it means out0.shape[0] = input.shape[0] in runtime. - - # out_shape is a list in which each element is a integer or a tensor Variable - dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False) - out1 = fluid.layers.resize_trilinear(input, out_shape=[12, dim1, 4]) - # out1.shape = [-1, 3, 12, -1, 4] - - # out_shape is a 1-D tensor Variable - shape_tensor = fluid.layers.data(name="shape_tensor", shape=[3], dtype="int32", append_batch_size=False) - out2 = fluid.layers.resize_trilinear(input, out_shape=shape_tensor) - # out2.shape = [-1, 3, -1, -1, -1] - - # when use actual_shape - actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[3], dtype="int32", append_batch_size=False) - out3 = fluid.layers.resize_trilinear(input, out_shape=[4, 4, 8], actual_shape=actual_shape_tensor) - # out3.shape = [-1, 3, 4, 4, 8] - - # scale is a Variable - scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False) - out4 = fluid.layers.resize_trilinear(input, scale=scale_tensor) - # out4.shape = [-1, 3, -1, -1, -1] diff --git a/doc/paddle/api/paddle/nn/functional/vision/retinanet_detection_output_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/retinanet_detection_output_cn.rst deleted file mode 100644 index 426ea26b3a675bf121e2ff8e0c8495e715878f52..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/retinanet_detection_output_cn.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. _cn_api_fluid_layers_retinanet_detection_output: - -retinanet_detection_output -------------------------------- - -.. py:function:: paddle.fluid.layers.retinanet_detection_output(bboxes, scores, anchors, im_info, score_threshold=0.05, nms_top_k=1000, keep_top_k=100, nms_threshold=0.3, nms_eta=1.0) - -:alias_main: paddle.nn.functional.retinanet_detection_output -:alias: paddle.nn.functional.retinanet_detection_output,paddle.nn.functional.vision.retinanet_detection_output -:old_api: paddle.fluid.layers.retinanet_detection_output - - - -在 `RetinaNet `_ 中,有多个 `FPN `_ 层会输出用于分类的预测值和位置回归的预测值,该OP通过执行以下步骤将这些预测值转换成最终的检测结果: - -1. 在每个FPN层上,先剔除分类预测值小于score_threshold的anchor,然后按分类预测值从大到小排序,选出排名前nms_top_k的anchor,并将这些anchor与其位置回归的预测值做解码操作得到检测框。 -2. 合并全部FPN层上的检测框,对这些检测框进行非极大值抑制操作(NMS)以获得最终的检测结果。 - - -参数: - - **bboxes** (List) – 由来自不同FPN层的Tensor组成的列表,表示全部anchor的位置回归预测值。列表中每个元素是一个维度为 :math:`[N, Mi, 4]` 的3-D Tensor,其中,第一维N表示批量训练时批量内的图片数量,第二维Mi表示每张图片第i个FPN层上的anchor数量,第三维4表示每个anchor有四个坐标值。数据类型为float32或float64。 - - **scores** (List) – 由来自不同FPN层的Tensor组成的列表,表示全部anchor的分类预测值。列表中每个元素是一个维度为 :math:`[N, Mi, C]` 的3-D Tensor,其中第一维N表示批量训练时批量内的图片数量,第二维Mi表示每张图片第i个FPN层上的anchor数量,第三维C表示类别数量( **不包括背景类** )。数据类型为float32或float64。 - - **anchors** (List) – 由来自不同FPN层的Tensor组成的列表,表示全部anchor的坐标值。列表中每个元素是一个维度为 :math:`[Mi, 4]` 的2-D Tensor,其中第一维Mi表示第i个FPN层上的anchor数量,第二维4表示每个anchor有四个坐标值([xmin, ymin, xmax, ymax])。数据类型为float32或float64。 - - **im_info** (Variable) – 维度为 :math:`[N, 3]` 的2-D Tensor,表示输入图片的尺寸信息。 其中,第一维N表示批量训练时各批量内的图片数量,第二维3表示各图片的尺寸信息,分别是网络输入尺寸的高和宽,以及原图缩放至网络输入大小时的缩放比例。数据类型为float32或float64。 - - **score_threshold** (float32) – 在NMS步骤之前,用于滤除每个FPN层的检测框的阈值,默认值为0.05。 - - **nms_top_k** (int32) – 在NMS步骤之前,保留每个FPN层的检测框的数量,默认值为1000。 - - **keep_top_k** (int32) – 在NMS步骤之后,每张图像要保留的检测框数量,默认值为100,若设为-1,则表示保留NMS步骤后剩下的全部检测框。 - - **nms_threshold** (float32) – NMS步骤中用于剔除检测框的Intersection-over-Union(IoU)阈值,默认为0.3。 - - **nms_eta** (float32) – NMS步骤中用于调整nms_threshold的参数。默认值为1.,表示nms_threshold的取值在NMS步骤中一直保持不变,即其设定值。若nms_eta小于1.,则表示当nms_threshold的取值大于0.5时,每保留一个检测框就调整一次nms_threshold的取值,即nms_threshold = nms_threshold * nms_eta,直到nms_threshold的取值小于等于0.5后结束调整。 -**注意:在模型输入尺寸特别小的情况,此时若用score_threshold滤除anchor,可能会导致没有任何检测框剩余。为避免这种情况出现,该OP不会对最高FPN层上的anchor做滤除。因此,要求bboxes、scores、anchors中最后一个元素是来自最高FPN层的Tensor** 。 - -返回:维度是 :math:`[No, 6]` 的2-D LoDTensor,表示批量内的检测结果。第一维No表示批量内的检测框的总数,第二维6表示每行有六个值:[label, score,xmin,ymin,xmax,ymax]。该LoDTensor的LoD中存放了每张图片的检测框数量,第i张图片的检测框数量为 :math:`LoD[i + 1] - LoD[i]` 。如果 :math:`LoD[i + 1] - LoD[i]` 为0,则第i个图像没有检测结果。 如果批量内的全部图像都没有检测结果,则LoD中所有元素被设置为0,LoDTensor被赋为空(None)。 - - -返回类型:变量(Variable),数据类型为float32或float64。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - bboxes_low = fluid.data( - name='bboxes_low', shape=[1, 44, 4], dtype='float32') - bboxes_high = fluid.data( - name='bboxes_high', shape=[1, 11, 4], dtype='float32') - scores_low = fluid.data( - name='scores_low', shape=[1, 44, 10], dtype='float32') - scores_high = fluid.data( - name='scores_high', shape=[1, 11, 10], dtype='float32') - anchors_low = fluid.data( - name='anchors_low', shape=[44, 4], dtype='float32') - anchors_high = fluid.data( - name='anchors_high', shape=[11, 4], dtype='float32') - im_info = fluid.data( - name="im_info", shape=[1, 3], dtype='float32') - nmsed_outs = fluid.layers.retinanet_detection_output( - bboxes=[bboxes_low, bboxes_high], - scores=[scores_low, scores_high], - anchors=[anchors_low, anchors_high], - im_info=im_info, - score_threshold=0.05, - nms_top_k=1000, - keep_top_k=100, - nms_threshold=0.45, - nms_eta=1.0) diff --git a/doc/paddle/api/paddle/nn/functional/vision/retinanet_target_assign_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/retinanet_target_assign_cn.rst deleted file mode 100644 index cd37a297b2b303429ee17ad9f2f2881245041ebe..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/retinanet_target_assign_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_retinanet_target_assign: - -retinanet_target_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.retinanet_target_assign(bbox_pred, cls_logits, anchor_box, anchor_var, gt_boxes, gt_labels, is_crowd, im_info, num_classes=1, positive_overlap=0.5, negative_overlap=0.4) - -:alias_main: paddle.nn.functional.retinanet_target_assign -:alias: paddle.nn.functional.retinanet_target_assign,paddle.nn.functional.vision.retinanet_target_assign -:old_api: paddle.fluid.layers.retinanet_target_assign - - - -该OP是从输入anchor中找出训练检测模型 `RetinaNet `_ 所需的正负样本,并为每个正负样本分配用于分类的目标值和位置回归的目标值,同时从全部anchor的类别预测值cls_logits、位置预测值bbox_pred中取出属于各正负样本的部分。 - -正负样本的查找准则如下: - - 若anchor与某个真值框之间的Intersection-over-Union(IoU)大于其他anchor与该真值框的IoU,则该anchor是正样本,且被分配给该真值框; - - 若anchor与某个真值框之间的IoU大于等于positive_overlap,则该anchor是正样本,且被分配给该真值框; - - 若anchor与某个真值框之间的IoU介于[0, negative_overlap),则该anchor是负样本; - - 不满足以上准则的anchor不参与模型训练。 - -在RetinaNet中,对于每个anchor,模型都会预测一个C维的向量用于分类,和一个4维的向量用于位置回归,因此各正负样本的分类目标值也是一个C维向量,各正样本的位置回归目标值也是一个4维向量。对于正样本而言,若其被分配的真值框的类别是i,则其分类目标值的第i-1维为1,其余维度为0;其位置回归的目标值由anchor和真值框之间位置差值计算得到。对于负样本而言,其分类目标值的所有维度都为0,因负样本不参与位置回归的训练,故负样本无位置回归的目标值。 - -分配结束后,从全部anchor的类别预测值cls_logits中取出属于各正负样本的部分,从针对全部anchor的位置预测值bbox_pred中取出属于各正样本的部分。 - - -参数: - - **bbox_pred** (Variable) – 维度为 :math:`[N, M, 4]` 的3-D Tensor,表示全部anchor的位置回归预测值。其中,第一维N表示批量训练时批量内的图片数量,第二维M表示每张图片的全部anchor的数量,第三维4表示每个anchor有四个坐标值。数据类型为float32或float64。 - - **cls_logits** (Variable) – 维度为 :math:`[N, M, C]` 的3-D Tensor,表示全部anchor的分类预测值。 其中,第一维N表示批量训练时批量内的图片数量,第二维M表示每张图片的全部anchor的数量,第三维C表示每个anchor需预测的类别数量( **注意:不包括背景** )。数据类型为float32或float64。 - - - **anchor_box** (Variable) – 维度为 :math:`[M, 4]` 的2-D Tensor,表示全部anchor的坐标值。其中,第一维M表示每张图片的全部anchor的数量,第二维4表示每个anchor有四个坐标值 :math:`[xmin, ymin, xmax, ymax]` ,:math:`[xmin, ymin]` 是anchor的左上顶部坐标,:math:`[xmax, ymax]` 是anchor的右下坐标。数据类型为float32或float64。anchor_box的生成请参考OP :ref:`cn_api_fluid_layers_anchor_generator`。 - - **anchor_var** (Variable) – 维度为 :math:`[M, 4]` 的2-D Tensor,表示在后续计算损失函数时anchor坐标值的缩放比例。其中,第一维M表示每张图片的全部anchor的数量,第二维4表示每个anchor有四个坐标缩放因子。数据类型为float32或float64。anchor_var的生成请参考OP :ref:`cn_api_fluid_layers_anchor_generator`。 - - **gt_boxes** (Variable) – 维度为 :math:`[G, 4]` 且LoD level必须为1的2-D LoDTensor,表示批量训练时批量内的真值框位置。其中,第一维G表示批量内真值框的总数,第二维表示每个真值框有四个坐标值。数据类型为float32或float64。 - - **gt_labels** (variable) – 维度为 :math:`[G, 1]` 且LoD level必须为1的2-D LoDTensor,表示批量训练时批量内的真值框类别,数值范围为 :math:`[1, C]` 。其中,第一维G表示批量内真值框的总数,第二维表示每个真值框只有1个类别。数据类型为int32。 - - **is_crowd** (Variable) – 维度为 :math:`[G]` 且LoD level必须为1的1-D LoDTensor,表示各真值框是否位于重叠区域,值为1表示重叠,则不参与训练。第一维G表示批量内真值框的总数。数据类型为int32。 - - **im_info** (Variable) – 维度为 :math:`[N, 3]` 的2-D Tensor,表示输入图片的尺寸信息。其中,第一维N表示批量训练时批量内的图片数量,第二维3表示各图片的尺寸信息,分别是网络输入尺寸的高和宽,以及原图缩放至网络输入尺寸的缩放比例。数据类型为float32或float64。 - - **num_classes** (int32) – 分类的类别数量,默认值为1。 - - **positive_overlap** (float32) – 判定anchor是一个正样本时anchor和真值框之间的最小IoU,默认值为0.5。 - - **negative_overlap** (float32) – 判定anchor是一个负样本时anchor和真值框之间的最大IoU,默认值为0.4。该参数的设定值应小于等于positive_overlap的设定值,若大于,则positive_overlap的取值为negative_overlap的设定值。 - - -返回: - - **predict_scores** (Variable) – 维度为 :math:`[F + B, C]` 的2-D Tensor,表示正负样本的分类预测值。其中,第一维F为批量内正样本的数量,B为批量内负样本的数量,第二维C为分类的类别数量。数据类型为float32或float64。 - - **predict_location** (Variable) — 维度为 :math:`[F, 4]` 的2-D Tensor,表示正样本的位置回归预测值。其中,第一维F为批量内正样本的数量,第二维4表示每个样本有4个坐标值。数据类型为float32或float64。 - - **target_label** (Variable) — 维度为 :math:`[F + B, 1]` 的2-D Tensor,表示正负样本的分类目标值。其中,第一维F为正样本的数量,B为负样本的数量,第二维1表示每个样本的真值类别只有1类。数据类型为int32。 - - **target_bbox** (Variable) — 维度为 :math:`[F, 4]` 的2-D Tensor,表示正样本的位置回归目标值。其中,第一维F为正样本的数量,第二维4表示每个样本有4个坐标值。数据类型为float32或float64。 - - **bbox_inside_weight** (Variable) — 维度为 :math:`[F, 4]` 的2-D Tensor,表示位置回归预测值中是否属于假正样本,若某个正样本为假,则bbox_inside_weight中对应维度的值为0,否则为1。第一维F为正样本的数量,第二维4表示每个样本有4个坐标值。数据类型为float32或float64。 - - **fg_num** (Variable) — 维度为 :math:`[N, 1]` 的2-D Tensor,表示正样本的数量。其中,第一维N表示批量内的图片数量。 **注意:由于正样本数量会用作后续损失函数的分母,为避免出现除以0的情况,该OP已将每张图片的正样本数量做加1操作** 。数据类型为int32。 - - -返回类型:元组(tuple),元组中的元素predict_scores,predict_location,target_label,target_bbox,bbox_inside_weight,fg_num都是Variable。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - bbox_pred = fluid.data(name='bbox_pred', shape=[1, 100, 4], - dtype='float32') - cls_logits = fluid.data(name='cls_logits', shape=[1, 100, 10], - dtype='float32') - anchor_box = fluid.data(name='anchor_box', shape=[100, 4], - dtype='float32') - anchor_var = fluid.data(name='anchor_var', shape=[100, 4], - dtype='float32') - gt_boxes = fluid.data(name='gt_boxes', shape=[10, 4], - dtype='float32') - gt_labels = fluid.data(name='gt_labels', shape=[10, 1], - dtype='int32') - is_crowd = fluid.data(name='is_crowd', shape=[1], - dtype='int32') - im_info = fluid.data(name='im_info', shape=[1, 3], - dtype='float32') - score_pred, loc_pred, score_target, loc_target, bbox_inside_weight, fg_num = \ - fluid.layers.retinanet_target_assign(bbox_pred, cls_logits, anchor_box, - anchor_var, gt_boxes, gt_labels, is_crowd, im_info, 10) diff --git a/doc/paddle/api/paddle/nn/functional/vision/roi_align_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/roi_align_cn.rst deleted file mode 100644 index c5c72638bb5979df1767cf4f7eb765060e245bea..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/roi_align_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_roi_align: - -roi_align -------------------------------- - -.. py:function:: paddle.fluid.layers.roi_align(input, rois, pooled_height=1, pooled_width=1, spatial_scale=1.0, sampling_ratio=-1, name=None) - -:alias_main: paddle.nn.functional.roi_align -:alias: paddle.nn.functional.roi_align,paddle.nn.functional.vision.roi_align -:old_api: paddle.fluid.layers.roi_align - - - -**实现RoIAlign操作。** - -Region of Interests align(直译:有意义、有价值选区对齐) 用于实现双线性插值,它可以将不均匀大小的输入 -变为固定大小的特征图(feature map)。 - -该运算通过 ``pooled_width`` 和 ``pooled_height`` 将每个推荐区域划分为等大小分块。位置保持不变。 - -在每个RoI分块中,分别取sampling_ratio个点(若为-1则取框内所有点),每个点通过双线性插值直接计算得到坐标。再对分块内取的点取平均值作为小框的坐标值。坐标对齐有误的问题。 - -参数: - - **input** (Variable) – 维度为[N,C,H,W]的4-D Tensor,N 为batch大小, C 为输入通道的个数, H 特征高度, W 特征宽度。数据类型为float32或float64。 - - **rois** (Variable) – 维度为[num_rois,4]2-D LoDTensor,数据类型为float32或float64。待池化的ROIs (Regions of Interest),lod level 为1。给定比如[[x1,y1,x2,y2], ...],(x1,y1)为左上点坐标,(x2,y2)为右下点坐标。 - - **pooled_height** (int32,可选) – 池化后的输出高度,默认值为1。 - - **pooled_width** (int32,可选) – 池化后的输出宽度,默认值为1。 - - **spatial_scale** (float32,可选) – 乘法性质空间标尺因子,池化时,将RoI坐标变换至运算采用的标度,默认值为1.0。 - - **sampling_ratio** (int32) – 插值格中采样点的数目。 如果它 <=0, 它们将自适应 ``roi_width`` 和 ``pooled_w`` , 在高度上也是同样的道理。默认值为-1 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - -返回:表示RoI align输出的LoDTensor,数据类型为float32或float64,维度为 (num_rois, channels, pooled_h, pooled_w) - - -返回类型:Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data( - name='data', shape=[None, 256, 32, 32], dtype='float32') - rois = fluid.data( - name='rois', shape=[None, 4], dtype='float32') - align_out = fluid.layers.roi_align(input=x, - rois=rois, - pooled_height=7, - pooled_width=7, - spatial_scale=0.5, - sampling_ratio=-1) - diff --git a/doc/paddle/api/paddle/nn/functional/vision/roi_perspective_transform_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/roi_perspective_transform_cn.rst deleted file mode 100644 index 1c97a18e0b7897d2b0299bc33d70f94e508531d3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/roi_perspective_transform_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_roi_perspective_transform: - -roi_perspective_transform -------------------------------- - -.. py:function:: paddle.fluid.layers.roi_perspective_transform(input, rois, transformed_height, transformed_width, spatial_scale=1.0) - -:alias_main: paddle.nn.functional.roi_perspective_transform -:alias: paddle.nn.functional.roi_perspective_transform,paddle.nn.functional.vision.roi_perspective_transform -:old_api: paddle.fluid.layers.roi_perspective_transform - - - -该OP对RoI区域做透视变换,将不规则的RoI区域变成固定大小的矩形区域,透视变换是线性代数里面的一种基础变换。 - -参数: - - **input** (Variable) - 输入特征图,4-D Tensor,格式为NCHW。N是batch_size,C是输入通道数,H是特征图高度,W是特征图宽度。数据类型是float32 - - **rois** (Variable) - 感兴趣区域,2D-LoDTensor,形状是(num_rois,8),lod_level为1。其数据形式是[[x1,y1,x2,y2,x3,y3,x4,y4], ...],其中(x1,y1)是左上角坐标,(x2,y2)是右上角坐标,(x3,y3)是右下角坐标,(x4,y4)是左下角坐标。数据类型与 ``input`` 相同 - - **transformed_height** (int) - 输出的高度 - - **transformed_width** (int) – 输出的宽度 - - **spatial_scale** (float,可选) - 空间尺度因子,用于缩放ROI坐标,浮点数。默认值1.0 - -返回: 由三个变量构成的元组 (out, mask, transform_matrix) - - ``out`` : ``ROIPerspectiveTransformOp`` 的输出,4D-LoDTensor,形状是(num_rois,channels,transformed_height,transformed_width),lod_level为1 - - ``mask`` : ``ROIPerspectiveTransformOp`` 的掩码,4D-LoDTensor,形状是(num_rois,1,transformed_height,transformed_width),lod_level为1 - - ``transform_matrix`` : ``ROIPerspectiveTransformOp`` 的转换矩阵,2D-LoDTensor,形状是(num_rois,9),lod_level为1 - -返回类型: 元组 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - - x = fluid.layers.data(name='x', shape=[256, 28, 28], dtype='float32') - rois = fluid.layers.data(name='rois', shape=[8], lod_level=1, dtype='float32') - out, mask, transform_matrix = fluid.layers.roi_perspective_transform(x, rois, 7, 7, 1.0) - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/roi_pool_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/roi_pool_cn.rst deleted file mode 100644 index 616c119d22d5d91e30903d82879975b0733ace87..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/roi_pool_cn.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _cn_api_fluid_layers_roi_pool: - -roi_pool -------------------------------- - -.. py:function:: paddle.fluid.layers.roi_pool(input, rois, pooled_height=1, pooled_width=1, spatial_scale=1.0) - -:alias_main: paddle.nn.functional.roi_pool -:alias: paddle.nn.functional.roi_pool,paddle.nn.functional.vision.roi_pool -:old_api: paddle.fluid.layers.roi_pool - - - - -该OP实现了roi池化操作,对非均匀大小的输入执行最大池化,以获得固定大小的特征映射(例如7*7)。 - -该OP的操作分三个步骤: - - 1. 用pooled_width和pooled_height将每个proposal区域划分为大小相等的部分; - 2. 在每个部分中找到最大的值; - 3. 将这些最大值复制到输出缓冲区。 - -Faster-RCNN使用了roi池化。roi池化的具体原理请参考 https://stackoverflow.com/questions/43430056/what-is-roi-layer-in-fast-rcnn - -参数: - - **input** (Variable) - 输入特征,维度为[N,C,H,W]的4D-Tensor,其中N为batch大小,C为输入通道数,H为特征高度,W为特征宽度。数据类型为float32或float64. - - **rois** (Variable) – 待池化的ROIs (Regions of Interest),维度为[num_rois,4]的2D-LoDTensor,lod level 为1。给定如[[x1,y1,x2,y2], ...],其中(x1,y1)为左上点坐标,(x2,y2)为右下点坐标。lod信息记录了每个roi所属的batch_id。 - - **pooled_height** (int,可选) - 数据类型为int32,池化输出的高度。默认值为1。 - - **pooled_width** (int,可选) - 数据类型为int32,池化输出的宽度。默认值为1。 - - **spatial_scale** (float,可选) - 数据类型为float32,用于将ROI coords从输入比例转换为池化时使用的比例。默认值为1.0。 - -返回: 池化后的特征,维度为[num_rois, C, pooled_height, pooled_width]的4D-Tensor。 - -返回类型: Variable - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - DATATYPE='float32' - - place = fluid.CPUPlace() - #place = fluid.CUDAPlace(0) - - input_data = np.array([i for i in range(1,17)]).reshape(1,1,4,4).astype(DATATYPE) - roi_data =fluid.create_lod_tensor(np.array([[1., 1., 2., 2.], [1.5, 1.5, 3., 3.]]).astype(DATATYPE),[[2]], place) - - x = fluid.layers.data(name='input', shape=[1, 4, 4], dtype=DATATYPE) - rois = fluid.layers.data(name='roi', shape=[4], lod_level=1, dtype=DATATYPE) - - pool_out = fluid.layers.roi_pool( - input=x, - rois=rois, - pooled_height=1, - pooled_width=1, - spatial_scale=1.0) - - exe = fluid.Executor(place) - out, = exe.run(feed={'input':input_data ,'roi':roi_data}, fetch_list=[pool_out.name]) - print(out) #array([[[[11.]]], [[[16.]]]], dtype=float32) - print(np.array(out).shape) # (2, 1, 1, 1) - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/shuffle_channel_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/shuffle_channel_cn.rst deleted file mode 100644 index fffbae0a48f36c1cfa80a37ea91fdddf139d75b9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/shuffle_channel_cn.rst +++ /dev/null @@ -1,75 +0,0 @@ -.. _cn_api_fluid_layers_shuffle_channel: - -shuffle_channel -------------------------------- - -.. py:function:: paddle.fluid.layers.shuffle_channel(x, group, name=None) - -:alias_main: paddle.nn.functional.shuffle_channel -:alias: paddle.nn.functional.shuffle_channel,paddle.nn.functional.vision.shuffle_channel -:old_api: paddle.fluid.layers.shuffle_channel - - - -该OP将输入 ``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) – 输入Tensor。 维度为[N,C,H,W]的4-D Tensor。 - - **group** (int) – 表示子组的数目,它应该整除通道数。 - -返回:一个形状和类型与输入相同的Tensor。 - -返回类型:Variable - - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name='input', shape=[4,2,2], dtype='float32') - out = fluid.layers.shuffle_channel(x=input, group=2) - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/space_to_depth_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/space_to_depth_cn.rst deleted file mode 100644 index bfa5dbbf5308f4d347effcbef18f55f131181653..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/space_to_depth_cn.rst +++ /dev/null @@ -1,97 +0,0 @@ -.. _cn_api_fluid_layers_space_to_depth: - -space_to_depth -------------------------------- - -.. py:function:: paddle.fluid.layers.space_to_depth(x, blocksize, name=None) - -:alias_main: paddle.nn.functional.space_to_depth -:alias: paddle.nn.functional.space_to_depth,paddle.nn.functional.vision.space_to_depth -:old_api: paddle.fluid.layers.space_to_depth - - - -该OP对成块的空间数据进行重组,输出一个输入张量的拷贝,其高度和宽度维度上的值移至通道维度。 - -重组时,依据 ``blocksize`` 指明的数据块大小, 对形为 ``[batch, channel, height, width]`` 的输入张量进行space_to_depth(广度至深度)运算,生成形为 ``[batch, channel * blocksize * blocksize, height/blocksize, width/blocksize]`` 的输出: - - - 在各位置上,不重叠的,大小为 ``blocksize * blocksize`` 的块重组入深度depth - - 输入各个块中的Y, X坐标变为输出张量通道索引的高序部位 - - 输入 ``channel`` 需可以被 ``blocksize`` 的平方整除 - - 输入的高度和宽度需可以被 ``blocksize`` 整除 - -该OP适用于在卷积间重放缩激活函数,并保持所有的数据。 - -范例如下: - -:: - - 给定形状为[1, 1, 4, 4]的输入 x: - x.data = [[[[1, 2, 5, 6], - [3, 4, 7, 8], - [9, 10, 13, 14], - [11, 12, 15, 16]]]] - 设置 blocksize = 2 - - 得到形状为[1, 4, 2, 2]的输出 out: - out.data = [[[[1, 2], [3, 4]], - [[5, 6], [7, 8]], - [[9, 10], [11, 12]], - [[13, 14], [15, 16]]]] - - - - -参数: - - **x** (Variable) – 输入,形状为 ``[batch, channel, height, width]`` 的4维Tensor或LoD Tensor。数据类型支持int32,int64,float32或float64。 - - **blocksize** (int) – 在每个特征图上选择元素时采用的块大小,应该 >= 2 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出,形状为 ``[batch, channel * blocksize * blocksize, height/blocksize, width/blocksize]`` 的4维Tensor或LoD Tensor。数据类型与输入 ``x`` 一致。 - -返回类型:Variable - -抛出异常: - - ``TypeError`` - ``blocksize`` 必须是int64类型 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - data = fluid.data( - name='data', shape=[1, 4, 2, 2], dtype='float32') - space_to_depthed = fluid.layers.space_to_depth( - x=data, blocksize=2) - - exe = fluid.Executor(fluid.CPUPlace()) - data_np = np.arange(0,16).reshape((1,4,2,2)).astype('float32') - - print(data_np) - #array([[[[ 0., 1.], [ 2., 3.]], - # [[ 4., 5.], [ 6., 7.]], - # [[ 8., 9.], [10., 11.]], - # [[12., 13.], [14., 15.]]]], dtype=float32) - - out_main = exe.run(fluid.default_main_program(), - feed={'data': data_np}, - fetch_list=[space_to_depthed]) - - print(out_main) - #[array([[[[ 0.]], [[ 4.]], [[ 1.]], [[ 5.]], - # [[ 8.]], [[12.]], [[ 9.]], [[13.]], - # [[ 2.]], [[ 6.]], [[ 3.]], [[ 7.]], - # [[10.]], [[14.]], [[11.]], [[15.]]]], dtype=float32)] - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/yolo_box_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/yolo_box_cn.rst deleted file mode 100644 index 5d1d7db4f14d31e5ad33eb6854c21740322a1088..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/yolo_box_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_layers_yolo_box: - -yolo_box -------------------------------- - -.. py:function:: paddle.fluid.layers.yolo_box(x, img_size, anchors, class_num, conf_thresh, downsample_ratio, clip_bbox=True,name=None) - -:alias_main: paddle.nn.functional.yolo_box -:alias: paddle.nn.functional.yolo_box,paddle.nn.functional.vision.yolo_box -:old_api: paddle.fluid.layers.yolo_box - - - - -该运算符基于YOLOv3网络的输出结果,生成YOLO检测框。 - -连接 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` -,则框的预测算法为: - -.. math:: - - 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` , :math:`c_x` 是当前网格的左上角顶点坐标。 :math:`p_w` , :math:`p_h` 由anchors指定。 - -每个anchor预测框的第五通道的逻辑回归值表示每个预测框的置信度得分,并且每个anchor预测框的最后class_num通道的逻辑回归值表示分类得分。 应忽略置信度低于conf_thresh的框。另外,框最终得分是置信度得分和分类得分的乘积。 - - -.. math:: - - score_{pred} = score_{conf} * score_{class} - - -参数: - - **x** (Variable) - YoloBox的输入张量是一个4-D张量,形状为[N,C,H,W]。第二维(C)存储每个anchor box位置坐标,每个anchor box的置信度分数和one hot key。通常,X应该是YOLOv3网络的输出。数据类型为float32或float64 - - **img_size** (Variable) - YoloBox的图像大小张量,这是一个形状为[N,2]的二维张量。该张量保持每个输入图像的高度和宽度,用于对输出图像按输入图像比例调整输出框的大小。数据类型为int32。 - - **anchors** (list | tuple) - anchor的宽度和高度,它将逐对解析 - - **class_num** (int) - 要预测的类数 - - **conf_thresh** (float) - 检测框的置信度得分阈值。置信度得分低于阈值的框应该被忽略 - - **downsample_ratio** (int) - 从网络输入到YoloBox操作输入的下采样率,因此应依次为第一个,第二个和第三个YoloBox运算设置该值为32,16,8 - - **clip_bbox** (bool) - 是否将输出的bbox裁剪到 :attr:`img_size` 范围内,默认为True。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - 1. 框的坐标,形为[N,M,4]的三维张量 - 2. 框的分类得分, 形为 [N,M,class_num]的三维张量 - -返回类型: 变量(Variable) - -抛出异常: - - TypeError - yolov_box的输入x必须是Variable - - TypeError - yolo框的anchors参数必须是list或tuple - - TypeError - yolo box的class_num参数必须是整数 - - TypeError - yolo框的conf_thresh参数必须是一个浮点数 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[255, 13, 13], dtype='float32') - img_size = fluid.layers.data(name='img_size',shape=[2],dtype='int64') - anchors = [10, 13, 16, 30, 33, 23] - boxes, scores = fluid.layers.yolo_box(x=x, img_size=img_size, class_num=80, anchors=anchors, - conf_thresh=0.01, downsample_ratio=32) - - - - diff --git a/doc/paddle/api/paddle/nn/functional/vision/yolov3_loss_cn.rst b/doc/paddle/api/paddle/nn/functional/vision/yolov3_loss_cn.rst deleted file mode 100644 index 020dd2cc7d0843b62213141a2033cb2dc3834e41..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/vision/yolov3_loss_cn.rst +++ /dev/null @@ -1,111 +0,0 @@ -.. _cn_api_fluid_layers_yolov3_loss: - -yolov3_loss -------------------------------- - -.. py:function:: paddle.fluid.layers.yolov3_loss(x, gt_box, gt_label, anchors, anchor_mask, class_num, ignore_thresh, downsample_ratio, gt_score=None, use_label_smooth=True, name=None) - -:alias_main: paddle.nn.functional.yolov3_loss -:alias: paddle.nn.functional.yolov3_loss,paddle.nn.functional.vision.yolov3_loss -:old_api: paddle.fluid.layers.yolov3_loss - - - -该运算通过给定的预测结果和真实框计算yolov3损失。 - -yolov3 loss前的网络输出形状为[N,C,H,W],H和W应该相同,用来指定网格(grid)大小。每个网格点预测S个边界框(bounding boxes),S由每个尺度中 ``anchors`` 簇的个数指定。在第二维(表示通道的维度)中,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损失包括三个主要部分,框位置损失,目标性损失,分类损失。L1损失用于 -框坐标(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} - $$ - - -当 ``use_label_smooth`` 为 ``True`` 时,在计算分类损失时将平滑分类目标,将正样本的目标平滑到1.0-1.0 / class_num,并将负样本的目标平滑到1.0 / class_num。 - -``GTScore`` (如果存在)表示真实框的mixup得分,那么真实框所产生的所有损失需要乘上GTScore。 - - - -参数: - - **x** (Variable) – YOLOv3损失运算的输入张量,这是一个形状为[N,C,H,W]的四维Tensor。H和W应该相同,第二维(C)存储框的位置信息,以及每个anchor box的置信度得分和one-hot分类。数据类型为float32或float64。 - - **gt_box** (Variable) – 真实框,应该是[N,B,4]的形状。第三维用来承载x、y、w、h,其中 x, y是真实框的中心坐标,w, h是框的宽度和高度,且x、y、w、h将除以输入图片的尺寸,缩放到[0,1]区间内。 N是batch size,B是图像中所含有的的最多的box数目。数据类型为float32或float64。 - - **gt_label** (Variable) – 真实框的类id,应该形为[N,B]。数据类型为int32。 - - **anchors** (list|tuple) – 指定anchor框的宽度和高度,它们将逐对进行解析 - - **anchor_mask** (list|tuple) – 当前YOLOv3损失计算中使用anchor的mask索引 - - **class_num** (int) – 要预测的类别数 - - **ignore_thresh** (float) – 一定条件下忽略某框置信度损失的忽略阈值 - - **downsample_ratio** (int) – 网络输入到YOLOv3 loss输入的下采样率,因此第一,第二和第三个 loss 的下采样率应分别为32,16,8 - - **gt_score** (Variable) - 真实框的混合得分,形为[N,B]。 默认None。数据类型为float32或float64。 - - **use_label_smooth** (bool) - 是否使用平滑标签。 默认为True - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为None。 - - -返回: yolov3损失的值,具有形状[N]的1-D张量。 - -返回类型: 变量(Variable),数据类型与input一致。 - -抛出异常: - - ``TypeError`` – yolov3_loss的输入x必须是Variable - - ``TypeError`` – 输入yolov3_loss的gtbox必须是Variable - - ``TypeError`` – 输入yolov3_loss的gtlabel必须是None或Variable - - ``TypeError`` – 输入yolov3_loss的gtscore必须是Variable - - ``TypeError`` – 输入yolov3_loss的anchors必须是list或tuple - - ``TypeError`` – 输入yolov3_loss的class_num必须是整数integer类型 - - ``TypeError`` – 输入yolov3_loss的ignore_thresh必须是一个浮点数float类型 - - ``TypeError`` – 输入yolov3_loss的use_label_smooth必须是bool型 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[255, 13, 13], dtype='float32') - gt_box = fluid.layers.data(name='gt_box', shape=[6, 4], dtype='float32') - gt_label = fluid.layers.data(name='gt_label', shape=[6], dtype='int32') - gt_score = fluid.layers.data(name='gt_score', shape=[6], dtype='float32') - 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, gt_box=gt_box, gt_label=gt_label, - gt_score=gt_score, anchors=anchors, - anchor_mask=anchor_mask, class_num=80, - ignore_thresh=0.7, downsample_ratio=32) - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/functional/warpctc_cn.rst b/doc/paddle/api/paddle/nn/functional/warpctc_cn.rst deleted file mode 100644 index dbb4c4ca829330844170359127680fe870ac618c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/functional/warpctc_cn.rst +++ /dev/null @@ -1,98 +0,0 @@ -.. _cn_api_fluid_layers_warpctc: - -warpctc -------------------------------- - -.. py:function:: paddle.fluid.layers.warpctc(input, label, blank=0, norm_by_times=False, input_length=None, label_length=None) - -:alias_main: paddle.nn.functional.warpctc -:alias: paddle.nn.functional.warpctc,paddle.nn.functional.extension.warpctc -:old_api: paddle.fluid.layers.warpctc - - - -该OP用于计算 `CTC loss `_ 。该OP的底层调用了第三方 `baidu-research::warp-ctc `_ 的实现。 - -参数: - - **input** (Variable) - 可以是3-D Tensor或2-D LoDTensor。当输入类型是3-D Tensor时,则表示输入是经过padding的定长序列,其 shape 必须是 ``[seq_length, batch_size, num_classes + 1]`` 。当输入类型是2-D LoDTensor时,则表示输入为变长序列,其shape必须为 ``[Lp,num_classes+1]`` , ``Lp`` 是所有输入序列长度之和。以上 shape 中的 ``num_classes`` 是实际类别数,不包括空白标签。该输入不需要经过 softmax 操作,因为该OP的内部对 ``input`` 做了 softmax 操作。数据类型仅支持float32。 - - **label** (Variable) - 可以是3-D Tensor或2-D LoDTensor,需要跟 ``input`` 保持一致。当输入类型为3-D Tensor时,表示输入是经过 padding 的定长序列,其 shape 为 ``[batch_size, label_length]`` ,其中, ``label_length`` 是最长的 label 序列的长度。当输入类型是2-D LoDTensor时,则表示输入为变长序列,其shape必须为 ``[Lp, 1]`` , 其中 ``Lp`` 是所有 label 序列的长度和。 ``label`` 中的数值为字符ID。数据类型支持int32。 - - **blank** (int,可选) - 空格标记的ID,其取值范围为 ``[0,num_classes+1)`` 。数据类型支持int32。缺省值为0。 - - **norm_by_times** (bool,可选) - 是否根据序列长度对梯度进行正则化。数据类型支持 bool 。缺省值为False。 - - **input_length** (Variable) - 必须是1-D Tensor。仅在输入为定长序列时使用,表示输入数据中每个序列的长度,shape为 ``[batch_size]`` 。数据类型支持int64。默认为None。 - - **label_length** (Variable) - 必须是1-D Tensor。仅在label为定长序列时使用,表示 label 中每个序列的长度,shape为 ``[batch_size]`` 。数据类型支持int64。默认为None。 - -返回:Shape为[batch_size,1]的2-D Tensor,表示每一个序列的CTC loss。数据类型与 ``input`` 一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - # using LoDTensor - import paddle.fluid as fluid - import numpy as np - - # lengths of logit sequences - seq_lens = [2,6] - # lengths of label sequences - label_lens = [2,3] - # class num - class_num = 5 - - logits = fluid.data(name='logits',shape=[None, class_num+1], - dtype='float32',lod_level=1) - label = fluid.data(name='label', shape=[None, 1], - dtype='int32', lod_level=1) - cost = fluid.layers.warpctc(input=logits, label=label) - place = fluid.CPUPlace() - x = fluid.create_lod_tensor( - np.random.rand(np.sum(seq_lens), class_num+1).astype("float32"), - [seq_lens], place) - y = fluid.create_lod_tensor( - np.random.randint(0, class_num, [np.sum(label_lens), 1]).astype("int32"), - [label_lens], place) - exe = fluid.Executor(place) - output= exe.run(fluid.default_main_program(), - feed={"logits": x,"label": y}, - fetch_list=[cost.name]) - print(output) - -.. code-block:: python - - # using Tensor - import paddle.fluid as fluid - import numpy as np - - # length of the longest logit sequence - max_seq_length = 5 - # length of the longest label sequence - max_label_length = 3 - # number of logit sequences - batch_size = 16 - # class num - class_num = 5 - logits = fluid.data(name='logits', - shape=[max_seq_length, batch_size, class_num+1], - dtype='float32') - logits_length = fluid.data(name='logits_length', shape=[None], - dtype='int64') - label = fluid.data(name='label', shape=[batch_size, max_label_length], - dtype='int32') - label_length = fluid.data(name='labels_length', shape=[None], - dtype='int64') - cost = fluid.layers.warpctc(input=logits, label=label, - input_length=logits_length, - label_length=label_length) - place = fluid.CPUPlace() - x = np.random.rand(max_seq_length, batch_size, class_num+1).astype("float32") - y = np.random.randint(0, class_num, [batch_size, max_label_length]).astype("int32") - exe = fluid.Executor(place) - output= exe.run(fluid.default_main_program(), - feed={"logits": x, - "label": y, - "logits_length": np.array([max_seq_length]*batch_size).astype("int64"), - "labels_length": np.array([max_label_length]*batch_size).astype("int64")}, - fetch_list=[cost.name]) - print(output) - diff --git a/doc/paddle/api/paddle/nn/initializer/Bilinear_cn.rst b/doc/paddle/api/paddle/nn/initializer/Bilinear_cn.rst deleted file mode 100644 index 78664ec87a1a3daa53bc50f94bd0ab832b8b466e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/initializer/Bilinear_cn.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _cn_api_fluid_initializer_Bilinear: - -Bilinear -------------------------------- - -.. py:attribute:: paddle.fluid.initializer.Bilinear - -:alias_main: paddle.nn.initializer.Bilinear -:alias: paddle.nn.initializer.Bilinear -:old_api: paddle.fluid.initializer.Bilinear - - - -``BilinearInitializer`` 的别名 - - diff --git a/doc/paddle/api/paddle/nn/initializer/Constant_cn.rst b/doc/paddle/api/paddle/nn/initializer/Constant_cn.rst deleted file mode 100644 index fdc567bd1b7ee4c9ddae0e13c018b54e0f2fe7e1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/initializer/Constant_cn.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _cn_api_fluid_initializer_Constant: - -Constant -------------------------------- - -.. py:attribute:: paddle.fluid.initializer.Constant - -:alias_main: paddle.nn.initializer.Constant -:alias: paddle.nn.initializer.Constant -:old_api: paddle.fluid.initializer.Constant - - - -``ConstantInitializer`` 的别名 - - diff --git a/doc/paddle/api/paddle/nn/initializer/MSRA_cn.rst b/doc/paddle/api/paddle/nn/initializer/MSRA_cn.rst deleted file mode 100644 index 00ff2f29bc574fe3aa24d401fb05783eb23b01c1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/initializer/MSRA_cn.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. _cn_api_fluid_initializer_MSRA: - -MSRA -------------------------------- - -.. py:attribute:: paddle.fluid.initializer.MSRA - -:alias_main: paddle.nn.initializer.MSRA -:alias: paddle.nn.initializer.MSRA -:old_api: paddle.fluid.initializer.MSRA - - - -``MSRAInitializer`` 的别名 - diff --git a/doc/paddle/api/paddle/nn/initializer/Normal_cn.rst b/doc/paddle/api/paddle/nn/initializer/Normal_cn.rst deleted file mode 100644 index ce50e67bd12563ee7c24b6ab4141acf0ccf0c303..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/initializer/Normal_cn.rst +++ /dev/null @@ -1,115 +0,0 @@ -.. _cn_api_fluid_layers_Normal: - -Normal -------------------------------- - -.. py:class:: paddle.fluid.layers.Normal(loc, scale) - - - - -正态分布 - -数学公式: - -.. math:: - - pdf(x; \mu, \sigma) = \frac{1}{Z}e^{\frac {-0.5 (x - \mu)^2} {\sigma^2} } - - Z = (2 \pi \sigma^2)^{0.5} - -上面的数学公式中: - -:math:`loc = \mu` : 平均值。 -:math:`scale = \sigma` : 标准差。 -:math:`Z`: 正态分布常量。 - -参数: - - **loc** (float|list|numpy.ndarray|Variable) - 正态分布平均值。数据类型为float32。 - - **scale** (float|list|numpy.ndarray|Variable) - 正态分布标准差。数据类型为float32。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle.fluid import layers - from paddle.fluid.layers import Normal - - # 定义参数为float的正态分布。 - dist = Normal(loc=0., scale=3.) - # 定义一组有两个数的正态分布。 - # 第一组为均值1,标准差11,第二组为均值2,标准差22。 - dist = Normal(loc=[1., 2.], scale=[11., 22.]) - # 得到3个样本, 返回一个 3 x 2 张量。 - dist.sample([3]) - - # 通过广播的方式,定义一个两个参数的正态分布。 - # 均值都是1,标准差不同。 - dist = Normal(loc=1., scale=[11., 22.]) - - # 一个完整的例子 - value_npdata = np.array([0.8], dtype="float32") - value_tensor = layers.create_tensor(dtype="float32") - layers.assign(value_npdata, value_tensor) - - normal_a = Normal([0.], [1.]) - normal_b = Normal([0.5], [2.]) - - sample = normal_a.sample([2]) - # 一个由定义好的正太分布随机生成的张量,维度为: [2, 1] - entropy = normal_a.entropy() - # [1.4189385] with shape: [1] - lp = normal_a.log_prob(value_tensor) - # [-1.2389386] with shape: [1] - kl = normal_a.kl_divergence(normal_b) - # [0.34939718] with shape: [1] - - -.. py:function:: sample(shape, seed=0) - -生成指定维度的样本 - -参数: - - **shape** (list) - 1维列表,指定生成样本的维度。数据类型为int32。 - - **seed** (int) - 长整型数。 - -返回:预先设计好维度的张量, 数据类型为float32 - -返回类型:Variable - -.. py:function:: entropy() - -信息熵 - -返回:正态分布的信息熵, 数据类型为float32 - -返回类型:Variable - -.. py:function:: log_prob(value) - -对数概率密度函数 - -参数: - - **value** (Variable) - 输入张量。数据类型为float32或float64。 - -返回:对数概率, 数据类型与value相同 - -返回类型:Variable - -.. py:function:: kl_divergence(other) - -两个正态分布之间的KL散度。 - -参数: - - **other** (Normal) - Normal的实例。 - -返回:两个正态分布之间的KL散度, 数据类型为float32 - -返回类型:Variable - - - - - - diff --git a/doc/paddle/api/paddle/nn/initializer/TruncatedNormal_cn.rst b/doc/paddle/api/paddle/nn/initializer/TruncatedNormal_cn.rst deleted file mode 100644 index d36b1c53f17417cc2f06b6641a16ed4de7a0b6f7..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/initializer/TruncatedNormal_cn.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _cn_api_fluid_initializer_TruncatedNormal: - -TruncatedNormal -------------------------------- - -.. py:attribute:: paddle.fluid.initializer.TruncatedNormal - -:alias_main: paddle.nn.initializer.TruncatedNormal -:alias: paddle.nn.initializer.TruncatedNormal -:old_api: paddle.fluid.initializer.TruncatedNormal - - - -``TruncatedNormalInitializer`` 的别名 - - diff --git a/doc/paddle/api/paddle/nn/initializer/Uniform_cn.rst b/doc/paddle/api/paddle/nn/initializer/Uniform_cn.rst deleted file mode 100644 index 59e1544b3751afacf4002cfa859a6827df1de187..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/initializer/Uniform_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_layers_Uniform: - -Uniform -------------------------------- - -.. py:class:: paddle.fluid.layers.Uniform(low, high) - - - - -均匀分布 - -概率密度函数(pdf)为: - -.. math:: - - pdf(x; a, b) = \frac{1}{Z}, a <=x < b - - Z = b - a - -上面的数学公式中: - -:math:`low = a` 。 -:math:`high = b` 。 -:math:`Z`: 正态分布常量。 - -参数low和high的维度必须能够支持广播。 - -参数: - - **low** (float|list|numpy.ndarray|Variable) - 均匀分布的下边界。数据类型为float32。 - - **high** (float|list|numpy.ndarray|Variable) - 均匀分布的上边界。数据类型为float32。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - from paddle.fluid import layers - from paddle.fluid.layers import Uniform - - # 定义参数为float的均匀分布 - u1 = Uniform(low=3.0, high=4.0) - # 定义参数为list的均匀分布 - u2 = Uniform(low=[1.0, 2.0], - high=[3.0, 4.0]) - # 通过广播的方式,定义一个均匀分布 - u3 = Uniform(low=[[1.0, 2.0], - [3.0, 4.0]], - high=[[1.5, 2.5], - [3.5, 4.5]]) - - # 通过广播的方式,定义一个均匀分布 - u4 = Uniform(low=3.0, high=[5.0, 6.0, 7.0]) - - # 一个完整的例子 - value_npdata = np.array([0.8], dtype="float32") - value_tensor = layers.create_tensor(dtype="float32") - layers.assign(value_npdata, value_tensor) - - uniform = Uniform([0.], [2.]) - - sample = uniform.sample([2]) - # 一个由定义好的均匀分布随机生成的张量,维度为: [2, 1] - entropy = uniform.entropy() - # [0.6931472] with shape: [1] - lp = uniform.log_prob(value_tensor) - # [-0.6931472] with shape: [1] - - -.. py:function:: sample(shape, seed=0) - -生成指定维度的样本 - -参数: - - **shape** (list) - 1维列表,指定生成样本的维度。数据类型为int32。 - - **seed** (int) - 长整型数。 - -返回:预先设计好维度的张量, 数据类型为float32 - -返回类型:Variable - -.. py:function:: entropy() - -信息熵 - -返回:均匀分布的信息熵, 数据类型为float32 - -返回类型:Variable - -.. py:function:: log_prob(value) - -对数概率密度函数 - -参数: - - **value** (Variable) - 输入张量。数据类型为float32或float64。 - -返回:对数概率, 数据类型与value相同 - -返回类型:Variable - - - - - - - diff --git a/doc/paddle/api/paddle/nn/initializer/Xavier_cn.rst b/doc/paddle/api/paddle/nn/initializer/Xavier_cn.rst deleted file mode 100644 index e19b2c7db8dcb80cadf0e7da5f3d10e39ba301d5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/initializer/Xavier_cn.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. _cn_api_fluid_initializer_Xavier: - -Xavier -------------------------------- - -.. py:attribute:: paddle.fluid.initializer.Xavier - -:alias_main: paddle.nn.initializer.Xavier -:alias: paddle.nn.initializer.Xavier -:old_api: paddle.fluid.initializer.Xavier - - - -``XavierInitializer`` 的别名 - - - - - - diff --git a/doc/paddle/api/paddle/nn/input/data_cn.rst b/doc/paddle/api/paddle/nn/input/data_cn.rst deleted file mode 100644 index f250c9438581e2cddaebe4f72c8adb5c6821cdb9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/input/data_cn.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _cn_api_fluid_data: - -data -------------------------------- - - -.. py:function:: paddle.fluid.data(name, shape, dtype='float32', lod_level=0) - -:api_attr: 声明式编程模式(静态图) -:alias_main: paddle.nn.data -:alias: paddle.nn.data,paddle.nn.input.data -:old_api: paddle.fluid.data - - - -该OP会在全局block中创建变量(Variable),该全局变量可被计算图中的算子(operator)访问。该变量可作为占位符用于数据输入。例如用执行器(Executor)feed数据进该变量 - -注意: - - 不推荐使用 ``paddle.fluid.layers.data`` ,其在之后的版本中会被删除。请使用这个 ``paddle.fluid.data`` 。 - - ``paddle.fluid.layers.data`` 在组网期间会设置创建的变量维度(shape)和数据类型(dtype),但不会检查输入数据的维度和数据类型是否符合要求。 ``paddle.fluid.data`` 会在运行过程中由Executor/ParallelExecutor检查输入数据的维度和数据类型。 - - 如果想输入变长输入,可以使用 ``paddle.fluid.data`` 时将变长维度设为-1,或者直接输入 ``paddle.fluid.layers.data`` 且PaddlePaddle会按具体输入的形状运行。 - - 本API创建的变量默认 ``stop_gradient`` 属性为true,这意味这反向梯度不会被传递过这个数据变量。如果用户想传递反向梯度,可以设置 ``var.stop_gradient = False`` 。 - -参数: - - **name** (str)- 被创建的变量的名字,具体用法请参见 :ref:`api_guide_Name` 。 - - **shape** (list|tuple)- 声明维度信息的list或tuple。 - - **dtype** (np.dtype|VarType|str,可选)- 数据类型,支持bool,float16,float32,float64,int8,int16,int32,int64,uint8。默认值为float32。 - - **lod_level** (int,可选)- LoDTensor变量的LoD level数,LoD level是PaddlePaddle的高级特性,一般任务中不会需要更改此默认值,关于LoD level的详细适用场景和用法请见 :ref:`cn_user_guide_lod_tensor` 。默认值为0。 - -返回:全局变量,可进行数据访问 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - # Creates a variable with fixed size [3, 2, 1] - # User can only feed data of the same shape to x - x = fluid.data(name='x', shape=[3, 2, 1], dtype='float32') - - # Creates a variable with changable batch size -1. - # Users can feed data of any batch size into y, - # but size of each data sample has to be [2, 1] - y = fluid.data(name='y', shape=[-1, 2, 1], dtype='float32') - - z = x + y - - # In this example, we will feed x and y with np-ndarry "1" - # and fetch z, like implementing "1 + 1 = 2" in PaddlePaddle - feed_data = np.ones(shape=[3, 2, 1], dtype=np.float32) - - exe = fluid.Executor(fluid.CPUPlace()) - out = exe.run(fluid.default_main_program(), - feed={ - 'x': feed_data, - 'y': feed_data - }, - fetch_list=[z.name]) - - # np-ndarray of shape=[3, 2, 1], dtype=float32, whose elements are 2 - print(out) - - diff --git a/doc/paddle/api/paddle/nn/layer/common/BilinearTensorProduct_cn.rst b/doc/paddle/api/paddle/nn/layer/common/BilinearTensorProduct_cn.rst deleted file mode 100644 index 59b18c17a32951135e431ef036a6d32771651399..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/layer/common/BilinearTensorProduct_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_dygraph_BilinearTensorProduct: - -BilinearTensorProduct -------------------------------- - -.. py:class:: paddle.fluid.dygraph.BilinearTensorProduct(input1_dim, input2_dim, output_dim, name=None, act=None, param_attr=None, bias_attr=None, dtype="float32") - -:alias_main: paddle.nn.BilinearTensorProduct -:alias: paddle.nn.BilinearTensorProduct,paddle.nn.layer.BilinearTensorProduct,paddle.nn.layer.common.BilinearTensorProduct -:old_api: paddle.fluid.dygraph.BilinearTensorProduct - - - -该接口用于构建 ``BilinearTensorProduct`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。双线性乘积计算式子如下。 - -.. math:: - - out_{i} = x * W_{i} * {y^\mathrm{T}}, i=0,1,...,size-1 - -式中, - -- :math:`x` : 第一个输入,分别包含M个元素,维度为 :math:`[batch\_size, M]` -- :math:`y` :第二个输入,分别包含N个元素,维度为 :math:`[batch\_size, N]` -- :math:`W_i` :第i个学习到的权重,维度为 :math:`[M,N]` -- :math:`out_i` :输出的第i个元素 -- :math:`y^T` : :math:`y` 的转置 - - -参数: - - **input1_dim** (int) – 第一个输入的维度大小。 - - **input1_dim** (int) – 第二个输入的维度大小。 - - **output_dim** (int) – 输出的维度。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **act** (str,可选) – 对输出应用的激励函数。默认值为None。 - - **param_attr** (ParamAttr) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:维度为[batch_size, size]的2D Tensor,数据类型与输入数据类型相同。 - -返回类型: Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - with fluid.dygraph.guard(): - layer1 = numpy.random.random((5, 5)).astype('float32') - layer2 = numpy.random.random((5, 4)).astype('float32') - bilinearTensorProduct = fluid.dygraph.nn.BilinearTensorProduct( - input1_dim=5, input2_dim=4, output_dim=1000) - ret = bilinearTensorProduct(fluid.dygraph.base.to_variable(layer1), - fluid.dygraph.base.to_variable(layer2)) - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - - diff --git a/doc/paddle/api/paddle/nn/layer/common/Embedding_cn.rst b/doc/paddle/api/paddle/nn/layer/common/Embedding_cn.rst deleted file mode 100644 index 985bf1c9eb834aa024ebab792a00b151328ef77a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/layer/common/Embedding_cn.rst +++ /dev/null @@ -1,105 +0,0 @@ -.. _cn_api_fluid_dygraph_Embedding: - -Embedding -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Embedding(size, is_sparse=False, is_distributed=False, padding_idx=None, param_attr=None, dtype='float32') - -:alias_main: paddle.nn.Embedding -:alias: paddle.nn.Embedding,paddle.nn.layer.Embedding,paddle.nn.layer.common.Embedding -:old_api: paddle.fluid.dygraph.Embedding - - - -嵌入层(Embedding Layer) - -该接口用于构建 ``Embedding`` 的一个可调用对象,具体用法参照 ``代码示例`` 。其根据input中的id信息从embedding矩阵中查询对应embedding信息,并会根据输入的size (vocab_size, emb_size)和dtype自动构造一个二维embedding矩阵。 - -输出的Tensor的shape是在输入Tensor shape的最后一维后面添加了emb_size的维度。 - -注:input中的id必须满足 ``0 =< id < size[0]``,否则程序会抛异常退出。 - - -:: - - Case 1: - - input是Tensor, 且padding_idx = -1 - input.data = [[1, 3], [2, 4], [4, 127]] - input.shape = [3, 2] - 若size = [128, 16] - 输出为Tensor: - out.shape = [3, 2, 16] - out.data = [[[0.129435295, 0.244512452, ..., 0.436322452], - [0.345421456, 0.524563927, ..., 0.144534654]], - - [[0.345249859, 0.124939536, ..., 0.194353745], - [0.945345345, 0.435394634, ..., 0.435345365]], - - [[0.945345345, 0.435394634, ..., 0.435345365], - [0.0, 0.0, ..., 0.0 ]]] # padding data - 输入的padding_idx小于0,则自动转换为padding_idx = -1 + 128 = 127, 对于输入id为127的词,进行padding处理。 - - Case 2: - - input是lod level 为1的LoDTensor, 且padding_idx = 0 - input.lod = [[2, 3]] - input.data = [[1], [3], [2], [4], [0]] - input.shape = [5, 1] - 若size = [128, 16] - 输出为LoDTensor: - out.lod = [[2, 3]] - out.shape = [5, 1, 16] - out.data = [[[0.129435295, 0.244512452, ..., 0.436322452]], - [[0.345421456, 0.524563927, ..., 0.144534654]], - [[0.345249859, 0.124939536, ..., 0.194353745]], - [[0.945345345, 0.435394634, ..., 0.435345365]], - [[0.0, 0.0, ..., 0.0 ]]] # padding data - 输入的padding_idx = 0,则对于输入id为0的词,进行padding处理。 - -参数: - - **size** (tuple|list) - embedding矩阵的维度。必须包含两个元素,第一个元素为vocab_size(词表大小), 第二个为emb_size(embedding层维度)。 - - **is_sparse** (bool) - 是否使用稀疏的更新方式,这个参数只会影响反向的梯度更新的性能,sparse更新速度更快,推荐使用稀疏更新的方式。但某些optimizer不支持sparse更新,比如 :ref:`cn_api_fluid_optimizer_AdadeltaOptimizer` 、 :ref:`cn_api_fluid_optimizer_AdamaxOptimizer` 、 :ref:`cn_api_fluid_optimizer_DecayedAdagradOptimizer` 、 :ref:`cn_api_fluid_optimizer_FtrlOptimizer` 、 :ref:`cn_api_fluid_optimizer_LambOptimizer` 、:ref:`cn_api_fluid_optimizer_LarsMomentumOptimizer` ,此时is_sparse必须为False。默认为False。 - - **is_distributed** (bool) - 是否使用分布式的方式存储embedding矩阵,仅在多机分布式cpu训练中使用。默认为False。 - - **padding_idx** (int|long|None) - padding_idx需在区间[-vocab_size, vocab_size),否则不生效,padding_idx<0时,padding_idx会被改成vocab_size + padding_idx,input中等于padding_index的id对应的embedding信息会被设置为0,且这部分填充数据在训练时将不会被更新。如果为None,不作处理,默认为None。 - - **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。此外,可以通过 ``param_attr`` 参数加载用户自定义或预训练的词向量。只需将本地词向量转为numpy数据格式,且保证本地词向量的shape和embedding的 ``size`` 参数一致,然后使用 :ref:`cn_api_fluid_initializer_NumpyArrayInitializer` 进行初始化,即可实现加载自定义或预训练的词向量。详细使用方法见代码示例2。 - - **dtype** (str|core.VarDesc.VarType) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - -返回:input映射后得到的Embedding Tensor或LoDTensor,数据类型和dtype定义的类型一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.dygraph.base as base - import numpy as np - - # 示例 1 - inp_word = np.array([[2, 3, 5], [4, 2, 1]]).astype('int64') - inp_word.shape # [2, 3] - dict_size = 20 - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding( - size=[dict_size, 32], - param_attr='emb.w', - is_sparse=False) - static_rlt3 = emb(base.to_variable(inp_word)) - static_rlt3.shape # [2, 3, 32] - - # 示例 2: 加载用户自定义或预训练的词向量 - weight_data = np.random.random(size=(128, 100)) # numpy格式的词向量数据 - w_param_attrs = fluid.ParamAttr( - name="emb_weight", - learning_rate=0.5, - initializer=fluid.initializer.NumpyArrayInitializer(weight_data), - trainable=True) - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding( - size=[128, 100], - param_attr= w_param_attrs, - is_sparse=False) - static_rlt3 = emb(base.to_variable(inp_word)) - diff --git a/doc/paddle/api/paddle/nn/layer/common/Linear_cn.rst b/doc/paddle/api/paddle/nn/layer/common/Linear_cn.rst deleted file mode 100644 index c741deb393c1eda09d4c8daa1521139c564e8ce9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/layer/common/Linear_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_dygraph_Linear: - -Linear -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Linear(input_dim, output_dim, param_attr=None, bias_attr=None, act=None, dtype='float32') - -:alias_main: paddle.nn.Linear -:alias: paddle.nn.Linear,paddle.nn.layer.Linear,paddle.nn.layer.common.Linear -:old_api: paddle.fluid.dygraph.Linear - - - - -**线性变换层:** - -.. math:: - - \\Out = Act({XW + b})\\ - -其中,:math:`X` 为输入的 Tensor, :math:`W` 和 :math:`b` 分别为权重和偏置。 - -Linear 层只接受一个 Tensor 的输入。 -Linear 层将输入 Tensor 与权重矩阵 :math:`W` 相乘,然后生成形状为 :math:`[N,*,output_dim]` 的输出张量, -其中 :math:`N` 是批量大小,:math:`*` 表示任意数量的附加尺寸。 -如果 bias_attr 不是 None,则将创建一个 bias 变量并将其添加到输出中。 -最后,如果激活 act 不是 None,则相应激活函数也将应用于输出上。 - -参数: - - **input_dim** (int) – 线性变换层输入单元的数目。 - - **output_dim** (int) – 线性变换层输出单元的数目。 - - **param_attr** (ParamAttr, 可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) – 指定偏置参数属性的对象,若 `bias_attr` 为bool类型,如果设置为False,表示不会为该层添加偏置;如果设置为True,表示使用默认的偏置参数属性。默认值为None,表示使用默认的偏置参数属性。默认的偏置参数属性将偏置参数的初始值设为0。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **dtype** (str, 可选) – 权重的数据类型,可以为float32或float64。默认为float32。 - -返回:无 - -**代码示例** - -.. code-block:: python - - from paddle.fluid.dygraph.base import to_variable - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - import numpy as np - - data = np.random.uniform( -1, 1, [30, 10, 32] ).astype('float32') - with fluid.dygraph.guard(): - linear = Linear(32, 64) - data = to_variable(data) - res = linear(data) # [30, 10, 64] - -属性 -:::::::::::: -.. py:attribute:: weight - -本层的可学习参数,类型为 ``Parameter`` - -.. py:attribute:: bias - -本层的可学习偏置,类型为 ``Parameter`` - diff --git a/doc/paddle/api/paddle/nn/layer/common/Pool2D_cn.rst b/doc/paddle/api/paddle/nn/layer/common/Pool2D_cn.rst deleted file mode 100644 index e66ec6b3237edbe73446be147aef39efe3cb66a8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/layer/common/Pool2D_cn.rst +++ /dev/null @@ -1,95 +0,0 @@ -.. _cn_api_fluid_dygraph_Pool2D: - -Pool2D -------------------------------- - -.. py:class:: paddle.fluid.dygraph.Pool2D(pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, exclusive=True, data_format="NCHW") - -:alias_main: paddle.nn.Pool2D -:alias: paddle.nn.Pool2D,paddle.nn.layer.Pool2D,paddle.nn.layer.common.Pool2D -:old_api: paddle.fluid.dygraph.Pool2D - - - -该接口用于构建 ``Pool2D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维池化层,并使用上述输入参数的池化配置,为二维空间池化操作,根据 ``input`` , 池化类型 ``pool_type`` , 池化核大小 ``pool_size`` , 步长 ``pool_stride`` ,填充 ``pool_padding`` 这些参数得到输出。 - -输入X和输出Out默认是NCHW格式,N为批大小,C是通道数,H是特征高度,W是特征宽度。参数( ``ksize``, ``strides``, ``paddings`` )含有两个整型元素。分别表示高度和宽度上的参数。输入X的大小和输出Out的大小可能不一致。 - -例如: - -输入: - X shape::math:`\left ( N,C,H_{in},W_{in} \right )` - -输出: - Out shape::math:`\left ( N,C,H_{out},W_{out} \right )` - -如果 ``ceil_mode`` = false: - -.. math:: - H_{out} = \frac{(H_{in} - ksize[0] + 2 * paddings[0])}{strides[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - ksize[1] + 2 * paddings[1])}{strides[1]} + 1 - -如果 ``ceil_mode`` = true: - -.. math:: - H_{out} = \frac{(H_{in} - ksize[0] + 2 * paddings[0] + strides[0] - 1)}{strides[0]} + 1 - -.. math:: - W_{out} = \frac{(W_{in} - ksize[1] + 2 * paddings[1] + strides[1] - 1)}{strides[1]} + 1 - -如果 ``exclusive`` = false: - -.. math:: - hstart &= i * strides[0] - paddings[0] \\ - hend &= hstart + ksize[0] \\ - wstart &= j * strides[1] - paddings[1] \\ - wend &= wstart + ksize[1] \\ - Output(i ,j) &= \frac{sum(Input[hstart:hend, wstart:wend])}{ksize[0] * ksize[1]} - -如果 ``exclusive`` = true: - -.. math:: - hstart &= max(0, i * strides[0] - paddings[0])\\ - hend &= min(H, hstart + ksize[0]) \\ - wstart &= max(0, j * strides[1] - paddings[1]) \\ - wend & = min(W, wstart + ksize[1]) \\ - Output(i ,j) & = \frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)} - -参数: - - **pool_size** (int|list|tuple, 可选) - 池化核的大小。如果它是一个元组或列表,它必须包含两个整数值, (pool_size_Height, pool_size_Width)。若为一个整数,则它的平方值将作为池化核大小,比如若pool_size=2, 则池化核大小为2x2。默认值:-1。 - - **pool_type** (str, 可选) - 池化类型,可以是”max“对应max-pooling,“avg”对应average-pooling。默认为”max“。 - - **pool_stride** (int|list|tuple, 可选) - 池化层的步长。如果它是一个元组或列表,它将包含两个整数,(pool_stride_Height, pool_stride_Width)。若为一个整数,则表示H和W维度上stride均为该值。默认值为1。 - - **pool_padding** (int|list|tuple, 可选) - 填充大小。如果它是一个元组或列表,它必须包含两个整数值,(pool_padding_on_Height, pool_padding_on_Width)。若为一个整数,则表示H和W维度上padding均为该值。默认值为1。 - - **global_pooling** (bool, 可选)- 是否用全局池化。如果global_pooling = True, ``pool_size`` 和 ``pool_padding`` 将被忽略,默认False。 - - **use_cudnn** (bool, 可选)- 是否用cudnn核,只有已安装cudnn库时才有效。默认True。 - - **ceil_mode** (bool, 可选)- 是否用ceil函数计算输出高度和宽度。如果设为False,则使用floor函数。默认为False。 - - **exclusive** (bool, 可选) - 是否在平均池化模式忽略填充值。默认为True。 - - **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是"NCHW"和"NHWC"。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:"NCHW"。 - -返回:无 - -抛出异常: - - ``ValueError`` - 如果 ``pool_type`` 既不是“max”也不是“avg”。 - - ``ValueError`` - 如果 ``global_pooling`` 为False并且 ``pool_size`` 为-1。 - - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值。 - - ``ValueError`` - 如果 ``data_format`` 既不是"NCHW"也不是"NHWC"。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - - with fluid.dygraph.guard(): - data = np.random.random((3, 32, 32, 5)).astype('float32') - pool2d = fluid.dygraph.Pool2D(pool_size=2, - pool_type='max', - pool_stride=1, - global_pooling=False) - pool2d_res = pool2d(to_variable(data)) - - diff --git a/doc/paddle/api/paddle/nn/layer/norm/BatchNorm_cn.rst b/doc/paddle/api/paddle/nn/layer/norm/BatchNorm_cn.rst deleted file mode 100644 index bede52decd8cf46131fd2cdf6b0b91673fd34781..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/layer/norm/BatchNorm_cn.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. _cn_api_fluid_dygraph_BatchNorm: - -BatchNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.BatchNorm(num_channels, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, dtype='float32', data_layout='NCHW', in_place=False, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False, trainable_statistics=False) - -:alias_main: paddle.nn.BatchNorm -:alias: paddle.nn.BatchNorm,paddle.nn.layer.BatchNorm,paddle.nn.layer.norm.BatchNorm -:old_api: paddle.fluid.dygraph.BatchNorm - - - -该接口用于构建 ``BatchNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了批归一化层(Batch Normalization Layer)的功能,可用作卷积和全连接操作的批归一化函数,根据当前批次数据按通道计算的均值和方差进行归一化。更多详情请参考 : `Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift `_ - -当use_global_stats = False时,:math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是minibatch的统计数据。计算公式如下: - -.. math:: - \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mini-batch-mean \\ - \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// mini-batch-variance \\ - -- :math:`x` : 批输入数据 -- :math:`m` : 当前批次数据的大小 - -当use_global_stats = True时,:math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是全局(或运行)统计数据(moving_mean和moving_variance),通常来自预先训练好的模型。计算公式如下: - -.. math:: - - moving\_mean = moving\_mean * momentum + \mu_{\beta} * (1. - momentum) \quad &// global mean \\ - moving\_variance = moving\_variance * momentum + \sigma_{\beta}^{2} * (1. - momentum) \quad &// global variance \\ - -归一化函数公式如下: - -.. math:: - - \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ - y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift \\ - -- :math:`\epsilon` : 添加较小的值到方差中以防止除零 -- :math:`\gamma` : 可训练的比例参数 -- :math:`\beta` : 可训练的偏差参数 - -参数: - - **num_channels** (int) - 指明输入 ``Tensor`` 的通道数量。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **is_test** (bool, 可选) - 指示是否在测试阶段,非训练阶段使用训练过程中统计到的全局均值和全局方差。默认值:False。 - - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 - - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **dtype** (str, 可选) - 指明输入 ``Tensor`` 的数据类型,可以为float32或float64。默认值:float32。 - - **data_layout** (string, 可选) - 指定输入数据格式,数据格式可以为“NCHW”或者“NHWC”。默认值:“NCHW”。 - - **in_place** (bool, 可选) - 指示 ``batch_norm`` 的输出是否可以复用输入内存。默认值:False。 - - **moving_mean_name** (str, 可选) - ``moving_mean`` 的名称,存储全局均值。如果将其设置为None, ``batch_norm`` 将随机命名全局均值;否则, ``batch_norm`` 将命名全局均值为 ``moving_mean_name`` 。默认值:None。 - - **moving_variance_name** (string, 可选) - ``moving_var`` 的名称,存储全局方差。如果将其设置为None, ``batch_norm`` 将随机命名全局方差;否则, ``batch_norm`` 将命名全局方差为 ``moving_variance_name`` 。默认值:None。 - - **do_model_average_for_mean_and_var** (bool, 可选) - 指示是否为mean和variance做模型均值。默认值:False。 - - **use_global_stats** (bool, 可选) – 指示是否使用全局均值和方差。在预测或测试模式下,将 ``use_global_stats`` 设置为true或将 ``is_test`` 设置为true,这两种行为是等效的。在训练模式中,当设置 ``use_global_stats`` 为True时,在训练期间也将使用全局均值和方差。默认值:False。 - - **trainable_statistics** (bool, 可选) - eval模式下是否计算mean均值和var方差。eval模式下,trainable_statistics为True时,由该批数据计算均值和方差。默认值:False。 - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy as np - - x = np.random.random(size=(3, 10, 3, 7)).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - batch_norm = fluid.BatchNorm(10) - hidden1 = batch_norm(x) - - diff --git a/doc/paddle/api/paddle/nn/layer/norm/GroupNorm_cn.rst b/doc/paddle/api/paddle/nn/layer/norm/GroupNorm_cn.rst deleted file mode 100644 index 5a619d25a616a3cc8922373c335fad404623ba6d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/layer/norm/GroupNorm_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_dygraph_GroupNorm: - -GroupNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.GroupNorm(channels, groups, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, data_layout='NCHW', dtype="float32") - -:alias_main: paddle.nn.GroupNorm -:alias: paddle.nn.GroupNorm,paddle.nn.layer.GroupNorm,paddle.nn.layer.norm.GroupNorm -:old_api: paddle.fluid.dygraph.GroupNorm - - - -**Group Normalization层** - -该接口用于构建 ``GroupNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了组归一化层的功能。更多详情请参考: `Group Normalization `_ 。 - -参数: - - **channels** (int) - 输入的通道数。 - - **groups** (int) - 从通道中分离出来的 ``group`` 的数目。 - - **epsilon** (float, 可选) - 为防止方差除零,增加一个很小的值。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **data_layout** (str, 可选) - 只支持“NCHW”(num_batches,channels,height,width)格式。默认值:“NCHW”。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:无 - -抛出异常: - - ValueError - 如果 ``data_layout`` 不是“NCHW”格式。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy s np - - with fluid.dygraph.guard(): - x = np.random.random((8, 32, 32)).astype('float32') - groupNorm = fluid.dygraph.nn.GroupNorm(channels=32, groups=4) - ret = groupNorm(fluid.dygraph.base.to_variable(x)) - - diff --git a/doc/paddle/api/paddle/nn/layer/norm/LayerNorm_cn.rst b/doc/paddle/api/paddle/nn/layer/norm/LayerNorm_cn.rst deleted file mode 100644 index 2fd08fe7ab4ddf0fb1055a49bb96ac70bcb087d5..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/layer/norm/LayerNorm_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_dygraph_LayerNorm: - -LayerNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.LayerNorm(normalized_shape, scale=True, shift=True, begin_norm_axis=1, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, dtype="float32") - -:alias_main: paddle.nn.LayerNorm -:alias: paddle.nn.LayerNorm,paddle.nn.layer.LayerNorm,paddle.nn.layer.norm.LayerNorm -:old_api: paddle.fluid.dygraph.LayerNorm - - - -该接口用于构建 ``LayerNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了层归一化层(Layer Normalization Layer)的功能,其可以应用于小批量输入数据。更多详情请参考:`Layer Normalization `_ - -计算公式如下 - -.. math:: - \\\mu=\frac{1}{H}\sum_{i=1}^{H}x_i\\ - - \\\sigma=\sqrt{\frac{1}{H}\sum_i^H{(x_i-\mu)^2} + \epsilon}\\ - - \\y=f(\frac{g}{\sigma}(x-\mu) + b)\\ - -- :math:`x` : 该层神经元的向量表示 -- :math:`H` : 层中隐藏神经元个数 -- :math:`\epsilon` : 添加较小的值到方差中以防止除零 -- :math:`g` : 可训练的比例参数 -- :math:`b` : 可训练的偏差参数 - - -参数: - - **normalized_shape** (int 或 list 或 tuple) – 需规范化的shape,期望的输入shape为 ``[*, normalized_shape[0], normalized_shape[1], ..., normalized_shape[-1]]``。如果是单个整数,则此模块将在最后一个维度上规范化(此时最后一维的维度需与该参数相同)。 - - **scale** (bool, 可选) - 指明是否在归一化后学习自适应增益 ``g`` 。默认值:True。 - - **shift** (bool, 可选) - 指明是否在归一化后学习自适应偏差 ``b`` 。默认值:True。 - - **epsilon** (float, 可选) - 指明在计算过程中是否添加较小的值到方差中以防止除零。默认值:1e-05。 - - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - - **dtype** (str,可选) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - - -返回:无 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.dygraph.base import to_variable - import numpy - - x = numpy.random.random((3, 32, 32)).astype('float32') - with fluid.dygraph.guard(): - x = to_variable(x) - layerNorm = fluid.LayerNorm([32, 32]) - ret = layerNorm(x) - - diff --git a/doc/paddle/api/paddle/nn/layer/norm/SpectralNorm_cn.rst b/doc/paddle/api/paddle/nn/layer/norm/SpectralNorm_cn.rst deleted file mode 100644 index d1677c60a870a6214860b5bb49418b35805d5bd9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/layer/norm/SpectralNorm_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_dygraph_SpectralNorm: - -SpectralNorm -------------------------------- - -.. py:class:: paddle.fluid.dygraph.SpectralNorm(weight_shape, dim=0, power_iters=1, eps=1e-12, name=None, dtype="float32") - -:alias_main: paddle.nn.SpectralNorm -:alias: paddle.nn.SpectralNorm,paddle.nn.layer.SpectralNorm,paddle.nn.layer.norm.SpectralNorm -:old_api: paddle.fluid.dygraph.SpectralNorm - - - -该接口用于构建 ``SpectralNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了谱归一化层的功能,用于计算fc、conv1d、conv2d、conv3d层的权重参数的谱正则值,输入权重参数应分别为2-D, 3-D, 4-D, 5-D张量,输出张量与输入张量维度相同。谱特征值计算方式如下: - -步骤1:生成形状为[H]的向量U,以及形状为[W]的向量V,其中H是输入权重张量的第 ``dim`` 个维度,W是剩余维度的乘积。 - -步骤2: ``power_iters`` 应该是一个正整数,用U和V迭代计算 ``power_iters`` 轮,迭代步骤如下。 - -.. math:: - - \mathbf{v} &:= \frac{\mathbf{W}^{T} \mathbf{u}}{\|\mathbf{W}^{T} \mathbf{u}\|_2}\\ - \mathbf{u} &:= \frac{\mathbf{W}^{T} \mathbf{v}}{\|\mathbf{W}^{T} \mathbf{v}\|_2} - -步骤3:计算 :math:`\sigma(\mathbf{W})` 并特征值值归一化。 - -.. math:: - \sigma(\mathbf{W}) &= \mathbf{u}^{T} \mathbf{W} \mathbf{v}\\ - \mathbf{W} &= \frac{\mathbf{W}}{\sigma(\mathbf{W})} - -可参考: `Spectral Normalization `_ - -参数: - - **weight_shape** (list 或 tuple) - 权重参数的shape。 - - **dim** (int, 可选) - 将输入(weight)重塑为矩阵之前应排列到第一个的维度索引,如果input(weight)是fc层的权重,则应设置为0;如果input(weight)是conv层的权重,则应设置为1。默认值:0。 - - **power_iters** (int, 可选) - 将用于计算的 ``SpectralNorm`` 功率迭代次数,默认值:1。 - - **eps** (float, 可选) - ``eps`` 用于保证计算规范中的数值稳定性,分母会加上 ``eps`` 防止除零。默认值:1e-12。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - -返回:无 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - with fluid.dygraph.guard(): - weight = np.random.random((2, 8, 32, 32)).astype('float32') - spectralNorm = fluid.dygraph.nn.SpectralNorm(weight.shape, dim=1, power_iters=2) - ret = spectralNorm(fluid.dygraph.base.to_variable(weight)) - diff --git a/doc/paddle/api/paddle/nn/multiclass_nms_cn.rst b/doc/paddle/api/paddle/nn/multiclass_nms_cn.rst deleted file mode 100644 index 12e3c804d95d81742116abfbf8bc71090621db1c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/multiclass_nms_cn.rst +++ /dev/null @@ -1,85 +0,0 @@ -.. _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) - -:alias_main: paddle.nn.functional.multiclass_nms -:alias: paddle.nn.functional.multiclass_nms,paddle.nn.functional.extension.multiclass_nms -:old_api: paddle.fluid.layers.multiclass_nms - - - -**多分类NMS** - -该OP用于对边界框(bounding box)和评分(scores)执行多类非极大值抑制(NMS)。 - -在NMS中,如果提供 ``score_threshold`` 阈值,则此OP贪心地选择所有得分(scores)高于 ``score_threshold`` 的检测边界框(bounding box)的子集,如果nms_top_k大于-1,则选择最大的nms_top_k置信度分数。 接着,该OP依据 adaptive nms(基于 ``nms_threshold`` 和 ``nms_eta``),删除与已选择的框IOU(交并比)高于nms_threshold 的重叠框。 - -在NMS步骤后,如果keep_top_k大于-1,则每个图像最多保留keep_top_k个框(bounding box)。 - -计算示例: - .. code-block:: text - - 如果: - box1.data = (2.0, 3.0, 7.0, 5.0) 数据格式为 (xmin, ymin, xmax, ymax) - box1.scores = (0.7, 0.2, 0.4) 其中 (label0.score=0.7, label1.score=0.2, label2.cores=0.4) - box2.data = (3.0, 4.0, 8.0, 5.0) - box2.score = (0.3, 0.3, 0.1) - nms_threshold = 0.3 - background_label = 0 - score_threshold = 0 - 则: - iou = 4/11 > 0.3 - out.data = [[1, 0.3, 3.0, 4.0, 8.0, 5.0], - [2, 0.4, 2.0, 3.0, 7.0, 5.0]] - - 输出数据格式为 (label, confidence, xmin, ymin, xmax, ymax) - - - -参数: - - **bboxes** (Variable) – 支持两种类型的边界框(bounding box): - - 1. (Tensor)形为[N,M,4 或 8、16、24、32]的3-D张量,表示将预测M个边界框的预测位置, N是批大小(batch size)。当边界框(bounding box)大小等于4时,每个边界框有四个坐标值,布局为[xmin,ymin,xmax,ymax]。数据类型为float32或float64。 - 2. (LoDTensor)形状为[M,C,4] M是边界框的个数,C是类别个数。数据类型为float32或float64 - - - **scores** (Variable) – 支持两种类型的分数: - - 1. (Tensor)具有形状[N,C,M]的3-D张量表示预测的置信度。 N是批量大小 batch size,C是种类数目,M是边界框bounding box的数量。对于每个类别,存在对应于M个边界框的总M个分数。请注意,M等于bboxes的第二维。数据类型为float32或float64。 - 2. (LoDTensor)具有形状[M,C]的2-D LoDTensor。 M是bbox的数量,C是种类数目。在这种情况下,输入bboxes应该是形为[M,C,4]的第二种情况。数据类型为float32或float64。 - - - **background_label** (int) – 背景标签(类别)的索引,如果设置为 0 ,则忽略背景标签(类别)。如果设置为 -1 ,则考虑所有类别。默认值:0 - - **score_threshold** (float) – 过滤掉低置信度分数的边界框的阈值。如果没有提供,请考虑所有边界框。 - - **nms_top_k** (int) – 基于 score_threshold 的过滤检测后,根据置信度保留的最大检测次数。 - - **nms_threshold** (float) – 在NMS中用于剔除检测框IOU的阈值,默认值:0.3 。 - - **nms_eta** (float) – 在NMS中用于调整 nms_threshold 的参数,设为1时表示nms_threshold不变。默认值:1.0 。 - - **keep_top_k** (int) – NMS步骤后每个图像要保留的总bbox数。 -1表示在NMS步骤之后保留所有bbox。 - - **normalized** (bool) – 检测是否已经经过正则化。默认值:True 。 - - **name** (str|None) – 具体用法请参见 :ref:`cn_api_guide_Name` ,一般无需设置,默认值为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}) - -返回类型:Variable,数据类型与输入一致。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - 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) - - - diff --git a/doc/paddle/api/paddle/nn/polygon_box_transform_cn.rst b/doc/paddle/api/paddle/nn/polygon_box_transform_cn.rst deleted file mode 100644 index 06fa39efbdc758bc5e03dcf64e9554d2f627086b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/polygon_box_transform_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_layers_polygon_box_transform: - -polygon_box_transform -------------------------------- - -.. py:function:: paddle.fluid.layers.polygon_box_transform(input, name=None) - -:alias_main: paddle.nn.functional.polygon_box_transform -:alias: paddle.nn.functional.polygon_box_transform,paddle.nn.functional.extension.polygon_box_transform -:old_api: paddle.fluid.layers.polygon_box_transform - - - -**PolygonBoxTransform 算子** - -该op用于将偏移坐标改变为真实的坐标。 - -输入4-D Tensor是检测网络最终的几何输出。我们使用 2*n 个数来表示从 polygon_box 中的 n 个顶点(vertice)到像素位置的偏移。由于每个距离偏移包含两个数 :math:`(x_i, y_i)` ,所以几何输出通道数为 2*n。 - -参数: - - **input** (Variable) - 形状为 :math:`[batch\_size,geometry\_channels,height,width]` 的4-D Tensor,数据类型为float32或float64。 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:polygon_box_transform输出的真实坐标,是一个 4-D Tensor。数据类型为float32或float64。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name='input', shape=[4, 10, 5, 5], - append_batch_size=False, dtype='float32') - out = fluid.layers.polygon_box_transform(input) - - - - - - - diff --git a/doc/paddle/api/paddle/nn/random_crop_cn.rst b/doc/paddle/api/paddle/nn/random_crop_cn.rst deleted file mode 100644 index e9a229030384d8a9dd28ca0308654510f2326008..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/random_crop_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_random_crop: - -random_crop -------------------------------- - -.. py:function:: paddle.fluid.layers.random_crop(x, shape, seed=None) - -:alias_main: paddle.nn.functional.random_crop -:alias: paddle.nn.functional.random_crop,paddle.nn.functional.extension.random_crop -:old_api: paddle.fluid.layers.random_crop - - - -该操作对batch中每个实例进行随机裁剪,即每个实例的裁剪位置不同,裁剪位置由均匀分布随机数生成器决定。所有裁剪后的实例都具有相同的维度,由 ``shape`` 参数决定。 - -参数: - - **x(Variable)** - 多维Tensor。 - - **shape(list(int))** - 裁剪后最后几维的形状,注意, ``shape`` 的个数小于 ``x`` 的秩。 - - **seed(int|Variable,可选)** - 设置随机数种子,默认情况下,种子是[-65536,-65536)中一个随机数,如果类型是Variable,要求数据类型是int64,默认值:None。 - -返回: 裁剪后的Tensor。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - img = fluid.data("img", [None, 3, 256, 256]) - # cropped_img的shape: [-1, 3, 224, 224] - cropped_img = fluid.layers.random_crop(img, shape=[3, 224, 224]) - - # cropped_img2的shape: [-1, 2, 224, 224] - # cropped_img2 = fluid.layers.random_crop(img, shape=[2,224, 224]) - - # cropped_img3的shape: [-1, 3, 128, 224] - # cropped_img3 = fluid.layers.random_crop(img, shape=[128, 224]) - - - diff --git a/doc/paddle/api/paddle/nn/row_conv_cn.rst b/doc/paddle/api/paddle/nn/row_conv_cn.rst deleted file mode 100644 index ab16bdbfbb86e42131b331a373b8e66e2a1099c1..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/row_conv_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_row_conv: - -row_conv -------------------------------- - - -.. py:function:: paddle.fluid.layers.row_conv(input, future_context_size, param_attr=None, act=None) - -:api_attr: 声明式编程模式(静态图) - - - -该接口为行卷积(Row-convolution operator)或称之为超前卷积(lookahead convolution),最早介绍于DeepSpeech2论文中,论文链接: - - ``_ - -双向的RNN在深度语音模型中很有用,它通过对整个序列执行正向和反向传递来学习序列的表示。然而,与单向RNNs不同的是,在线部署和低延迟设置中,双向RNNs具有难度。超前卷积将来自未来子序列的信息以一种高效的方式进行计算,以改进单向递归神经网络。 row convolution operator 与一维序列卷积不同,计算方法如下: - -给定输入序列长度为 :math:`t` 的输入序列 :math:`X` 和输入维度 :math:`D` ,以及一个大小为 :math:`context * D` 的滤波器 :math:`W` ,输出序列卷积为: - -.. math:: - out_i = \sum_{j=i}^{i+context-1} X_{j} · W_{j-i} - -公式中: - - :math:`out_i` : 第i行输出变量形为[1, D]. - - :math:`context` : 下文(future context)大小 - - :math:`X_j` : 第j行输出变量,形为[1,D] - - :math:`W_{j-i}` : 第(j-i)行参数,其形状为[1,D]。 - -详细请参考 `设计文档 `_ 。 - -参数: - - **input** (Variable) -- 支持输入为LodTensor和Tensor,输入类型可以是[float32, float64],它支持可变时间长度的输入序列。当输入input为LodTensor时,其内部张量是一个具有形状(T x N)的矩阵,其中T是这个mini batch中的总的timestep,N是输入数据维数。当输入input为Tensor时,其形状为(B x T x N)的三维矩阵,B为mini batch大小,T为每个batch输入中的最大timestep,N是输入数据维数。当输入input为LoDTensor,形状为[9, N],LoD信息为[2, 3, 4],等价于输入input为形状是[3, 4, N]的Tensor。 - - **future_context_size** (int) -- 下文大小。请注意,卷积核的shape是[future_context_size + 1, N],N和输入input的数据维度N保持一致。 - - **param_attr** (ParamAttr) -- 参数的属性,包括名称、初始化器等。 - - **act** (str) -- 非线性激活函数。 - -返回:表示row_conv计算结果的Variable,数据类型、维度和输入input相同。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # LoDTensor input - x = fluid.layers.data(name='x', shape=[9, 16], - dtype='float32', lod_level=3, - append_batch_size=False) - out = fluid.layers.row_conv(input=x, future_context_size=2) - - # Tensor input - x = fluid.layers.data(name='x', shape=[9, 4, 16], - dtype='float32', - append_batch_size=False) - out = fluid.layers.row_conv(input=x, future_context_size=2) - - - diff --git a/doc/paddle/api/paddle/nn/rpn_target_assign_cn.rst b/doc/paddle/api/paddle/nn/rpn_target_assign_cn.rst deleted file mode 100644 index 3edc0ee06ede956fc25791c2c833ea6b473c2c9e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/rpn_target_assign_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_rpn_target_assign: - -rpn_target_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.rpn_target_assign(bbox_pred, cls_logits, anchor_box, anchor_var, gt_boxes, is_crowd, im_info, rpn_batch_size_per_im=256, rpn_straddle_thresh=0.0, rpn_fg_fraction=0.5, rpn_positive_overlap=0.7, rpn_negative_overlap=0.3, use_random=True) - -:alias_main: paddle.nn.functional.rpn_target_assign -:alias: paddle.nn.functional.rpn_target_assign,paddle.nn.functional.extension.rpn_target_assign -:old_api: paddle.fluid.layers.rpn_target_assign - - - -该OP用于为anchors分配分类标签和回归标签,以便用这些标签对RPN进行训练。 - -该OP将anchors分为两种类别,正和负。根据Faster-RCNN的paper,正类别anchor包括以下两种anchor: - -- 在与一个ground-truth boxes相交的所有anchor中,IoU最高的anchor -- 和任意一个ground-truth box的IoU超出了阈值 ``rpn_positive_overlap`` - -负类别anchor是和任何ground-truth boxes的IoU都低于阈值 ``rpn_negative_overlap`` 的anchor. - -正负anchors之外的anchors不会被选出来参与训练。 - -回归标签是ground-truth boxes和正类别anchor的偏移值。 - -参数: - - **bbox_pred** (Variable) - Shape为 ``[batch_size,M,4]`` 的3-D Tensor,表示M个边界框的预测位置。每个边界框有四个坐标值,即 ``[xmin,ymin,xmax,ymax]`` 。数据类型支持float32和float64。 - - **cls_logits** (Variable)- Shape为 ``[batch_size,M,1]`` 的3-D Tensor,表示预测的置信度。1是frontground和background的sigmoid,M是边界框的数量。数据类型支持float32和float64。 - - **anchor_box** (Variable) - Shape为 ``[M,4]`` 的2-D Tensor,它拥有M个框,每个框可表示为 ``[xmin,ymin,xmax,ymax]`` , ``[xmin,ymin]`` 是anchor框的左上部坐标,如果输入是图像特征图,则它们接近坐标系的原点。 ``[xmax,ymax]`` 是anchor框的右下部坐标。数据类型支持float32和float64。 - - **anchor_var** (Variable) - Shape为 ``[M,4]`` 的2-D Tensor,它拥有anchor的expand方差。数据类型支持float32和float64。 - - **gt_boxes** (Variable) - Shape为 ``[Ng,4]`` 的2-D LoDTensor, ``Ng`` 是一个batch内输入groundtruth boxes的总数。数据类型支持float32和float64。 - - **is_crowd** (Variable) –Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于标记boxes是否是crowd。数据类型支持int32。 - - **im_info** (Variable) - Shape为[N,3]的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和feature map相对于原始图像缩放的比例。数据类型支持int32。 - - **rpn_batch_size_per_im** (int,可选) - 整型数字。每个图像中RPN示例总数。数据类型支持int32。缺省值为256。 - - **rpn_straddle_thresh** (float,可选) - 浮点数字。超出图像外部 ``straddle_thresh`` 个像素的RPN anchors会被删除。数据类型支持float32。缺省值为0.0。 - - **rpn_fg_fraction** (float,可选) - 浮点数字。标记为foreground boxes的数量占batch内总体boxes的比例。 数据类型支持float32。缺省值为0.5。 - - **rpn_positive_overlap** (float,可选) - 浮点数字。和任意一个groundtruth box的 ``IoU`` 超出了阈值 ``rpn_positive_overlap`` 的box被判定为正类别。 数据类型支持float32。缺省值为0.7。 - - **rpn_negative_overlap** (float,可选) - 浮点数字。负类别anchor是和任何ground-truth boxes的IoU都低于阈值 ``rpn_negative_overlap`` 的anchor。 数据类型支持float32。缺省值为0.3。 - - **use_random** (bool,可选) – 布尔类型。是否使用随机采样来选择foreground boxes和background boxes。缺省值为True。 - -返回: 元组。格式为 ``(predicted_scores, predicted_location, target_label, target_bbox, bbox_inside_weight)`` - - **predicted_scores** (Varible) - RPN预测的类别结果。Shape为 ``[F + B,1]`` 的2D Tensor。 ``F`` 为foreground anchor的数量,B为background anchor的数量。数据类型与 ``bbox_pred`` 一致。 - - **predicted_location** (Variable) - RPN预测的位置结果。Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - - **target_label** (Variable) - Shape为 ``[F + B,1]`` 的2D Tensor。数据类型为int32。 - - **target_bbox** (Variable) - Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - - **Bbox_inside_weight** (Variable) - Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 - -返回类型:元组 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - bbox_pred = fluid.layers.data(name='bbox_pred', shape=[100, 4], - append_batch_size=False, dtype='float32') - cls_logits = fluid.layers.data(name='cls_logits', shape=[100, 1], - append_batch_size=False, dtype='float32') - anchor_box = fluid.layers.data(name='anchor_box', shape=[20, 4], - append_batch_size=False, dtype='float32') - anchor_var = fluid.layers.data(name='anchor_var', shape=[20, 4], - append_batch_size=False, dtype='float32') - gt_boxes = fluid.layers.data(name='gt_boxes', shape=[10, 4], - append_batch_size=False, dtype='float32') - is_crowd = fluid.layers.data(name='is_crowd', shape=[1], - append_batch_size=False, dtype='float32') - im_info = fluid.layers.data(name='im_infoss', shape=[1, 3], - append_batch_size=False, dtype='float32') - loc_pred, score_pred, loc_target, score_target, bbox_inside_weight= - fluid.layers.rpn_target_assign(bbox_pred, cls_logits, - anchor_box, anchor_var, gt_boxes, is_crowd, im_info) - - - - - diff --git a/doc/paddle/api/paddle/nn/similarity_focus_cn.rst b/doc/paddle/api/paddle/nn/similarity_focus_cn.rst deleted file mode 100644 index 5024493c825ea66ac0ed63ec35f05cc73e2e45e9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/similarity_focus_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_layers_similarity_focus: - -similarity_focus -------------------------------- - -.. py:function:: paddle.fluid.layers.similarity_focus(input, axis, indexes, name=None) - -:alias_main: paddle.nn.functional.similarity_focus -:alias: paddle.nn.functional.similarity_focus,paddle.nn.functional.extension.similarity_focus -:old_api: paddle.fluid.layers.similarity_focus - - - -**实现SimilarityFocus(相似度聚焦)运算** - -通过以下三个步骤,该层生成一个和输入 ``input`` 同形的 similarity focus mask(相似度聚焦掩码): - -1. 根据 ``axis`` 和 ``indexes`` 提取一个三维张量,第一维为batch大小。 - 例如,如果 ``axis=1, indexes=[a]`` , 将得到矩阵 T=X[:, a, :, :] 。 - 该例中,如果输入X的形为 (BatchSize, A, B, C) ,则输出张量T的形为 (BatchSize, B, C) 。 -2. 对于每一个索引,在输出T中找到最大值。所以同一行、同一列最多只有一个数字,这意味着如果在第i行,第j列中找到最大值,那么在相应行、列中的其他数值都将被忽略。然后再在剩余的数值中找到下一个最大值。显然,将会产生 min(B,C)个数字,并把三维相似聚焦掩码张量相应位置的元素置为1,其余则置为0。对每个索引按元素进行or运算。 -3. 将这个三维相似度聚焦掩码张量 broadcast 成输入 ``input`` 的形状 - -请参考 `Similarity Focus Layer `_ 。 - -:: - - 例如 : - - 给定四维张量 x 形为 (BatchSize, C, A, B), 其中C 为通道Channel数目, - 特征图(feature map)的形为(A,B): - - x.shape = (2, 3, 2, 2) - x.data = [[[[0.8, 0.1], - [0.4, 0.5]], - - [[0.9, 0.7], - [0.9, 0.9]], - - [[0.8, 0.9], - [0.1, 0.2]]], - - - [[[0.2, 0.5], - [0.3, 0.4]], - - [[0.9, 0.7], - [0.8, 0.4]], - - [[0.0, 0.2], - [0.4, 0.7]]]] - - 给定轴: 1 (即channel轴) - 给定索引: [0] - - 于是我们得到一个与输入同形的四维输出张量: - out.shape = (2, 3, 2, 2) - out.data = [[[[1.0, 0.0], - [0.0, 1.0]], - - [[1.0, 0.0], - [0.0, 1.0]], - - [[1.0, 0.0], - [0.0, 1.0]]], - - [[[0.0, 1.0], - [1.0, 0.0]], - - [[0.0, 1.0], - [1.0, 0.0]], - - [[0.0, 1.0], - [1.0, 0.0]]]] - - - -参数: - - **input** (Variable) – 输入张量,应为一个四维张量,形为[BatchSize, A, B, C],数据类型为 float32 或者 float64。 - - **axis** (int) – 指明要选择的轴。 可能取值为 1, 2 或 3。 - - **indexes** (list) – 指明选择维度的索引列表。 - -返回:一个和输入 Variable 同形状、同数据类型的 Variable - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data( - name='data', shape=[-1, 3, 2, 2], dtype='float32') - fluid.layers.similarity_focus(input=data, axis=1, indexes=[0]) - - - - - - - - - - - - diff --git a/doc/paddle/api/paddle/nn/target_assign_cn.rst b/doc/paddle/api/paddle/nn/target_assign_cn.rst deleted file mode 100644 index 61bd9787dad47e8778d9259dd2d2c4dbbefeddd8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/target_assign_cn.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. _cn_api_fluid_layers_target_assign: - -target_assign -------------------------------- - -.. py:function:: paddle.fluid.layers.target_assign(input, matched_indices, negative_indices=None, mismatch_value=None, name=None) - -:alias_main: paddle.nn.functional.target_assign -:alias: paddle.nn.functional.target_assign,paddle.nn.functional.extension.target_assign -:old_api: paddle.fluid.layers.target_assign - - - -对于每个实例,根据 ``match_indices`` 和 ``negative_indices`` 位置索引, 给输入 ``out`` 和 ``out_weight`` 赋值。输入 ``input`` 和 ``negative_indices`` 均为2-D LoDTensor。假如 ``input`` 中每个实例的行偏移称作lod,该操作计算步骤如下: - -1.根据match_indices赋值: - -.. code-block:: text - - If id = match_indices[i][j] > 0, - - out[i][j][0 : K] = X[lod[i] + id][j % P][0 : K] - out_weight[i][j] = 1. - - Otherwise, - - out[j][j][0 : K] = {mismatch_value, mismatch_value, ...} - out_weight[i][j] = 0. - -2.如果提供neg_indices,则再次依据该输入赋值: - -neg_indices中的第i个实例的索引称作neg_indice,则对于第i个实例: - -.. code-block:: text - - for id in neg_indice: - out[i][id][0 : K] = {mismatch_value, mismatch_value, ...} - out_weight[i][id] = 1.0 - -参数: - - **input** (Variable) - 输入为3-D LoDTensor,为了方便在上述文档中解释,假如维度是[M,P,K]。 - - **matched_indices** (Variable) - 输入为2-D Tensor,数据类型为int32,表示在输入中匹配位置,具体计算如上,同样,为了方便解释,假如维度大小为[N,P],如果 ``matched_indices[i][j]`` 为-1,表示在第 ``i`` 个实例中第j列项没有任何匹配项,输出会设置成 ``mismatch_value`` 。 - - **negative_indices** (Variable,可选) - 维度为2-D LoDTensor,数据类型为int32。可以不设置,如果设置,会依据该位置索引再次给输出赋值,具体参考上述文档。 - - **mismatch_value** (float32,可选) - 未匹配的位置填充值。 - - **name** (str) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:返回一个元组(out,out_weight)。out是三维张量,维度为[N,P,K],N和P与 ``matched_indices`` 中的N和P一致,K和输入X中的K一致。 ``out_weight`` 的维度为[N,P,1]。 - -返回类型:tuple(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data( - name='x', - shape=[4, 20, 4], - dtype='float', - lod_level=1) - matched_id = fluid.data( - name='indices', - shape=[8, 20], - dtype='int32') - trg, trg_weight = fluid.layers.target_assign( - x, - matched_id, - mismatch_value=0) - - - - - - diff --git a/doc/paddle/api/paddle/nn/temporal_shift_cn.rst b/doc/paddle/api/paddle/nn/temporal_shift_cn.rst deleted file mode 100644 index acde7a2951aeaec7760094c27332bbe023da3cdc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/temporal_shift_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_temporal_shift: - -temporal_shift -------------------------------- -.. py:function:: paddle.fluid.layers.temporal_shift(x, seg_num, shift_ratio=0.25, name=None) - -:alias_main: paddle.nn.functional.temporal_shift -:alias: paddle.nn.functional.temporal_shift,paddle.nn.functional.extension.temporal_shift -:old_api: paddle.fluid.layers.temporal_shift - - - -该OP用于对输入X做时序通道T上的位移操作,为TSM(Temporal Shift Module)中使用的操作。 - -输入(X)的形状应为[N*T, C, H, W],N是批大小,T是 ``seg_num`` 指定的时间段号,C是通道号,H和W是特征的高度和宽度。 - -时间偏移计算如下: - -步骤1:将输入(X)reshape为[N, T, C, H, W]。 - -步骤2:填充0到第二个(T)尺寸的变形结果,填充宽度每边为1,填充结果的形状为[N,T+2,C,H,W]。 - -步骤3:假设 ``shift_ratio`` 为1/4,切片填充结果如下: - -.. math:: - - slice1 &= x[:, :T, :C/4, :, :] - - slice2 &= x[:, 2:T+2, C/4:C/2, :, :] - - slice3 &= x[:, 1:T+1, C/2:, :, :] - -步骤4:沿第3(C)维连接三个切片,并将结果重塑为[N*T, C, H, W]。 - -有关时序移动的详细信息,请参阅文件: `Temporal Shift Module `_ - -参数: - - **x** (Variable) – 时移算符的输入张量。维度为 :math:`[N*T,C,H,W]` 的4-D Tensor。N为批量大小,T为时间段数,C为信道数,H为特征高度,W为特征宽度,数据类型为float32或float64。 - - **seg_num** (int) – 时间段编号,这应该是一个正整数。 - - **shift_ratio** (float) – 通道的移位比、通道的第一个 ``shift_ratio`` 部分沿时间维度移动-1,通道的第二个 ``shift_ratio`` 部分沿时间维度移动1,范围须在[0, 0.5]内。默认值0.25 - - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值:None。 - -返回:Variable(Tensor) 时序位移后的输出张量,维度与输入 ``x`` 一致。 - -返回类型:变量(Variable),数据类型与输入 ``x`` 一致。 - -抛出异常: ``TypeError`` – seg_num 必须是int类型 - - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.data(name='input', shape=[None,4,2,2], dtype='float32') - out = fluid.layers.temporal_shift(x=input, seg_num=2, shift_ratio=0.2) - - - diff --git a/doc/paddle/api/paddle/nn/warpctc_cn.rst b/doc/paddle/api/paddle/nn/warpctc_cn.rst deleted file mode 100644 index dbb4c4ca829330844170359127680fe870ac618c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/nn/warpctc_cn.rst +++ /dev/null @@ -1,98 +0,0 @@ -.. _cn_api_fluid_layers_warpctc: - -warpctc -------------------------------- - -.. py:function:: paddle.fluid.layers.warpctc(input, label, blank=0, norm_by_times=False, input_length=None, label_length=None) - -:alias_main: paddle.nn.functional.warpctc -:alias: paddle.nn.functional.warpctc,paddle.nn.functional.extension.warpctc -:old_api: paddle.fluid.layers.warpctc - - - -该OP用于计算 `CTC loss `_ 。该OP的底层调用了第三方 `baidu-research::warp-ctc `_ 的实现。 - -参数: - - **input** (Variable) - 可以是3-D Tensor或2-D LoDTensor。当输入类型是3-D Tensor时,则表示输入是经过padding的定长序列,其 shape 必须是 ``[seq_length, batch_size, num_classes + 1]`` 。当输入类型是2-D LoDTensor时,则表示输入为变长序列,其shape必须为 ``[Lp,num_classes+1]`` , ``Lp`` 是所有输入序列长度之和。以上 shape 中的 ``num_classes`` 是实际类别数,不包括空白标签。该输入不需要经过 softmax 操作,因为该OP的内部对 ``input`` 做了 softmax 操作。数据类型仅支持float32。 - - **label** (Variable) - 可以是3-D Tensor或2-D LoDTensor,需要跟 ``input`` 保持一致。当输入类型为3-D Tensor时,表示输入是经过 padding 的定长序列,其 shape 为 ``[batch_size, label_length]`` ,其中, ``label_length`` 是最长的 label 序列的长度。当输入类型是2-D LoDTensor时,则表示输入为变长序列,其shape必须为 ``[Lp, 1]`` , 其中 ``Lp`` 是所有 label 序列的长度和。 ``label`` 中的数值为字符ID。数据类型支持int32。 - - **blank** (int,可选) - 空格标记的ID,其取值范围为 ``[0,num_classes+1)`` 。数据类型支持int32。缺省值为0。 - - **norm_by_times** (bool,可选) - 是否根据序列长度对梯度进行正则化。数据类型支持 bool 。缺省值为False。 - - **input_length** (Variable) - 必须是1-D Tensor。仅在输入为定长序列时使用,表示输入数据中每个序列的长度,shape为 ``[batch_size]`` 。数据类型支持int64。默认为None。 - - **label_length** (Variable) - 必须是1-D Tensor。仅在label为定长序列时使用,表示 label 中每个序列的长度,shape为 ``[batch_size]`` 。数据类型支持int64。默认为None。 - -返回:Shape为[batch_size,1]的2-D Tensor,表示每一个序列的CTC loss。数据类型与 ``input`` 一致。 - -返回类型:Variable - -**代码示例** - -.. code-block:: python - - # using LoDTensor - import paddle.fluid as fluid - import numpy as np - - # lengths of logit sequences - seq_lens = [2,6] - # lengths of label sequences - label_lens = [2,3] - # class num - class_num = 5 - - logits = fluid.data(name='logits',shape=[None, class_num+1], - dtype='float32',lod_level=1) - label = fluid.data(name='label', shape=[None, 1], - dtype='int32', lod_level=1) - cost = fluid.layers.warpctc(input=logits, label=label) - place = fluid.CPUPlace() - x = fluid.create_lod_tensor( - np.random.rand(np.sum(seq_lens), class_num+1).astype("float32"), - [seq_lens], place) - y = fluid.create_lod_tensor( - np.random.randint(0, class_num, [np.sum(label_lens), 1]).astype("int32"), - [label_lens], place) - exe = fluid.Executor(place) - output= exe.run(fluid.default_main_program(), - feed={"logits": x,"label": y}, - fetch_list=[cost.name]) - print(output) - -.. code-block:: python - - # using Tensor - import paddle.fluid as fluid - import numpy as np - - # length of the longest logit sequence - max_seq_length = 5 - # length of the longest label sequence - max_label_length = 3 - # number of logit sequences - batch_size = 16 - # class num - class_num = 5 - logits = fluid.data(name='logits', - shape=[max_seq_length, batch_size, class_num+1], - dtype='float32') - logits_length = fluid.data(name='logits_length', shape=[None], - dtype='int64') - label = fluid.data(name='label', shape=[batch_size, max_label_length], - dtype='int32') - label_length = fluid.data(name='labels_length', shape=[None], - dtype='int64') - cost = fluid.layers.warpctc(input=logits, label=label, - input_length=logits_length, - label_length=label_length) - place = fluid.CPUPlace() - x = np.random.rand(max_seq_length, batch_size, class_num+1).astype("float32") - y = np.random.randint(0, class_num, [batch_size, max_label_length]).astype("int32") - exe = fluid.Executor(place) - output= exe.run(fluid.default_main_program(), - feed={"logits": x, - "label": y, - "logits_length": np.array([max_seq_length]*batch_size).astype("int64"), - "labels_length": np.array([max_label_length]*batch_size).astype("int64")}, - fetch_list=[cost.name]) - print(output) - diff --git a/doc/paddle/api/paddle/reader/decorator/ComposeNotAligned_cn.rst b/doc/paddle/api/paddle/reader/decorator/ComposeNotAligned_cn.rst deleted file mode 100644 index 1f4a911c5cb8b7dbad64807f81a4114e411ebeab..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/decorator/ComposeNotAligned_cn.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. THIS FILE IS GENERATED BY `gen_doc.{py|sh}` - !DO NOT EDIT THIS FILE MANUALLY! - -.. _api_fluid_io_ComposeNotAligned: - -ComposeNotAligned ------------------ - -.. autoclass:: paddle.fluid.io.ComposeNotAligned - :members: - :inherited-members: - :noindex: - -表示一种错误状态,说明调用compose API时, reader的输出数据没有对齐。 diff --git a/doc/paddle/api/paddle/reader/decorator/buffered_cn.rst b/doc/paddle/api/paddle/reader/decorator/buffered_cn.rst deleted file mode 100644 index 027c6346f735874d8c9accc38024c09b5940c429..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/decorator/buffered_cn.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. _cn_api_fluid_io_buffered: - -buffered -------------------------------- - -.. py:function:: paddle.fluid.io.buffered(reader, size) - - - - -创建一个缓存数据读取器,它读取数据并且存储进缓存区,从缓存区读取数据将会加速,只要缓存不是空的。 - -参数: - - **reader** (callable) – 读取数据的reader - - **size** (int) – 最大buffer的大小 - -返回:缓存的reader(读取器) \ No newline at end of file diff --git a/doc/paddle/api/paddle/reader/decorator/cache_cn.rst b/doc/paddle/api/paddle/reader/decorator/cache_cn.rst deleted file mode 100644 index e93e4c85d134c0feb2ff813a6127c89816baed76..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/decorator/cache_cn.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. _cn_api_fluid_io_cache: - -cache -------------------------------- - -.. py:function:: paddle.fluid.io.cache(reader) - - - - -缓存reader数据到内存中,小心此方法可能会花长时间来处理数据,并且会占用大量内存。 ``reader()`` 只能被调用一次。 - -参数: - - **reader** (callable) – 读取数据的reader,每次都会yields数据。 - -返回:每次都会从内存中yields数据的一个装饰reader。 - -返回类型:生成器 \ No newline at end of file diff --git a/doc/paddle/api/paddle/reader/decorator/chain_cn.rst b/doc/paddle/api/paddle/reader/decorator/chain_cn.rst deleted file mode 100644 index 4a4872d268cc2dfbddad0a6d4720be54e5eb41c9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/decorator/chain_cn.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _cn_api_fluid_io_chain: - -chain -------------------------------- - -.. py:function:: paddle.fluid.io.chain(*readers) - - - - -该接口将多个数据读取器组成一个数据读取器,它依次返回多个数据读取器的输出数据,同时不改变输出数据原先的格式。 - -举例来说,如果有3个输入读取器且输出分别为[0,0,0]、[10,10,10]和[20,20,20],那么调用该接口产生的新数据读取器的输出为[0,0,0], [10,10,10], [20,20,20]。 - -参数: - - **readers(list)** – 输入的数据读取器。 - -返回: 新的数据读取器。 - -返回类型:callable - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - def reader_creator_3(start): - def reader(): - for i in range(start, start + 3): - yield [i, i, i] - return reader - - c = fluid.io.chain(reader_creator_3(0), reader_creator_3(10), reader_creator_3(20)) - for e in c(): - print(e) - # 输出结果如下: - # [0, 0, 0] - # [1, 1, 1] - # [2, 2, 2] - # [10, 10, 10] - # [11, 11, 11] - # [12, 12, 12] - # [20, 20, 20] - # [21, 21, 21] - # [22, 22, 22] - diff --git a/doc/paddle/api/paddle/reader/decorator/compose_cn.rst b/doc/paddle/api/paddle/reader/decorator/compose_cn.rst deleted file mode 100644 index b4393bab5db375413712c27b60fb0699e4d85370..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/decorator/compose_cn.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _cn_api_fluid_io_compose: - -compose -------------------------------- - -.. py:function:: paddle.fluid.io.compose(*readers, **kwargs) - - - - -该接口将多个数据读取器组合为一个数据读取器,返回读取器的输出包含所有输入读取器的输出。 - -例如:如果输入为三个reader,三个reader的输出分别为:(1,2)、3、(4,5),则组合reader的输出为:(1,2,3,4,5)。 - -参数: - - **readers** - 将被组合的多个数据读取器(Reader),数据读取器的定义参见 :ref:`cn_api_paddle_data_reader_reader` 。 - - **check_alignment** (bool) - 可选,指明是否对输入reader进行对齐检查,默认值为True。如果为True,将检查输入reader是否正确对齐。如果为False,将不检查对齐并自动丢弃无法对齐的末尾数据。 - -返回:数据读取器(Reader)。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - def reader_creator_10(dur): - def reader(): - for i in range(10): - yield i - return reader - - reader = fluid.io.compose(reader_creator_10(0), reader_creator_10(0)) - -注意: 运行过程可能会抛出异常 ``ComposeNotAligned`` ,原因是输入的readers数据未对齐。 当check_alignment设置为False时,不会检查并触发该异常。 diff --git a/doc/paddle/api/paddle/reader/decorator/firstn_cn.rst b/doc/paddle/api/paddle/reader/decorator/firstn_cn.rst deleted file mode 100644 index ba9c1d427ab3ec1946dab0e78f1a2021a712fe94..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/decorator/firstn_cn.rst +++ /dev/null @@ -1,30 +0,0 @@ -.. _cn_api_fluid_io_firstn: - -firstn -------------------------------- - -.. py:function:: paddle.fluid.io.firstn(reader, n) - - - - -该接口创建一个数据读取器,它可以返回的最大样本数为n。 - -参数: - - **reader** (callable) – 输入的数据读取器。 - - **n** (int) – 可以返回的最大样本数。 - -返回: 新的的数据读取器。 - -返回类型: callable - -.. code-block:: python - - import paddle.fluid as fluid - def reader(): - for i in range(100): - yield i - firstn_reader = fluid.io.firstn(reader, 5) - for e in firstn_reader(): - print(e) - # 输出结果为:0 1 2 3 4 diff --git a/doc/paddle/api/paddle/reader/decorator/map_readers_cn.rst b/doc/paddle/api/paddle/reader/decorator/map_readers_cn.rst deleted file mode 100644 index cb50e62839cd523184fef37d4ff9dc625c52fc6b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/decorator/map_readers_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_fluid_io_map_readers: - -map_readers -------------------------------- - -.. py:function:: paddle.fluid.io.map_readers(func, *readers) - - - - -该接口将创建一个数据读取器(Reader),其中 `func` 函数的输出将直接作为新数据读取器的输出, `readers` 的输出将作为函数 `func` 的输入参数。 - -例如:如果输入的 `readers` 为两个输出分别为:2、3 的 `reader` ,输入的 `func` 为乘法函数 `mul(x, y)` ,则得到的新建 `reader` 的输出为:6。 - -参数: - - **func** - 读取数据并返回数据项的函数, `func` 的输出将直接作为新创建的数据读取器的输出。 - - - **readers** - 输入的一个或多个数据读取器(Reader),这些数据读取器的输出数据将作为函数 `func` 的输入参数。数据读取器的定义参见 :ref:`cn_api_paddle_data_reader_reader` 。 - -返回: 新创建的数据读取器(Reader) - -**代码示例**: - -.. code-block:: python - - - import paddle.fluid as fluid - d = {"h": 0, "i": 1} - def func(x): - return d[x] - - def reader(): - yield "h" - yield "i" - - map_reader_result = fluid.io.map_readers(func, reader) - - - - diff --git a/doc/paddle/api/paddle/reader/decorator/multiprocess_reader_cn.rst b/doc/paddle/api/paddle/reader/decorator/multiprocess_reader_cn.rst deleted file mode 100644 index ab600239eb702ffa2c503f88d5bd9d6ef6bda443..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/decorator/multiprocess_reader_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_io_multiprocess_reader: - -multiprocess_reader -------------------------------- - -.. py:function:: paddle.fluid.io.multiprocess_reader(readers, use_pipe=True, queue_size=1000) - - - - -使用python多进程从 ``readers`` 中读取数据,然后使用 ``multiprocessing.Pipe`` 或 ``multiprocessing.Queue`` 合并所有数据。 ``readers`` 列表中的每个reader会被创建一个独立的进程来调用,reader之间应该相互独立,互不影响,避免出现多进程读取的冲突问题. - -multiprocess.queue需要/dev/shm的rw访问权限,某些平台不支持。 - -参数: - - **readers** (list(generator)|tuple(generator)) - python生成器list, 用来读取数据 - - **use_pipe** (bool,可选) - use_pipe控制multiprocess_reader内部用 ``pipe`` 还是 ``queue`` 来实现进程间通信,默认为 ``True`` 使用 ``pipe`` 进行通信 - - **queue_size** (int,可选) - 如果使用queue来进行进程间通信 (``use_pipe=False``), 则该参数用来设定队列大小 - -返回:使用多进程封装readers之后的reader - -返回类型:python生成器 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - from paddle.fluid.io import multiprocess_reader - import numpy as np - - - def fake_reader(start, end): - def __impl__(): - for i in range(start, end): - yield [np.array([1, 2, 3]) * i], - return __impl__ - - - with fluid.program_guard(fluid.Program(), fluid.Program()): - place = fluid.CPUPlace() - image = fluid.layers.data( - name='image', dtype='int64', shape=[3]) - fluid.layers.Print(image) - reader = fluid.io.PyReader( - feed_list=[image], capacity=2) - image_p_1 = image + 1 - decorated_reader = multiprocess_reader( - [fake_reader(1, 5), fake_reader(6, 10)], False) - - reader.decorate_sample_generator(decorated_reader, batch_size=2, places=[place]) - - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - for data in reader(): - exe.run(feed=data, fetch_list=[image_p_1]) - diff --git a/doc/paddle/api/paddle/reader/decorator/shuffle_cn.rst b/doc/paddle/api/paddle/reader/decorator/shuffle_cn.rst deleted file mode 100644 index 7b64c23b7e5706e23a9051f60b3a55bea7ea6573..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/decorator/shuffle_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_io_shuffle: - -shuffle -------------------------------- - -.. py:function:: paddle.fluid.io.shuffle(reader, buffer_size) - -:alias_main: paddle.shuffle -:alias: paddle.shuffle,paddle.tensor.shuffle,paddle.tensor.random.shuffle -:old_api: paddle.fluid.io.shuffle - - - -该接口创建一个数据读取器,其功能是将原始数据读取器的数据打乱,然后返回无序的数据。 - -从原始数据读取器取出buf_size个数据到缓冲区,将缓冲区数据打乱,然后将无序的数据依次返回。当缓冲区数据全部输出后,再次执行上述步骤。 - -参数: - - **reader** (callable) – 原始数据读取器。 - - **buf_size** (int) – 缓冲区保存数据的个数。 - -返回: 返回无序数据的数据读取器 - -返回类型: callable - -.. code-block:: python - - import paddle.fluid as fluid - def reader(): - for i in range(5): - yield i - shuffled_reader = fluid.io.shuffle(reader, 3) - for e in shuffled_reader(): - print(e) - # 输出结果是0~4的无序排列 diff --git a/doc/paddle/api/paddle/reader/decorator/xmap_readers_cn.rst b/doc/paddle/api/paddle/reader/decorator/xmap_readers_cn.rst deleted file mode 100644 index 5f434ecb9525c4f8dd746319d2b4baace88c89ae..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/decorator/xmap_readers_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_io_xmap_readers: - -xmap_readers -------------------------------- - -.. py:function:: paddle.fluid.io.xmap_readers(mapper, reader, process_num, buffer_size, order=False) - - - - -多线程下,使用自定义映射器 reader 返回样本到输出队列。 - -参数: - - **mapper** (callable): 映射 reader 数据的函数。 - - **reader** (callable): 产生数据的 reader。 - - **process_num** (int): 处理样本的线程数。 - - **buffer_size** (int): 数据缓冲队列大小。 - - **order** (bool): 是否保持原始 reader 数据顺序,默认为 False。 - -返回:一个用户定义的 reader `装饰器 `_ 。 - -返回类型:callable,可调用对象。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import time - - def reader_creator_10(dur): - def reader(): - for i in range(10): - time.sleep(dur) - yield i - return reader - - def mapper(x): - return (x + 1) - - orders = (True, False) - thread_num = (1, 2, 4, 8, 16) - buffer_size = (1, 2, 4, 8, 16) - for order in orders: - for t_num in thread_num: - for size in buffer_size: - user_reader = fluid.io.xmap_readers(mapper, - reader_creator_10(0), - t_num, size, order) - for n in range(3): - result = list() - for i in user_reader(): - result.append(i) - if not order: - result.sort() - for idx, e in enumerate(result): - assert e == mapper(idx) \ No newline at end of file diff --git a/doc/paddle/api/paddle/reader/shuffle_cn.rst b/doc/paddle/api/paddle/reader/shuffle_cn.rst deleted file mode 100644 index 7b64c23b7e5706e23a9051f60b3a55bea7ea6573..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/reader/shuffle_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_io_shuffle: - -shuffle -------------------------------- - -.. py:function:: paddle.fluid.io.shuffle(reader, buffer_size) - -:alias_main: paddle.shuffle -:alias: paddle.shuffle,paddle.tensor.shuffle,paddle.tensor.random.shuffle -:old_api: paddle.fluid.io.shuffle - - - -该接口创建一个数据读取器,其功能是将原始数据读取器的数据打乱,然后返回无序的数据。 - -从原始数据读取器取出buf_size个数据到缓冲区,将缓冲区数据打乱,然后将无序的数据依次返回。当缓冲区数据全部输出后,再次执行上述步骤。 - -参数: - - **reader** (callable) – 原始数据读取器。 - - **buf_size** (int) – 缓冲区保存数据的个数。 - -返回: 返回无序数据的数据读取器 - -返回类型: callable - -.. code-block:: python - - import paddle.fluid as fluid - def reader(): - for i in range(5): - yield i - shuffled_reader = fluid.io.shuffle(reader, 3) - for e in shuffled_reader(): - print(e) - # 输出结果是0~4的无序排列 diff --git a/doc/paddle/api/paddle/fluid/compiler/BuildStrategy_cn.rst b/doc/paddle/api/paddle/static/BuildStrategy_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/compiler/BuildStrategy_cn.rst rename to doc/paddle/api/paddle/static/BuildStrategy_cn.rst diff --git a/doc/paddle/api/paddle/fluid/compiler/CompiledProgram_cn.rst b/doc/paddle/api/paddle/static/CompiledProgram_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/compiler/CompiledProgram_cn.rst rename to doc/paddle/api/paddle/static/CompiledProgram_cn.rst diff --git a/doc/paddle/api/paddle/fluid/compiler/ExecutionStrategy_cn.rst b/doc/paddle/api/paddle/static/ExecutionStrategy_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/compiler/ExecutionStrategy_cn.rst rename to doc/paddle/api/paddle/static/ExecutionStrategy_cn.rst diff --git a/doc/paddle/api/paddle/fluid/executor/Executor_cn.rst b/doc/paddle/api/paddle/static/Executor_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/executor/Executor_cn.rst rename to doc/paddle/api/paddle/static/Executor_cn.rst diff --git a/doc/paddle/api/paddle/fluid/parallel_executor/ParallelExecutor_cn.rst b/doc/paddle/api/paddle/static/ParallelExecutor_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/parallel_executor/ParallelExecutor_cn.rst rename to doc/paddle/api/paddle/static/ParallelExecutor_cn.rst diff --git a/doc/paddle/api/paddle/fluid/layers/Print_cn.rst b/doc/paddle/api/paddle/static/Print_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/layers/Print_cn.rst rename to doc/paddle/api/paddle/static/Print_cn.rst diff --git a/doc/paddle/api/paddle/fluid/framework/Program_cn.rst b/doc/paddle/api/paddle/static/Program_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/framework/Program_cn.rst rename to doc/paddle/api/paddle/static/Program_cn.rst diff --git a/doc/paddle/api/paddle/fluid/param_attr/WeightNormParamAttr_cn.rst b/doc/paddle/api/paddle/static/WeightNormParamAttr_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/param_attr/WeightNormParamAttr_cn.rst rename to doc/paddle/api/paddle/static/WeightNormParamAttr_cn.rst diff --git a/doc/paddle/api/paddle/fluid/append_backward_cn.rst b/doc/paddle/api/paddle/static/append_backward_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/append_backward_cn.rst rename to doc/paddle/api/paddle/static/append_backward_cn.rst diff --git a/doc/paddle/api/paddle/fluid/framework/default_main_program_cn.rst b/doc/paddle/api/paddle/static/default_main_program_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/framework/default_main_program_cn.rst rename to doc/paddle/api/paddle/static/default_main_program_cn.rst diff --git a/doc/paddle/api/paddle/fluid/framework/default_startup_program_cn.rst b/doc/paddle/api/paddle/static/default_startup_program_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/framework/default_startup_program_cn.rst rename to doc/paddle/api/paddle/static/default_startup_program_cn.rst diff --git a/doc/paddle/api/paddle/fluid/executor/global_scope_cn.rst b/doc/paddle/api/paddle/static/global_scope_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/executor/global_scope_cn.rst rename to doc/paddle/api/paddle/static/global_scope_cn.rst diff --git a/doc/paddle/api/paddle/fluid/backward/gradients_cn.rst b/doc/paddle/api/paddle/static/gradients_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/backward/gradients_cn.rst rename to doc/paddle/api/paddle/static/gradients_cn.rst diff --git a/doc/paddle/api/paddle/fluid/framework/name_scope_cn.rst b/doc/paddle/api/paddle/static/name_scope_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/framework/name_scope_cn.rst rename to doc/paddle/api/paddle/static/name_scope_cn.rst diff --git a/doc/paddle/api/paddle/fluid/framework/program_guard_cn.rst b/doc/paddle/api/paddle/static/program_guard_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/framework/program_guard_cn.rst rename to doc/paddle/api/paddle/static/program_guard_cn.rst diff --git a/doc/paddle/api/paddle/fluid/layers/nn/py_func_cn.rst b/doc/paddle/api/paddle/static/py_func_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/layers/nn/py_func_cn.rst rename to doc/paddle/api/paddle/static/py_func_cn.rst diff --git a/doc/paddle/api/paddle/fluid/executor/scope_guard_cn.rst b/doc/paddle/api/paddle/static/scope_guard_cn.rst similarity index 100% rename from doc/paddle/api/paddle/fluid/executor/scope_guard_cn.rst rename to doc/paddle/api/paddle/static/scope_guard_cn.rst diff --git a/doc/paddle/api/paddle/tensor/attribute/rank_cn.rst b/doc/paddle/api/paddle/tensor/attribute/rank_cn.rst deleted file mode 100644 index 0d3aee591f86e84bc4a73fe40e2c31f434b558fa..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/attribute/rank_cn.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. _cn_api_fluid_layers_rank: - -rank -------------------------------- - -.. py:function:: paddle.fluid.layers.rank(input) - -:alias_main: paddle.rank -:alias: paddle.rank,paddle.tensor.rank,paddle.tensor.attribute.rank -:old_api: paddle.fluid.layers.rank - - - -该OP用于计算输入Tensor的维度(秩)。 - -参数: - - **input** (Variable) — 输入input是shape为 :math:`[N_1, N_2, ..., N_k]` 的多维Tensor,数据类型可以任意类型。 - -返回:输出Tensor的秩,是一个0-D Tensor。 - -返回类型:Variable,数据类型为int32。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.data( - name="input", shape=[3, 100, 100], dtype="float32") - rank = fluid.layers.rank(input) # rank=(4,) - - diff --git a/doc/paddle/api/paddle/tensor/attribute/shape_cn.rst b/doc/paddle/api/paddle/tensor/attribute/shape_cn.rst deleted file mode 100644 index 0672af0a3a203fd1d2e866705c2b52ee21421fe9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/attribute/shape_cn.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _cn_api_fluid_layers_shape: - -shape -------------------------------- - -.. py:function:: paddle.fluid.layers.shape(input) - -:alias_main: paddle.shape -:alias: paddle.shape,paddle.tensor.shape,paddle.tensor.attribute.shape -:old_api: paddle.fluid.layers.shape - - - -shape层。 - -获得输入Tensor或SelectedRows的shape。 - -:: - - 示例1: - 输入是 N-D Tensor类型: - input = [ [1, 2, 3, 4], [5, 6, 7, 8] ] - - 输出shape: - input.shape = [2, 4] - - 示例2: - 输入是 SelectedRows类型: - input.rows = [0, 4, 19] - input.height = 20 - input.value = [ [1, 2], [3, 4], [5, 6] ] # inner tensor - 输出shape: - input.shape = [3, 2] - -参数: - - **input** (Variable)- 输入的多维Tensor或SelectedRows,数据类型为float16,float32,float64,int32,int64。如果输入是SelectedRows类型,则返回其内部持有Tensor的shape。 - - -返回: 一个Tensor,表示输入Tensor或SelectedRows的shape。 - -返回类型: Variable(Tensor)。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - inputs = fluid.data(name="x", shape=[3, 100, 100], dtype="float32") - output = fluid.layers.shape(inputs) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - img = np.ones((3, 100, 100)).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'x':img}, fetch_list=[output]) - print(res) # [array([ 3, 100, 100], dtype=int32)] diff --git a/doc/paddle/api/paddle/tensor/creation/create_tensor_cn.rst b/doc/paddle/api/paddle/tensor/creation/create_tensor_cn.rst deleted file mode 100644 index d00d67ebbe70f10d06e8d4bd1d96cfcb6ff7145a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/creation/create_tensor_cn.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _cn_api_fluid_layers_create_tensor: - -create_tensor -------------------------------- - -.. py:function:: paddle.fluid.layers.create_tensor(dtype,name=None,persistable=False) - -:alias_main: paddle.create_tensor -:alias: paddle.create_tensor,paddle.tensor.create_tensor,paddle.tensor.creation.create_tensor -:old_api: paddle.fluid.layers.create_tensor - - - -创建数据类型为dtype的Tensor。 - -参数: - - **dtype** (str|numpy.dtype) - 创建的Tensor的数据类型,支持数据类型为bool, float16, float32, float64, int8, int16, int32, int64。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **persistable** (bool,可选) - 用于设置创建的Tensor的persistable属性,若不设置则默认设置为False。 - -返回: 创建的Tensor,数据类型为dtype。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - """ - 使用print(tensor)打印结果如下: - type { - type: LOD_TENSOR - lod_tensor { - tensor { - data_type: FP32 - } - } - } - persistable: false - """ - import paddle.fluid as fluid - tensor = fluid.layers.create_tensor(dtype='float32') diff --git a/doc/paddle/api/paddle/tensor/creation/crop_tensor_cn.rst b/doc/paddle/api/paddle/tensor/creation/crop_tensor_cn.rst deleted file mode 100644 index 79b2de8fcc0259615cb1f5eadc6ee2da4b71359d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/creation/crop_tensor_cn.rst +++ /dev/null @@ -1,110 +0,0 @@ -.. _cn_api_fluid_layers_crop_tensor: - -crop_tensor -------------------------------- - -.. py:function:: paddle.fluid.layers.crop_tensor(x, shape=None, offsets=None, name=None) - -:alias_main: paddle.crop_tensor -:alias: paddle.crop_tensor,paddle.tensor.crop_tensor,paddle.tensor.creation.crop_tensor -:old_api: paddle.fluid.layers.crop_tensor - - - -根据偏移量(offsets)和形状(shape),裁剪输入(x)Tensor。 - -**示例**: - -:: - - * 示例1(输入为2-D Tensor): - - 输入: - X.shape = [3, 5] - X.data = [[0, 1, 2, 0, 0], - [0, 3, 4, 0, 0], - [0, 0, 0, 0, 0]] - - 参数: - shape = [2, 2] - offsets = [0, 1] - - 输出: - Out.shape = [2, 2] - Out.data = [[1, 2], - [3, 4]] - - * 示例2(输入为3-D Tensor): - - 输入: - - X.shape = [2, 3, 4] - X.data = [[[0, 1, 2, 3], - [0, 5, 6, 7], - [0, 0, 0, 0]], - [[0, 3, 4, 5], - [0, 6, 7, 8], - [0, 0, 0, 0]]] - - 参数: - shape = [2, 2, -1] - offsets = [0, 0, 1] - - 输出: - Out.shape = [2, 2, 3] - Out.data = [[[1, 2, 3], - [5, 6, 7]], - [[3, 4, 5], - [6, 7, 8]]] - -参数: - - **x** (Variable): 1-D到6-D Tensor,数据类型为float32、float64、int32或者int64。 - - **shape** (list|tuple|Variable) - 输出Tensor的形状,数据类型为int32。如果是列表或元组,则其长度必须与x的维度大小相同,如果是Variable,则其应该是1-D Tensor。当它是列表时,每一个元素可以是整数或者形状为[1]的Tensor。含有Variable的方式适用于每次迭代时需要改变输出形状的情况。 - - **offsets** (list|tuple|Variable,可选) - 每个维度上裁剪的偏移量,数据类型为int32。如果是列表或元组,则其长度必须与x的维度大小相同,如果是Variable,则其应是1-D Tensor。当它是列表时,每一个元素可以是整数或者形状为[1]的Variable。含有Variable的方式适用于每次迭代的偏移量(offset)都可能改变的情况。默认值:None,每个维度的偏移量为0。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 裁剪后的Tensor,数据类型与输入(x)相同。 - -返回类型: Variable - -抛出异常: - - :code:`TypeError` - x 的数据类型应该是float32、float64、int32或者int64。 - - :code:`TypeError` - shape 应该是列表、元组或Variable。 - - :code:`TypeError` - shape 的数据类型应该是int32。 - - :code:`TypeError` - offsets 应该是列表、元组、Variable或None。 - - :code:`TypeError` - offsets 的数据类型应该是int32。 - - :code:`TypeError` - offsets 的元素应该大于等于0。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.data(name="x", shape=[None, 3, 5], dtype="float32") - # x.shape = [-1, 3, 5], where -1 indicates batch size, and it will get the exact value in runtime. - - # shape is a 1-D Tensor - crop_shape = fluid.data(name="crop_shape", shape=[3], dtype="int32") - crop0 = fluid.layers.crop_tensor(x, shape=crop_shape) - # crop0.shape = [-1, -1, -1], it means crop0.shape[0] = x.shape[0] in runtime. - - # or shape is a list in which each element is a constant - crop1 = fluid.layers.crop_tensor(x, shape=[-1, -1, 3], offsets=[0, 1, 0]) - # crop1.shape = [-1, 2, 3] - - # or shape is a list in which each element is a constant or Tensor - y = fluid.data(name="y", shape=[3, 8, 8], dtype="float32") - dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32") - crop2 = fluid.layers.crop_tensor(y, shape=[3, dim1, 4]) - # crop2.shape = [3, -1, 4] - - # offsets is a 1-D Tensor - crop_offsets = fluid.data(name="crop_offsets", shape=[3], dtype="int32") - crop3 = fluid.layers.crop_tensor(x, shape=[-1, 2, 3], offsets=crop_offsets) - # crop3.shape = [-1, 2, 3] - - # offsets is a list in which each element is a constant or Tensor - offsets_var = fluid.data(name="offset", shape=[1], dtype="int32") - crop4 = fluid.layers.crop_tensor(x, shape=[-1, 2, 3], offsets=[0, 1, offsets_var]) - # crop4.shape = [-1, 2, 3] - diff --git a/doc/paddle/api/paddle/tensor/creation/diag_cn.rst b/doc/paddle/api/paddle/tensor/creation/diag_cn.rst deleted file mode 100644 index f08ae61e0e44c620ee20cadc979c91450aec9010..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/creation/diag_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_diag: - -diag -------------------------------- - -.. py:function:: paddle.fluid.layers.diag(diagonal) - -:alias_main: paddle.diag -:alias: paddle.diag,paddle.tensor.diag,paddle.tensor.creation.diag -:old_api: paddle.fluid.layers.diag - - - -该OP创建一个方阵,使用输入diagonal来指定方阵的对角线元素的值。 - -参数: - - **diagonal** (Variable|numpy.ndarray) — 数据shape为 :math:`[N]` 一维Tensor,会把该Tensor的元素赋在方阵的对角线上。数据类型可以是 float32,float64,int32,int64。 - -返回:存储着方阵的Tensor,对角线值是输入Tensor diagonal的值, 数据shape为 :math:`[N, N]` 二维Tensor。 - -返回类型:Variable,数据类型和输入数据类型一致。 - -**代码示例**: - -.. code-block:: python - - # [3, 0, 0] - # [0, 4, 0] - # [0, 0, 5] - - import paddle.fluid as fluid - import numpy as np - diagonal = np.arange(3, 6, dtype='int32') - data = fluid.layers.diag(diagonal) - # diagonal.shape=(3,) data.shape=(3, 3) - - - - diff --git a/doc/paddle/api/paddle/tensor/creation/fill_constant_cn.rst b/doc/paddle/api/paddle/tensor/creation/fill_constant_cn.rst deleted file mode 100644 index f7af206495c0640ef87b2806666fdf919015463e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/creation/fill_constant_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_fill_constant: - -fill_constant -------------------------------- - -.. py:function:: paddle.fluid.layers.fill_constant(shape,dtype,value,force_cpu=False,out=None) - -:alias_main: paddle.fill_constant -:alias: paddle.fill_constant,paddle.tensor.fill_constant,paddle.tensor.creation.fill_constant -:old_api: paddle.fluid.layers.fill_constant - - - -该OP创建一个形状为shape并且数据类型为dtype的Tensor,同时用 ``value`` 中提供的常量初始化该Tensor。 - -创建的Tensor的stop_gradient属性默认为True。 - -参数: - - **shape** (tuple|list|Variable)- 要创建的LoDTensor或者SelectedRows的形状。 数据类型为int32或int64。 如果shape是一个列表或元组,则其元素应该是形状为[1]的整数或Tensor。 如果shape是Variable,则它应该是一维Tensor。 - - **dtype** (np.dtype|core.VarDesc.VarType|str)- 创建LoDTensor或者SelectedRows的数据类型,支持数据类型为float16, float32, float64, int32, int64。 - - **value** (float|int)- 用于初始化输出LoDTensor或者SelectedRows的常量数据的值。 - - **force_cpu** (bool)- 用于标志LoDTensor或者SelectedRows是否创建在CPU上,默认值为False,若设为true,则数据必须在CPU上。 - - **out** (Variable,可选)- 用于存储创建的LoDTensor或者SelectedRows,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - -返回: 根据shape和dtype创建的Tensor。 - -返回类型:变量(Variable) - -抛出异常: - - :code:`TypeError`: dtype必须是bool,float16,float32,float64,int32和int64之一,输出Tensor的数据类型必须与dtype相同。 - - :code:`TypeError`: 当 `shape` 的数据类型不是list、tuple、Variable。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data1 = fluid.layers.fill_constant(shape=[2,1], value=0, dtype='int64') #data1=[[0],[0]] - data2 = fluid.layers.fill_constant(shape=[2,1], value=5, dtype='int64', out=data1) - #data1=[[5],[5]] data2=[[5],[5]] - - # attr shape is a list which contains Variable Tensor. - positive_2 = fluid.layers.fill_constant([1], "int32", 2) - data3 = fluid.layers.fill_constant(shape=[1, positive_2], dtype='float32', value=1.5) # data3=[1.5, 1.5] - - # attr shape is a Variable Tensor. - shape = fluid.layers.fill_constant([1,2], "int32", 2) # shape=[2,2] - data4 = fluid.layers.fill_constant(shape=shape, dtype='bool', value=True) # data4=[[True,True],[True,True]] diff --git a/doc/paddle/api/paddle/tensor/creation/linspace_cn.rst b/doc/paddle/api/paddle/tensor/creation/linspace_cn.rst deleted file mode 100644 index 7c228c413e9f167ca92fd547a25c8aa3ad233aeb..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/creation/linspace_cn.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _cn_api_tensor_linspace: - -linspace -------------------------------- - -.. py:function:: paddle.linspace(start, stop, num, dtype=None, name=None) - -:alias_main: paddle.linspace -:alias: paddle.tensor.linspace, paddle.tensor.creation.linspace - - - -该OP返回一个Tensor,Tensor的值为在区间start和stop上均匀间隔的num个值,输出Tensor的长度为num。 - -**注意:该OP不进行梯度计算** - -参数: - - **start** (float|Tensor) – ``start`` 是区间开始的变量,可以是一个浮点标量,或是一个shape为[1]的Tensor,该Tensor的数据类型可以是float32或者是float64。 - - **stop** (float|Tensor) – ``end`` 是区间结束的变量,可以是一个浮点标量,或是一个shape为[1]的Tensor,该Tensor的数据类型可以是float32或者是float64。 - - **num** (int|Tensor) – ``num`` 是给定区间内需要划分的区间数,可以是一个整型标量,或是一个shape为[1]的Tensor,该Tensor的数据类型需为int32。 - - **dtype** (np.dtype|core.VarDesc.VarType|str,可选) – 输出Tensor的数据类型,可以是float32或者是float64。如果dtype为None,默认类型为float32。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回:输出结果的数据类型是float32或float64,表示等间隔划分结果的1-D Tensor,该Tensor的shape大小为 :math:`[num]` ,在mum为1的情况下,仅返回包含start元素值的Tensor。 - -返回类型:Variable - -抛出异常: - - ``TypeError`` - 当start或者stop的数据类型不是float32或者float64。 - - ``TypeError`` - 当num的数据类型不是float32或者float64。 - - ``TypeError`` - 当dtype的类型不是float32或者float64。 - -**代码示例**: - -.. code-block:: python - - import paddle - data = paddle.linspace(0, 10, 5, dtype='float32') # [0.0, 2.5, 5.0, 7.5, 10.0] - data = paddle.linspace(0, 10, 1, dtype='float32') # [0.0] - diff --git a/doc/paddle/api/paddle/tensor/io/load_cn.rst b/doc/paddle/api/paddle/tensor/io/load_cn.rst deleted file mode 100644 index f001976971c5e84eb93c62fa5a5d77c8f2a9a335..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/io/load_cn.rst +++ /dev/null @@ -1,168 +0,0 @@ -.. _cn_api_fluid_dygraph_jit_load: - -load ------------------ - -.. py:function:: paddle.fluid.dygraph.jit.load(model_path, configs=None) - -:api_attr: 命令式编程模式(动态图) - -将接口 :ref:`cn_api_fluid_dygraph_jit_save` 或者 :ref:`cn_api_fluid_io_save_inference_model` 存储的模型载入为 :ref:`cn_api_fluid_dygraph_TranslatedLayer` ,用于预测推理或者fine-tune训练。 - -.. note:: - 由于一些历史原因,如果载入的模型是通过 :ref:`cn_api_fluid_io_save_inference_model` 存储的, - 在使用它进行fine-tune训练时会存在一些局限: - 1. 命令式编程模式不支持 ``LoDTensor`` ,所有原先输入变量或者参数依赖于LoD信息的模型暂时无法使用; - 2. 所有存储模型的feed变量都需要被传入 ``Translatedlayer`` 的forward方法; - 3. 原模型变量的 ``stop_gradient`` 信息已丢失且无法准确恢复; - 4. 原模型参数的 ``trainable`` 信息已丢失且无法准确恢复。 - -参数: - - **model_path** (str) - 存储模型的目录。 - - **configs** (SaveLoadConfig, 可选) - 用于指定额外配置选项的 :ref:`cn_api_fluid_dygraph_jit_SaveLoadConfig` 对象。默认为 ``None``。 - -返回:TranslatedLayer - 一个能够执行存储模型的 ``Layer`` 对象。 - -**示例代码** - -1. 载入由接口 :ref:`cn_api_fluid_dygraph_jit_save` 存储的模型进行预测推理及fine-tune训练。 - - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - class LinearNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(LinearNet, self).__init__() - self._linear = Linear(in_size, out_size) - @declarative - def forward(self, x): - return self._linear(x) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 1. 训练存储模型. - # 创建网络 - net = LinearNet(784, 1) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # 训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - net.clear_gradients() - model_path = "linear.example.model" - fluid.dygraph.jit.save( - layer=net, - model_path=model_path, - input_spec=[img]) - # 2. 载入模型 & 预测 - # 载入模型 - infer_net = fluid.dygraph.jit.load(model_path) - # 预测 - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = infer_net(x) - # 3. 载入模型 & fine-tune训练 - # 载入模型 - train_net = fluid.dygraph.jit.load(model_path) - train_net.train() - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=train_net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # fine-tune训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = train_net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - train_net.clear_gradients() - - -2. 载入由接口 :ref:`cn_api_fluid_io_save_inference_model` 存储的模型进行预测推理及fine-tune训练。 - - .. code-block:: python - - import numpy as np - import paddle.fluid as fluid - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - img = fluid.data(name='img', shape=[None, 784], dtype='float32') - label = fluid.data(name='label', shape=[None, 1], dtype='int64') - pred = fluid.layers.fc(input=img, size=10, act='softmax') - loss = fluid.layers.cross_entropy(input=pred, label=label) - avg_loss = fluid.layers.mean(loss) - optimizer = fluid.optimizer.SGD(learning_rate=0.001) - optimizer.minimize(avg_loss) - place = fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - loader = fluid.io.DataLoader.from_generator( - feed_list=[img, label], capacity=5, iterable=True) - loader.set_batch_generator(random_batch_reader(), places=place) - # 1. 训练 & 存储预测模型 - for data in loader(): - exe.run( - fluid.default_main_program(), - feed=data, - fetch_list=[avg_loss]) - model_path = "fc.example.model" - fluid.io.save_inference_model( - model_path, ["img"], [pred], exe) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 2. 载入模型 & 预测 - fc = fluid.dygraph.jit.load(model_path) - x = fluid.dygraph.to_variable(np.random.random((1, 784)).astype('float32')) - pred = fc(x) - # 3. 载入模型 & fine-tune训练 - fc = fluid.dygraph.jit.load(model_path) - fc.train() - sgd = fluid.optimizer.SGD(learning_rate=0.001, - parameter_list=fc.parameters()) - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator( - random_batch_reader(), places=place) - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = fc(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - sgd.minimize(avg_loss) diff --git a/doc/paddle/api/paddle/tensor/io/save_cn.rst b/doc/paddle/api/paddle/tensor/io/save_cn.rst deleted file mode 100644 index f0276316bacd0d7b7cb7ef6df12b1f9ac08b759f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/io/save_cn.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. _cn_api_fluid_dygraph_jit_save: - -save ------------------ - -.. py:function:: paddle.fluid.dygraph.jit.save(layer, model_path, input_spec=None, configs=None) - -将输入的经过 ``@declarative`` 装饰的 :ref:`cn_api_fluid_dygraph_Layer` 存储为 :ref:`cn_api_fluid_dygraph_TranslatedLayer` 格式的模型, -载入后可用于预测推理或者fine-tune训练。 - -该接口将会将输入 :ref:`cn_api_fluid_dygraph_Layer` 转写后的模型结构 ``Program`` 和所有必要的持久参数变量存储至输入路径 ``model_path`` 中。 - -默认存储的 ``Program`` 文件名为 ``__model__``, 默认存储持久参数变量的文件名为 ``__variables__``, -同时会将变量的一些描述信息存储至文件 ``__variables.info__``,这些额外的信息将在fine-tune训练中使用。 - -存储的模型能够被以下API载入使用: - - :ref:`cn_api_fluid_dygraph_jit_load` - - :ref:`cn_api_fluid_io_load_inference_model` (需要配置参数 ``params_filename='__variables__'`` ) - - 其他预测库API - -参数: - - **layer** (Layer) - 需要存储的 :ref:`cn_api_fluid_dygraph_Layer` 对象。输入的 ``Layer`` 需要经过 ``@declarative`` 装饰。 - - **model_path** (str) - 存储模型的目录。 - - **input_spec** (list[Variable], 可选) - 描述存储模型的输入。此参数是传入当前存储的 ``TranslatedLayer`` forward方法的一个示例输入。如果为 ``None`` ,所有原 ``Layer`` forward方法的输入变量将都会被配置为存储模型的输入变量。默认为 ``None``。 - - **configs** (SaveLoadConfig, 可选) - 用于指定额外配置选项的 :ref:`cn_api_fluid_dygraph_jit_SaveLoadConfig` 对象。默认为 ``None``。 - -返回:无 - -**示例代码** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - from paddle.fluid.dygraph import Linear - from paddle.fluid.dygraph import declarative - BATCH_SIZE = 32 - BATCH_NUM = 20 - def random_batch_reader(): - def _get_random_images_and_labels(image_shape, label_shape): - image = np.random.random(size=image_shape).astype('float32') - label = np.random.random(size=label_shape).astype('int64') - return image, label - def __reader__(): - for _ in range(BATCH_NUM): - batch_image, batch_label = _get_random_images_and_labels( - [BATCH_SIZE, 784], [BATCH_SIZE, 1]) - yield batch_image, batch_label - return __reader__ - class LinearNet(fluid.dygraph.Layer): - def __init__(self, in_size, out_size): - super(LinearNet, self).__init__() - self._linear = Linear(in_size, out_size) - @declarative - def forward(self, x): - return self._linear(x) - # 开启命令式编程模式 - fluid.enable_dygraph() - # 创建网络 - net = LinearNet(784, 1) - adam = fluid.optimizer.AdamOptimizer(learning_rate=0.1, parameter_list=net.parameters()) - # 创建DataLoader - train_loader = fluid.io.DataLoader.from_generator(capacity=5) - train_loader.set_batch_generator(random_batch_reader()) - # 训练 - for data in train_loader(): - img, label = data - label.stop_gradient = True - cost = net(img) - loss = fluid.layers.cross_entropy(cost, label) - avg_loss = fluid.layers.mean(loss) - avg_loss.backward() - adam.minimize(avg_loss) - net.clear_gradients() - # 存储模型 - model_path = "linear.example.model" - fluid.dygraph.jit.save( - layer=net, - model_path=model_path, - input_spec=[img]) diff --git a/doc/paddle/api/paddle/tensor/linalg/transpose_cn.rst b/doc/paddle/api/paddle/tensor/linalg/transpose_cn.rst deleted file mode 100644 index b9d6bfb644cbd2210c2ab22818c4ca0609eba906..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/linalg/transpose_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_transpose: - -transpose -------------------------------- - -.. py:function:: paddle.fluid.layers.transpose(x,perm,name=None) - -:alias_main: paddle.transpose -:alias: paddle.transpose,paddle.tensor.transpose,paddle.tensor.linalg.transpose,paddle.tensor.manipulation.transpose -:old_api: paddle.fluid.layers.transpose - - - -该OP根据perm对输入的多维Tensor进行数据重排。返回多维Tensor的第i维对应输入Tensor的perm[i]维。 - -参数: - - **x** (Variable) - 输入:x:[N_1, N_2, ..., N_k, D]多维Tensor,可选的数据类型为float16, float32, float64, int32, int64。 - - **perm** (list) - perm长度必须和X的维度相同,并依照perm中数据进行重排。 - - **name** (str) - 该层名称(可选)。 - -返回: 多维Tensor - -返回类型:Variable - -**示例**: - -.. code-block:: python - - x = [[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] - [[13 14 15 16] [17 18 19 20] [21 22 23 24]]] - shape(x) = [2,3,4] - - # 例0 - perm0 = [1,0,2] - y_perm0 = [[[ 1 2 3 4] [13 14 15 16]] - [[ 5 6 7 8] [17 18 19 20]] - [[ 9 10 11 12] [21 22 23 24]]] - shape(y_perm0) = [3,2,4] - - # 例1 - perm1 = [2,1,0] - y_perm1 = [[[ 1 13] [ 5 17] [ 9 21]] - [[ 2 14] [ 6 18] [10 22]] - [[ 3 15] [ 7 19] [11 23]] - [[ 4 16] [ 8 20] [12 24]]] - shape(y_perm1) = [4,3,2] - - -**代码示例**: - -.. code-block:: python - - # 请使用 append_batch_size=False 来避免 - # 在数据张量中添加多余的batch大小维度 - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 3, 4], - dtype='float32', append_batch_size=False) - x_transposed = fluid.layers.transpose(x, perm=[1, 0, 2]) - print(x_transposed.shape) - #(3L, 2L, 4L) - - - diff --git a/doc/paddle/api/paddle/tensor/logic/is_empty_cn.rst b/doc/paddle/api/paddle/tensor/logic/is_empty_cn.rst deleted file mode 100644 index 90d4eb57a74fc3d0975f29c058236e4ed2c0f7ee..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/logic/is_empty_cn.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _cn_api_fluid_layers_is_empty: - -is_empty -------------------------------- - -.. py:function:: paddle.fluid.layers.is_empty(x, cond=None) - -:alias_main: paddle.is_empty -:alias: paddle.is_empty,paddle.tensor.is_empty,paddle.tensor.logic.is_empty -:old_api: paddle.fluid.layers.is_empty - - - -测试变量是否为空 - -参数: - - **x** (Variable)-测试的变量 - - **cond** (Variable|None)-可选输出参数,默认为空(None)。若传入了该参数,则该参数中存储返回给定x的测试结果 - -返回:布尔类型的标量。如果变量x为空则值为真 - -返回类型:Variable - -抛出异常:``TypeError``-如果input类型不是Variable或cond存储的返回结果的类型不是bool - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data(name="input", shape=[4, 32, 32], dtype="float32") - res = fluid.layers.is_empty(x=input) - # or: - # fluid.layers.is_empty(x=input, cond=res) - - - - diff --git a/doc/paddle/api/paddle/tensor/logic/isfinite_cn.rst b/doc/paddle/api/paddle/tensor/logic/isfinite_cn.rst deleted file mode 100644 index c9b5474e809b248141ad4632e5a5aedd1e11fec9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/logic/isfinite_cn.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _cn_api_fluid_layers_isfinite: - -isfinite -------------------------------- - -.. py:function:: paddle.fluid.layers.isfinite(x) - -:alias_main: paddle.isfinite -:alias: paddle.isfinite,paddle.tensor.isfinite,paddle.tensor.logic.isfinite -:old_api: paddle.fluid.layers.isfinite - - - -``注意:此算子的输入 Tensor / LoDTensor 数据类型必须为 int32 / float / double 之一。`` - -测试 x 是否包含无穷值(即 nan 或 inf)。若元素均为有穷数,返回真;否则返回假。 - -参数: - - **x(variable)** : 变量,包含被测试的 Tensor / LoDTensor。 - -返回: - - Variable (Tensor / LoDTensor),此 Tensor 变量包含一个 bool 型结果。 - -返回类型 - - Variable (Tensor / LoDTensor),一个包含 Tensor 的变量。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy - - # Graph Organizing - var = fluid.layers.data(name="data", shape=(4, 6), dtype="float32") - output = fluid.layers.isfinite(var) - - # Create an executor using CPU as an example - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - # Execute - img = numpy.array((4, 6)).astype(numpy.float32) - res, = exe.run(fluid.default_main_program(), feed={'data':img}, fetch_list=[output]) - print(res) # Output Value: [ True] - - - - diff --git a/doc/paddle/api/paddle/tensor/logic/logical_and_cn.rst b/doc/paddle/api/paddle/tensor/logic/logical_and_cn.rst deleted file mode 100644 index a5b0feeee80da6107ff8a0d2846a2008a74755e6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/logic/logical_and_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_logical_and: - -logical_and -------------------------------- - -.. py:function:: paddle.logical_and(x, y, out=None, name=None) - -:alias_main: paddle.logical_and -:alias: paddle.logical_and, paddle.tensor.logical_and, paddle.tensor.logic.logical_and -:old_api: paddle.fluid.layers.logical_and - - - -该OP逐元素的对 ``x`` 和 ``y`` 进行逻辑与运算。 - -.. math:: - Out = X \&\& Y - -参数: - - **x** (Variable)- 逻辑与运算的第一个输入,是一个 Variable,数据类型只能是bool。 - - **y** (Variable)- 逻辑与运算的第二个输入,是一个 Variable,数据类型只能是bool。 - - **out** (Variable,可选)- 指定算子输出结果的 Variable,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - **name** (str,可选)- 该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:与 ``x`` 维度相同,数据类型相同的 Variable。 - -返回类型:Variable - - -**代码示例:** - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - x_data = np.array([True, True, False, False], dtype=np.bool) - y_data = np.array([True, False, True, False], dtype=np.bool) - x = paddle.imperative.to_variable(x_data) - y = paddle.imperative.to_variable(y_data) - res = paddle.logical_and(x, y) - print(res.numpy()) # [True False False False] diff --git a/doc/paddle/api/paddle/tensor/logic/logical_not_cn.rst b/doc/paddle/api/paddle/tensor/logic/logical_not_cn.rst deleted file mode 100644 index 3eaf0f1719abac0ce3e63ed2867026f349e76fba..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/logic/logical_not_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_logical_not: - -logical_not -------------------------------- - -.. py:function:: paddle.logical_not(x, out=None, name=None) - -:alias_main: paddle.logical_not -:alias: paddle.logical_not, paddle.tensor.logical_not, paddle.tensor.logic.logical_not -:old_api: paddle.fluid.layers.logical_not - - - -该OP逐元素的对 ``X`` Variable进行逻辑非运算 - -.. math:: - Out = !X - -参数: - - **x** (Variable)- 逻辑非运算的输入,是一个 Variable,数据类型只能是bool。 - - **out** (Variable,可选)- 指定算子输出结果的 Variable,可以是程序中已经创建的任何 Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - **name** (str,可选)- 该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:与 ``x`` 维度相同,数据类型相同的 Variable。 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - x_data = np.array([True, False, True, False], dtype=np.bool) - x = paddle.imperative.to_variable(x_data) - res = paddle.logical_not(x) - print(res.numpy()) # [False True False True] diff --git a/doc/paddle/api/paddle/tensor/logic/logical_or_cn.rst b/doc/paddle/api/paddle/tensor/logic/logical_or_cn.rst deleted file mode 100644 index b95924ba3104aa1308483ee2f87c6bf43d711c25..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/logic/logical_or_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _cn_api_fluid_layers_logical_or: - -logical_or -------------------------------- - -.. py:function:: paddle.logical_or(x, y, out=None, name=None) - -:alias_main: paddle.logical_or -:alias: paddle.logical_or, paddle.tensor.logical_or, paddle.tensor.logic.logical_or -:old_api: paddle.fluid.layers.logical_or - - - -该OP逐元素的对 ``X`` 和 ``Y`` 进行逻辑或运算。 - -.. math:: - Out = X || Y - -参数: - - **x** (Variable)- 逻辑或运算的第一个输入,是一个 Variable,数据类型只能是bool。 - - **y** (Variable)- 逻辑或运算的第二个输入,是一个 Variable,数据类型只能是bool。 - - **out** (Variable,可选)- 指定算子输出结果的 Variable,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - **name** (str,可选)- 该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_Name` ,默认值为None。 - -返回:与 ``x`` 维度相同,数据类型相同的 Variable。 - -返回类型:Variable - - -**代码示例:** - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - x_data = np.array([True, True, False, False], dtype=np.bool) - y_data = np.array([True, False, True, False], dtype=np.bool) - x = paddle.imperative.to_variable(x_data) - y = paddle.imperative.to_variable(y_data) - res = paddle.logical_or(x, y) - print(res.numpy()) # [True True True False] diff --git a/doc/paddle/api/paddle/tensor/logic/logical_xor_cn.rst b/doc/paddle/api/paddle/tensor/logic/logical_xor_cn.rst deleted file mode 100644 index aefb5230c575fb9679d42b7fdafedaaef99c5dd9..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/logic/logical_xor_cn.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _cn_api_fluid_layers_logical_xor: - -logical_xor -------------------------------- - -.. py:function:: paddle.logical_xor(x, y, out=None, name=None) - -:alias_main: paddle.logical_xor -:alias: paddle.logical_xor, paddle.tensor.logical_xor, paddle.tensor.logic.logical_xor -:old_api: paddle.fluid.layers.logical_xor - - - -该OP逐元素的对 ``X`` 和 ``Y`` 进行逻辑异或运算。 - -.. math:: - Out = (X || Y) \&\& !(X \&\& Y) - -参数: - - **x** (Variable)- 逻辑异或运算的第一个输入,是一个 Variable,数据类型只能是bool。 - - **y** (Variable)- 逻辑异或运算的第二个输入,是一个 Variable,数据类型只能是bool。 - - **out** (Variable,可选)- 指定算子输出结果的 Variable,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。 - - **name** (str,可选)- 该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_Name` ,默认值为None。 - - -返回:与 ``x`` 维度相同,数据类型相同的 Variable。 - -返回类型:Variable - - -**代码示例:** - -.. code-block:: python - - import paddle - import numpy as np - - paddle.enable_imperative() - x_data = np.array([True, True, False, False], dtype=np.bool) - y_data = np.array([True, False, True, False], dtype=np.bool) - x = paddle.imperative.to_variable(x_data) - y = paddle.imperative.to_variable(y_data) - res = paddle.logical_xor(x, y) - print(res.numpy()) # [False True True False] diff --git a/doc/paddle/api/paddle/tensor/logic/reduce_all_cn.rst b/doc/paddle/api/paddle/tensor/logic/reduce_all_cn.rst deleted file mode 100644 index 88a1ba9e3f9081ec3772e88481a15864c41ee86e..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/logic/reduce_all_cn.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. _cn_api_fluid_layers_reduce_all: - -reduce_all -------------------------------- - -.. py:function:: paddle.fluid.layers.reduce_all(input, dim=None, keep_dim=False, name=None) - -:alias_main: paddle.reduce_all -:alias: paddle.reduce_all,paddle.tensor.reduce_all,paddle.tensor.logic.reduce_all -:old_api: paddle.fluid.layers.reduce_all - - - -该OP是对指定维度上的Tensor元素进行与逻辑(&)计算,并输出相应的计算结果。 - -参数: - - **input** (Variable)— 输入变量为多维Tensor或LoDTensor,数据类型需要为bool类型。 - - **dim** (list | int,可选)— 与逻辑运算的维度。如果为None,则计算所有元素的与逻辑并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input))` 范围内。如果 :math:`dim [i] <0` ,则维度将减小为 :math:`rank+dim[i]` 。默认值为None。 - - **keep_dim** (bool)— 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str, 可选)— 这一层的名称。如果设置为None,则将自动命名这一层。默认值为None。 - -返回:在指定dim上进行与逻辑计算的Tensor,数据类型为bool类型。 - -返回类型:Variable,数据类型为bool类型。 - -**代码示例** - -.. code-block:: python - - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - - # x是一个布尔型Tensor,元素如下: - # [[True, False] - # [True, True]] - x = layers.assign(np.array([[1, 0], [1, 1]], dtype='int32')) - x = layers.cast(x, 'bool') - - out = layers.reduce_all(x) # False - out = layers.reduce_all(x, dim=0) # [True, False] - out = layers.reduce_all(x, dim=-1) # [False, True] - # keep_dim=False, x.shape=(2,2), out.shape=(2,) - - out = layers.reduce_all(x, dim=1, keep_dim=True) # [[False], [True]] - # keep_dim=True, x.shape=(2,2), out.shape=(2,1) - diff --git a/doc/paddle/api/paddle/tensor/logic/reduce_any_cn.rst b/doc/paddle/api/paddle/tensor/logic/reduce_any_cn.rst deleted file mode 100644 index 13a23b8139886d391641a6a9068879d51b2fd1ee..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/logic/reduce_any_cn.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. _cn_api_fluid_layers_reduce_any: - -reduce_any -------------------------------- - -.. py:function:: paddle.fluid.layers.reduce_any(input, dim=None, keep_dim=False, name=None) - -:alias_main: paddle.reduce_any -:alias: paddle.reduce_any,paddle.tensor.reduce_any,paddle.tensor.logic.reduce_any -:old_api: paddle.fluid.layers.reduce_any - - - -该OP是对指定维度上的Tensor元素进行或逻辑(|)计算,并输出相应的计算结果。 - -参数: - - **input** (Variable)— 输入变量为多维Tensor或LoDTensor,数据类型需要为bool类型。 - - **dim** (list | int,可选)— 与逻辑运算的维度。如果为None,则计算所有元素的与逻辑并返回包含单个元素的Tensoe变量,否则必须在 :math:`[−rank(input),rank(input))` 范围内。如果 :math:`dim [i] <0` ,则维度将减小为 :math:`rank+dim[i]` 。默认值为None。 - - **keep_dim** (bool)— 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str,可选)— 这一层的名称(可选)。如果设置为None,则将自动命名这一层。默认值为None。 - -返回:在指定dim上进行或逻辑计算的Tensor,数据类型为bool类型。 - -返回类型:Variable,数据类型为bool类型。 - -**代码示例** - -.. code-block:: python - - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - import numpy as np - - # x是一个布尔型Tensor,元素如下: - # [[True, False] - # [False, False]] - x = layers.assign(np.array([[1, 0], [0, 0]], dtype='int32')) - x = layers.cast(x, 'bool') - - out = layers.reduce_any(x) # True - out = layers.reduce_any(x, dim=0) # [True, False] - out = layers.reduce_any(x, dim=-1) # [True, False] - # keep_dim=False, x.shape=(2,2), out.shape=(2,) - - out = layers.reduce_any(x, dim=1, - keep_dim=True) # [[True], [False]] - # keep_dim=True, x.shape=(2,2), out.shape=(2,1) - - - - - - diff --git a/doc/paddle/api/paddle/tensor/manipulation/cast_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/cast_cn.rst deleted file mode 100644 index 8ce45cef9fe74a6016bf1d4f264696cde94d9e71..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/cast_cn.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _cn_api_fluid_layers_cast: - -cast -------------------------------- - -.. py:function:: paddle.fluid.layers.cast(x,dtype) - -:alias_main: paddle.cast -:alias: paddle.cast,paddle.tensor.cast,paddle.tensor.manipulation.cast -:old_api: paddle.fluid.layers.cast - - - -该OP将 ``x`` 的数据类型转换为 ``dtype`` 并输出。支持输出和输入的数据类型相同。 - -参数: - - **x** (Variable) - 输入的多维Tensor或LoDTensor,支持的数据类型为:bool、float16、float32、float64、uint8、int32、int64。 - - **dtype** (str|np.dtype|core.VarDesc.VarType) - 输出Tensor的数据类型。支持的数据类型为:bool、float16、float32、float64、int8、int32、int64、uint8。 - -返回:Tensor或LoDTensor,维度与 ``x`` 相同,数据类型为 ``dtype`` - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - place = fluid.core.CPUPlace() - - # 构建网络 - x_lod = fluid.layers.data(name="x", shape=[1], lod_level=1) - cast_res1 = fluid.layers.cast(x=x_lod, dtype="uint8") - cast_res2 = fluid.layers.cast(x=x_lod, dtype=np.int32) - - # 创建CPU执行器 - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - - x_i_lod = fluid.core.LoDTensor() - x_i_lod.set(np.array([[1.3,-2.4],[0,4]]).astype("float32"), place) - x_i_lod.set_recursive_sequence_lengths([[0,2]]) - res1 = exe.run(fluid.default_main_program(), feed={'x':x_i_lod}, fetch_list=[cast_res1], return_numpy=False) - res2 = exe.run(fluid.default_main_program(), feed={'x':x_i_lod}, fetch_list=[cast_res2], return_numpy=False) - print(np.array(res1[0]), np.array(res1[0]).dtype) - # [[ 1 254] - # [ 0 4]] uint8 - print(np.array(res2[0]), np.array(res2[0]).dtype) - # [[ 1 -2] - # [ 0 4]] int32 diff --git a/doc/paddle/api/paddle/tensor/manipulation/expand_as_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/expand_as_cn.rst deleted file mode 100644 index 3781c7c9343c5dc73c05f778814b9ca8b4b4bb50..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/expand_as_cn.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _cn_api_fluid_layers_expand_as: - -expand_as -------------------------------- - -.. py:function:: paddle.fluid.layers.expand_as(x, target_tensor, name=None) - -:alias_main: paddle.expand_as -:alias: paddle.expand_as,paddle.tensor.expand_as,paddle.tensor.manipulation.expand_as -:old_api: paddle.fluid.layers.expand_as - - - -该OP会根据输入的variable ``target_tensor`` 对输入 ``x`` 的各维度进行广播。通过 ``target_tensor``的维度来为 ``x`` 的每个维度设置广播的次数,使得x 的维度与target_tensor的维度相同。 ``x`` 的秩应小于等于6。注意, ``target_tensor`` 的秩必须与 ``x`` 的秩相同。 -注意:``target_tensor`` 对应的每一维必须能整除输入x中对应的维度,否则会报错。比如,target_tensor的维度为[2,6,2],x为[2,3,1],则整除后为[1,2,2],x广播后维度为[2,6,2]。如果target_tensor的维度为[2,5,2],第二维5不能整除x的第二维3,则会报错。 - -以下是一个示例: - -:: - - 输入(x) 是一个形状为[2, 3, 1]的 3-D Tensor : - - [ - [[1], [2], [3]], - [[4], [5], [6]] - ] - - target_tensor的维度 : [2, 6, 2] - - 输出(out) 是一个形状为[2, 6, 2]的 3-D Tensor: - - [ - [[1, 1], [2, 2], [3, 3], [1, 1], [2, 2], [3, 3]], - [[4, 4], [5, 5], [6, 6], [4, 4], [5, 5], [6, 6]] - ] - - - -参数: - - **x** (Variable)- 维度最高为6的多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32`` 或 ``bool``。 - - **target_tensor** (list|tuple|Variable)- 数据类型为 ``float32``,``float64``,``int32`` 或 ``bool`` 。可为Tensor或者LODTensor。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:维度与输入 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``x`` 相同。返回值的每个维度的大小等于``target_tensor`` 对应的维度的大小。 - -返回类型:``Variable`` 。 - -抛出异常: - - :code:`ValueError`:``target_tensor`` 对应的每一维必须能整除输入x中对应的维度,否则会报错。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.data(name="data", shape=[-1,10], dtype='float64') - target_tensor = fluid.data(name="target_tensor", shape=[-1,20], dtype='float64') - result = fluid.layers.expand_as(x=data, target_tensor=target_tensor) - use_cuda = False - place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) - x = np.random.rand(3,10) - y = np.random.rand(3,20) - output= exe.run(feed={"data":x,"target_tensor":y},fetch_list=[result.name]) - print(output[0].shape) - #(3,20) \ No newline at end of file diff --git a/doc/paddle/api/paddle/tensor/manipulation/expand_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/expand_cn.rst deleted file mode 100644 index 6bd61b1587e60420df20942a8da8c6382a1eef59..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/expand_cn.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _cn_api_fluid_layers_expand: - -expand -------------------------------- - -.. py:function:: paddle.fluid.layers.expand(x, expand_times, name=None) - -:alias_main: paddle.expand -:alias: paddle.expand,paddle.tensor.expand,paddle.tensor.manipulation.expand -:old_api: paddle.fluid.layers.expand - - - -该OP会根据参数 ``expand_times`` 对输入 ``x`` 的各维度进行复制。通过参数 ``expand_times`` 来为 ``x`` 的每个维度设置复制次数。 ``x`` 的秩应小于等于6。注意, ``expand_times`` 的大小必须与 ``x`` 的秩相同。以下是一个用例: - -:: - - 输入(x) 是一个形状为[2, 3, 1]的 3-D Tensor : - - [ - [[1], [2], [3]], - [[4], [5], [6]] - ] - - 属性(expand_times): [1, 2, 2] - - 输出(out) 是一个形状为[2, 6, 2]的 3-D Tensor: - - [ - [[1, 1], [2, 2], [3, 3], [1, 1], [2, 2], [3, 3]], - [[4, 4], [5, 5], [6, 6], [4, 4], [5, 5], [6, 6]] - ] - -参数: - - **x** (Variable)- 维度最高为6的多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32`` 或 ``bool``。 - - **expand_times** (list|tuple|Variable)- 数据类型是 ``int32`` 。如果 ``expand_times`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``expand_times`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示 ``x`` 每一个维度被复制的次数。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:维度与输入 ``x`` 相同的 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``x`` 相同。返回值的每个维度的大小等于 ``x`` 的相应维度的大小乘以 ``expand_times`` 给出的相应值。 - -返回类型:``Variable`` 。 - -抛出异常: - - :code:`TypeError`:``expand_times`` 的类型应该是 list、tuple 或 Variable。 - - :code:`ValueError`:``expand_times`` 中的元素不能是负值。 - - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # example 1: - data_1 = fluid.layers.fill_constant(shape=[2, 3, 1], dtype='int32', value=0) - expanded_1 = fluid.layers.expand(data_1, expand_times=[1, 2, 2]) - # the shape of expanded_1 is [2, 6, 2]. - - # example 2: - data_2 = fluid.layers.fill_constant(shape=[12, 14], dtype="int32", value=3) - expand_times = fluid.layers.fill_constant(shape=[2], dtype="int32", value=4) - expanded_2 = fluid.layers.expand(data_2, expand_times=expand_times) - # the shape of expanded_2 is [48, 56]. - - - - - - - - diff --git a/doc/paddle/api/paddle/tensor/manipulation/gather_nd_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/gather_nd_cn.rst deleted file mode 100644 index 6c810ad73aa1edff045883f98cd80ffcb2365762..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/gather_nd_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_gather_nd: - -gather_nd -------------------------------- - -.. py:function:: paddle.fluid.layers.gather_nd(input, index, name=None) - -:alias_main: paddle.gather_nd -:alias: paddle.gather_nd,paddle.tensor.gather_nd,paddle.tensor.manipulation.gather_nd -:old_api: paddle.fluid.layers.gather_nd - - - -该OP是 :code:`gather` 的高维推广,并且支持多轴同时索引。 :code:`index` 是一个K维度的张量,它可以认为是从 :code:`input` 中取K-1维张量,每一个元素是一个切片: - -.. math:: - output[(i_0, ..., i_{K-2})] = input[index[(i_0, ..., i_{K-2})]] - -显然, :code:`index.shape[-1] <= input.rank` 并且输出张量的维度是 :code:`index.shape[:-1] + input.shape[index.shape[-1]:]` 。 - -示例: - -:: - - 给定: - input = [[[ 0, 1, 2, 3], - [ 4, 5, 6, 7], - [ 8, 9, 10, 11]], - [[12, 13, 14, 15], - [16, 17, 18, 19], - [20, 21, 22, 23]]] - input.shape = (2, 3, 4) - - - 案例 1: - index = [[1]] - - gather_nd(input, index) - = [input[1, :, :]] - = [[12, 13, 14, 15], - [16, 17, 18, 19], - [20, 21, 22, 23]] - - - 案例 2: - - index = [[0,2]] - gather_nd(input, index) - = [input[0, 2, :]] - = [8, 9, 10, 11] - - - 案例 3: - - index = [[1, 2, 3]] - gather_nd(input, index) - = [input[1, 2, 3]] - = [23] - - -参数: - - **input** (Variable) - 输入张量,数据类型可以是int32,int64,float32,float64, bool。 - - **index** (Variable) - 输入的索引张量,数据类型为非负int32或非负int64。它的维度 :code:`index.rank` 必须大于1,并且 :code:`index.shape[-1] <= input.rank` 。 - - **name** (string) - 该层的名字,默认值为None,表示会自动命名。 - -返回:shape为index.shape[:-1] + input.shape[index.shape[-1]:]的Tensor|LoDTensor,数据类型与 :code:`input` 一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[3, 4, 5], dtype='float32') - index = fluid.layers.data(name='index', shape=[2, 2], dtype='int32') - output = fluid.layers.gather_nd(x, index) - - - - - diff --git a/doc/paddle/api/paddle/tensor/manipulation/reshape_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/reshape_cn.rst deleted file mode 100644 index a5e39dff07f19832e9468f7deea5cc43b366a33d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/reshape_cn.rst +++ /dev/null @@ -1,88 +0,0 @@ -.. _cn_api_fluid_layers_reshape: - -reshape -------------------------------- - -.. py:function:: paddle.fluid.layers.reshape(x, shape, actual_shape=None, act=None, inplace=False, name=None) - -:alias_main: paddle.reshape -:alias: paddle.reshape,paddle.tensor.reshape,paddle.tensor.manipulation.reshape -:old_api: paddle.fluid.layers.reshape - - - -该OP在保持输入 ``x`` 数据不变的情况下,改变 ``x`` 的形状。 - -目标形状可由 ``shape`` 或 ``actual_shape`` 给出。当两个属性同时被指定时,``actual_shape`` 的优先级高于 ``shape`` ,但此时 ``shape`` 只能是整数列表或元组,且在编译时仍然应该正确地设置 ``shape`` 以保证形状推断。 - -在指定目标shape时存在一些技巧: - -.. code-block:: text - - 1. -1 表示这个维度的值是从x的元素总数和剩余维度推断出来的。因此,有且只有一个维度可以被设置为-1。 - 2. 0 表示实际的维数是从x的对应维数中复制出来的,因此shape中0的索引值不能超过x的维度。 - - -这里有一些例子来解释它们: - -.. code-block:: text - - 1. 给定一个形状为[2,4,6]的三维张量x,目标形状为[6,8],则将x变换为形状为[6,8]的2-D张量,且x的数据保持不变。 - 2. 给定一个形状为[2,4,6]的三维张量x,目标形状为[2,3,-1,2],则将x变换为形状为[2,3,4,2]的4-D张量,且x的数据保持不变。在这种情况下,目标形状的一个维度被设置为-1,这个维度的值是从x的元素总数和剩余维度推断出来的。 - 3. 给定一个形状为[2,4,6]的三维张量x,目标形状为[-1,0,3,2],则将x变换为形状为[2,4,3,2]的4-D张量,且x的数据保持不变。在这种情况下,0对应位置的维度值将从x的对应维数中复制,-1对应位置的维度值由x的元素总数和剩余维度推断出来。 - -**注意:参数** ``actual_shape`` **之后将被舍弃,只用参数** ``shape`` **来表示目标形状。** - -参数: - - **x** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32``,或 ``int64``。 - - **shape** (list|tuple|Variable)- 数据类型是 ``int32`` 。定义目标形状。目标形状最多只能有一个维度为-1。如果 ``shape`` 的类型是 list 或 tuple, 它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``shape`` 的类型是 ``Variable``,则是1-D的 ``Tensor`` 或 ``LoDTensor``。 - - **actual_shape** (Variable,可选)- 1-D ``Tensor`` 或 ``LoDTensor``,默认值:`None`。如果 ``actual_shape`` 被提供,``actual_shape`` 具有比 ``shape`` 更高的优先级,此时 ``shape`` 只能是整数列表或元组。更新提示:``actual_shape`` 在未来的版本中将被舍弃,并用 ``shape`` 代替。 - - **act** (str,可选)- 对形状改变后的输入变量做非线性激活操作,激活函数类型可以参考 :ref:`api_guide_activations` 。默认值: ``None``。 - - **inplace** (bool,可选)- 如果 ``inplace`` 为 ``True``,则 ``layers.reshape`` 的输入和输出是同一个变量,否则 ``layers.reshape`` 的输入和输出是不同的变量。默认值:``False``。请注意,如果 ``x`` 是多个OP的输入,则 ``inplace`` 必须为False。 - - **name** (str,可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置。默认值: ``None``。 - -返回:多维 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``input`` 相同。如果 ``inplace`` 为 ``False``,则返回一个新的变量,否则将改变输入变量 ``x`` 自身。如果 ``act`` 为 ``None``,则直接返回形状改变后的变量,否则返回经过激活函数后的变量。 - -返回类型:Variable。 - -抛出异常: - - :code:`TypeError`:``actual_shape`` 的类型应该是 Variable 或 None。 - - :code:`TypeError`:``starts`` 的类型应该是list、tuple 或 Variable。 - - :code:`ValueError`:``shape`` 中至多有一个元素可以是-1。 - - :code:`ValueError`:``shape`` 中的元素为0时,对应的维度应该小于等于``x``的维度。 - - :code:`ValueError`:``shape`` 中的元素除了-1之外,都应该是非负值。 - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - - # example 1: - # attr shape is a list which doesn't contain tensor Variable. - data_1 = fluid.data( - name='data_1', shape=[2, 4, 6], dtype='float32') - reshaped_1 = fluid.layers.reshape( - x=data_1, shape=[-1, 0, 3, 2], inplace=True) - # the shape of reshaped_1 is [2,4,3,2]. - - # example 2: - # attr shape is a list which contains tensor Variable. - data_2 = fluid.layers.fill_constant([2,25], "int32", 3) - dim = fluid.layers.fill_constant([1], "int32", 5) - reshaped_2 = fluid.layers.reshape(data_2, shape=[dim, 10]) - # the shape of reshaped_2 is [5,10]. - - # example 3: - data_3 = fluid.data( - name="data_3", shape=[2,4,6], dtype='float32') - reshaped_3 = fluid.layers.reshape(x=data_3, shape=[6,8]) - # the shape of reshaped_3 is [6,8]. - - - - - - - - diff --git a/doc/paddle/api/paddle/tensor/manipulation/reverse_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/reverse_cn.rst deleted file mode 100644 index a4a552705b1dfc6bb389434a3f0cc771232f91c3..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/reverse_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_layers_reverse: - -reverse -------------------------------- - -.. py:function:: paddle.fluid.layers.reverse(x,axis) - -:alias_main: paddle.reverse -:alias: paddle.reverse,paddle.tensor.reverse,paddle.tensor.manipulation.reverse -:old_api: paddle.fluid.layers.reverse - - - -**reverse** - -该OP对输入Tensor ``x`` 在指定轴 ``axis`` 上进行数据的逆序操作。 - -:: - - 示例1: - 输入是 LoDTensor 类型: - x = [[0, 1, 2], [3, 4, 5], [6, 7, 8]] - axis = [0, 1] - - 输出: - output = [[8, 7, 6], [5, 4, 3], [2, 1, 0]] - - 示例2: - 输入是 LoDTensorArray 类型: - x = {[[0, 1], [2, 3]], - [[4, 5, 6]], - [[7], [8], [9]]} - axis = 0 - - 输出: - output = {[[7], [8], [9]], - [[4, 5, 6]], - [[0, 1], [2, 3]]} - -参数: - - **x** (Variable) - 输入为Tensor或LoDTensorArray,数据类型支持bool,int8,int32,int64,float32和float64。若输入是LoDTensorArray类型,则返回一个逆序的LoDTensorArray,其内部Tensor元素的次序保持不变。 - - **axis** (int|tuple|list) - 指定逆序运算的轴,取值范围是[-R, R),R是输入 ``x`` 的Rank, ``axis`` 为负时与 ``axis`` +R 等价。如果 ``axis`` 是一个元组或列表,则在 ``axis`` 每个元素值所指定的轴上进行逆序运算。如果输入是LoDTensorArray类型,axis须是值为0的int,或shape为[1]的list ``[0]`` 、元组 ``(0,)`` 。 -返回:逆序后的Tensor,形状、数据类型和 ``x`` 一致。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - data = fluid.layers.assign(np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]], dtype='float32')) # [[0., 1., 2.], [3., 4., 5.], [6., 7., 8.]] - result1 = fluid.layers.reverse(data, 0) # [[6., 7., 8.], [3., 4., 5.], [0., 1., 2.]] - result2 = fluid.layers.reverse(data, [0, 1]) # [[8., 7., 6.], [5., 4., 3.], [2., 1., 0.]] - - # 输入为LoDTensorArray时 - data1 = fluid.layers.assign(np.array([[0, 1, 2]], dtype='float32')) - data2 = fluid.layers.assign(np.array([[3, 4, 5]], dtype='float32')) - tensor_array = fluid.layers.create_array(dtype='float32') - i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=0) - fluid.layers.array_write(data1, i, tensor_array) - fluid.layers.array_write(data2, i+1, tensor_array) - - reversed_tensor_array = fluid.layers.reverse(tensor_array, 0) # {[[3, 4, 5]], [[0, 1, 2]]} diff --git a/doc/paddle/api/paddle/tensor/manipulation/scatter_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/scatter_cn.rst deleted file mode 100644 index 38824d7fbdd7d3aa250f24e4b8185b3399f53b5b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/scatter_cn.rst +++ /dev/null @@ -1,79 +0,0 @@ -.. _cn_api_fluid_layers_scatter: - -scatter -------------------------------- - -.. py:function:: paddle.fluid.layers.scatter(input, index, updates, name=None, overwrite=True) - -:alias_main: paddle.scatter -:alias: paddle.scatter,paddle.tensor.scatter,paddle.tensor.manipulation.scatter -:old_api: paddle.fluid.layers.scatter - - - -该OP根据index中的索引值将updates数据更新到input中。 - -.. code-block:: python - - 输入: - input = np.array([[1, 1], [2, 2], [3, 3]]) - index = np.array([2, 1, 0, 1]) - # updates的维度需要和input一样 - # updates 维度 > 1 的shape要和input一样 - updates = np.array([[1, 1], [2, 2], [3, 3], [4, 4]]) - overwrite = False - - 计算过程: - if not overwrite: - for i in range(len(index)): - input[index[i]] = np.zeros((2)) - - # 根据index中的索引值取updates中的数据更新到input中去 - for i in range(len(index)): - if (overwirte): - input[index[i]] = updates[i] - else: - input[index[i]] += updates[i] - - 输出: - out # np.array([[3, 3], [6, 6], [1, 1]]) - out.shape # [3, 2] - -参数: - - **input** (Variable) - 支持任意纬度的Tensor。支持的数据类型为float32。 - - **index** (Variable) - 表示索引,仅支持1-D Tensor。 支持的数据类型为int32,int64。 - - **updates** (Variable) - 根据索引的值将updates Tensor中的对应值更新到input Tensor中,updates Tensor的维度需要和input tensor保持一致,且除了第一维外的其他的维度的大小需要和input Tensor保持相同。支持的数据类型为float32。 - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - - **overwrite** (bool,可选) - 如果index中的索引值有重复且overwrite 为True,旧更新值将被新的更新值覆盖;如果为False,新的更新值将同旧的更新值相加。默认值为True。 - -返回:返回类型为Variable(Tensor|LoDTensor),数据类型以及shape大小同输入一致。 - -**代码示例** - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - - input = fluid.layers.data(name='data', shape=[3, 2], dtype='float32', append_batch_size=False) - index = fluid.layers.data(name='index', shape=[4], dtype='int64', append_batch_size=False) - updates = fluid.layers.data(name='update', shape=[4, 2], dtype='float32', append_batch_size=False) - - output = fluid.layers.scatter(input, index, updates, overwrite=False) - - exe = fluid.Executor(fluid.CPUPlace()) - exe.run(fluid.default_startup_program()) - - in_data = np.array([[1, 1], [2, 2], [3, 3]]).astype(np.float32) - index_data = np.array([2, 1, 0, 1]).astype(np.int64) - update_data = np.array([[1, 1], [2, 2], [3, 3], [4, 4]]).astype(np.float32) - - res = exe.run(fluid.default_main_program(), feed={'data':in_data, "index":index_data, "update":update_data}, fetch_list=[output]) - print(res) - # [array([[3., 3.], - # [6., 6.], - # [1., 1.]], dtype=float32)] - - - - diff --git a/doc/paddle/api/paddle/tensor/manipulation/scatter_nd_add_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/scatter_nd_add_cn.rst deleted file mode 100644 index 95b26e03a214a8cd04a11ef8b6803c246d9cfcb8..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/scatter_nd_add_cn.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. _cn_api_fluid_layers_scatter_nd_add: - -scatter_nd_add -------------------------------- - -.. py:function:: paddle.fluid.layers.scatter_nd_add(ref, index, updates, name=None) - -:alias_main: paddle.scatter_nd_add -:alias: paddle.scatter_nd_add,paddle.tensor.scatter_nd_add,paddle.tensor.manipulation.scatter_nd_add -:old_api: paddle.fluid.layers.scatter_nd_add - - - -该OP通过对Variable中的单个值或切片应用稀疏加法,从而得到输出的Variable。 - -:code:`ref` 是维度为 :code:`R` 的张量。 :code:`index` 是维度为 :code:`K` 的张量。因此, :code:`index` 的形状是 :math:`[i_0, i_1, ..., i_{K-2}, Q]` ,其中 :math:`Q \leq R` 。:code:`updates` 是一个维度为 :math:`K - 1 + R - Q` 的张量,它的形状是 :math:`index.shape[:-1] + ref.shape[index.shape[-1]:]` 。 - -根据 :code:`index` 的 :math:`[i_0, i_1, ..., i_{K-2}]` 得到相应的 :code:`updates` 切片,将其加到根据 :code:`index` 的最后一维得到 :code:`ref` 切片上,从而得到最终的输出张量。 - - -示例: - -:: - - - 案例 1: - ref = [0, 1, 2, 3, 4, 5] - index = [[1], [2], [3], [1]] - updates = [9, 10, 11, 12] - - 得到: - - output = [0, 22, 12, 14, 4, 5] - - - 案例 2: - ref = [[65, 17], [-14, -25]] - index = [[], []] - updates = [[[-1, -2], [1, 2]], - [[3, 4], [-3, -4]]] - ref.shape = (2, 2) - index.shape = (2, 0) - updates.shape = (2, 2, 2) - - 得到: - - output = [[67, 19], [-16, -27]] - - -参数: - - **ref** (Variable) - 输入张量,数据类型可以是float32,float64。 - - **index** (Variable) - 输入的索引张量,数据类型为非负int32或非负int64。它的维度 :code:`index.rank` 必须大于1,并且 :code:`index.shape[-1] <= ref.rank` - - **updates** (Variable) - 输入的更新张量,它必须和 :code:`ref` 有相同的数据类型。形状必须是 :code:`index.shape[:-1] + ref.shape[index.shape[-1]:]` 。 - - **name** (string) - 该层的名字,默认值为None,表示会自动命名。 - -返回:数据类型和形状都与 :code:`ref` 相同的Tensor|LoDTensor。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - ref = fluid.layers.data(name='ref', shape=[3, 5, 9, 10], dtype='float32', append_batch_size=False) - index = fluid.layers.data(name='index', shape=[3, 2], dtype='int32', append_batch_size=False) - updates = fluid.layers.data(name='update', shape=[3, 9, 10], dtype='float32', append_batch_size=False) - output = fluid.layers.scatter_nd_add(ref, index, updates) - - - diff --git a/doc/paddle/api/paddle/tensor/manipulation/scatter_nd_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/scatter_nd_cn.rst deleted file mode 100644 index 60a0b84a5d774638cf99589cdc78fb42a0cd7d22..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/scatter_nd_cn.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _cn_api_fluid_layers_scatter_nd: - -scatter_nd -------------------------------- - -.. py:function:: paddle.fluid.layers.scatter_nd(index, updates, shape, name=None) - -:alias_main: paddle.scatter_nd -:alias: paddle.scatter_nd,paddle.tensor.scatter_nd,paddle.tensor.manipulation.scatter_nd -:old_api: paddle.fluid.layers.scatter_nd - - - -该OP根据 :code:`index` ,将 :code:`updates` 添加到一个新的张量中,从而得到输出的Variable。这个操作与 :code:`scatter_nd_add` 类似,除了形状为 :code:`shape` 的张量是通过零初始化的。相应地, :code:`scatter_nd(index, updates, shape)` 等价于 :code:`scatter_nd_add(fluid.layers.zeros(shape, updates.dtype), index, updates)` 。如果 :code:`index` 有重复元素,则将累积相应的更新,因此,由于数值近似问题,索引中重复元素的顺序不同可能会导致不同的输出结果。具体的计算方法可以参见 :code:`scatter_nd_add` 。该OP是 :code:`gather_nd` 的反函数。 - -参数: - - **index** (Variable) - 输入的索引张量,数据类型为非负int32或非负int64。它的维度 :code:`index.rank` 必须大于1,并且 :code:`index.shape[-1] <= len(shape)` - - **updates** (Variable) - 输入的更新张量。形状必须是 :code:`index.shape[:-1] + shape[index.shape[-1]:]` 。数据类型可以是float32,float64。 - - **shape** (tuple|list) - 要求输出张量的形状。类型是tuple或者list。 - - **name** (string) - 该层的名字,默认值为None,表示会自动命名。 - -返回:数据类型与 :code:`updates` 相同,形状是 :code:`shape` 的Tensor|LoDTensor。 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - index = fluid.layers.data(name='index', shape=[3, 2], dtype='int64', append_batch_size=False) - updates = fluid.layers.data(name='update', shape=[3, 9, 10], dtype='float32', append_batch_size=False) - shape = [3, 5, 9, 10] - output = fluid.layers.scatter_nd(index, updates, shape) - - diff --git a/doc/paddle/api/paddle/tensor/manipulation/shard_index_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/shard_index_cn.rst deleted file mode 100644 index 2bf72254ca86f7559f30f3dcec891248a0a64e6b..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/shard_index_cn.rst +++ /dev/null @@ -1,65 +0,0 @@ -.. _cn_api_fluid_layers_shard_index: - -shard_index -------------------------------- - -.. py:function:: paddle.fluid.layers.shard_index(input, index_num, nshards, shard_id, ignore_value=-1) - -:alias_main: paddle.shard_index -:alias: paddle.shard_index,paddle.tensor.shard_index,paddle.tensor.manipulation.shard_index -:old_api: paddle.fluid.layers.shard_index - - - -该函数对输入的索引根据分片(shard)的偏移量重新计算。 -索引长度被均分为N个分片,如果输入索引所在的分片跟分片ID对应,则该索引以分片的偏移量为界重新计算,否则更新为默认值(ignore_value)。具体计算为: -:: - - 每个分片的长度为 - shard_size = (index_num + nshards - 1) // nshards - - 如果 shard_id == input // shard_size - 则 output = input % shard_size - 否则 output = ignore_value - -注意:若索引长度不能被分片数整除,则最后一个分片长度不足shard_size。 - -示例: -:: - - 输入: - input.shape = [4, 1] - input.data = [[1], [6], [12], [19]] - index_num = 20 - nshards = 2 - ignore_value=-1 - - 如果 shard_id == 0, 输出: - output.shape = [4, 1] - output.data = [[1], [6], [-1], [-1]] - - 如果 shard_id == 1, 输出: - output.shape = [4, 1] - output.data = [[-1], [-1], [2], [9]] - -参数: - - **input** (Variable)- 输入的索引 - - **index_num** (scalar) - 索引长度 - - **nshards** (scalar) - 分片数量 - - **shard_id** (scalar) - 当前分片ID - - **ignore_value** (scalar) - 超出分片索引范围的默认值 - -返回:更新后的索引值 - -返回类型:Variable - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - label = fluid.layers.data(name="label", shape=[1], dtype="int64") - shard_label = fluid.layers.shard_index(input=label, - index_num=20, - nshards=2, - shard_id=0) diff --git a/doc/paddle/api/paddle/tensor/manipulation/slice_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/slice_cn.rst deleted file mode 100644 index ed77cc9498273ed264dd97a052fd35c1327a647a..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/slice_cn.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. _cn_api_fluid_layers_slice: - -slice -------------------------------- - -.. py:function:: paddle.fluid.layers.slice(input, axes, starts, ends) - -:alias_main: paddle.slice -:alias: paddle.slice,paddle.tensor.slice,paddle.tensor.manipulation.slice -:old_api: paddle.fluid.layers.slice - - - -该OP沿多个轴生成 ``input`` 的切片。与numpy类似: https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html 该OP使用 ``axes`` 、 ``starts`` 和 ``ends`` 属性来指定轴列表中每个轴的起点和终点位置,并使用此信息来对 ``input`` 切片。如果向 ``starts`` 或 ``ends`` 传递负值如 :math:`-i`,则表示该轴的反向第 :math:`i-1` 个位置(这里以0为初始位置)。如果传递给 ``starts`` 或 ``end`` 的值大于n(维度中的元素数目),则表示n。当切片一个未知数量的维度时,建议传入 ``INT_MAX``。 ``axes`` 、 ``starts`` 和 ``ends`` 三个参数的元素数目必须相等。以下示例将解释切片如何工作: - -:: - - 示例1: - 给定: - data=[[1,2,3,4],[5,6,7,8],] - axes=[0,1] - starts=[1,0] - ends=[2,3] - 则: - result=[[5,6,7],] - - 示例2: - 给定: - data=[[1,2,3,4],[5,6,7,8],] - starts=[0,1] - ends=[-1,1000] # 此处-1表示第0维的反向第0个位置,索引值是1。 - 则: - result=[[2,3,4],] # 即 data[0:1, 1:4] - -参数: - - **input** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float16``, ``float32``,``float64``,``int32``,或 ``int64``。 - - **axes** (list|tuple)- 数据类型是 ``int32``。表示进行切片的轴。它是可选的,如果不存在,将被视为 :math:`[0,1,...,len(starts)- 1]`。 - - **starts** (list|tuple|Variable)- 数据类型是 ``int32``。如果 ``starts`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``starts`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示在各个轴上切片的起始索引值。 - - **ends** (list|tuple|Variable)- 数据类型是 ``int32``。如果 ``ends`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``ends`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示在各个轴上切片的结束索引值。 - -返回:多维 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``input`` 相同。 - -返回类型:Variable。 - -抛出异常: - - :code:`TypeError`:``starts`` 的类型应该是 list、tuple 或 Variable。 - - :code:`TypeError`:``ends`` 的类型应该是 list、tuple 或 Variable。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - - input = fluid.layers.data( - name="input", shape=[3, 4, 5, 6], dtype='float32') - - # example 1: - # attr starts is a list which doesn't contain tensor Variable. - axes = [0, 1, 2] - starts = [-3, 0, 2] - ends = [3, 2, 4] - sliced_1 = fluid.layers.slice(input, axes=axes, starts=starts, ends=ends) - # sliced_1 is input[:, 0:3, 0:2, 2:4]. - - - # example 2: - # attr starts is a list which contain tensor Variable. - minus_3 = fluid.layers.fill_constant([1], "int32", -3) - sliced_2 = fluid.layers.slice(input, axes=axes, starts=[minus_3, 0, 2], ends=ends) - # sliced_2 is input[:, 0:3, 0:2, 2:4]. - - - - - - diff --git a/doc/paddle/api/paddle/tensor/manipulation/strided_slice_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/strided_slice_cn.rst deleted file mode 100644 index 164559652c31746cd9e77d182e43263839fc5451..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/strided_slice_cn.rst +++ /dev/null @@ -1,89 +0,0 @@ -.. _cn_api_fluid_layers_strided_slice: - -strided_slice -------------------------------- -.. py:function:: paddle.fluid.layers.strided_slice(input, axes, starts, ends, strides) - -:alias_main: paddle.strided_slice -:alias: paddle.strided_slice,paddle.tensor.strided_slice,paddle.tensor.manipulation.strided_slice -:old_api: paddle.fluid.layers.strided_slice - - -strided_slice算子。 - -该OP沿多个轴生成 ``input`` 的切片,与numpy类似: https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html。该OP使用 ``axes`` 、 ``starts`` 和 ``ends`` 属性来指定轴列表中每个轴的起点和终点位置,并使用此信息来对 ``input`` 切片。如果向 ``starts`` 或 ``ends`` 传递负值如 :math:`-i`,则表示该轴的反向第 :math:`i-1` 个位置(这里以0为初始位置), ``strides`` 表示切片的步长, ``strides`` 如果为负数,则按照反方向进行切片。如果传递给 ``starts`` 或 ``ends`` 的值大于n(维度中的元素数目),则表示n。当切片一个未知数量的维度时,建议传入 ``INT_MAX``。 ``axes`` 、 ``starts`` 和 ``ends`` 以及 ``strides`` 四个参数的元素数目必须相等。以下示例将解释切片如何工作: - -:: - - - 示例1: - 给定: - data=[[1,2,3,4],[5,6,7,8],] - axes=[0,1] - starts=[1,0] - ends=[2,3] - strides=[1,1] - - 则: - result=[[5,6,7],] - 示例2: - 给定: - data=[[1,2,3,4],[5,6,7,8],] - axes=[0,1] - starts=[1,3] - ends=[2,0] - strides=[1,-1] - - 则: - result=[[8,7,6],] - 示例3: - 给定: - data=[[1,2,3,4],[5,6,7,8],] - axes=[0,1] - starts=[0,1] - ends=[-1,1000] # 此处-1表示第0维的反向第0个位置,索引值是1。 - strides =[1,3] - 则: - result=[[2],] - - -参数: - - - **input** (Variable)- 多维 ``Tensor`` 或 ``LoDTensor``,数据类型为 ``float32``,``float64``,``int32``,或 ``int64``。 - - **axes** (list|tuple)- 数据类型是 ``int32``。表示进行切片的轴。 - - **starts** (list|tuple|Variable)- 数据类型是 ``int32``。如果 ``starts`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``starts`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示在各个轴上切片的起始索引值。 - - **ends** (list|tuple|Variable)- 数据类型是 ``int32``。如果 ``ends`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``ends`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示在各个轴上切片的结束索引值。 - - **strides** (list|tuple|Variable)- 数据类型是 ``int32``。如果 ``strides`` 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 ``Tensor`` 或 ``LoDTensor``。如果 ``strides`` 的类型是 ``Variable``,则是1-D ``Tensor`` 或 ``LoDTensor``。表示在各个轴上切片的步长。 - - -返回:多维 ``Tensor`` 或 ``LoDTensor``,数据类型与 ``input`` 相同。 - - -返回类型:Variable。 - -抛出异常: - - :code:`TypeError`:``starts`` 的类型应该是 list、tuple 或 Variable。 - - :code:`TypeError`:``ends`` 的类型应该是 list、tuple 或 Variable。 - - :code:`TypeError`:``strides`` 的类型应该是 list、tuple 或 Variable。 - -**代码示例:** - -.. code-block:: python - - import paddle.fluid as fluid - input = fluid.layers.data( - name="input", shape=[3, 4, 5, 6], dtype='float32', append_batch_size=False) - # example 1: - # attr starts is a list which doesn't contain tensor Variable. - axes = [1, 2, 3] - starts = [-3, 0, 2] - ends = [3, 2, 4] - strides_1 = [1, 1, 1] - strides_2 = [1, 1, 2] - sliced_1 = fluid.layers.strided_slice(input, axes=axes, starts=starts, ends=ends, strides=strides_1) - # sliced_1 is input[:, 0:3:1, 0:2:1, 2:4:1]. - # example 2: - # attr starts is a list which contain tensor Variable. - minus_3 = fluid.layers.fill_constant([1], "int32", -3) - sliced_2 = fluid.layers.strided_slice(input, axes=axes, starts=[minus_3, 0, 2], ends=ends, strides=strides_2) - # sliced_2 is input[:, 0:3:1, 0:2:1, 2:4:2]. diff --git a/doc/paddle/api/paddle/tensor/manipulation/transpose_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/transpose_cn.rst deleted file mode 100644 index b9d6bfb644cbd2210c2ab22818c4ca0609eba906..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/transpose_cn.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _cn_api_fluid_layers_transpose: - -transpose -------------------------------- - -.. py:function:: paddle.fluid.layers.transpose(x,perm,name=None) - -:alias_main: paddle.transpose -:alias: paddle.transpose,paddle.tensor.transpose,paddle.tensor.linalg.transpose,paddle.tensor.manipulation.transpose -:old_api: paddle.fluid.layers.transpose - - - -该OP根据perm对输入的多维Tensor进行数据重排。返回多维Tensor的第i维对应输入Tensor的perm[i]维。 - -参数: - - **x** (Variable) - 输入:x:[N_1, N_2, ..., N_k, D]多维Tensor,可选的数据类型为float16, float32, float64, int32, int64。 - - **perm** (list) - perm长度必须和X的维度相同,并依照perm中数据进行重排。 - - **name** (str) - 该层名称(可选)。 - -返回: 多维Tensor - -返回类型:Variable - -**示例**: - -.. code-block:: python - - x = [[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] - [[13 14 15 16] [17 18 19 20] [21 22 23 24]]] - shape(x) = [2,3,4] - - # 例0 - perm0 = [1,0,2] - y_perm0 = [[[ 1 2 3 4] [13 14 15 16]] - [[ 5 6 7 8] [17 18 19 20]] - [[ 9 10 11 12] [21 22 23 24]]] - shape(y_perm0) = [3,2,4] - - # 例1 - perm1 = [2,1,0] - y_perm1 = [[[ 1 13] [ 5 17] [ 9 21]] - [[ 2 14] [ 6 18] [10 22]] - [[ 3 15] [ 7 19] [11 23]] - [[ 4 16] [ 8 20] [12 24]]] - shape(y_perm1) = [4,3,2] - - -**代码示例**: - -.. code-block:: python - - # 请使用 append_batch_size=False 来避免 - # 在数据张量中添加多余的batch大小维度 - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 3, 4], - dtype='float32', append_batch_size=False) - x_transposed = fluid.layers.transpose(x, perm=[1, 0, 2]) - print(x_transposed.shape) - #(3L, 2L, 4L) - - - diff --git a/doc/paddle/api/paddle/tensor/manipulation/unique_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/unique_cn.rst deleted file mode 100644 index 0877f8686aa1101fff05377404492f8d45aa493f..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/unique_cn.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _cn_api_fluid_layers_unique: - -unique -------------------------------- - -.. py:function:: paddle.fluid.layers.unique(x, dtype='int32') - -:alias_main: paddle.unique -:alias: paddle.unique,paddle.tensor.unique,paddle.tensor.manipulation.unique -:old_api: paddle.fluid.layers.unique - - - -unique为 ``x`` 返回一个unique张量和一个指向该unique张量的索引。 - -参数: - - **x** (Variable) - 一个1维输入张量 - - **dtype** (np.dtype|core.VarDesc.VarType|str) – 索引张量的类型,int32,int64。 - -返回:元组(out, index)。 ``out`` 为 ``x`` 的指定dtype的unique张量, ``index`` 是一个指向 ``out`` 的索引张量, 用户可以通过该函数来转换原始的 ``x`` 张量的索引。 - -返回类型:元组(tuple) - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - x = fluid.layers.assign(np.array([2, 3, 3, 1, 5, 3], dtype='int32')) - out, index = fluid.layers.unique(x) # out is [2, 3, 1, 5]; index is [0, 1, 1, 2, 3, 1] - - - - - - - - - - diff --git a/doc/paddle/api/paddle/tensor/manipulation/unique_with_counts_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/unique_with_counts_cn.rst deleted file mode 100644 index 906ff316a3f77ab6756b36543bd0ca6e4b55fcf4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/unique_with_counts_cn.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _cn_api_fluid_layers_unique_with_counts: - -unique_with_counts -------------------------------- - -.. py:function:: paddle.fluid.layers.unique_with_counts(x, dtype='int32') - -:alias_main: paddle.unique_with_counts -:alias: paddle.unique_with_counts,paddle.tensor.unique_with_counts,paddle.tensor.manipulation.unique_with_counts -:old_api: paddle.fluid.layers.unique_with_counts - - -该OP对输入Tensor元素进行去重,获取去重后结果Tensor,同时获取去重后结果在原始输入中的计数Tensor以及在原始输入中的索引Tensor。 - -注:该OP仅支持 **CPU** ,同时仅支持 **Tensor** - -参数: - - **x** (Variable) – 数据shape为 :math:`[N]` 的一维Tensor,数据类型为 float32,float64,int32,int64。 - - **dtype** (np.dtype|core.VarDesc.VarType|str) – 索引和计数Tensor的类型,默认为 int32,数据类型需要为 int32或int64。 - -返回: - - **out** 表示对输入进行去重后结果一维Tensor,数据shape为 :math:`[K]` ,K和输入x的shape中的N可能不一致。 - - **index** 表示原始输入在去重后结果中的索引Tensor :math:`[N]` ,shape和输入x的shape一致。 - - **count** 表示去重后元素的计数结果Tensor,数据shape为 :math:`[K]` ,数据shape和out的shape一致。 - -返回类型:tuple,tuple中元素类型为Variable(Tensor),输出中的out和输入x的数据类型一致,输出中index以及count的数据类型为 int32,int64。 - -**代码示例**: - -.. code-block:: python - - import numpy as np - import paddle.fluid as fluid - x = fluid.layers.assign(np.array([2, 3, 3, 1, 5, 3], dtype='int32')) - out, index, count = fluid.layers.unique_with_counts(x) # out is [2, 3, 1, 5]; - # index is [0, 1, 1, 2, 3, 1]; - # count is [1, 3, 1, 1] - # x.shape=(6,) out.shape=(4,), index.shape=(6,), count.shape=(4,) - diff --git a/doc/paddle/api/paddle/tensor/manipulation/unstack_cn.rst b/doc/paddle/api/paddle/tensor/manipulation/unstack_cn.rst deleted file mode 100644 index cc4324c6b5764b7a03cfe509345e14aa43e505ee..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/manipulation/unstack_cn.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _cn_api_fluid_layers_unstack: - -unstack -------------------------------- - -.. py:function:: paddle.fluid.layers.unstack(x, axis=0, num=None) - -:alias_main: paddle.unstack -:alias: paddle.unstack,paddle.tensor.unstack,paddle.tensor.manipulation.unstack -:old_api: paddle.fluid.layers.unstack - - - -该OP将单个dim为 ``D`` 的Tensor沿 ``axis`` 轴unpack为 ``num`` 个dim为 ``(D-1)`` 的Tensor - -参数: - - **x** (Variable) – 输入x为 ``dim > 0`` 的Tensor, - 支持的数据类型: float32,float64,int32,int64。 - - - **axis** (int | 可选) – 输入Tensor进行unpack运算所在的轴,axis的范围为:``[-D, D)`` , - 如果 ``axis < 0`` ,则 :math:`axis = axis + dim(x)`,axis的默认值为0。 - - - **num** (int | 可选) - axis轴的长度,一般无需设置,默认值为 ``None`` 。 - -返回: 长度为num的Tensor列表, 数据类型与输入Tensor相同,dim为 ``(D-1)``。 - -返回类型: list(Variable) - -抛出异常: - - :code:`ValueError`:``x.shape[axis]`` <= 0 或 ``axis`` 不在[-D, D)范围内 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - x = fluid.layers.data(name='x', shape=[2, 3, 5], dtype='float32') #创建一个shape=[2, 3, 5]的Tensor - y = fluid.layers.unstack(x, axis=1) #沿着第1轴进行unpack, unpack后为3个shape=[2,5]的Tensor - - - - - - - diff --git a/doc/paddle/api/paddle/tensor/math/elementwise_max_cn.rst b/doc/paddle/api/paddle/tensor/math/elementwise_max_cn.rst deleted file mode 100644 index b36097fbc71d17711142628ac985e35bdd415f00..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/math/elementwise_max_cn.rst +++ /dev/null @@ -1,109 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_max: - -elementwise_max -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_max(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_max -:alias: paddle.elementwise_max,paddle.tensor.elementwise_max,paddle.tensor.math.elementwise_max -:old_api: paddle.fluid.layers.elementwise_max - - -该OP逐元素对比输入的两个多维Tensor,并且把各个位置更大的元素保存到返回结果中。 - -等式是: - -.. math:: - Out = max(X, Y) - -- :math:`X` :多维Tensor。 -- :math:`Y` :多维Tensor。 - -此运算算子有两种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 的 ``shape`` 匹配 :math:`X` 的 ``shape``,其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis = rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维Tensor。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64`` 。 - - **y** (Variable)- 多维Tensor。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64`` 。 - - **axis** (int32, 可选)- Y的维度对应到X维度上时的索引。默认值为 -1。 - - **act** (string, 可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (string, 可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: 维度和数据类型与 ``x`` 相同的多维Tensor。 - -返回类型: 多维Tensor。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_max(x, y) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - - print(z_value) #[2, 5, 4] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def gen_data(): - return { - "x": np.ones((2, 3, 4, 5)).astype('float32'), - "y": np.zeros((3, 4)).astype('float32') - } - - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_max(x, y, axis=1) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - - print(z_value)#[[[[1., 1., 1., 1., 1.] .... [1., 1., 1., 1., 1.]]]] - - - - - - - - diff --git a/doc/paddle/api/paddle/tensor/math/elementwise_min_cn.rst b/doc/paddle/api/paddle/tensor/math/elementwise_min_cn.rst deleted file mode 100644 index 22669884e0343785de9263c9c5769ee24fce4bdf..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/math/elementwise_min_cn.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _cn_api_fluid_layers_elementwise_min: - -elementwise_min -------------------------------- - -.. py:function:: paddle.fluid.layers.elementwise_min(x, y, axis=-1, act=None, name=None) - -:alias_main: paddle.elementwise_min -:alias: paddle.elementwise_min,paddle.tensor.elementwise_min,paddle.tensor.math.elementwise_min -:old_api: paddle.fluid.layers.elementwise_min - - -该OP逐元素对比输入的两个多维Tensor,并且把各个位置更小的元素保存到返回结果中。 - -等式是: - -.. math:: - Out = min(X, Y) - -- :math:`X` :多维Tensor。 -- :math:`Y` :多维Tensor。 - -此运算算子有两种情况: - 1. :math:`Y` 的 ``shape`` 与 :math:`X` 相同。 - 2. :math:`Y` 的 ``shape`` 是 :math:`X` 的连续子序列。 - -对于情况2: - 1. 用 :math:`Y` 的 ``shape`` 匹配 :math:`X` 的 ``shape``,其中 ``axis`` 是 :math:`Y` 在 :math:`X` 上的起始维度的位置。 - 2. 如果 ``axis`` 为-1(默认值),则 :math:`axis = rank(X)-rank(Y)` 。 - 3. 考虑到子序列, :math:`Y` 的大小为1的尾部维度将被忽略,例如shape(Y)=(2,1)=>(2)。 - -例如: - -.. code-block:: text - - shape(X) = (2, 3, 4, 5), shape(Y) = (,) - shape(X) = (2, 3, 4, 5), shape(Y) = (5,) - shape(X) = (2, 3, 4, 5), shape(Y) = (4, 5), with axis=-1(default) or axis=2 - shape(X) = (2, 3, 4, 5), shape(Y) = (3, 4), with axis=1 - shape(X) = (2, 3, 4, 5), shape(Y) = (2), with axis=0 - shape(X) = (2, 3, 4, 5), shape(Y) = (2, 1), with axis=0 - -参数: - - **x** (Variable)- 多维Tensor。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64`` 。 - - **y** (Variable)- 多维Tensor。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64`` 。 - - **axis** (int32, 可选)- Y的维度对应到X维度上时的索引。默认值为 -1。 - - **act** (string, 可选)- 激活函数名称,作用于输出上。默认值为None。详细请参考 :ref:`api_guide_activations` , 常见的激活函数有: ``relu`` ``tanh`` ``sigmoid`` 等。 - - **name** (string, 可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。 - -返回: 维度和数据类型与 ``x`` 相同的多维Tensor。 - -返回类型: 多维Tensor。 - -**代码示例 1** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def gen_data(): - return { - "x": np.array([2, 3, 4]), - "y": np.array([1, 5, 2]) - } - - x = fluid.layers.data(name="x", shape=[3], dtype='float32') - y = fluid.layers.data(name="y", shape=[3], dtype='float32') - z = fluid.layers.elementwise_min(x, y) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - - print(z_value) #[1, 3, 2] - -**代码示例 2** - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - def gen_data(): - return { - "x": np.ones((2, 3, 4, 5)).astype('float32'), - "y": np.zeros((3, 4)).astype('float32') - } - - x = fluid.layers.data(name="x", shape=[2,3,4,5], dtype='float32') - y = fluid.layers.data(name="y", shape=[3,4], dtype='float32') - z = fluid.layers.elementwise_min(x, y, axis=1) - - place = fluid.CPUPlace() - exe = fluid.Executor(place) - - z_value = exe.run(feed=gen_data(), - fetch_list=[z.name]) - - print(z_value)#[[[[0., 0., 0., 0., 0.] .... [0., 0., 0., 0., 0.]]]] - - - - - diff --git a/doc/paddle/api/paddle/tensor/math/mul_cn.rst b/doc/paddle/api/paddle/tensor/math/mul_cn.rst deleted file mode 100644 index 6e5fea3571adf9ca98948b6bbb38c44cfd44ad9d..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/math/mul_cn.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cn_api_tensor_argmax: - -mul -------------------------------- - -.. py:function:: paddle.mul(x, y, x_num_col_dims=1, y_num_col_dims=1, out=None, name=None) - -:alias_main: paddle.mul -:alias: paddle.mul,paddle.tensor.mul,paddle.tensor.math.mul -:update_api: paddle.fluid.layers.mul - - - - -mul算子 -此运算是用于对输入x和y执行矩阵乘法。 -公式是: - -.. math:: - out = x * y - -输入x和y都可以携带LoD(详细程度)信息。但输出仅与输入x共享LoD信息。 - -参数: - - **x** (Variable) - 乘法运算的第一个输入张量Tensor/LoDTensor。 - - **y** (Variable) - 乘法运算的第二个输入张量Tensor/LoDTensor。 - - **x_num_col_dims** (int,可选) - 默认值1, 可以将具有两个以上维度的张量作为输入。如果输入x是具有多于两个维度的张量,则输入x将先展平为二维矩阵。展平规则是:前 ``num_col_dims`` 将被展平成最终矩阵的第一个维度(矩阵的高度),其余的 rank(x) - num_col_dims 维度被展平成最终矩阵的第二个维度(矩阵的宽度)。结果是展平矩阵的高度等于x的前 ``x_num_col_dims`` 维数的乘积,展平矩阵的宽度等于x的最后一个 rank(x)- ``num_col_dims`` 个剩余维度的维数的乘积。例如,假设x是一个5-D张量,形状为(2,3,4,5,6),并且 ``x_num_col_dims`` 的值为3。 则扁平化后的张量具有的形即为(2x3x4,5x6)=(24,30)。 - - **y_num_col_dims** (int,可选) - 默认值1, 可以将具有两个以上维度的张量作为输入。如果输入y是具有多于两个维度的张量,则y将首先展平为二维矩阵。 ``y_num_col_dims`` 属性确定y的展平方式。有关更多详细信息,请参阅 ``x_num_col_dims`` 的注释。 - - **out** (Variable, 可选) - 默认值None,如果out不为空,则矩阵乘法运算结果存储在out变量中。 - - **name** (str,可选) - 默认值None,输出的名称。该参数供开发人员打印调试信息时使用,具体用法参见 :ref:`api_guide_name`。当out和name同时不为空时,结果输出变量名与out保持一致。 - -返回:Variable(Tensor)乘法运算输出张量。 - -返回类型:变量(Variable)。 - -**代码示例** - -.. code-block:: python - - import paddle - import paddle.fluid as fluid - dataX = fluid.data(name="dataX", shape=[2, 5], dtype="float32") - dataY = fluid.data(name="dataY", shape=[5, 3], dtype="float32") - - res = fluid.data(name="output", shape=[2, 3], dtype="float32") - output = paddle.mul(dataX, dataY, - x_num_col_dims = 1, - y_num_col_dims = 1, - out=res) - - diff --git a/doc/paddle/api/paddle/tensor/random/shuffle_cn.rst b/doc/paddle/api/paddle/tensor/random/shuffle_cn.rst deleted file mode 100644 index 7b64c23b7e5706e23a9051f60b3a55bea7ea6573..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/random/shuffle_cn.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _cn_api_fluid_io_shuffle: - -shuffle -------------------------------- - -.. py:function:: paddle.fluid.io.shuffle(reader, buffer_size) - -:alias_main: paddle.shuffle -:alias: paddle.shuffle,paddle.tensor.shuffle,paddle.tensor.random.shuffle -:old_api: paddle.fluid.io.shuffle - - - -该接口创建一个数据读取器,其功能是将原始数据读取器的数据打乱,然后返回无序的数据。 - -从原始数据读取器取出buf_size个数据到缓冲区,将缓冲区数据打乱,然后将无序的数据依次返回。当缓冲区数据全部输出后,再次执行上述步骤。 - -参数: - - **reader** (callable) – 原始数据读取器。 - - **buf_size** (int) – 缓冲区保存数据的个数。 - -返回: 返回无序数据的数据读取器 - -返回类型: callable - -.. code-block:: python - - import paddle.fluid as fluid - def reader(): - for i in range(5): - yield i - shuffled_reader = fluid.io.shuffle(reader, 3) - for e in shuffled_reader(): - print(e) - # 输出结果是0~4的无序排列 diff --git a/doc/paddle/api/paddle/tensor/search/argmin_cn.rst b/doc/paddle/api/paddle/tensor/search/argmin_cn.rst deleted file mode 100644 index 74ba5fbc52a2cc285cd9d1a370246e028ec0b14c..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/search/argmin_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_argmin: - -argmin -------------------------------- - -.. py:function:: paddle.fluid.layers.argmin(x, axis=0) - -:alias_main: paddle.argmin -:alias: paddle.argmin,paddle.tensor.argmin,paddle.tensor.search.argmin -:old_api: paddle.fluid.layers.argmin - - - -**argmin** - -该OP沿 ``axis`` 计算输入 ``x`` 的最小元素的索引。 - -参数: - - **x** (Variable) - 输入的多维 ``Tensor`` ,支持的数据类型:float32、float64、int8、int16、int32、int64。 - - **axis** (int,可选) - 指定对输入Tensor进行运算的轴, ``axis`` 的有效范围是[-R, R),R是输入 ``x`` 的Rank, ``axis`` 为负时与 ``axis`` +R 等价。默认值为0。 - -返回: ``Tensor`` ,数据类型int64 - -返回类型:Variable - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import numpy as np - - in1 = np.array([[[5,8,9,5], - [0,0,1,7], - [6,9,2,4]], - [[5,2,4,2], - [4,7,7,9], - [1,7,0,6]]]) - with fluid.dygraph.guard(): - x = fluid.dygraph.to_variable(in1) - out1 = fluid.layers.argmin(x=x, axis=-1) - out2 = fluid.layers.argmin(x=x, axis=0) - out3 = fluid.layers.argmin(x=x, axis=1) - out4 = fluid.layers.argmin(x=x, axis=2) - print(out1.numpy()) - # [[0 0 2] - # [1 0 2]] - print(out2.numpy()) - # [[0 1 1 1] - # [0 0 0 0] - # [1 1 1 0]] - print(out3.numpy()) - # [[1 1 1 2] - # [2 0 2 0]] - print(out4.numpy()) - # [[0 0 2] - # [1 0 2]] diff --git a/doc/paddle/api/paddle/tensor/search/has_inf_cn.rst b/doc/paddle/api/paddle/tensor/search/has_inf_cn.rst deleted file mode 100644 index 8bf1cb7b8bfcdb7e1547f75566f0b641d745baf6..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/search/has_inf_cn.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _cn_api_fluid_layers_has_inf: - -has_inf -------------------------------- - -.. py:function:: paddle.fluid.layers.has_inf(x) - -:alias_main: paddle.has_inf -:alias: paddle.has_inf,paddle.tensor.has_inf,paddle.tensor.search.has_inf -:old_api: paddle.fluid.layers.has_inf - - - -检查输入的变量(x)中是否包含无穷数(inf)。 - -参数: - - **x** (Variable) - 被检查的变量Tensor/LoDTensor。 - -返回:Variable(Tensor)变量存储输出值,包含一个bool型数值,指明输入中是否包含无穷数(inf)。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[4, 32, 32], dtype="float32") - res = fluid.layers.has_inf(data) - - - - - - - - - diff --git a/doc/paddle/api/paddle/tensor/search/has_nan_cn.rst b/doc/paddle/api/paddle/tensor/search/has_nan_cn.rst deleted file mode 100644 index 0f66985af75a733ba985155c6fd06255ce46b8cc..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/search/has_nan_cn.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. _cn_api_fluid_layers_has_nan: - -has_nan -------------------------------- - -.. py:function:: paddle.fluid.layers.has_nan(x) - -:alias_main: paddle.has_nan -:alias: paddle.has_nan,paddle.tensor.has_nan,paddle.tensor.search.has_nan -:old_api: paddle.fluid.layers.has_nan - - - -检查输入的变量(x)中是否包含NAN。 - -参数: - - **x** (Variable) - 被检查的变量Tensor/LoDTensor。 - -返回:Variable(Tensor)变量存储输出值,包含一个bool型数值,指明输入中是否包含NAN。 - -返回类型:变量(Variable) - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - data = fluid.layers.data(name="input", shape=[4, 32, 32], dtype="float32") - res = fluid.layers.has_nan(data) - - - - diff --git a/doc/paddle/api/paddle/tensor/search/topk_cn.rst b/doc/paddle/api/paddle/tensor/search/topk_cn.rst deleted file mode 100644 index acef758bbb5c06c5734742830c2b046f372495af..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/search/topk_cn.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. _cn_api_fluid_layers_topk: - -topk -------------------------------- -.. py:function:: paddle.fluid.layers.topk(input, k, name=None) - -:alias_main: paddle.topk -:alias: paddle.topk,paddle.tensor.topk,paddle.tensor.search.topk -:old_api: paddle.fluid.layers.topk - - - -此OP用于查找输入Tensor的最后一维的前k个最大项,返回它们的值和索引。 -如果输入是1-D Tensor,则找到Tensor的前k个最大项,并输出前k个最大项的值和索引。如果输入是更高阶的Tensor,则该OP会基于最后一维计算前k项。 - -- 例1: - -.. code-block:: python - - 输入: - input.shape = [3, 4] - input.data = [[5, 4, 2, 3], - [9, 7, 10, 25], - [6, 2, 10, 1]] - k = 2 - - 输出: - 第一个输出: - values.shape = [3, 2] - values.data = [[5, 4], - [10, 25], - [6, 10]] - - 第二个输出: - indices.shape = [3, 2] - indices.data = [[0, 1], - [2, 3], - [0, 2]] - - -参数: - - **input** (Variable) - 输入的Tensor,支持的数据类型: float32,float64。 - - **k** (int|Variable) - 指定在输入Tensor最后一维中寻找最大前多少项。 - - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: - - ``values``: 输入Tensor最后维切片的最大前k项。数据类型同输入Tensor一致。Tensor维度等于 :math:`input.shape[:-1]+ [k]` 。 - - - ``indices``: 输入Tensor最后维切片最大前k项值的索引,数据类型为int64,维度同values的维度。 - -抛出异常: - - ``ValueError`` : 如果k<1或者k大于输入的最后维。 - -**代码示例**: - -.. code-block:: python - - import paddle.fluid as fluid - import paddle.fluid.layers as layers - input = layers.data(name="input", shape=[13, 11], dtype='float32') - top5_values, top5_indices = layers.topk(input, k=5) #top5_values.shape=[13, 5],top5_indices.shape=[13, 5] - - # 1D Tensor - input1 = layers.data(name="input1", shape=[13], dtype='float32') - top5_values, top5_indices = layers.topk(input1, k=5) #top5_values.shape=[5],top5_indices.shape=[5] - - # k=Variable - input2 = layers.data(name="input2", shape=[13, 11], dtype='float32') - vk = layers.data(name="vk", shape=[1], dtype='int32') # 把k值保存在vk.data[0]中 - vk_values, vk_indices = layers.topk(input2, k=vk) #vk_values.shape=[13, k],vk_indices.shape=[13, k] - - - - - - - - diff --git a/doc/paddle/api/paddle/tensor/stat/reduce_mean_cn.rst b/doc/paddle/api/paddle/tensor/stat/reduce_mean_cn.rst deleted file mode 100644 index c94fed0a80b6a766a57f10ad6c5357428b0c0bd4..0000000000000000000000000000000000000000 --- a/doc/paddle/api/paddle/tensor/stat/reduce_mean_cn.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _cn_api_fluid_layers_reduce_mean: - -reduce_mean -------------------------------- - -.. py:function:: paddle.fluid.layers.reduce_mean(input, dim=None, keep_dim=False, name=None) - -:alias_main: paddle.reduce_mean -:alias: paddle.reduce_mean,paddle.tensor.reduce_mean,paddle.tensor.stat.reduce_mean -:old_api: paddle.fluid.layers.reduce_mean - - - -该OP是对指定维度上的Tensor元素进行平均值算,并输出相应的计算结果。 - -参数: - - **input** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64,int32,int64。 - - **dim** (list | int ,可选)— 求平均值运算的维度。如果为None,则计算所有元素的平均值并返回包含单个元素的Tensor变量,否则必须在 :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。 - - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。 - - **name** (str , 可选)— 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - -返回: 在指定dim上进行平均值运算的Tensor,数据类型和输入数据类型一致。 - -返回类型: 变量(Variable) - -**代码示例** - -.. code-block:: python - - import paddle.fluid as fluid - # x是一个Tensor,元素如下: - # [[0.2, 0.3, 0.5, 0.9] - # [0.1, 0.2, 0.6, 0.7]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。 - x = fluid.data(name='x', shape=[2, 4], dtype='float32') - fluid.layers.reduce_mean(x) # [0.4375] - fluid.layers.reduce_mean(x, dim=0) # [0.15, 0.25, 0.55, 0.8] - fluid.layers.reduce_mean(x, dim=-1) # [0.475, 0.4] - fluid.layers.reduce_mean(x, dim=1, keep_dim=True) # [[0.475], [0.4]] - - # y是一个shape为[2, 2, 2]的Tensor元素如下: - # [[[1.0, 2.0], [3.0, 4.0]], - # [[5.0, 6.0], [7.0, 8.0]]] - # 接下来的示例中,我们在每处函数调用后面都标注出了它的结果张量。。 - y = fluid.data(name='y', shape=[2, 2, 2], dtype='float32') - fluid.layers.reduce_mean(y, dim=[1, 2]) # [2.5, 6.5] - fluid.layers.reduce_mean(y, dim=[0, 1]) # [4.0, 5.0] - - - - - - - - - -