예제 #1
0
def run():
    client = serving_grpc_client.GRPCClient('localhost:50051')

    # 读取 PTB 数据集
    print("Loading ptb data...")
    train_data, valid_data, test_data, _ = reader.ptb_raw_data(FLAGS.data_path)

    # 这里 PTB 的测试数据集的前 10 个单词来假设收到了一个单词序列,来预测第 11 个单词。
    state = {}
    logits = None
    for i in range(10):
        inputs = {
            'input': tf.contrib.util.make_tensor_proto(test_data[i], shape=[1,1])
        }

        # 对于序列的第一个单词,采用模型初始状态。
        # 对于非第一个单词,使用模型上一时刻的状态。
        if i > 0:
            for key in state:
                inputs[key] = tf.contrib.util.make_tensor_proto(state[key])
            
        outputs = client.call_predict(inputs)

        # 模型的输出列表中,除了 logits 外,其他都是模型的状态。
        for key in outputs:
            if key == "logits":
                logits = tf.contrib.util.make_ndarray(outputs[key])
            else:
                state[key] = tf.contrib.util.make_ndarray(outputs[key])
    print('logits: {0}'.format(logits))
예제 #2
0
def run():
    client = serving_grpc_client.GRPCClient('localhost:50051')

    input_data = mnist.test.images[0]
    input_data_shape = [1, mnist.test.images[0].size]
    inputs = {
        'image':
        tf.contrib.util.make_tensor_proto(input_data, shape=input_data_shape),
    }
    outputs = client.call_predict(inputs)
    result = tf.contrib.util.make_ndarray(outputs["logits"])
    print('logits: {0}'.format(result))
예제 #3
0
def run():
    client = serving_grpc_client.GRPCClient('localhost:50051')

    feature_dict = {
        k: _float_feature(prediction_set[k].values[0])
        for k in FEATURES
    }

    example = tf.train.Example(features=tf.train.Features(
        feature=feature_dict))
    serialized = example.SerializeToString()

    inputs = {
        'inputs': tf.contrib.util.make_tensor_proto(serialized, shape=[1]),
    }
    outputs = client.call_predict(inputs)
    # print(outputs)
    result = tf.contrib.util.make_ndarray(outputs['outputs'])
    print('Outputs: {}'.format(result))
예제 #4
0
def run():
    client = serving_grpc_client.GRPCClient('localhost:50051')

    print("""
#######################################
Case1: request.output_filter 为空,计算所有所有输出。
    Request: x = 10
    Expect: 10*0.5 + 2 = 7
#######################################""")
    feature_dict = {'x': _float_feature(value=1.0)}
    example = tf.train.Example(features=tf.train.Features(
        feature=feature_dict))
    serialized = example.SerializeToString()

    inputs1 = {
        'inputs': tf.contrib.util.make_tensor_proto(serialized, shape=[1]),
    }
    outputs1 = client.call_predict(inputs1)
    print(outputs1)
    result1 = tf.contrib.util.make_ndarray(outputs1['outputs'])
    print('Response: y = {}'.format(result1))
예제 #5
0
def run():
    client = serving_grpc_client.GRPCClient('localhost:50051')

    print("""
#######################################
Case1: request.output_filter 为空,计算所有所有输出。
    Request: x = 10
    Expect: 10*0.5 + 2 = 7
#######################################""")
    inputs1 = {
        'x': tf.contrib.util.make_tensor_proto(10, shape=[]),
    }
    outputs1 = client.call_predict(inputs1)
    result1 = tf.contrib.util.make_ndarray(outputs1['y'])
    print('Response: y = {}'.format(result1))

    print("""
#######################################
Case2: request.output_filter 包含正确的输出别名 y。
    Request: x = 5
    Expect: 5*0.5 + 2 = 4.5
#######################################""")
    inputs2 = {
        'x': tf.contrib.util.make_tensor_proto(5, shape=[]),
    }
    outputs2 = client.call_predict(inputs2, output_filter=['y'])
    result2 = tf.contrib.util.make_ndarray(outputs2['y'])
    print('Response: y = {}'.format(result2))

    print("""
#######################################
Case3: request.output_filter 包含模型没有输出 y1,gRPC 服务端会抛异常。
#######################################""")
    inputs3 = {
        'x': tf.contrib.util.make_tensor_proto(20, shape=[]),
    }
    outputs3 = client.call_predict(inputs3, ['y', 'y1'])
    result3 = tf.contrib.util.make_ndarray(outputs3['y'])
    print('Response: y = {}'.format(result3))
예제 #6
0
def run():
    client = serving_grpc_client.GRPCClient('localhost:50051')

    print("""
模型计算三个线性函数:
  y1 = 0.5*x1 + 2
  y2 = 2*x1 + 3
  y3 = 4*x2 + 5
其中,包含两个输入x1和x2,三个输出y1、y2和y3。
""")

    print("""
#######################################
Case1:
输入:request.inputs={x1:10, x2=20}
限制:request.output_filter 为空,表示计算所有输出y1、y2和y3。
预计: response.outputs={y1: 7, y2: 23, y3: 85}
""")
    inputs1 = {
        'x1': tf.contrib.util.make_tensor_proto(10, shape=[]),
        'x2': tf.contrib.util.make_tensor_proto(20, shape=[]),
    }
    outputs1 = client.call_predict(inputs1)
    print("计算结果:")
    print("得到输出个数: {0}".format(len(outputs1)))
    for alias_name in outputs1:
        print("{0}: {1}".format(alias_name, make_ndarray(outputs1[alias_name])))


    print("""
#######################################
Case2:
输入:request.inputs={x1:10}
限制:request.output_filter=[y1],表示只要求计算输出y1即可。
预计:response.outputs={y1: 7}
""")
    inputs2 = {
        'x1': tf.contrib.util.make_tensor_proto(10, shape=[]),
    }
    outputs2 = client.call_predict(inputs2, output_filter=['y1'])
    print("计算结果:")
    print("得到输出个数:{0}".format(len(outputs2)))
    for alias_name in outputs2:
        print("{0}: {1}".format(alias_name, make_ndarray(outputs2[alias_name])))


    print("""
#######################################
Case3:
输入:request.inputs={x1:10, x2:20}
限制:request.output_filter=[y1, y3],表示只要求计算输出y1和y3即可。
预计:response.outputs={y1: 7, y3: 85}
""")
    inputs3 = {
        'x1': tf.contrib.util.make_tensor_proto(10, shape=[]),
        'x2': tf.contrib.util.make_tensor_proto(20, shape=[]),
    }
    outputs3 = client.call_predict(inputs3, output_filter=['y1', 'y3'])
    print("计算结果:")
    print("得到输出个数:{0}".format(len(outputs3)))
    for alias_name in outputs3:
        print("{0}: {1}".format(alias_name, make_ndarray(outputs3[alias_name])))