最近工作需要,使用tensorflow(r1.3)中contrib的某个库,根据tf官网的说法,go版本是只能调用py版本训练好的模型,而个人对go比较熟且线上环境用go作服务,所以想用go调python训练好的模型。
使用python import tf和tf.contrib相关库,使用tf.saved_model.builder.SavedModelBuilder保存模型,但使用go使用LoadSavedModel的时候,会报形如Not found Op type not registered 'CountExtremelyRandomStats'
的错误,具体的话是说在libtensorflow里面找不到CountExtremelyRandomStats
这个op。
尝试了很多方案,略过。最终发现问题是TensorFlow在BUILD target:libtensorflow.so的时候,根本没有把contrib相关内容打进去。修改根BUILD文件的libtensorflow.so部分如下:
cc_binary(
name = "libtensorflow.so",
linkopts = select({
"//tensorflow:darwin": [
"-Wl,-exported_symbols_list", # This