当前位置: 首页 > 知识库问答 >
问题:

服务于tensorflow分类器

柴宏浚
2023-03-14

我一直在与TensorFlow的构建器进行斗争,以便能够为我的html" target="_blank">模型服务,我试图在为模型服务后向我的分类器提供数据

我的问题是如何向模型提供输入?我看过Google的inception教程使用的代码

并试图实施它

classify_inputs_tensor_info = utils.build_tensor_info(
          serialized_tf_example)
      classes_output_tensor_info = utils.build_tensor_info(classes)
      scores_output_tensor_info = utils.build_tensor_info(values)

      classification_signature = signature_def_utils.build_signature_def(
          inputs={
              signature_constants.CLASSIFY_INPUTS: classify_inputs_tensor_info
          },
          outputs={
              signature_constants.CLASSIFY_OUTPUT_CLASSES:
                  classes_output_tensor_info,
              signature_constants.CLASSIFY_OUTPUT_SCORES:
                  scores_output_tensor_info
          },
          method_name=signature_constants.CLASSIFY_METHOD_NAME)

据我所知,输入被传递给一个名为serialized_tf_example的张量,顾名思义,该张量将输入序列化为string,但是他们使用我不理解的tf.fixedlenfeature,然后用tf.parse_example解析serialized_tf_example,并将其分配给模型中使用的x,但是我想将它解析给一个接受数组作为输入的分类器,但是不知道如何处理这个问题。

在尝试实现这个的时候,我写了这个

serialized_tf_example = tf.placeholder(tf.string, name='tf_example')
        feature_configs = { 'audio/encoded': tf.FixedLenFeature( shape=[193], dtype=tf.float32, default_value=input_x),}
        tf_example = tf.parse_example(serialized_tf_example, feature_configs)
        x = tf_example['audio/encoded']

        sess = tf.InteractiveSession()
        sess.run(tf.global_variables_initializer())

        # Define the dimensions in the feature columns
        feature_columns = [tf.contrib.layers.real_valued_column("", dimension=5)]

        classifier = tf.contrib.learn.DNNLinearCombinedClassifier(
            dnn_feature_columns=feature_columns, dnn_hidden_units=[200,300], n_classes=10,
            dnn_optimizer=tf.train.GradientDescentOptimizer(
                learning_rate=0.01
            )
        )

        #run training
        classifier.fit(input_fn=get_train_inputs, steps=100)
        #testing 
        accuracy_score = classifier.evaluate(input_fn=get_test_inputs, steps=10)["accuracy"]
        print('Test accuracy : ', format(accuracy_score))

        prediction = format(list(classifier.predict_classes(x, as_iterable=True)))

但是x是张量,所以不能被读取。当我尝试使用run或。eval()时,它要求我向serialized_tf_example提供一个值

InvalidArgumEnterRorr(参见上面的跟踪):您必须用dtype string为占位符张量'tf_example'提供一个值[[node:tf_example=placeholderdtype=dt_string,shape=[],_device=“/job:localhost/replica:0/task:0/cpu:0”]]

共有1个答案

裴俊豪
2023-03-14

您可以/应该在没有tf.example的情况下使用classifier.predict。您的input_fn在train中,eval返回x,y。可以编写类似于其他输入函数的predict_input_fn。

predictoin = next(classifier.predict_classes(input_fn=predict_input_fn))

请注意,如果使用list获得所有预测,函数应该以异常结束。您可以检查tf.estimator.inputs.numpy_input_fn

 类似资料:
  • 问题内容: 我正在尝试将此MNIST示例调整为二进制分类。 但是,改变我的时候,从到,损失函数总是返回0(和准确度1)。 我检查了两者的尺寸(馈入),并且它们都是1xN矩阵,因此问题似乎早于此。也许与矩阵乘法有关? 我实际上在一个真实的项目中也遇到了同样的问题,所以任何帮助都将不胜感激……谢谢! 问题答案: 原始的MNIST示例使用单热编码来表示数据中的标签:这意味着,如果存在类(如MNIST中的

  • 我正在尝试使用我们自己的CSV数据集运行本教程的训练模型,其中每一行由4个int值(最后一个是标签)组成,距离使用TensorFlow Serving: 我正在远处使用Docker运行TensorFlow Serving,我的开发环境是使用Python 3.6的Windows。 我使用以下代码导出模型,类似于此处给出的示例: 老实说,我不确定会有什么样的结果,但是在本指南中,half _ plus

  • 在第 11 章,我们讨论了几种可以明显加速训练的技术:更好的权重初始化,批量标准化,复杂的优化器等等。 但是,即使采用了所有这些技术,在具有单个 CPU 的单台机器上训练大型神经网络可能需要几天甚至几周的时间。 在本章中,我们将看到如何使用 TensorFlow 在多个设备(CPU 和 GPU)上分配计算并将它们并行运行(参见图 12-1)。 首先,我们会先在一台机器上的多个设备上分配计算,然后在

  • 运行命令: 日志: 2020-03-27 03:47:12.744007:I tensor flow _ serving/core/loader _ harness . cc:87]成功加载可服务版本{ name:docker _ test version:1 } e 0327 03:47:12.745641810 6 server _ chttp 2 . cc:40]{ " created ":

  • 问题内容: 尚不清楚参数服务器如何知道分布式张量流训练中的操作。 例如,在此SO问题中,以下代码用于配置参数服务器和工作程序任务: 如何指示给定的任务应该是参数服务器?参数是一种默认的任务行为吗?您还能/应该告诉参数服务任务做什么? 编辑 :这个SO问题解决了我的一些问题:“逻辑确保将Variable对象均匀分配给充当参数服务器的工作程序。” 但是参数服务器如何知道它是参数服务器?是否足够? 问题

  • C/S架构和B/S架构 C/S架构 是Client/Server这两个单词的首字母,指的是客户端,服务器。 优点: 性能较高:可以将一部分的计算工作放在客户端上,这样服务器只需要处理数据即可。 界面酷炫:客户端可以使用更多系统提供的效果,做出更为炫目的效果。 缺点: 更新软件:如果有新的功能,就要推出新的版本。 不同设备访问:如果使用其他的电脑,没有安装客户端的话就无法登陆软件。 B/S架构 是B