如何将极简Tensorflow模型导出到图形以与Intel Neural Computing Stick(movidius)一起使用

时间:2018-11-04 16:57:41

标签: python python-3.x tensorflow artificial-intelligence

我在Tensorflow上还很陌生,我想导出一个极简主义模型以用于Intel的NCS。但是我无法开始。

我的目标是了解管道的工作原理,因此,我第一步是构建一个简单的图,该图只添加一个与输入大小相同的常数张量。 这就是我尝试过的:

import tensorflow as tf

tf.reset_default_graph()
X = tf.placeholder(dtype=tf.float32, shape=(2,2), name = "custom_in")
Y = tf.constant([[1,1],[1,1]], dtype=tf.float32)
Z = tf.add_n([X, Y], name="custom_out")
saver = tf.train.Saver()

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    sess.run(tf.local_variables_initializer())
    saver.save(sess, 'tmp/model-inference')

我也尝试过这个:

import tensorflow as tf

tf.reset_default_graph()
X = tf.placeholder(dtype=tf.float32, shape=(2,2), name = "custom_in")
Y = tf.constant([[1,1],[1,1]], dtype=tf.float32)
Z = tf.add_n([X, Y], name="custom_out")
init_op = tf.global_variables_initializer()

with tf.Session() as sess:
  sess.run(init_op)
  tf.saved_model.simple_save(sess,
            "./test",
            inputs={"custom_in": X},
            outputs={"custom_out": Z})

...但是我收到这些警告:

  

警告:tensorflow:来自   /usr/lib/python3.7/site-packages/tensorflow/python/saved_model/simple_save.py:85:   调用SavedModelBuilder.add_meta_graph_and_variables(从   tensorflow.python.saved_model.builder_impl)与legacy_init_op是   已过时,将在以后的版本中删除。说明   更新:将您的op传递给等效参数main_op。   INFO:tensorflow:将资产添加到图形。 INFO:tensorflow:没有资产   写。 INFO:tensorflow:SavedModel写入:./test/saved_model.pb

如果我尝试使用mvNCCompile进行编译,则会收到此错误:

2018-11-04 15:24:39 $>mvNCCompile saved_model.pb -s 12 -in=custom_in -on=custom_out -is 2 2 -o Test.graph   
  

/usr/lib/python3.7/site-packages/networkx/classes/graph.py:23:   弃用警告:使用或从“集合”导入ABC   而不是from'collections.abc',而在3.8中   停止从集合导入映射工作   /usr/lib/python3.7/site-packages/networkx/classes/reportviews.py:95:   弃用警告:使用或从“集合”导入ABC   而不是from'collections.abc',而在3.8中   停止从集合导入映射,设置,可迭代的工作   /usr/lib/python3.7/site-packages/skimage/init.py:60:   弃用警告:不建议使用imp模块,而建议使用   importlib;有关其他用途,请参阅模块的文档
  进口商品   /usr/lib/python3.7/site-packages/google/protobuf/internal/containers.py:182:   弃用警告:使用或从“集合”导入ABC   而不是from'collections.abc',而在3.8中   停止工作MutableMapping = collections.MutableMapping   /usr/lib/python3.7/site-packages/google/protobuf/internal/containers.py:340:   弃用警告:使用或从“集合”导入ABC   而不是from'collections.abc',而在3.8中   停止工作collections.MutableSequence.register(BaseContainer)   /usr/bin/ncsdk/Controllers/Parsers/TensorFlowParser/Convolution.py:44:   语法警告:断言始终为真,也许删除括号?
  assert(False,“卷积不支持层类型:” + obj.type)   /usr/bin/ncsdk/Controllers/Parsers/Phases.py:501:弃用警告:   无效的转义序列\“”“   /usr/bin/ncsdk/Controllers/Parsers/Phases.py:747:弃用警告:   无效的转义序列\“”“ mvNCCompile v02.00,版权所有@ Intel   公司2017

     

/usr/bin/ncsdk/Controllers/TensorFlowParser.py:173:   DeprecationWarning:无效的转义序列\ d追溯(最新   最后调用):文件“ / usr / bin / mvNCCompile”,行169,在       create_graph(args.network,args.image,args.inputnode,args.outputnode,args.outfile,args.nshaves,args.inputsize,   args.weights,args.explicit_concat,args.ma2480,args.scheduler,   args.new_parser,args)文件“ / usr / bin / mvNCCompile”,第148行,在   create_graph       load_ret = load_network(args,parser,myriad_config)文件“ /usr/bin/ncsdk/Controllers/Scheduler.py”,第100行,在load_network中       parse_ret = parse_tensor(arguments,myriad_conf)文件“ /usr/bin/ncsdk/Controllers/TensorFlowParser.py”,第211行,在   parse_tensor       graph_def.ParseFromString(f.read())文件“ /usr/lib/python3.7/site-packages/google/protobuf/message.py”,行   185,在ParseFromString中       self.MergeFromString(序列化)文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/python_message.py”,   第1083行,在MergeFromString中       如果self._InternalParse(serialized,0,length)!=长度:文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/python_message.py”,   InternalParse中的第1120行       pos = field_decoder(buffer,new_pos,end,self,field_dict)文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/decoder.py”,   第633行,在DecodeField中       如果value._InternalParse(buffer,pos,new_pos)!= new_pos:文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/python_message.py”,   InternalParse中的第1120行       pos = field_decoder(buffer,new_pos,end,self,field_dict)文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/decoder.py”,   DecodeRepeatedField中的第612行       如果value.add()._ InternalParse(buffer,pos,new_pos)!= new_pos:文件   “ /usr/lib/python3.7/site-packages/google/protobuf/internal/python_message.py”,   InternalParse中的第1120行       pos = field_decoder(buffer,new_pos,end,self,field_dict)文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/decoder.py”,   DecodeMap中的第743行       如果submsg._InternalParse(buffer,pos,new_pos)!= new_pos:文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/python_message.py”,   InternalParse中的第1109行       new_pos = local_SkipField(buffer,new_pos,end,tag_bytes)文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/decoder.py”,   SkipField中的第850行       返回WIRETYPE_TO_SKIPPER [wire_type](缓冲区,位置,结尾)文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/decoder.py”,   _SkipGroup中的第799行       new_pos = SkipField(buffer,pos,end,tag_bytes)文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/decoder.py”,   SkipField中的第850行       返回WIRETYPE_TO_SKIPPER [wire_type](缓冲区,位置,结尾)文件“ /usr/lib/python3.7/site-packages/google/protobuf/internal/decoder.py”,   _SkipFixed32中的第814行       引发_DecodeError('截断的消息。')google.protobuf.message.DecodeError:截断的消息。

正确的方法是什么? 使用simple_saveSaver对象有什么区别?

0 个答案:

没有答案