提交 8e9ac0cc 编写于 作者: Z zhanghaichao

adding input type check for data provider

上级 96190154
...@@ -202,6 +202,24 @@ class CheckWrapper(object): ...@@ -202,6 +202,24 @@ class CheckWrapper(object):
for each in item: for each in item:
callback(each) callback(each)
class CheckInputTypeWrapper(object):
def __init__(self, generator, input_types, logger):
self.generator = generator
self.input_types = input_types
self.logger = logger
def __call__(self, obj, filename):
for items in self.generator(obj, filename):
try:
# dict type is required for input_types when item is dict type
assert (isinstance(items, dict) and \
not isinstance(self.input_types, dict))==False
yield items
except AssertionError as e:
self.logger.error(
"%s type is required for input type but got %s" %
(repr(type(items)), repr(type(self.input_types))))
raise
def provider(input_types=None, def provider(input_types=None,
should_shuffle=None, should_shuffle=None,
...@@ -355,6 +373,9 @@ def provider(input_types=None, ...@@ -355,6 +373,9 @@ def provider(input_types=None,
if use_dynamic_order: if use_dynamic_order:
self.generator = InputOrderWrapper(self.generator, self.generator = InputOrderWrapper(self.generator,
self.input_order) self.input_order)
else:
self.generator = CheckInputTypeWrapper(self.generator, self.slots,
self.logger)
if self.check: if self.check:
self.generator = CheckWrapper(self.generator, self.slots, self.generator = CheckWrapper(self.generator, self.slots,
check_fail_continue, check_fail_continue,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册