提交 455cf5d3 编写于 作者: C chenguowei01

update to beta version

上级 c6064306
...@@ -15,11 +15,9 @@ ...@@ -15,11 +15,9 @@
import os import os
import paddle import paddle
import paddle.fluid as fluid from paddle.distributed import ParallelEnv
from paddle.fluid.dygraph.parallel import ParallelEnv
from paddle.fluid.io import DataLoader
# from paddle.incubate.hapi.distributed import DistributedBatchSampler
from paddle.io import DistributedBatchSampler from paddle.io import DistributedBatchSampler
from paddle.io import DataLoader
import paddle.nn.functional as F import paddle.nn.functional as F
import paddleseg.utils.logger as logger import paddleseg.utils.logger as logger
...@@ -79,8 +77,8 @@ def train(model, ...@@ -79,8 +77,8 @@ def train(model,
os.makedirs(save_dir) os.makedirs(save_dir)
if nranks > 1: if nranks > 1:
strategy = fluid.dygraph.prepare_context() strategy = paddle.distributed.prepare_context()
ddp_model = fluid.dygraph.DataParallel(model, strategy) ddp_model = paddle.DataParallel(model, strategy)
batch_sampler = DistributedBatchSampler( batch_sampler = DistributedBatchSampler(
train_dataset, batch_size=batch_size, shuffle=True, drop_last=True) train_dataset, batch_size=batch_size, shuffle=True, drop_last=True)
...@@ -130,7 +128,7 @@ def train(model, ...@@ -130,7 +128,7 @@ def train(model,
optimizer.minimize(loss) optimizer.minimize(loss)
model.clear_gradients() model.clear_gradients()
avg_loss += loss.numpy()[0] avg_loss += loss.numpy()[0]
lr = optimizer.current_step_lr() lr = optimizer.get_lr()
train_batch_cost += timer.elapsed_time() train_batch_cost += timer.elapsed_time()
if (iter) % log_iters == 0 and ParallelEnv().local_rank == 0: if (iter) % log_iters == 0 and ParallelEnv().local_rank == 0:
avg_loss /= log_iters avg_loss /= log_iters
...@@ -160,9 +158,9 @@ def train(model, ...@@ -160,9 +158,9 @@ def train(model,
"iter_{}".format(iter)) "iter_{}".format(iter))
if not os.path.isdir(current_save_dir): if not os.path.isdir(current_save_dir):
os.makedirs(current_save_dir) os.makedirs(current_save_dir)
fluid.save_dygraph(model.state_dict(), paddle.save(model.state_dict(),
os.path.join(current_save_dir, 'model')) os.path.join(current_save_dir, 'model'))
fluid.save_dygraph(optimizer.state_dict(), paddle.save(optimizer.state_dict(),
os.path.join(current_save_dir, 'model')) os.path.join(current_save_dir, 'model'))
if eval_dataset is not None: if eval_dataset is not None:
...@@ -177,8 +175,7 @@ def train(model, ...@@ -177,8 +175,7 @@ def train(model,
best_mean_iou = mean_iou best_mean_iou = mean_iou
best_model_iter = iter best_model_iter = iter
best_model_dir = os.path.join(save_dir, "best_model") best_model_dir = os.path.join(save_dir, "best_model")
fluid.save_dygraph( paddle.save(model.state_dict(),
model.state_dict(),
os.path.join(best_model_dir, 'model')) os.path.join(best_model_dir, 'model'))
logger.info( logger.info(
'Current evaluated best model in eval_dataset is iter_{}, miou={:4f}' 'Current evaluated best model in eval_dataset is iter_{}, miou={:4f}'
......
...@@ -15,11 +15,14 @@ ...@@ -15,11 +15,14 @@
import codecs import codecs
import os import os
from typing import Any, Callable from typing import Any, Callable
import pprint
import yaml import yaml
import paddle.fluid as fluid import paddle
import paddle.nn.functional as F
import paddleseg.cvlibs.manager as manager import paddleseg.cvlibs.manager as manager
from paddleseg.utils import logger
class Config(object): class Config(object):
...@@ -36,7 +39,7 @@ class Config(object): ...@@ -36,7 +39,7 @@ class Config(object):
if path.endswith('yml') or path.endswith('yaml'): if path.endswith('yml') or path.endswith('yaml'):
dic = self._parse_from_yaml(path) dic = self._parse_from_yaml(path)
print(dic) logger.info('\n' + pprint.pformat(dic))
self._build(dic) self._build(dic)
else: else:
raise RuntimeError('Config file should in yaml format!') raise RuntimeError('Config file should in yaml format!')
...@@ -127,24 +130,18 @@ class Config(object): ...@@ -127,24 +130,18 @@ class Config(object):
lr = self._learning_rate lr = self._learning_rate
args = self.decay_args args = self.decay_args
args.setdefault('decay_steps', self.iters) args.setdefault('decay_steps', self.iters)
return fluid.layers.polynomial_decay(lr, **args) return paddle.optimizer.PolynomialLR(lr, **args)
else: else:
raise RuntimeError('Only poly decay support.') raise RuntimeError('Only poly decay support.')
@property @property
def optimizer(self) -> fluid.optimizer.Optimizer: def optimizer(self) -> paddle.optimizer.Optimizer:
if self.optimizer_type == 'sgd': if self.optimizer_type == 'sgd':
lr = self.learning_rate lr = self.learning_rate
args = self.optimizer_args args = self.optimizer_args
args.setdefault('momentum', 0.9) args.setdefault('momentum', 0.9)
weight_decay = args.get('weight_decay', None) return paddle.optimizer.Momentum(
if weight_decay is not None: lr, parameters=self.model.parameters(), **args)
args.pop('weight_decay')
regularization = fluid.regularizer.L2DecayRegularizer(
regularization_coeff=weight_decay)
args.setdefault('regularization', None)
return fluid.optimizer.Momentum(
lr, parameter_list=self.model.parameters(), **args)
else: else:
raise RuntimeError('Only sgd optimizer support.') raise RuntimeError('Only sgd optimizer support.')
......
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
import argparse import argparse
import paddle.fluid as fluid import paddle
from paddle.fluid.dygraph.parallel import ParallelEnv from paddle.distributed import ParallelEnv
import paddleseg import paddleseg
from paddleseg.cvlibs import manager from paddleseg.cvlibs import manager
...@@ -91,11 +91,11 @@ def main(args): ...@@ -91,11 +91,11 @@ def main(args):
['-' * 48]) ['-' * 48])
logger.info(info) logger.info(info)
places = fluid.CUDAPlace(ParallelEnv().dev_id) \ places = paddle.CUDAPlace(ParallelEnv().dev_id) \
if env_info['Paddle compiled with cuda'] and env_info['GPUs used'] \ if env_info['Paddle compiled with cuda'] and env_info['GPUs used'] \
else fluid.CPUPlace() else paddle.CPUPlace()
with fluid.dygraph.guard(places): paddle.disable_static(places)
if not args.cfg: if not args.cfg:
raise RuntimeError('No configuration file specified.') raise RuntimeError('No configuration file specified.')
...@@ -103,8 +103,7 @@ def main(args): ...@@ -103,8 +103,7 @@ def main(args):
train_dataset = cfg.train_dataset train_dataset = cfg.train_dataset
if not train_dataset: if not train_dataset:
raise RuntimeError( raise RuntimeError(
'The training dataset is not specified in the configuration file.' 'The training dataset is not specified in the configuration file.')
)
val_dataset = cfg.val_dataset if args.do_eval else None val_dataset = cfg.val_dataset if args.do_eval else None
......
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
import argparse import argparse
import paddle.fluid as fluid import paddle
from paddle.fluid.dygraph.parallel import ParallelEnv from paddle.distributed import ParallelEnv
import paddleseg import paddleseg
from paddleseg.cvlibs import manager from paddleseg.cvlibs import manager
...@@ -41,11 +41,11 @@ def parse_args(): ...@@ -41,11 +41,11 @@ def parse_args():
def main(args): def main(args):
env_info = get_environ_info() env_info = get_environ_info()
places = fluid.CUDAPlace(ParallelEnv().dev_id) \ places = paddle.CUDAPlace(ParallelEnv().dev_id) \
if env_info['Paddle compiled with cuda'] and env_info['GPUs used'] \ if env_info['Paddle compiled with cuda'] and env_info['GPUs used'] \
else fluid.CPUPlace() else paddle.CPUPlace()
with fluid.dygraph.guard(places): paddle.disable_static(places)
if not args.cfg: if not args.cfg:
raise RuntimeError('No configuration file specified.') raise RuntimeError('No configuration file specified.')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册