Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为tensorflow分类器服务_Python_Machine Learning_Tensorflow_Tensorflow Serving - Fatal编程技术网

Python 为tensorflow分类器服务

Python 为tensorflow分类器服务,python,machine-learning,tensorflow,tensorflow-serving,Python,Machine Learning,Tensorflow,Tensorflow Serving,我一直在与tensorflow的builder进行斗争,以便能够为我的模型提供服务,我正在尝试在为模型提供服务后将数据提供给我的分类器 我的问题是,我将如何向模型提供输入? 我看过谷歌的《盗梦空间》教程使用的代码 并试图实施 classify_inputs_tensor_info = utils.build_tensor_info( serialized_tf_example) classes_output_tensor_info = utils.build_te

我一直在与tensorflow的builder进行斗争,以便能够为我的模型提供服务,我正在尝试在为模型提供服务后将数据提供给我的分类器

我的问题是,我将如何向模型提供输入? 我看过谷歌的《盗梦空间》教程使用的代码

并试图实施

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解析序列化的_tf_示例,并将其分配给模型中使用的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()时,它要求我向序列化的\u tf\u示例提供一个值

InvalidArgumentError(回溯见上文):您必须输入一个值 对于带有数据类型字符串[[节点]的占位符张量“tf_示例”: tf_示例=占位符dtype=DT_字符串,形状=[], _device=“/job:localhost/replica:0/task:0/cpu:0”]]

当我使用prediction=format(list(classifier.predict_classes(np.array(x),as_iterable=True))时 我明白了

InvalidArgumentError(回溯请参见上文):中的形状 形状和切片规格[1200]与存储在中的形状不匹配 检查点:[193200][[节点:保存/恢复2_1= RestoreV2[dtypes=[DT_FLOAT], _device=“/job:localhost/replica:0/task:0/cpu:0”](_recv_save/Const_0,save/RestoreV2_1/tensor_name,save/RestoreV2_1/shape_and_slice)]]


您可以/应该使用classifier.predict而不使用tf.Example.Your input\u fn in train and eval返回x,y。您可以编写类似于其他输入函数的predict\u input\u fn

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

请注意,如果您使用
list
函数得到所有预测,则应以异常结束。您可以检查
tf.estimator.inputs.numpy\u input\u fn

嘿@user1454804我已尝试实现输入函数,但我得到
TypeError:x必须是dict;得到张量