私はTensorFlow Servingクライアントをデータベースサーバー内に置くC++で記述しており、TensorFlowモデルをデータベースプロシージャとして利用できます。機械全体は、TensorFlow ServingモデルサーバからGetModelMetaData要求/応答メカニズムを介して取得した応答に基づいて、データベーステーブルと入力および出力テンソルとの間のデータタイプおよび必要な変換を自動設定します。Tensorflow Serving:GetModelMetaDataとtf.example入力ノードの自動設定
これまでは、さまざまなモデル(Inception_v3、さまざまな回帰モデル)と対話するために、「生の」入力テンソルを使用しました。 「生」とは、入力テンソルの値が、tf.exampleレコードとしてラップされた値とは対照的に、モデルによって要求されたプレーンなデータ型であることを意味します。
例として、TensorFlow Servingの例のセクションの「half_plus_two」モデルを見てください。それは "x"浮動小数点入力を期待し、 "y"浮動小数点出力を返します。 (GetModelMetaData応答から抜粋):これは「serving_default」シグネチャの「生の」入力モード、ならびに「classify_x_to_y」シグネチャ内の1つの「ラップ」の両方を備えてい
Model Metadata:
model_spec {
name: "multisig"
version {
value: 1
}
}
metadata {
key: "signature_def"
value {
[type.googleapis.com/tensorflow.serving.SignatureDefMap] {
signature_def {
key: "classify_x_to_y"
value {
inputs {
key: "inputs"
value {
name: "tf_example:0"
dtype: DT_STRING
tensor_shape {
unknown_rank: true
}
}
}
outputs {
key: "scores"
value {
name: "y:0"
dtype: DT_FLOAT
tensor_shape {
dim {
size: -1
}
dim {
size: 1
}
}
}
}
method_name: "tensorflow/serving/classify"
}
}
signature_def {
key: "serving_default"
value {
inputs {
key: "x"
value {
name: "x:0"
dtype: DT_FLOAT
tensor_shape {
dim {
size: -1
}
dim {
size: 1
}
}
}
}
outputs {
key: "y"
value {
name: "y:0"
dtype: DT_FLOAT
tensor_shape {
dim {
size: -1
}
dim {
size: 1
}
}
}
}
method_name: "tensorflow/serving/predict"
}
}
}
}
}
Iができるが自動的に明示的に指定された "未処理の"テンソル(つまり浮動小数点数のベクトル)に対してどのようなテンソルを作成するかを推測すると、 "classify_x_to_y"署名が必要とするシリアライズされたtf.exampleレコードに何を入れるのかを判断する良い方法はありません私はもちろん、キー 'x'の下に浮動小数点値を持つtf.exampleが必要であることを知っています。疑問は、上記のGetModelMetaDataResponseから自動的に推測するものですか?