通常它们对我来说都可以,而且我很少遇到它们不同的情况。
今天,当我尝试加载自定义的定义模块时:
>>> import tensorflow as tf
>>> encoding = tf.load_op_library('./ops/encoding.so')
>>> dir(encoding)
['LIB_HANDLE', 'OP_LIST', '_AggregateGradOutput', '_InitOpDefLibrary', '_ScaleL2GradOutput', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '_aggregate_grad_outputs', '_collections', '_common_shapes', '_context', '_core', '_dtypes', '_errors', '_execute', '_op_def_lib', '_op_def_library', '_op_def_pb2', '_op_def_registry', '_ops', '_pywrap_tensorflow', '_scale_l2_grad_outputs', '_six', '_tensor_shape', 'aggregate', 'aggregate_eager_fallback', 'aggregate_grad', 'aggregate_grad_eager_fallback', 'scale_l2', 'scale_l2_eager_fallback', 'scale_l2_grad', 'scale_l2_grad_eager_fallback', 'tf_export']
他们给出不同的结果。
>>> encoding = tf.load_op_library('ops/encoding.so')
>>> dir(encoding)
['LIB_HANDLE', 'OP_LIST', '_InitOpDefLibrary', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '_collections', '_common_shapes', '_context', '_core', '_dtypes', '_errors', '_execute', '_op_def_lib', '_op_def_library', '_op_def_pb2', '_op_def_registry', '_ops', '_pywrap_tensorflow', '_six', '_tensor_shape', 'tf_export']
tf.load_op_library
:
Args:
library_filename: Path to the plugin. Relative or absolute filesystem path to a dynamic library file.
Returns:
A python module containing the Python wrappers for Ops defined in the plugin.
由于很难使用关键字./
和python
来搜索相关问题,所以我想知道您是否可以给我一些建议。
谢谢!
答案 0 :(得分:1)
tf.load_op_library
calls the C function TF_LoadLibrary
。根据{{3}}:
加载由library_filename指定的库,并注册该库中存在的操作和内核。
将“ library_filename”传递给特定于平台的机制,以动态加载库。确定库的确切位置的规则是特定于平台的,此处未记录。
成功后,将OK置于状态并返回新创建的库句柄。调用者拥有库句柄。
失败时,将错误状态置于状态并返回NULL。
我认为您平台的“用于动态加载库的特定于平台的机制”可能不会检查当前目录,因此您必须在文件名前面指定./
才能显式使用当前目录。