Closed LouChao98 closed 3 years ago
Describe the bug 此issue包含两个问题
DataSet.add_field(..., padder=None)
padder
DataSet.add_field
FieldArray.__init__
padder=None
AutoPadder()
DataSet._add_apply_field
new_field_name in self.field_arrays
AutoPadder
To Reproduce
ds = DataSet() ds.add_field('idx', [1, 2, 3], padder=None) print(ds['idx'].padder) # should be None, but AutoPadder
ds = DataSet() ds.add_field('idx', [1, 2, 3]) ds['idx'].set_padder(None) # workaround of problem 1 print(ds['idx'].padder) ds.apply_field(lambda x: x, 'idx', 'idx') print(ds['idx'].padder) # should be None, but AutoPadder
Desktop (please complete the following information):
感谢您的细心。我们已经在dev分支的7b4e099版本修复了这个bug。但由于最初设计的原因,当前状态下如果您不希望fastNLP对某个field进行pad,直接通过set_ignore_type()函数来让fastNLP不要去check这个field的类型并不对它进行pad。
Describe the bug 此issue包含两个问题
DataSet.add_field(..., padder=None)
应该禁用padder
。 但是DataSet.add_field
内部调用FieldArray.__init__
时,padder=None
会导致自动创建一个AutoPadder()
。和文档描述不一致。DataSet._add_apply_field
时,如果new_field_name in self.field_arrays
, 即inplace操作,应当保留padder
属性不变,但实际padder
被重置为AutoPadder
。To Reproduce
Desktop (please complete the following information):