decorate

paddle.static.sparsity. decorate ( optimizer ) [source]

Wrap the given optimizer as a OptimizerWithSparsityGuarantee, which would insert necessary ops for ASP workflows when calling minimize()

Parameters

optimizer (Optimizer) – A Optimizer used for training.

Returns

A wrapper for ASP to decorate minimize function of the given optimizer.

Return type

OptimizerWithSparsityGuarantee

Examples

import paddle
from paddle.static import sparsity

main_program = paddle.static.Program()
startup_program = paddle.static.Program()

paddle.enable_static()

with paddle.static.program_guard(main_program, startup_program):
    input_data = paddle.static.data(name='data', shape=[None, 128])
    label = paddle.static.data(name='label', shape=[None, 10])
    hidden = paddle.static.nn.fc(x=input_data, num_flatten_dims=-1, size=32, activation=None)
    prob = paddle.static.nn.fc(x=hidden, num_flatten_dims=-1, size=10, activation=None)
    loss = paddle.mean(paddle.nn.functional.square_error_cost(prob, label))

    optimizer = paddle.optimizer.SGD(learning_rate=0.1)
    optimizer = sparsity.decorate(optimizer)
    # if do sparse training with Fleet, please replace above decorate with:
    # strategy = paddle.distributed.fleet.DistributedStrategy()
    # strategy.asp = True
    # optimizer = fleet.distributed_optimizer(optimizer, strategy=strategy)

    optimizer.minimize(loss, startup_program)