Saya mengalami ini masalah:

Setelah menjalankan prediksi pada model penyajian tensorflow, saya mendapatkan kembali objek PredictResponse ini sebagai output:

outputs {
  key: "scores"
  value {
    dtype: DT_FLOAT
    tensor_shape {
      dim {
        size: 1
      }
      dim {
        size: 2
      }
    }
    float_val: 0.407728463411
    float_val: 0.592271506786
  }    
}

Seperti yang disarankan dalam pertanyaan itu, saya mencoba menggunakan: result.outputs['outputs'].float_val

Tapi kemudian ia mengembalikan tipe <type google.protobuf.pyext._message.RepeatedScalarContainer>

Itu sedang diproduksi oleh potongan kode ini, terinspirasi dalam contoh inception_client.py:

channel = implementations.insecure_channel(host, int(port))
stub = prediction_service_pb2.beta_create_PredictionService_stub(channel)
result = stub.Predict(request, 10.0)  # 10 secs timeout

Terima kasih sebelumnya!

0
Rodrigo Laguna 8 Agustus 2017, 01:16

2 jawaban

Jawaban Terbaik

result.outputs['scores'].float_val[0] dan result.outputs['scores'].float_val[1] adalah nilai float dalam respons ini.

Untuk referensi di masa mendatang, dokumentasi untuk binding python ke buffering protokol menjelaskan ini dan masalah lainnya.

5
Rodrigo Laguna 8 Agustus 2017, 19:44

Jika Anda memiliki lebih dari satu keluaran dengan nama mereka disimpan dalam daftar output_names, Anda dapat melakukan sesuatu seperti berikut ini untuk membuat kamus dengan nama keluaran sebagai kunci dan daftar dengan apa pun yang dikembalikan model sebagai nilai.

results = dict()
for output in output_names:
    results[output] = response.outputs[output].float_val
0
Mewtwo 8 April 2019, 13:32