Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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 无法转换类型为<;的对象;类别';werkzeug.datastructures.File.Storage>;到张量_Python_Tensorflow_Machine Learning_Tensorflow Serving_Werkzeug - Fatal编程技术网

Python 无法转换类型为<;的对象;类别';werkzeug.datastructures.File.Storage>;到张量

Python 无法转换类型为<;的对象;类别';werkzeug.datastructures.File.Storage>;到张量,python,tensorflow,machine-learning,tensorflow-serving,werkzeug,Python,Tensorflow,Machine Learning,Tensorflow Serving,Werkzeug,我正在编写一个使用flask框架的客户端python文件,并在docker机器中运行它。因此,这将获取一个输入文件并生成其输出。 但它抛出了一个无法转换为张量的错误 tf.app.flags.DEFINE_string('server', 'localhost:9000', 'PredictionService host:port') FLAGS = tf.app.flags.FLAGS app = Flask(__name__) class mainSessRunning():

我正在编写一个使用flask框架的客户端python文件,并在docker机器中运行它。因此,这将获取一个输入文件并生成其输出。 但它抛出了一个无法转换为张量的错误

tf.app.flags.DEFINE_string('server', 'localhost:9000', 'PredictionService host:port')
FLAGS = tf.app.flags.FLAGS

app = Flask(__name__)

class mainSessRunning():

    def __init__(self):
        host, port = FLAGS.server.split(':')
        channel = implementations.insecure_channel(host, int(port))
        self.stub = prediction_service_pb2.beta_create_PredictionService_stub(channel)

        self.request = predict_pb2.PredictRequest()
        self.request.model_spec.name = 'modelX'
        self.request.model_spec.signature_name = 'prediction'

    def inference(self, val_x):
        data = val_x
        self.request.inputs['input'].CopyFrom(tf.contrib.util.make_tensor_proto(data))
        result = self.stub.Predict(self.request, 5.0)
        return result

run = mainSessRunning()


# Define a route for the default URL, which loads the form
@app.route('/pred', methods=['POST'])
def pred():
    request_data = request.files['file']
    result = run.inference(request_data)
    rs = json_format.MessageToJson(result)
    return jsonify({'result':rs})
错误显示:

TypeError:转换类型为的对象失败 (类'werkzeug.datastructures.File.Storage')到张量。内容: (文件存储:u'File.txt'('text/plain'))。考虑铸造元素 到受支持的类型

这一行产生错误:

self.request.inputs['input'].CopyFrom(tf.contrib.util.make\u tensor\u proto(data))


数据
不是tensorflow知道如何将其转化为tensorproto的东西。确保它是numpy数组或tensorflow可以使用的其他东西我知道我必须转换为numpy数组。但是如何在不打开文本文件的情况下将其转换为numpy数组呢?您可以看到,这是一个简单的程序来读取文本文件并显示内容。因此,我不想在将文件提供给模型本身之前打开并读取该文件(转换为numpy数组)。您需要打开该文件,或者您可以通过创建tf.Dataset让tensorflow为您打开它