提交 f1d0af9d 编写于 作者: W wuzewu

support create module without processor

上级 de95bb4f
...@@ -76,6 +76,8 @@ class RunCommand(BaseCommand): ...@@ -76,6 +76,8 @@ class RunCommand(BaseCommand):
if not self.args.signature: if not self.args.signature:
self.args.signature = module.default_signature().name self.args.signature = module.default_signature().name
# module processor check
module.check_processor()
# data_format check # data_format check
expect_data_format = module.processor.data_format(self.args.signature) expect_data_format = module.processor.data_format(self.args.signature)
input_data_format = yaml_config['input_data'] input_data_format = yaml_config['input_data']
......
...@@ -26,6 +26,7 @@ from paddle_hub import version ...@@ -26,6 +26,7 @@ from paddle_hub import version
from paddle_hub.module.base_processor import BaseProcessor from paddle_hub.module.base_processor import BaseProcessor
from shutil import copyfile from shutil import copyfile
import os import os
import sys
import functools import functools
import paddle import paddle
import paddle.fluid as fluid import paddle.fluid as fluid
...@@ -35,7 +36,7 @@ __all__ = ['Module', 'create_module'] ...@@ -35,7 +36,7 @@ __all__ = ['Module', 'create_module']
def create_module(sign_arr, def create_module(sign_arr,
module_dir, module_dir,
processor, processor=None,
assets=None, assets=None,
module_info=None, module_info=None,
exe=None): exe=None):
...@@ -100,10 +101,10 @@ class Module: ...@@ -100,10 +101,10 @@ class Module:
elif module_dir: elif module_dir:
self._init_with_module_file(module_dir=module_dir) self._init_with_module_file(module_dir=module_dir)
elif signatures: elif signatures:
assert processor, "lack of module processor" if processor:
assert issubclass( assert issubclass(
processor, BaseProcessor processor, BaseProcessor
), "processor should be sub class of hub.BaseProcessor" ), "processor should be sub class of hub.BaseProcessor"
if assets: if assets:
self.assets = utils.to_list(assets) self.assets = utils.to_list(assets)
for asset in assets: for asset in assets:
...@@ -132,11 +133,13 @@ class Module: ...@@ -132,11 +133,13 @@ class Module:
file.write(pycode) file.write(pycode)
def _load_processor(self): def _load_processor(self):
import sys
processor_path = self.helper.processor_path() processor_path = self.helper.processor_path()
sys.path.append(processor_path) if os.path.exists(processor_path):
processor_name = self.helper.processor_name() sys.path.append(processor_path)
self.processor = __import__(processor_name).Processor(module=self) processor_name = self.helper.processor_name()
self.processor = __import__(processor_name).Processor(module=self)
else:
self.processor = None
def _dump_assets(self): def _dump_assets(self):
utils.mkdir(self.helper.assets_path()) utils.mkdir(self.helper.assets_path())
...@@ -332,6 +335,8 @@ class Module: ...@@ -332,6 +335,8 @@ class Module:
module_info.map.data['summary']) module_info.map.data['summary'])
def __call__(self, sign_name, data, **kwargs): def __call__(self, sign_name, data, **kwargs):
self.check_processor()
def _get_reader_and_feeder(data_format, data, place): def _get_reader_and_feeder(data_format, data, place):
def _reader(): def _reader():
nonlocal process_data nonlocal process_data
...@@ -374,6 +379,9 @@ class Module: ...@@ -374,6 +379,9 @@ class Module:
return result return result
def check_processor(self):
assert self.processor, "this module couldn't be call"
def context(self, def context(self,
sign_name, sign_name,
for_test=False, for_test=False,
...@@ -459,9 +467,6 @@ class Module: ...@@ -459,9 +467,6 @@ class Module:
logger.info("proto version is %s" % version.proto_version) logger.info("proto version is %s" % version.proto_version)
logger.info("paddle version is %s" % paddle.__version__) logger.info("paddle version is %s" % paddle.__version__)
for asset in self.assets:
pass
feeded_var_names = [ feeded_var_names = [
input.name for key, sign in self.signatures.items() input.name for key, sign in self.signatures.items()
for input in sign.inputs for input in sign.inputs
...@@ -520,7 +525,8 @@ class Module: ...@@ -520,7 +525,8 @@ class Module:
f.write(module_pb) f.write(module_pb)
# create processor file # create processor file
self._dump_processor() if self.processor:
self._dump_processor()
# create assets # create assets
self._dump_assets() self._dump_assets()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册