ONNX形式モデルの仕様

このトピックでは、Oracle Machine Learning ServicesのREST APIでサポートされているONNXイメージ・モデルおよびONNXイメージ以外のモデルの仕様を示します。

  • metadata.jsonファイルの"function"フィールドは、すべてのモデルに必要です。metadata.json"function"の値は、"classification""regression""clustering"または"feature_extraction"である必要があります。
  • 入力テンソルのサポートされているディメンション:
    • イメージ以外のモデルの場合、入力テンソルのディメンションは2です。
    • イメージ・モデルの場合、入力テンソルのディメンションは4です。

    ノート:

    イメージ・モデルとイメージ以外のモデルのどちらの場合も、最初のディメンションはテンソル・バッチ・サイズである必要があります。
  • 回帰モデルの場合:
    • 出力が1つのみの場合は、回帰出力を格納するテンソルとみなされます。この場合、"regressionOutput"の指定はオプションです。
    • 複数の出力がある場合、"regressionOutput"の指定は必須です。
    • どちらの場合も、指定された"regressionOutput"は次の項目に基づいて検証されます。
      • 存在: 有効な出力名である必要があります
      • タイプ: テンソルである必要があります
      • 値の型: float/double
      • 形状: 入力データ・サンプルごとに1つの数値予測である必要があります。つまり、出力テンソルの形状は[batchSize, 1]である必要があります

        ノート:

        いずれかの検証が失敗となると、例外が発生します。
  • 分類モデルの場合:
    • モデルの出力が1つのみで、確率を格納するテンソルの場合、"classificationLabelOutput"はオプションです。指定した場合は無視されます。"classificationProbOutput"はオプションです。この場合、label.txtが必要です。
    • モデルに2つの出力(ラベル情報を格納するテンソルと確率を格納するシーケンス)がある場合、"classificationLabelOutput""classificationProbOutput"の両方がオプションです。この場合、label.txtは必要なく、指定した場合は無視されます。
    • その他すべての場合、"classificationProbOutput"は必須で、label.txtが存在する場合、"classificationLabelOutput"はオプションです。label.txtが指定されていない場合は、"classificationLabelOutput"が必要です。"classificationLabelOutput"を指定した場合、label.txt (指定した場合)は無視されます。
    • 前述のすべての場合において、指定した"classificationLabelOutput"および"classificationProbOutput"は、次の項目に基づいて検証されます。
      • 存在: 有効な出力名である必要があります
      • タイプ: classificationLabelOutputはテンソルである必要があります。classificationProbOutputは、テンソルまたはシーケンスです
      • 値の型: classificationProbOutputは、テンソルまたはマップのシーケンスとしてfloat/doubleの値の型が必要です
      • 形状: classificationProbOutputテンソルの形状は、[batchSize x numClass][batchSize x numClass x1]または[batchSize x numClass x 1 x 1]のいずれかである必要があります(numClassは異なるクラスの数)

        ノート:

        いずれかの検証が失敗となると、例外が発生します。
  • クラスタリング・モデルの場合: clusteringDistanceOutputまたはclusteringProbOutputのいずれかを指定する必要があります。

    ノート:

    両方を指定することはできません。

    指定したclusteringDistanceOutputまたはclusteringProbOutputは、次に基づいて検証されます。

    • 存在: 有効な出力名である必要があります
    • タイプ: テンソルである必要があります
    • 値の型: 値の型float/doubleが必要です
    • 形状: テンソルの形状は[batchSize x numCluster]である必要があります(numClusterは異なるクラスタの数)

    ノート:

    いずれかの検証が失敗となると、例外が発生します。
  • 特徴抽出モデルの場合:
    • 出力が1つのみの場合は、特徴を格納するテンソルとみなされます。この場合、"featureExtractionOutput"の指定はオプションです。
    • 複数の出力がある場合、"featureExtractionOutput"の指定は必須です。
    どちらの場合も、指定された"featureExtractionOutput"は次の項目に基づいて検証されます:
    • 存在: 有効な出力名である必要があります
    • タイプ: テンソルである必要があります
    • 値の型: 値の型float/doubleが必要です
    • 形状: 入力データ・サンプルごとのベクトルである必要があります。つまり、出力テンソルの形状は[batchSize, featureLength]である必要があります

      ノート:

      いずれかの検証が失敗となると、例外が発生します。
  • イメージ・モデルの場合:

    ノート:

    現在、Oracle Machine Learning ServicesのREST APIではイメージ分類モデルおよびイメージ特徴抽出モデルのみがサポートされています。
    • 適切なイメージ処理のためにmetadata.jsonファイルでサポートされている出力構造は、次のとおりです。
      • "inputTensorDimNames"
      • "height"
      • "width"
      • "channel"
    • モデルには数値を持つ入力テンソルが1つのみ必要で、テンソルの形状のディメンションは4にしてください。たとえば、[1, 224, 224, 3]。入力テンソルの最初のディメンションはバッチ番号である必要があります。イメージ・ファイルを入力として使用してデプロイされたイメージ・モデルでスコアリングする場合、入力テンソルの形状には、バッチ番号として1または-1が必要です。
    • このサービスでは、3チャネルのイメージのみを使用するONNXイメージ・モデルをサポートしています。この情報を確認するには、入力形状を印刷し、"inputTensorDimNames"にある"channel"に対応する番号を見つけます。たとえば、入力形状が[1, 224, 224, 3]で、inputTensorDimNames["batch", "height", "width", "channel"]の場合、チャネルは3です。