[従来] モデル・オプティマイザーに関する FAQ#
重要
以下の問題はすべて従来の機能に関するものです。
質問が以下のトピックに含まれていない場合、OpenVINO サポートページから、無料のフォーラム・ディスカッションに参加してください。
警告
Apache MXNet、Caffe、Kaldi に対する OpenVINO のサポートは廃止されたことに注意してください。
Q1. メッセージの意味は: “[ ERROR ]: Current caffe.proto does not contain field” #
A: 内部的には、モデル・オプティマイザーは protobuf ライブラリーを使用し Caffe モデルを解析してロードします。このライブラリーには、ファイル文法と生成されたパーサーが必要です。Caffe フォールバックの場合、モデル・オプティマイザーは Caffe 固有の .proto
ファイル (通常は src/caffe/proto
ディレクトリーにあります) に対して Caffe で生成されたパーサーを使用します。モデルの作成に使用したものと同じバージョンの Caffe (Python インターフェイスを含む) をインストールしていることを確認してください。
Caffe を構築せずにモデル・オプティマイザーを試して、カスタムレイヤーを操作する Python 拡張機能をテストするだけの場合、レイヤーの説明を caffe.proto
ファイルに追加してそのパーサーを生成します。
例えば、いずれの caffe.proto
ファイルにも存在しない人工レイヤーである CustomReshape
レイヤーの説明を追加するには、次のようにします:
次の行を
caffe.proto
ファイルに追加します:package mo_caffe; // Caffe システムとの競合を避けるため、別のパッケージ名を指定することを強く推奨します。... message LayerParameter { // その他のレイヤーのパラメーターの説明。 ... optional CustomReshapeParameter custom_reshape_param = 546; // 546 - ID は caffe.proto に存在しない数字です。} // ここからファイルの最後までの行は、このパラメーターの内容を記述しています。 message CustomReshapeParameter { optional BlobShape shape = 1; // 他の Caffe レイヤーと同じパラメーター・タイプを使用するだけです。 }
新しいパーサーを生成します:
cd <SITE_PACKAGES_WITH_INSTALLED_OPENVINO>/openvino/tools/mo/front/caffe/proto python3 generate_caffe_pb2.py --input_proto <PATH_TO_CUSTOM_CAFFE>/src/caffe/proto/caffe.proto
ここで、
PATH_TO_CUSTOM_CAFFE
は、カスタム Caffe のルート・ディレクトリーへのパスです。これで、モデル・オプティマイザーはモデルをメモリーにロードし、拡張機能がある場合はその操作を開始できるようになります。
ただし、モデルにはカスタムレイヤーがあるため、それらをカスタムとして登録する必要があります。詳細については、[従来] モデル・オプティマイザーのカスタムレイヤーを参照してください。
Q2. prototxt しかない場合、caffemodel を作成するにはどうすればよいですか?#
A: Caffe Python インターフェイスが必要です。この場合は、次の手順を実行します:
python3 import caffe net = caffe.Net('<PATH_TO_PROTOTXT>/my_net.prototxt', caffe.TEST) net.save('<PATH_TO_PROTOTXT>/my_net.caffemodel')
Q3. メッセージの意味は: “[ ERROR ]: Unable to create ports for node with id” #
A: おそらく、モデル・オプティマイザーは、指定されたトポロジー内の一部のレイヤーの出力形状を推測する方法を判断できません。範囲を減らすには、モデル・オプティマイザー用にカスタムされたレイヤーのリストをコンパイルします。これは、トポロジーには存在しますが、ターゲット・フレームワークでサポートされる操作のリストには存在しません. 次に、[従来] モデル・オプティマイザーのカスタムレイヤーページの対応するセクションで利用可能なオプションを参照してください。
Q7. 次のメッセージの意味は: “Invalid proto file: there is neither ‘layer’ nor ‘layers’ top-level messages” #
A: Caffe トポロジーの構造は、Caffe バージョンの caffe.proto
ファイルに記述されています。例えば、モデル・オプティマイザーの次の .proto
ファイルは、デフォルトで使用されます: mo/front/caffe/proto/my_caffe.proto
の構造は次の通りです:
message NetParameter {
// ... some other parameters
// The layers that make up the net.Each of their configurations, including
// connectivity and behavior, is specified as a LayerParameter.
repeated LayerParameter layer = 100; // ID 100 so layers are printed last. // DEPRECATED: use 'layer' instead.
repeated V1LayerParameter layers = 2;
}
これは、どのトポロジーにも prototxt
のトップレベル構造としてレイヤーが含まれる必要があることを意味します。例えば、LeNet トポロジーを参照してください。
Q8. 次のメッセージの意味は: “Old-style inputs (via ‘input_dims’) are not supported. Please specify inputs via ‘input_shape’”#
A: Caffe トポロジーの構造は、Caffe バージョンの caffe.proto
ファイルに記述されています。例えば、モデル・オプティマイザーの次の .proto
ファイルは、デフォルトで使用されます: mo/front/caffe/proto/my_caffe.proto
の構造は次の通りです:
message NetParameter {
optional string name = 1; // consider giving the network a name
// DEPRECATED.See InputParameter. The input blobs to the network.
repeated string input = 3;
// DEPRECATED.See InputParameter.The shape of the input blobs.
repeated BlobShape input_shape = 8;
// 4D input dimensions -- deprecated.Use "input_shape" instead. // If specified, for each input blob there should be four
// values specifying the num, channels, height and width of the input blob. // Thus, there should be a total of (4 * #input) numbers.
repeated int32 input_dim = 4;
// ... other parameters
}
したがって、提供されたモデルの入力レイヤーは、次のいずれかのスタイルで指定する必要があります:
input: "data" input_shape { dim: 1 dim: 3 dim: 227 dim: 227 }
input: "data" input_shape { dim: 1 dim: 3 dim: 600 dim: 1000 } input: "im_info" input_shape { dim: 1 dim: 3 }
layer { name: "data" type: "Input" top: "data" input_param {shape: {dim: 1 dim: 3 dim: 600 dim: 1000}} } layer { name: "im_info" type: "Input" top: "im_info" input_param {shape: {dim: 1 dim: 3}} }
input: "data" input_dim: 1 input_dim: 3 input_dim: 500
ただし、モデルに複数の入力が含まれている場合、モデル・オプティマイザーは、上記のリストの最初の 3 つの形式のいずれかで指定された入力でモデルを変換できます。4 番目の形式は、複数入力トポロジーではサポートされません。
Q9. 次のメッセージの意味は: “Mean file for topologies with multiple inputs is not supported” #
A: モデル・オプティマイザーは、複数の入力を持つトポロジーの平均ファイル処理をサポートしません。この場合、OpenVINO ランタイムで生成された中間表現の入力を前処理して、複数入力モデルのすべての入力に対して減算を実行する必要があります。詳細は、前処理の概要を参照してください。
Q11. 次のメッセージの意味は: “Invalid prototxt file: value error”#
A: モデル・オプティマイザーが Caffe トポロジーを受け入れない理由は複数あります。FAQ #7 と #20 を参照してください。
Q12. 次のメッセージの意味は: “Error happened while constructing caffe.Net in the Caffe fallback function” #
A: モデル・オプティマイザーは、Caffe フレームワークを介して指定されたレイヤーを推論しようとしました。ただし、Caffe Python インターフェイスを使用してネットを構築することはできません。caffemodel
ファイルと prototxt
ファイルが正しいことを確認してください。問題が prototxt
ファイルにないことを確認するには、FAQ #2 を参照してください。
Q13. 次のメッセージの意味は: “Cannot infer shapes due to exception in Caffe” #
A: モデル・オプティマイザーは Caffe フレームワーク経由でカスタムレイヤーを推論しようとしましたが、Caffe ではモデルを推論できませんでした。これは、動的形状を持つレイヤーと競合するノイズの重みとバイアスを使用してモデルを変換すると発生する可能性があります。トポロジーに含まれるカスタムレイヤーごとに独自の拡張機能を作成する必要があります。詳細は、[従来] モデル・オプティマイザーの拡張性を参照してください。
Q14. 次のメッセージの意味は: “Cannot infer shape for node {} because there is no Caffe available.Please register python infer function for op or use Caffe for shape inference” #
A: モデルにはカスタムレイヤーが含まれており、それが CustomLayersMapping.xml
ファイルに正しく登録されています。これらの手順は、Caffe システムの支援によりカスタムレイヤーの形状推論をオフロードするのに必要です。ただし、モデル・オプティマイザーは Caffe パッケージをインポートできませんでした。pycaffe
ターゲットを使用して Caffe をビルドし、それを PYTHONPATH
環境変数に追加したことを確認してください。同時に、Caffe への依存を避け、カスタムレイヤー用に独自のモデル・オプティマイザー拡張機能を作成することを推奨します。詳細については、FAQ #44 を参照してください。
Q15. 次のメッセージの意味は: “Framework name can not be deduced from the given options.Use –framework to choose one of Caffe, TensorFlow, MXNet” #
A: --framework caffe|tf|mxnet
フラグを指定せずにモデル・オプティマイザーを実行しました。モデル・オプティマイザーは、入力モデルファイルの拡張子 (TensorFlow の場合は .pb
、Caffe の場合は .caffemodel
、Apache MXNet の場合は .params
) によってフレームワークを推定しようとします。入力モデルが異なる拡張子を持つ可能性があるため、ソース・フレームワークを明示的に設定する必要があります。例えば、--framework caffe
を使用します。
Q16. 次のメッセージの意味は: “Input shape is required to convert MXNet model.Please provide it with –input_shape” #
A: 入力形状が提供されていません。MXNet モデルには入力形状に関する情報が含まれていないため、これは MXNet モデルを OpenVINO 中間表現に変換するには必須です。--input_shape
フラグで指定します。--input_shape
の使用の詳細については、FAQ #56 を参照してください。
Q19. 次のメッセージの意味は: “Both –scale and –scale_values are defined.Specify either scale factor or scale values per input channels” #
A: --scale
オプションはすべてのチャネルのスケーリング係数を設定し、--scale_values
は各チャネルごとにスケーリング係数を設定します。両方を同時に使用するとあいまいになるため、どちらか 1 つだけを使用する必要があります。詳細については、TensorFlow モデルの変換のフレームワークに依存しない変換パラメーターの使用セクションを参照してください。
Q20. 次のメッセージの意味は: “Cannot find prototxt file: for Caffe please specify –input_proto - a protobuf file that stores topology and –input_model that stores pre-trained weights” #
A: モデル・オプティマイザーは、指定されたモデルの .prototxt
ファイルを検出できませんでした。デフォルトでは、入力モデルと同じディレクトリーに同じ名前 (拡張子を除く) で配置する必要があります。これらの条件のいずれかが満たされない場合は、--input_proto
を使用して .prototxt
ファイルへのパスを指定します。
Q22. 次のメッセージの意味は: “Failed to create directory ...Permission denied!” #
A: モデル・オプティマイザーは、--output_dir
で指定されたディレクトリーを作成できません。ディレクトリーを作成する十分な権限があることを確認してください。
Q23. 次のメッセージの意味は: “Discovered data node without inputs and value” #
A: 指定されたトポロジー内のレイヤーの 1 つに入力または値がない可能性があります。提供された caffemodel
ファイルと protobuf
ファイルが正しいことを確認してください。
Q24. 次のメッセージの意味は: “Part of the nodes was not translated to IE.Stopped” #
A: 一部の操作は OpenVINO ランタイムでサポートされていないため、OpenVINO 中間表現に変換できません。新しいタイプの操作を生成できるようモデル・オプティマイザーを拡張し、これらの操作を専用の OpenVINO プラグインに実装できます。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。
Q25. 次のメッセージの意味は: “While creating an edge from .. to ..: node name is undefined in the graph.Check correctness of the input model” #
A: モデル・オプティマイザーは、指定されたモデルからグラフを構築できません。おそらく間違いがあります。
Q26. 次のメッセージの意味は: “Node does not exist in the graph” #
A: --output
フラグで、モデルに存在しない出力ノードを指定した可能性があります。指定された出力が正しいこと、およびこのノードが現在のモデルに存在することを確認してください。
Q27. 次のメッセージの意味は: “–input parameter was provided.Other inputs are needed for output computation.Provide more inputs or choose another place to cut the net” #
A: モデル・オプティマイザーが指定された入力によってモデルをカットしようとしました。他の入力が必要です。
Q28. 次のメッセージの意味は: “Placeholder node does not have an input port, but input port was provided” #
A: プレースホルダー・ノードがモデル内にないにもかかわらず、入力ノードを使用してプレースホルダー・ノードを指定した可能性があります。
Q29. 次のメッセージの意味は: “Port index is out of number of available input ports for node” #
A: このエラーは、--input
コマンドライン引数で不正な入力ポートが指定された場合に発生します。--input
を使用する場合、オプションで次の形式で入力ポートを指定できます: X:node_name
。X
は 0 から始まる入力ポートの整数インデックス、node_name
はモデル内のノードの名前です。このエラーは、指定された入力ポート X
が 0..(n-1) の範囲にない場合に発生します (n はノードの入力ポートの数です)。正しいポート・インデックスを指定するか、必要がない場合は使用しないでください。
Q30. 次のメッセージの意味は: “Node has more than 1 input and input shapes were provided.Try not to provide input shapes or specify input port with PORT:NODE notation, where PORT is an integer” #
A: このエラーは、--input
および --input_shape
コマンドライン・オプションの誤った組み合わせで発生します。--input
と --input_shape
の両方を使用し、--input
が Placeholder
ノードを指している場合、入力ポートが 1 つあるノード、または --input
の形式が PORT:NODE
である場合にのみ有効です。ここで、PORT
はノード NODE
の入力の整数ポート・インデックスです。それ以外の --input
と --input_shape
の組み合わせは正しくありません。
Q31. 次のメッセージの意味は: “Input port > 0 in –input is not supported if –input_shape is not provided.Node: NAME_OF_THE_NODE.Omit port index and all input ports will be replaced by placeholders.Or provide –input_shape” #
A: --input
コマンドライン引数と PORT
0 に PORT:NODE
を使用する場合は、この入力に --input_shape
を指定する必要があります。これは、モデル・オプティマイザー実装の現在の制限です。
注
モデル切り捨ての入力ポート・インデックスの制限が解決されたため、このメッセージは意味を持つようになりました。
Q32. 次のメッセージの意味は: “No or multiple placeholders in the model, but only one shape is provided, cannot set it” #
A: モデルに入力がないか、複数の入力が存在するにもかかわらず、プレースホルダーに 1 つの形状のみを指定した可能性があります。プレースホルダー・ノードに正しいデータを指定している確認してください。
Q33. 次のメッセージの意味は: “The amount of input nodes for port is not equal to 1” #
A: このエラーは、サブグラフ内の複数のノードを供給する入力ポートに SubgraphMatch.single_input_node
関数が使用されている場合に発生します。single_input_node
関数は、一致するサブグラフ内で単一のコンシューマーを持つポートにのみ使用できます。複数のノードがポートに接続されている場合は、single_input_node
の代わりに input_nodes
関数または node_by_pattern
関数を使用します。詳細については、[従来] モデル・オプティマイザーの拡張性ガイドのグラフ変換拡張機能セクションを参照してください。
Q34. 次のメッセージの意味は: “Output node for port has already been specified” #
A: このエラーは、SubgraphMatch._add_output_node
関数がユーザーの拡張コードから手動で呼び出されたときに発生します。これは内部関数であるため、直接呼び出さないでください。
Q35. 次のメッセージの意味は: “Unsupported match kind….Match kinds “points” or “scope” are supported only” #
A: 設定ファイルを使用して TensorFlow フロント置換拡張機能を実装するときに、誤った一致の種類が使用されました。points
または scope
の一致種類のみがサポートされます。詳細は、[従来] モデル・オプティマイザーの拡張性を参照してください。
Q36. 次のメッセージの意味は: “Cannot write an event file for the TensorBoard to directory” #
A: モデル・オプティマイザーは、指定されたディレクトリーにイベントファイルを書き込もうとしましたが、失敗しました。これは、指定されたディレクトリーが存在しないか、ディレクトリーへの書き込み権限がない場合に発生する可能性があります。
Q37. 次のメッセージの意味は: “There is no registered ‘infer’ function for node with op = ...Please implement this function in the extensions” #
A 新しいプリミティブを使用してモデル・オプティマイザーを拡張しようとしましたが、推論関数を指定しませんでした。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。
Q38. 次のメッセージの意味は: “Stopped shape/value propagation at node” #
A: モデル・オプティマイザーは、指定されたノードの形状または値を推測できません。これは次の理由で発生する可能性があります: カスタム形状推論関数にバグが存在するか、ノード入力の値/形状が正しくない、または入力形状が正しくありません。
Q39. 次のメッセージの意味は: “The input with shape .. does not have the batch dimension” #
A: バッチ次元は形状内の最初の次元であり、1 または未定義でなければいけません。この質問の場合、それは 1 でも未定義でもありません。そのため、-b
ショートカットは未定義および未指定の動作となります。この問題を解決するには、--input_shape
オプションを使用して各入力の完全な形状を指定します。--help
オプションを指定してモデル・オプティマイザーを起動すると、入力形状の表記法について詳しいヘルプが得られます。
Q40. 次のメッセージの意味は: “Not all output shapes were inferred or fully defined for node” #
A: おそらく、指定されたノードの形状が (部分的または完全に) 定義されていません。--input_shape
を正の整数とともに使用すると、モデルの入力形状をオーバーライドできます。
Q41. 次のメッセージの意味は: “Shape for tensor is not defined.Can not proceed” #
A: このエラーは、 --input
コマンドライン・オプションを使用してモデルをカットし、--input_shape
オプションでノードの形状をオーバーライドしない場合に発生します。そのため、ノードの形状をモデル・オプティマイザーで推論できません。--input
コマンドライン・オプションで指定された各ノードに対して --input_shape
で形状を指定することにより、モデル・オプティマイザーを支援する必要があります。
Q42. 次のメッセージの意味は: “Module TensorFlow was not found.Please install TensorFlow 1.2 or higher” #
A: モデル・オプティマイザーを使用して TensorFlow モデルを変換するには、TensorFlow 1.2 以降がインストールされている必要があります。前提条件の詳細については、モデル・オプティマイザーの構成ガイドを参照してください。
Q43. 次のメッセージの意味は: “Cannot read the model file: it is incorrect TensorFlow model file or missing” #
A: モデルファイルには、テキストまたはバイナリー形式で凍結された TensorFlow グラフが含まれている必要があります。--input_model_is_text
がテキスト形式でモデルに提供されていることを確認してください。デフォルトでは、モデルはバイナリーファイルとして解釈されます。
Q44. 次のメッセージの意味は: “Cannot pre-process TensorFlow graph after reading from model file.File is corrupt or has unsupported format” #
A: おそらく、モデルに指定されたファイルに問題があります。ファイルは存在しますが、形式が無効であるか破損しています。
Q45. 次のメッセージの意味は: “Found custom layer.Model Optimizer does not support this layer.Please, register it in CustomLayersMapping.xml or implement extension” #
A: これは、レイヤー {layer_name}
がモデル・オプティマイザーでサポートされていないことを意味します。サポートされていないレイヤーのリストは、対応するセクションにあります。このレイヤーの拡張機能を実装する必要があります。詳細は、OpenVINO 拡張メカニズムのセクションを参照してください。
Q46. 次のメッセージの意味は: “Custom replacement configuration file does not exist” #
A: カスタム置換構成ファイルへのパスが --transformations_config
フラグで指定されましたが、ファイルが見つかりませんでした。指定したパスが正しく、ファイルが存在することを確認してください。
Q47. 次のメッセージの意味は: “Extractors collection have case insensitive duplicates” #
A: 新しいプリミティブを使用してモデル・オプティマイザーを拡張する場合、それらの名前は大文字と小文字が区別されないことに注意してください。おそらく、同じ名前の別の操作がすでに定義されています。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。
Q48. 次のメッセージの意味は: “Input model name is not in an expected format, cannot extract iteration number” #
A: モデル・オプティマイザーは、指定されたファイル形式で MXNet モデルをロードできません。.json
または .param
形式を使用してください。
Q49. 次のメッセージの意味は: “Cannot convert type of placeholder because not all of its outputs are ‘Cast’ to float operations” #
A: Placeholder
が UINT8 タイプで、その後の最初の操作が入力を FP32 にキャストするモデルがあります。モデル・オプティマイザーは、Placeholder
が UINT8 型であることを検出しましたが、次の操作は浮動小数点数への ‘キャスト’ ではありません。モデル・オプティマイザーはそのようなケースをサポートしません。FP32 の Placeholder
が含まれるようにモデルを変更してください。
Q50. 次のメッセージの意味は: “Data type is unsupported” #
A: モデル・オプティマイザーは、指定されたデータタイプの値を読み取ることができません。現在、次のタイプがサポートされています: bool、float16、float32、double、int8、int16、int32、int64、uint8、uint16、uint32、uint64、str。
Q51. 次のメッセージの意味は: “No node with name …” #
A: モデル・オプティマイザーが存在しないノードにアクセスしようとしました。これは、プレースホルダー、入力ノード名、または出力ノード名を誤って指定すると発生する可能性があります。
Q52. 次のメッセージの意味は: “Module MXNet was not found.Please install MXNet 1.0.0” #
A: モデル・オプティマイザーを使用して MXNet モデルを変換するには、Apache MXNet 1.0.0 がインストールされている必要があります。前提条件の詳細については、モデル・オプティマイザーの構成ガイドを参照してください。
Q53. 次のメッセージの意味は: “The following error happened while loading MXNet model ..” #
A: おそらく、MXNet モデルの読み込みに問題があります。指定されたパスが正しいこと、モデルが存在し破損していないこと、およびモデルを操作する十分な権限があることを確認してください。
Q54. 次のメッセージの意味は: “The following error happened while processing input shapes: ..” #
A: 入力が定義されており、正しい形状であることを確認してください。--input_shape
を正の整数とともに使用すると、モデルの入力形状をオーバーライドできます。
Q55. 次のメッセージの意味は: “Attempt to register of custom name for the second time as class.Note that custom names are case-insensitive” #
A: 新しいプリミティブを使用してモデル・オプティマイザーを拡張する場合、それらの名前は大文字と小文字が区別されないことに注意してください。おそらく、同じ名前の別の操作がすでに定義されています。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。
Q56. 次のメッセージの意味は: “Both –input_shape and –batch were provided.Please, provide only one of them” #
A: バッチと入力形状の同時指定はサポートされていません。入力形状の最初の値として目的のバッチを指定する必要があります。
Q57. 次のメッセージの意味は: “Input shape .. cannot be parsed” #
A: 指定された入力形状を解析できません. 次のいずれかの方法で定義します:
mo --input_model <INPUT_MODEL>.caffemodel --input_shape (1,3,227,227)
mo --input_model <INPUT_MODEL>.caffemodel --input_shape [1,3,227,227]
複数の入力トポロジーがある場合は、入力も指定する必要があります:
mo --input_model /path-to/your-model.caffemodel --input data,rois --input_shape (1,3,227,227),(1,6,1,1)
入力形状には、括弧の間や括弧内にスペースが存在しないことに注意してください。
Q58. 次のメッセージの意味は: “Please provide input layer names for input layer shapes” #
A: 複数のレイヤーの入力形状を指定する場合、入力の名前を指定する必要があります。入力形状は上書きされます。--input_shape
の追加情報は FAQ #56 にあります。
Q59. 次のメッセージの意味は: “Values cannot be parsed” mean?#
A: 指定されたパラメーターの平均値を解析できません。平均値のリストを含む文字列を指定する必要があります。例えば、‘(1,2,3)’ では、1 は赤チャネル、2 は緑チャネル、3 は青チャネルを表します。
Q60. 次のメッセージの意味は: “.. channels are expected for given values” #
A: 指定されたチャネル数と平均値の数が一致しません。形状は ‘(R,G,B)’ または ‘[R,G,B]’ として定義する必要があります。形状には未定義の次元 (? または -1) が含まれていてはなりません。値の順序は次のとおりです: (RED チャネルの値、GREEN チャネルの値、BLUE チャネルの値)。
Q61. 次のメッセージの意味は: “You should specify input for each mean value” #
A: --mean_values
を使用して入力を指定しなかった可能性があります。--input
フラグを使用して入力を指定します。詳細については、FAQ #62 を参照してください。
Q62. 次のメッセージの意味は: “You should specify input for each scale value” #
A: --scale_values
を使用して入力を指定しなかった可能性があります。--input
フラグを使用して入力を指定します。詳細については、FAQ #63 を参照してください。
Q63. 次のメッセージの意味は: “Number of inputs and mean values does not match” #
A: 指定される平均値の数と入力の数は等しくなければなりません。
Q64. 次のメッセージの意味は: “Number of inputs and scale values does not match” #
A: 指定されるスケール値の数と入力の数は等しくなければなりません。
Q65. 次のメッセージの意味は: “No class registered for match kind … Supported match kinds are ..“ #
A: ノード名パターンまたは開始/終了ノードを使用して、サブグラフ置換用の構成ファイルで定義された置換には、match_kind
属性があります。属性には、次のいずれかの値のみを含めることができます: scope
または points
。異なる値を指定すると、このエラーが表示されます。
Q66. 次のメッセージの意味は: “No instance(s) is(are) defined for the custom replacement” #
A: ノード名パターンまたは開始/終了ノードを使用して、サブグラフ置換用の構成ファイルで定義された置換には、instances
属性があります。この属性は必須です。このエラーは、属性が欠落している場合に発生します。詳細については、[従来] モデル・オプティマイザーの拡張性ガイドのグラフ変換拡張機能セクションを参照してください。
Q67. 次のメッセージの意味は: “The instance must be a single dictionary for the custom replacement with id ..” #
A: 開始/終了ノードを使用してサブグラフ置換用の構成ファイルに定義された置換には、instances
属性があります。このタイプの置換では、start_points
と end_points
という 2 つのキーを持つ辞書を使用してインスタンスを定義する必要があります。これらのキーの値は、それぞれ開始ノード名と終了ノード名を含むリストです。詳細については、[従来] モデル・オプティマイザーの拡張性ガイドのグラフ変換拡張機能セクションを参照してください。
Q68. 次のメッセージの意味は: “No instances are defined for replacement with id ..“ #
A: 指定された ID の代替が構成ファイルで定義されていません。詳細については、FAQ #65 を参照してください。
Q69. 次のメッセージの意味は: “Custom replacement configuration file does not exist” #
A: カスタム置換構成ファイルへのパスが --transformations_config
フラグで指定されましたが、見つかりません。指定したパスが正しく、ファイルが存在することを確認してください。
Q70. 次のメッセージの意味は: “Failed to parse custom replacements configuration file ..” #
A: --transformations_config
フラグで提供されたカスタム置換構成のファイルを解析できません。有効な JSON 構造が必要です。詳細は、JSON スキームのリファレンスを参照してください。
Q71. 次のメッセージの意味は: “One of the custom replacements in the configuration file .. does not contain attribute ‘id’” #
A: すべてのカスタム置換では、一連の必須属性とその値を宣言する必要があります。詳細については、FAQ #71 を参照してください。
Q72. 次のメッセージの意味は: “File .. validation failed” #
A: --transformations_config
フラグで提供されたカスタム置換構成のファイルでは検証に合格できません。すべてのパターンに対して id
、instances
、および match_kind
を指定していることを確認してください。
Q73. 次のメッセージの意味は: “Cannot update the file .. because it is broken” #
A: --tensorflow_custom_operations_config_update
で提供されるカスタム置換構成ファイルは解析できません。ファイルが正しいことを確認し、FAQ #68、#69、#70、および #71 を参照してください。
Q74. 次のメッセージの意味は: “End node .. is not reachable from start nodes: ..” #
A: このエラーは、サブグラフの一致を試みたときに発生します。検索するサブグラフの入力/出力として指定された開始ノードと終了ノードの間に、出力としてマークされたノードがありますが、入力ノードへのパスが存在しないことが検出されました。一致させるサブグラフに、指定したすべての出力ノードが実際に含まれていることを確認してください。
Q75. 次のメッセージの意味は: “Sub-graph contains network input node ..” #
A: 開始/終了ノードを使用したサブグラフ置換の開始ノードまたは終了ノードの指定が正しくありません。モデル・オプティマイザーは、厳密に開始ノードと終了ノードの “間” でサブグラフの内部ノードを検索し、これらの “内部” ノードのすべての入力ノード (入力の入力なども) をサブグラフに追加します。このエラーは、モデル・オプティマイザーがこのフェーズ中に入力ノードに到達したことを報告します。これは、構成ファイル内で開始点と終了点が正しく指定されていないことを意味します。詳細については、[従来] モデル・オプティマイザーの拡張性ガイドのグラフ変換拡張機能セクションを参照してください。
Q76. 次のメッセージの意味は: “… elements of … were clipped to infinity while converting a blob for node […] to …” #
A: このメッセージは、--compress_to_fp16
コマンドライン・オプションで表示されることがあります。このオプションは、すべてのモデルの重み、バイアス、およびその他の定数値を FP16 に圧縮することを意味します。定数値が有効な FP16 値の範囲外にある場合、その値は正または負の無限大に変換されます。モデルによっては、誤った推論結果が得られる場合もあれば、問題にならない場合もあります。このような要素の数と定数値内の要素の合計数が、この値が使用されるノードの名前とともに出力されます。
Q77. 次のメッセージの意味は: “… elements of … were clipped to zero while converting a blob for node […] to …” #
A: このメッセージは、--compress_to_fp16
コマンドライン・オプションで表示されることがあります。このオプションは、モード内のすべてのブロブを FP16 に変換することを意味します。ブロブ内の値がゼロに近すぎて有効な FP16 値を表現できない場合、その値は真のゼロの FP16 値に変換されます。モデルによっては、誤った推論結果が得られる場合や、問題にならない場合があります。このような要素の数とブロブ内の要素の合計数が、このブロブが使用されるノードの名前とともに出力されます。
Q78. 次のメッセージの意味は: “The amount of nodes matched pattern … is not equal to 1” #
A: このエラーは、サブグラフ内の単一ノードを一意に識別しないパターンで SubgraphMatch.node_by_pattern
関数が使用された場合に発生します。パターン文字列を拡張して、単一のサブグラフノードに一致するようにしてください。詳細については、[従来] モデル・オプティマイザーの拡張性ガイドのグラフ変換拡張機能セクションを参照してください。
Q79. 次のメッセージの意味は: “The topology contains no “input” layers” #
A: Caffe トポロジー .prototxt
ファイルはトレーニング用です。モデル・オプティマイザーは、すぐにデプロイできる .prototxt
ファイルを期待します。この問題を解決するには、デプロイ可能な .prototxt
ファイルを準備します。デプロイの準備ができたトポロジーを準備すると、通常、data
レイヤーの削除、input
レイヤーの追加、損失レイヤーが削除されます。
Q80. 次のメッセージの意味は: “Warning: please expect that Model Optimizer conversion might be slow” #
A: サポートされていない Python バージョンを使用しています。OpenVINO ツールキットで提供される C++ protobuf
実装には、バージョン 3.4 ~ 3.6 のみを使用してください。ソースから protobuf ライブラリーをビルドすることで、変換速度を向上させることができます。ソースから protobuf
をビルドする詳細な手順については、モデルを中間表現に変換するガイドを参照してください。
Q81. 次のメッセージの意味は: “Arguments –nd_prefix_name, –pretrained_model_name and –input_symbol should be provided.Please provide all or do not use any.” #
A: このエラーは、--nd_prefix_name
、--pretrained_model_name
、および --input_symbol
パラメーターを指定しなかった場合に発生します。モデル・オプティマイザーでは、結果ファイル (.params
) にマージするため .params
と .nd
モデルファイルの両方が必要です。トポロジー記述 (.json
ファイル) を事前に準備 (マージ) し、--input_symbol
パラメーターを指定する必要があります。
.nd
ファイル内の追加レイヤーと重みをモデルに追加すると、モデル・オプティマイザーは 1 つの .params
ファイルと 2 つの追加の .nd
ファイル (*_args.nd
、*_auxs.nd
) からモデルをビルドできます。これを行うには、両方の CLI オプションを指定するか、追加の重みを付けずに MXNet モデルを変換するにはそれらを渡しません。
Q82. 次のメッセージの意味は: “You should specify input for mean/scale values” #
A: モデルに複数の入力があり、平均/スケール値を提供する場合、各入力にそれらの値を渡す必要があります。具体的には、渡される値の数はモデルの入力の数と同じである必要があります。詳細については、モデルを中間表現に変換ガイドを参照してください。
Q83. 次のメッセージの意味は: “Input with name … not found!” #
A: 平均/スケール値を渡し、モデルの入力レイヤーの名前を指定したときに、どの入力レイヤーにも対応しない名前を使用した可能性があります。--input
オプションを使用して値を渡すときは、モデルの入力レイヤーの名前のみをリストするようにしてください。詳細については、モデルを中間表現に変換ガイドを参照してください。
Q84. 次のメッセージの意味は: “Specified input json … does not exist” #
A: おそらく、.json
ファイルが存在しないか、Apache MXNet の表記と一致しない名前が付けられています。ファイルが存在し、名前が正しいことを確認してください。
Q85. 次のメッセージの意味は: “Unsupported Input model file type … Model Optimizer support only .params and .nd files format” #
A: Apache MXNet 向けのモデル・オプティマイザーは、.params
および .nd
ファイル形式のみをサポートします。おそらく、--input_model
でサポートされていないファイル形式を指定したと考えられます。
Q86. 次のメッセージの意味は: “Operation … not supported. Please register it as custom op” #
A: モデル・オプティマイザーは、サポートされていない操作を含むモデルをロードしようとしました。サポートされていない操作を含むモデルを変換する場合、そのようなすべての操作に対応する拡張機能を準備する必要があります。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。
Q87. 次のメッセージの意味は: “Can not register Op … Please, call function ‘register_caffe_python_extractor’ with parameter ‘name’” #
A: このエラーは、Python Caffe 向けの Op
レイヤーの実装クラスがモデル・オプティマイザーで使用できない場合に表示されます。Python レイヤーは、通常の Caffe レイヤーとは異なる方法で処理する必要があります。
関数 register_caffe_python_extractor
を呼び出し、関数の 2 番目の引数として name
を渡す必要があります。名前は、レイヤー名とモジュール名をドットで区切って組み合わせる必要があります。
例えば、トポロジーには Python
タイプの次のレイヤーが含まれています:
layer {
name: 'proposal’
type: 'Python’
...
python_param {
module: 'rpn.proposal_layer’
layer: 'ProposalLayer’
param_str: "'feat_stride': 16"
}
}
最初のステップは、モデル・オプティマイザーでこのレイヤーの拡張機能を Op
クラスの祖先として実装することです:
class ProposalPythonExampleOp(Op):
op = 'Proposal’
def __init__(self, graph: nx.MultiDiGraph, attrs: dict): ...
クラスの実装直後に 2 つの関数を呼び出すことが必須です:
class Softmax(Op): ...
register_caffe_python_extractor(ProposalPythonExampleOp, 'rpn.proposal_layer.ProposalLayer')
Op.excluded_classes.append(ProposalPythonExampleOp)
最初の呼び出し register_caffe_python_extractor(ProposalPythonExampleOp, 'rpn.proposal_layer.ProposalLayer')
は、モデル・オプティマイザーにレイヤーの拡張機能を登録することに注意してください。これは、特定の名前 (モジュール名とレイヤー名を結合することが必須): <code class="docutils literal notranslate"><span class="pre">rpn.proposal_layer.ProposalLayer</span></code> にあります。rpn.proposal_layer.ProposalLayer
。
2 番目の呼び出しにより、モデル・オプティマイザーがこの拡張機能を、タイプ Proposal
のレイヤーの拡張機能として使用できなくなります。それ以外の場合、このレイヤーは潜在的な問題を引き起こす拡張機能の実装として選択される可能性があります。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。
Q88. 次のメッセージの意味は: “Model Optimizer is unable to calculate output shape of Memory node ..” #
A: モデル・オプティマイザーは、input_memory
が ScaleShift
または FullyConnected
レイヤーの前に配置される Memory
レイヤーのみをサポートします。このエラーメッセージは、モデル内で入力メモリーの後のレイヤーが ScaleShift
または FullyConnected
タイプではないことを意味します。これは既知の制限です。
Q89. 次のメッセージの意味は: “File … does not appear to be a Kaldi file (magic number does not match)”, “Kaldi model should start with <Nnet> tag” #
A: これらのエラーメッセージは、モデルのチェックサムが 16896 ではない (モデルはこの数値で始まるはず) か、モデルファイルに開始タグとして <Net>
タグが含まれていないため、モデル・オプティマイザーが Kaldi モデルをサポートしていないことを意味します。真の Kaldi モデルへのパスを指定していることを確認して、もう一度お試しください。
Q90. 次のメッセージの意味は: “Expect counts file to be one-line file.” or “Expect counts file to contain list of integers” #
A: これらのメッセージは、渡したファイル数に 1 行も含まれていないことを意味します。count ファイルは [
で始まり ]
で終わる必要があり、整数値は括弧間のスペースで区切る必要があります。
Q91. 次のメッセージの意味は: “Model Optimizer is not able to read Kaldi model ..” #
A: モデル・オプティマイザーが Kaldi トポロジーを受け入れない理由は次のとおりです: ファイルが利用できないか、存在しません。FAQ #88 を参照してください。
Q92. 次のメッセージの意味は: “Model Optimizer is not able to read counts file ..” #
A: モデル・オプティマイザーがカウントファイルを受け入れない理由は次のとおりです: ファイルが利用できないか、存在しません。FAQ #89 を参照してください。
Q93. 次のメッセージの意味は: “For legacy MXNet models Model Optimizer does not support conversion of old MXNet models (trained with 1.0.0 version of MXNet and lower) with custom layers.” #
A: このメッセージは、カスタムレイヤーを含むモデルがあり、その JSON ファイルが 1.0.0 より前の Apache MXNet バージョンで生成されている場合、モデル・オプティマイザーがそのようなトポロジーをサポートしないことを意味します。変換したい場合は、サポートされていないレイヤーを使用して MXNet を再構築するか、Apache MXNet バージョン 1.0.0 以降で新しい JSON ファイルを生成する必要があります。カスタムレイヤーを使用するには、OpenVINO 拡張機能を実装する必要もあります。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。
Q94. 次のメッセージの意味は: “Expected token </ParallelComponent>
, has ...
” #
A: このエラーメッセージは、ネットに </ParallelComponent>
タグで終わらない ParallelComponent
が含まれているため、モデル・オプティマイザーが Kaldi モデルをサポートしないことを意味します。真の Kaldi モデルへのパスを指定していることを確認して、もう一度お試しください。
Q97. 次のメッセージの意味は: “Graph contains a cycle.Can not proceed ..” #
A: モデル・オプティマイザーはない単純なモデルのみをサポートします。
サイクルを回避するには複数の方法があります:
Tensorflow の場合:
すべてのフレームワークの場合:
または
元のフレームワークでモデルを編集してサイクルを除外します。
Q100. 次のメッセージの意味は: “Interp layer shape inference function may be wrong, please, try to update layer shape inference function in the file (extensions/ops/interp.op at the line …).” #
A: Caffe フレームワークにはさまざまな種類があり、それらのほとんどのレイヤーは同じように実装されています。ただし、例外もあります。例えば、レイヤー Interp の出力値は、Deeplab-Caffe と従来の Caffe では異なる方法で計算されます。したがって、モデルにレイヤー Interp が含まれており、モデルの変換が失敗した場合は、extensions/ops/interp.op
ファイル内の interp_infer
関数を、ファイル内のコメントに従って変更します。
Q101. 次のメッセージの意味は: “Mean/scale values should …” #
A: これは、平均/スケール値の形式が誤っていることを意味します。平均/スケール値を、layer_name(val1,val2,val3)
の形式で指定します。モデルの各入力に値を指定する必要があります。詳細については、モデルを中間表現に変換ガイドを参照してください。
Q102. 次のメッセージの意味は: “Operation _contrib_box_nms is not supported …” #
A: これは、直接サポートされていない _contrib_box_nms
操作を含むトポロジーを変換しようとしていることを意味します。ただし、トポロジーが gluoncv
トポロジーの 1 つである場合は、_contrib_box_nms
を含む操作のサブグラフを DetectionOutput レイヤーに置き換えることができます。この変換を有効にするには、モデル・オプティマイザーの --enable_ssd_gluoncv
コマンドライン・パラメーターを指定します。
Q103. 次のメッセージの意味は: “ModelOptimizer is not able to parse *.caffemodel”#
A: *.caffemodel
ファイルが存在し、それが正しい場合は、Python protobuf 実装が原因でエラーが発生した可能性があります。モデルの解析中に次のようなエラーメッセージが表示されることがあります: “utf-8
codec can’t decode byte 0xe0 in position 4: invalid continuation byte in field: mo_caffe.SpatialTransformerParameter.transform_type”. 新しい Python バージョン (3.8 ~ 3.11) を使用するか、使用している Python バージョンに合わせて protobuf
の cpp
実装を自身で構築することができます。ソースから protobuf
を構築する完全な手順については、モデル・オプティマイザーによるモデルの変換ガイドを参照してください。
Q105. 次のメッセージの意味は: “The IR preparation was executed by the legacy MO path.…” #
A: ONNX 形式のモデルの場合、IR 変換の利用可能なパスが 2 つあります。古いものは古い Python 実装によって処理されますが、新しいものは新しい C++ フロントエンドを使用します。2022.1 バージョン以降、ONNX モデルのデフォルトの IR 変換パスは、新しい ONNX フロントエンドを使用して処理されます。--extensions
や --transformations_config
などの特定の機能は、新しいフロントエンドではまだ完全にはサポートされていません。新しいフロントエンドは、--extensions
の共有ライブラリー (.dll および .so) のパスのみをサポートします。--transformations_config
に定義されたライブラリー・フィールドを使用した JSON 構成をサポートします。入力のフリーズ (--freeze_placeholder_with_value
または --input
引数によって有効になる) は、新しいフロントエンドではサポートされていません。ユーザーが予期される変換パスを明示的に選択せず (--use_new_frontend
または --use_legacy_frontend
MO 引数を使用)、サポートされていない事前定義シナリオが新しいフロントエンド・パスで検出された場合、IR 変換は古いパスにフォールバックします。