diff --git a/fastNLP/core/dataset.py b/fastNLP/core/dataset.py index ee0e5590..e2a990ca 100644 --- a/fastNLP/core/dataset.py +++ b/fastNLP/core/dataset.py @@ -1,4 +1,5 @@ import numpy as np +from copy import copy from fastNLP.core.fieldarray import FieldArray from fastNLP.core.instance import Instance @@ -37,7 +38,7 @@ class DataSet(object): self.idx += 1 if self.idx >= len(self.dataset): raise StopIteration - return self + return copy(self) def add_field(self, field_name, field): """Add a new field to the instance. @@ -270,6 +271,12 @@ class DataSet(object): else: return results + def drop(self, func): + results = [ins for ins in self if not func(ins)] + for name, old_field in self.field_arrays.items(): + self.field_arrays[name].content = [ins[name] for ins in results] + # print(self.field_arrays[name]) + def split(self, dev_ratio): """Split the dataset into training and development(validation) set. diff --git a/fastNLP/core/trainer.py b/fastNLP/core/trainer.py index 10d8cfab..baff2c53 100644 --- a/fastNLP/core/trainer.py +++ b/fastNLP/core/trainer.py @@ -27,7 +27,7 @@ class Trainer(object): """ def __init__(self, train_data, model, n_epochs=3, batch_size=32, print_every=-1, validate_every=-1, dev_data=None, use_cuda=False, save_path="./save", - optimizer=Optimizer("Adam", lr=0.001, weight_decay=0), need_check_code=True, + optimizer=Optimizer("Adam", lr=0.01, weight_decay=0), need_check_code=True, **kwargs): super(Trainer, self).__init__() @@ -84,7 +84,14 @@ class Trainer(object): start = time.time() self.start_time = str(datetime.now().strftime('%Y-%m-%d-%H-%M-%S')) print("training epochs started " + self.start_time) - if self.save_path is not None: + if self.save_path is None: + class psudoSW: + def __getattr__(self, item): + def pass_func(*args, **kwargs): + pass + return pass_func + self._summary_writer = psudoSW() + else: path = os.path.join(self.save_path, 'tensorboard_logs_{}'.format(self.start_time)) self._summary_writer = SummaryWriter(path) @@ -98,7 +105,6 @@ class Trainer(object): # validate_every override validation at end of epochs if self.dev_data and self.validate_every <= 0: self.do_validation() - self.save_model(self.model, 'training_model_' + self.start_time) epoch += 1 finally: self._summary_writer.close() diff --git a/fastNLP/modules/encoder/conv_maxpool.py b/fastNLP/modules/encoder/conv_maxpool.py index 7aa897cf..42994bcd 100644 --- a/fastNLP/modules/encoder/conv_maxpool.py +++ b/fastNLP/modules/encoder/conv_maxpool.py @@ -34,8 +34,6 @@ class ConvMaxpool(nn.Module): bias=bias) for oc, ks in zip(out_channels, kernel_sizes)]) - for conv in self.convs: - xavier_uniform_(conv.weight) # weight initialization else: raise Exception( 'Incorrect kernel sizes: should be list, tuple or int')