未验证 提交 bb078c1d 编写于 作者: 张春乔 提交者: GitHub

[xdoctest] reformat example code with google style in No. 301 (#56599)

* Update private_helper_function.py

* xdoc

* Apply suggestions from code review

* format and skip a to_static case

* add a missing space

---------
Co-authored-by: NSigureMo <sigure.qaq@gmail.com>
上级 53d0869f
...@@ -69,96 +69,100 @@ class ModelAverage(Optimizer): ...@@ -69,96 +69,100 @@ class ModelAverage(Optimizer):
Examples: Examples:
.. code-block:: python .. code-block:: python
import numpy as np >>> # doctest: +SKIP("Cannot get source code by to_static in REPL")
import paddle >>> import numpy as np
import paddle.nn as nn >>> import paddle
import paddle.optimizer as opt >>> import paddle.nn as nn
>>> import paddle.optimizer as opt
BATCH_SIZE = 16
BATCH_NUM = 4 >>> BATCH_SIZE = 16
EPOCH_NUM = 4 >>> BATCH_NUM = 4
>>> EPOCH_NUM = 4
IMAGE_SIZE = 784
CLASS_NUM = 10 >>> IMAGE_SIZE = 784
>>> CLASS_NUM = 10
# define a random dataset
class RandomDataset(paddle.io.Dataset): >>> # define a random dataset
def __init__(self, num_samples): >>> class RandomDataset(paddle.io.Dataset):
self.num_samples = num_samples ... def __init__(self, num_samples):
... self.num_samples = num_samples
def __getitem__(self, idx): ... def __getitem__(self, idx):
image = np.random.random([IMAGE_SIZE]).astype('float32') ... image = np.random.random([IMAGE_SIZE]).astype('float32')
label = np.random.randint(0, CLASS_NUM - 1, (1, )).astype('int64') ... label = np.random.randint(0, CLASS_NUM - 1, (1, )).astype('int64')
return image, label ... return image, label
... def __len__(self):
def __len__(self): ... return self.num_samples
return self.num_samples ...
>>> class LinearNet(nn.Layer):
class LinearNet(nn.Layer): ... def __init__(self):
def __init__(self): ... super().__init__()
super().__init__() ... self._linear = nn.Linear(IMAGE_SIZE, CLASS_NUM)
self._linear = nn.Linear(IMAGE_SIZE, CLASS_NUM) ... self.bias = self._linear.bias
self.bias = self._linear.bias ...
... @paddle.jit.to_static
@paddle.jit.to_static ... def forward(self, x):
def forward(self, x): ... return self._linear(x)
return self._linear(x) ...
>>> def train(layer, loader, loss_fn, opt, model_average):
def train(layer, loader, loss_fn, opt, model_average): ... for epoch_id in range(EPOCH_NUM):
for epoch_id in range(EPOCH_NUM): ... for batch_id, (image, label) in enumerate(loader()):
for batch_id, (image, label) in enumerate(loader()): ... out = layer(image)
out = layer(image) ... loss = loss_fn(out, label)
loss = loss_fn(out, label) ... loss.backward()
loss.backward() ... opt.step()
opt.step() ... model_average.step()
model_average.step() ... opt.clear_grad()
opt.clear_grad() ... model_average.clear_grad()
model_average.clear_grad() ... print("Train Epoch {} batch {}: loss = {}, bias = {}".format(
print("Train Epoch {} batch {}: loss = {}, bias = {}".format( ... epoch_id, batch_id, np.mean(loss.numpy()), layer.bias.numpy()))
epoch_id, batch_id, np.mean(loss.numpy()), layer.bias.numpy())) ...
def evaluate(layer, loader, loss_fn): >>> def evaluate(layer, loader, loss_fn):
for batch_id, (image, label) in enumerate(loader()): ... for batch_id, (image, label) in enumerate(loader()):
out = layer(image) ... out = layer(image)
loss = loss_fn(out, label) ... loss = loss_fn(out, label)
loss.backward() ... loss.backward()
print("Evaluate batch {}: loss = {}, bias = {}".format( ... print("Evaluate batch {}: loss = {}, bias = {}".format(
batch_id, np.mean(loss.numpy()), layer.bias.numpy())) ... batch_id, np.mean(loss.numpy()), layer.bias.numpy()))
...
# create network >>> # create network
layer = LinearNet() >>> layer = LinearNet()
loss_fn = nn.CrossEntropyLoss() >>> loss_fn = nn.CrossEntropyLoss()
optimizer = opt.Momentum(learning_rate=0.2, momentum=0.1, parameters=layer.parameters()) >>> optimizer = opt.Momentum(learning_rate=0.2, momentum=0.1, parameters=layer.parameters())
model_average = paddle.incubate.ModelAverage(0.15, >>> model_average = paddle.incubate.ModelAverage(
parameters=layer.parameters(), ... 0.15,
min_average_window=2, ... parameters=layer.parameters(),
max_average_window=10) ... min_average_window=2,
... max_average_window=10
# create data loader ... )
dataset = RandomDataset(BATCH_NUM * BATCH_SIZE) ...
loader = paddle.io.DataLoader(dataset, >>> # create data loader
batch_size=BATCH_SIZE, >>> dataset = RandomDataset(BATCH_NUM * BATCH_SIZE)
shuffle=True, >>> loader = paddle.io.DataLoader(dataset,
drop_last=True, ... batch_size=BATCH_SIZE,
num_workers=2) ... shuffle=True,
# create data loader ... drop_last=True,
eval_loader = paddle.io.DataLoader(dataset, ... num_workers=2)
batch_size=BATCH_SIZE, ...
shuffle=True, >>> # create data loader
drop_last=True, >>> eval_loader = paddle.io.DataLoader(dataset,
num_workers=1) ... batch_size=BATCH_SIZE,
... shuffle=True,
# train ... drop_last=True,
train(layer, loader, loss_fn, optimizer, model_average) ... num_workers=1
... )
print("\nEvaluate With ModelAverage") ...
with model_average.apply(need_restore=False): >>> # train
evaluate(layer, eval_loader, loss_fn) >>> train(layer, loader, loss_fn, optimizer, model_average)
print("\nEvaluate With Restored Paramters") >>> print("\nEvaluate With ModelAverage")
model_average.restore() >>> with model_average.apply(need_restore=False):
evaluate(layer, eval_loader, loss_fn) ... evaluate(layer, eval_loader, loss_fn)
>>> print("\nEvaluate With Restored Paramters")
>>> model_average.restore()
>>> evaluate(layer, eval_loader, loss_fn)
""" """
...@@ -317,23 +321,25 @@ class ModelAverage(Optimizer): ...@@ -317,23 +321,25 @@ class ModelAverage(Optimizer):
.. code-block:: python .. code-block:: python
import paddle >>> import paddle
inp = paddle.rand([1, 10], dtype="float32") >>> inp = paddle.rand([1, 10], dtype="float32")
linear = paddle.nn.Linear(10, 1) >>> linear = paddle.nn.Linear(10, 1)
out = linear(inp) >>> out = linear(inp)
loss = paddle.mean(out) >>> loss = paddle.mean(out)
loss.backward() >>> loss.backward()
sgd = paddle.optimizer.SGD(learning_rate=0.1,parameters=linear.parameters()) >>> sgd = paddle.optimizer.SGD(learning_rate=0.1,parameters=linear.parameters())
sgd.minimize(loss) >>> sgd.minimize(loss)
modelaverage = paddle.incubate.ModelAverage(0.15, >>> modelaverage = paddle.incubate.ModelAverage(
parameters=linear.parameters(), ... 0.15,
min_average_window=2, ... parameters=linear.parameters(),
max_average_window=4) ... min_average_window=2,
modelaverage.minimize(loss) ... max_average_window=4
sgd.clear_grad() ... )
modelaverage.clear_grad() >>> modelaverage.minimize(loss)
>>> sgd.clear_grad()
>>> modelaverage.clear_grad()
""" """
if in_dynamic_mode(): if in_dynamic_mode():
...@@ -352,21 +358,23 @@ class ModelAverage(Optimizer): ...@@ -352,21 +358,23 @@ class ModelAverage(Optimizer):
.. code-block:: python .. code-block:: python
import paddle >>> import paddle
inp = paddle.rand([1, 10], dtype="float32") >>> inp = paddle.rand([1, 10], dtype="float32")
linear = paddle.nn.Linear(10, 1) >>> linear = paddle.nn.Linear(10, 1)
out = linear(inp) >>> out = linear(inp)
loss = paddle.mean(out) >>> loss = paddle.mean(out)
sgd = paddle.optimizer.SGD(learning_rate=0.1,parameters=linear.parameters()) >>> sgd = paddle.optimizer.SGD(learning_rate=0.1,parameters=linear.parameters())
modelaverage = paddle.incubate.ModelAverage(0.15, >>> modelaverage = paddle.incubate.ModelAverage(
parameters=linear.parameters(), ... 0.15,
min_average_window=2, ... parameters=linear.parameters(),
max_average_window=4) ... min_average_window=2,
loss.backward() ... max_average_window=4
sgd.step() ... )
modelaverage.step() >>> loss.backward()
sgd.clear_grad() >>> sgd.step()
modelaverage.clear_grad() >>> modelaverage.step()
>>> sgd.clear_grad()
>>> modelaverage.clear_grad()
""" """
params_grads = [] params_grads = []
...@@ -398,28 +406,30 @@ class ModelAverage(Optimizer): ...@@ -398,28 +406,30 @@ class ModelAverage(Optimizer):
.. code-block:: python .. code-block:: python
import paddle >>> import paddle
inp = paddle.rand([1, 10], dtype="float32") >>> inp = paddle.rand([1, 10], dtype="float32")
linear = paddle.nn.Linear(10, 1) >>> linear = paddle.nn.Linear(10, 1)
out = linear(inp) >>> out = linear(inp)
loss = paddle.mean(out) >>> loss = paddle.mean(out)
loss.backward() >>> loss.backward()
sgd = paddle.optimizer.SGD(learning_rate=0.1,parameters=linear.parameters()) >>> sgd = paddle.optimizer.SGD(learning_rate=0.1,parameters=linear.parameters())
modelaverage = paddle.incubate.ModelAverage(0.15, >>> modelaverage = paddle.incubate.ModelAverage(
parameters=linear.parameters(), ... 0.15,
min_average_window=2, ... parameters=linear.parameters(),
max_average_window=4) ... min_average_window=2,
sgd.step() ... max_average_window=4
modelaverage.step() ... )
>>> sgd.step()
with modelaverage.apply(): >>> modelaverage.step()
for param in linear.parameters():
print(param) >>> with modelaverage.apply():
... for param in linear.parameters():
for param in linear.parameters(): ... print(param)
print(param)
>>> for param in linear.parameters():
... print(param)
""" """
if in_dynamic_mode(): if in_dynamic_mode():
for param in self._parameter_list: for param in self._parameter_list:
...@@ -472,33 +482,35 @@ class ModelAverage(Optimizer): ...@@ -472,33 +482,35 @@ class ModelAverage(Optimizer):
.. code-block:: python .. code-block:: python
import paddle >>> import paddle
inp = paddle.rand([1, 10], dtype="float32") >>> inp = paddle.rand([1, 10], dtype="float32")
linear = paddle.nn.Linear(10, 1) >>> linear = paddle.nn.Linear(10, 1)
out = linear(inp) >>> out = linear(inp)
loss = paddle.mean(out) >>> loss = paddle.mean(out)
loss.backward() >>> loss.backward()
sgd = paddle.optimizer.SGD(learning_rate=0.1,parameters=linear.parameters()) >>> sgd = paddle.optimizer.SGD(learning_rate=0.1,parameters=linear.parameters())
modelaverage = paddle.incubate.ModelAverage(0.15, >>> modelaverage = paddle.incubate.ModelAverage(
parameters=linear.parameters(), ... 0.15,
min_average_window=2, ... parameters=linear.parameters(),
max_average_window=4) ... min_average_window=2,
sgd.step() ... max_average_window=4
modelaverage.step() ... )
>>> sgd.step()
>>> modelaverage.step()
with modelaverage.apply(need_restore=False): >>> with modelaverage.apply(need_restore=False):
for param in linear.parameters(): ... for param in linear.parameters():
print(param) ... print(param)
for param in linear.parameters(): >>> for param in linear.parameters():
print(param) ... print(param)
modelaverage.restore() >>> modelaverage.restore()
for param in linear.parameters(): >>> for param in linear.parameters():
print(param) ... print(param)
""" """
if in_dynamic_mode(): if in_dynamic_mode():
for param in self._parameter_list: for param in self._parameter_list:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册