- Scores, class_ids=tf.nn.top_k(y,NUM_CLASS_TO_RETURN)
- #为了简便起见,我们将仅返回类别ID,应当别的对它们定名
- classes =
- tf.contrib.lookup.index_to_string(tf.to_int64(class_ids)
- mapping=tf.constant([str(i) for i in range(1001)]))
- model_exporter = exporter.Exporter(saver)
- signature = exporter.classification_signature(
- input_tensor=external_x, classes_tensor=classes,
- scores_tensor=scores)
- model_exporter.init(default_graph_signature=signature,
- init_op=tf.initialize_all_tables())
- model_exporter.export(sys.argv[1]+ "/export"
- tf.constant(time.time()), sess)
因为对Exporter类代码中主动生成的代码存在依附,所以须要在Docker容器内部应用bazel运行我们的导出器。
为此,须要将代码保存到之前启动的bazel工作区内的exporter.py中。此外,还须要一个带有构建规矩的BUILD文件,类似于下列内容:
- # BUILD文件
- py_binary(
- name = "export",
- srcs =[
- “export.py”,
- ],
- deps = [
- “//tensorflow_serving/session_bundle:exporter”,
- “@org_tensorflow//tensorflow:tensorflow_py”,
- #仅在导出 inception模型时需
- “@inception_model//inception”,
- ],
- )
然后,可在容器中经由过程下列敕令运行导出器:
- # 在Docker容器中
- cd /mnt/home/serving_example
它将根据可大年夜/tmp/inception-v3中提取到的检查点文件在/tmp/inception-v3/{current_timestamp}/ 中创建导出器。
定义办事寡居口
TensorFlow办事应用gRPC协定(gRPC是一种基于HTTP/2的二进制协定)。它支撑用于创建办事器和主动生成客户端存根的各类说话。因为TensorFlow是基于C++的,所以须要在个中定义本身的办事器。荣幸的是,办事器端代码比较简短。
为了应用gRPS,必须在一个protocol buffer中定义办事契约,它是用于gRPC的IDL(接口定义说话)和二进制编码。下面来定义我们的办事。前面的导出一节曾提到,我们欲望办事有一个可以或许接收一个JPEG编码的待分类的图像字符串作为输入,并可返回一个根据分数分列的由揣摸获得的类别列表。
如许的办事应定义在一个classification_service.proto文件中,类似于:
- syntax = "proto3";
- message ClassificationRequest {
- // JPEG 编码的图像字符串
- bytes input = 1;
- };
推荐阅读
传统的存储厂商正面对着前所未竽暌剐的压力。软件定义存储与公有云存储(也是基于横向扩大的SDS技巧)相浇忧⒛解决筹划正在蚕食传统的存储市场,如Dell EMC的VNX、HPE的Smart Array、NetApp的E系列和FAS。我同样认为>>>详细阅读
本文标题:面向机器智能的TensorFlow实践:产品环境中模型的部署
地址:http://www.17bianji.com/lsqh/34985.html
1/2 1