У меня есть модель Tensorflow 2, которую я обучил с помощью активации GeLU из аддонов тензорного потока , которую я хочу экспортировать для использования с обслуживанием тензорного потока.
После того, как я экспортирую модель с tf.saved_model.save(...)
, я использую saved_model_cli
в качестве проверки работоспособности, чтобы убедиться, что конечные точки были созданы правильно.
Запуск saved_model_cli show --dir ./export_dir/ --all
приводит к следующей ошибке:
Traceback (most recent call last):
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 3708, in _get_op_def
return self._op_def_cache[type]
KeyError: 'Addons>Gelu'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/miniconda3/envs/my_env/bin/saved_model_cli", line 8, in <module>
sys.exit(main())
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/tools/saved_model_cli.py", line 990, in main
args.func(args)
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/tools/saved_model_cli.py", line 691, in show
_show_all(args.dir)
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/tools/saved_model_cli.py", line 283, in _show_all
_show_defined_functions(saved_model_dir)
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/tools/saved_model_cli.py", line 176, in _show_defined_functions
trackable_object = load.load(saved_model_dir)
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py", line 528, in load
return load_internal(export_dir, tags)
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py", line 552, in load_internal
export_dir)
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py", line 114, in __init__
meta_graph.graph_def.library))
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/saved_model/function_deserialization.py", line 312, in load_function_def_library
func_graph = function_def_lib.function_def_to_graph(copy)
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/framework/function_def_to_graph.py", line 59, in function_def_to_graph
fdef, input_shapes)
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/framework/function_def_to_graph.py", line 218, in function_def_to_graph_def
op_def = default_graph._get_op_def(node_def.op) # pylint: disable=protected-access
File "/home/miniconda3/envs/my_env/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 3712, in _get_op_def
c_api.TF_GraphGetOpDef(self._c_graph, compat.as_bytes(type), buf)
tensorflow.python.framework.errors_impl.NotFoundError: Op type not registered 'Addons>Gelu' in binary running on Y01521. Make sure the Op and Kernel are registered in the binary running in this process. Note that if you are loading a saved graph which used ops from tf.contrib, accessing (e.g.) `tf.contrib.resampler` should be done before importing the graph, as contrib ops are lazily registered when the module is first accessed.
Я предполагаю, что это предотвратит загрузку модели и в TF Serving.
Есть ли способ экспортировать модель таким образом, что мне не нужно регистрироваться тип оп после факта (как следует из сообщения об ошибке)? Если нет, то как мне go сделать это?