| On this page | |
| Since | 20.5 |
概要 ¶
これは、回帰問題に適用する汎用MLトレーニングノードです。 ディープラーニングの世界では、Regression(回帰)とは、順伝播型ニューラルネットワーク(モデル)をトレーニングして、固定数の入力変数から固定数の出力変数につなぐ連続関数を厳密に近似できるようにすることを意味します。 Houdiniでは、この関数をプロシージャルネットワークの形式で用意することができます。 詳細は、機械学習のドキュメントを参照してください。
例えば、Regression MLは、リグポーズに基づいてキャラクタをリアルに変形させて方法を学習して、リニアブレンドスキニングを改善することができます。 この場合では、MLを使用して、リグポーズをスキン変形にマッピングする関数を学習しています。 ML Train Deformerレシピを参照してください。 他のサンプルでは、PyroシミュレーションをUpres(高解像度化)する方法を学習することができます。 ML Train Volume Upresレシピを参照してください。
ML Train Regression TOPは、ラベル付きサンプルで構成されたデータセットが与えられたモデルをトレーニングします(ML Exampleを参照)。
各ラベル付きサンプルは、入力コンポーネントとそれに呼応したターゲットコンポーネントで構成されたペアです。
Regression(回帰)の場合、入力コンポーネントとターゲットコンポーネントの両方が連続変数で構成されています。
この連続変数には、ポイント座標、カラー、PCAコンポーネント(その他の種類の値)を含むことができます。
Classification(分類)で使用される離散変数とは対照的に、各ターゲットコンポーネントが連続変数を構成しているので、 Regression(回帰) という用語が使用されています。
ラベル付きサンプルがトレーニングのベースです。
ML Deformerの特定のケースでは、各入力コンポーネントは、(シリアライズされた)ポーズで、それに呼応するターゲットコンポーネントは、肉体シミュレーションによって得られた(PCA圧縮された)スキン変形です。
ML Volume Upresのケースでは、入力と出力の両方が3Dボリュームタイル(ボクセルグリッド)となります。
ML Train Regression TOPは、何かしらのユーザ指定の入力コンポーネントからターゲットコンポーネントを予測するモデルをトレーニングします。 目標は、汎用的に利用できるように上手く適合したモデルを得ることです。 それによって、未知の入力(つまり、トレーニング用のデータセットに含まれていなかった入力)に対しても有益な予測が生成されるはずです。 ML Train Regression TOPには、トレーニング済みモデルが未知の入力に対しても上手く動作できるように補助するいくつかのメソッドが用意されています。 これらのメソッドのことを Regularization(正則化) メソッドと呼びます。
ML Train Regression TOPによって生成されたトレーニング済みモデルは、ONNXフォーマットでエクスポートすることができます。
また、PyTorchモデルとして保存することもできます。
とはいえ、Houdiniにはこのモデルを使用できる組み込みノードがありません。
ML Train Regression TOPで生成されたモデルをHoudiniに取り込む最も簡単な方法は、ML Regression Inferenceツールを使用することです。
ML Train Regression TOPは、順伝播型ニューラルネットワークを生成します。 このニューラルネットワーク内の入力ユニットの数は、データセットの各入力コンポーネント内の変数の数と同じでなければなりません また、このニューラルネットワーク内の出力ユニットの数は、データセットの各ターゲットコンポーネント内の変数の数と同じでなければなりません。 標準的な種類のモデルを使用した場合、ML Train Regression TOPは、指定されたRawデータセットに格納されている次元を使用して、ネットワークの入力と出力の数を自動で判断します。
入力層と出力層の間には、いくつかの隠れ層が存在する場合があります。 それらの隠れ層の数と幅は、ユーザによって制御可能です。 ネットワークの挙動は、一連のパラメータで制御されます。 線形的な層の場合、それらのパラメータにはウェイト(スケーリング係数)やバイアス(加算定数)を含めることができます。 トレーニングの目的は、Regression(回帰)タスク用にそれらのパラメータを最適化することです。
ML Train Regression TOPは、データセットのトレーニング部分に対して複数のパスを実行します。 そのような各パスのことを Epoch(エポック) と呼びます。
トレーニング処理は、トレーニングノードの設定を毎回変えて、複数回繰り返すことができます。 そのようなトレーニング設定のことを、一般的に Hyperparameters(ハイパーパラメータ) と呼びます。 ハイパーパラメータのよくある例としては、学習率、ネットワークの隠れ層の数、ネットワークの幅などの設定があります。
Wedge TOPを使用することで、色々と変更したハイパーパラメータでトレーニング処理を繰り返すことができます。
Wedgeの設定毎に、 Model Base Name の末尾にTOPアトリビュート名を追加することで、その結果のモデルを別々のファイルに保存することができます。
ML Train Regression TOPは、ユーザが用意したデータセットを内部的に2つの部分(トレーニング部分と検証部分)に分割します。 これらの部分の相対的なサイズは、ユーザ側で制御可能です。 トレーニング部分は、トレーニングエポックの度にネットワークのパラメータを最適化するのに使用されます。 検証部分は、トレーニングに使用されないデータに対するネットワークのパフォーマンスを検証するのに使用されます。
アンダーフィッティング(Underfitting:学習不足)は、モデルがトレーニングデータに上手く適合するほど十分な複雑さがない時に起こります。 これが起きると、そのモデルはテストデータに対しても正しい結果を生成するのは期待できません。 その場合、より多くのパラメータを持つ(より高い能力を持つ)より複雑なネットワークが必要になります。 これは、例えば、隠れ層の数を増やしたり、各隠れ層の幅を広げることで実現することができます。
オーバーフィッティング(Overfitting:過学習)は、モデルがトレーニングデータ内の入力に対して正しい出力を生成するのにトレーニングデータ外の入力(未知の入力)に対して正しくない出力を生成する時に起こります。 オーバーフィッティング(過学習)を軽減するために、ML Train Regression TOPは、Early Stopping(早期停止)とWeight Decay(ウェイト減衰)という2つの単純なRegularization(正則化)メソッドをサポートしています。 Early Stopping(早期停止)は、検証損失(検証セットの損失)の減少が止まったかどうかをチェックします。 減少が止まった場合、トレーニングは強制終了します。 Weight Decay(ウェイト減衰)は、トレーニングに使用される損失関数に対して、大きなウェイトにペナルティを課す項が含まれるように修正します。
部分トレーニング ¶
モデルを一度にすべてトレーニングするのではなく、複数のパスにわたって少しずつ部分的にモデルをトレーニングさせることができます。 その場合、各トレーニングパスは、限られた数のエポックのみを実行します。 これによって、TOPネットワークはトレーニングパスの合間に他のタスクを実行できるようになります。 例えば、各部分トレーニングパスの前に新しいトレーニングデータを生成することができます。 これは、データセットがプロシージャルネットワークを介してHoudini内で生成される時に適用することができます。 固定サイズのデータセット内のデータポイントを再考するのと比較して、新しいトレーニングデータのストリームでトレーニングすると、 未知のデータに対してもっと上手く汎用的に利用できるモデルを生成することができます。 もう1つの利点は、トレーニングデータの量を事前に決定する必要がないことです。
部分トレーニングは、ML Train Regression TOPの単一クックで実行される処理/時間の量を制限しつつ、後で中断した箇所からトレーニングを再開できるようにする役立つ方法でもあります。 これは、例えばトレーニングをファーム上で実行する場合などが該当します。
Note
Houdini21以降では、部分的にトレーニング済みのモデルを定期的に保存/エクスポートするために、もはや部分トレーニングが不要になりました。 現在では、部分トレーニングを行なわずにこれを行なうための個別のオプションが用意されています。
ML Train Regression TOPを部分トレーニング用にセットアップすることができます:
-
Enable Partial Training を有効にします。
-
ML Train Regression TOPをフィードバックブロック内に配置します(
Feedback Begin TOPを参照)。
-
Feedback Begin TOPの Create Iterations From を Custom Count に設定します。
-
Iterations に、実行したい部分トレーニングパスの合計回数を設定します。
-
ML Train Regression TOPの Max Epochs per Cook を設定し、各トレーニングパスで実行されるエポックの最大回数を制御します。 例えば、各部分トレーニングパスが概ね一定の時間かかるように、 Max Epochs per Cook を設定することができます。 Max Epochs per Cook の適切な値は、実際にはデータセットのサイズに依存します。
-
(オプション)部分的にトレーニングされたONNXモデルを出力して保持するには、ML Train Regression TOPの Files タブで、
@loopiterなどのアトリビュートを含んだ Model Base Name を指定することができます。 -
(オプション)各部分的なトレーニングパスの前に新しいトレーニングデータを生成するには、フィードバックループ内のML Train Regression TOPの前に、新しいデータセットの生成を発動する
ROP Fetchを配置すると良いでしょう。データセットのファイル名には、
@loopiterアトリビュートを含めてください。
-
ファイルアクセス ¶
ML Train Regression TOPは、色々なファイルにアクセスすることができます。
ファイルのベース名に1つ以上のTOPアトリビュート(例えば、@wedgeindexや@loopiter)を挿入することで、各ファイル名を好きなように変更することができます。
これによって、以下のような色々なタイプのTOP MLトレーニングセットアップが可能になります:
-
Wedge TOPを使用してハイパーパラメータを可変させたトレーニングをする。
-
TOPフィードバックループ内で必要に応じて追加トレーニングデータを生成する。
ML Train Regression TOPがアクセスするファイルは、読み込み専用、読み込みと書き込みの両方に対応、書き込み専用(または追加書き込み)だったりします。
読み込み専用カテゴリには、(カスタムネットワークの)ハイパーパラメータとデータセットがあります。 Hyperparameters タブでは、カスタムネットワークスニペットからアクセス可能な辞書を用意することができます。 例えば、ニューラルネットワーク構造を制御することができます。 Input タブでは、トレーニングデータのソース(および早期停止が有効な場合の検証データ)を指定することができます。
書き込み専用カテゴリには、保存またはエクスポートされたONNXフォーマットのトレーニング済み(または部分トレーニング済み)のモデルがあり、 Models Folder と Model Base Name でファイル名が決定されます。 これらは Output タブにあります。 また、診断情報および進捗情報は、 Log タブで制御します。 ログファイルが存在した場合、その既存ログファイルにログ情報が追記されます。 このログ機能によって、ML Train Regression TOPを複数回呼び出すことで(例えば、TOPフィードバックループ内で呼び出すことで)単一トレーニングが複数パーツに分割された場合でも、単一ログファイルを生成することができます。
読み書きカテゴリには、トレーニングの現行状態を指定することができるパラメータが State タブ下にあります。 これらのパラメータは、部分トレーニングが有効な時に使用されます。 トレーニング状態は、ML Train Regression TOPの1回の呼び出しの開始時に読み込まれ、終了時に書き込まれます。 このトレーニング状態によって、ML Train Regression TOPは前回の呼び出しで中断したところからトレーニングを再開することができます。 このトレーニング状態は、状態名が前回の呼び出し時と同じ場合にのみ有効です。 トレーニング状態はチェックポイントのように機能し、未完了のトレーニングを再開させることができます。
Save Frequency タブや Export Frequency タブにあるコントロールを使用することで、モデルの保存/エクスポートの頻度を制御することができます。 部分トレーニングが無効になっている場合でも、ML Train Regression TOPの1回のクック中に、保存/エクスポートを何回も行なうことができます。
ゼロから再トレーニング ¶
ML Train Regression TOPは、必要な出力ファイルがディスク上に存在しない場合にのみゼロからトレーニングします。 この挙動によって、部分トレーニングのセットアップが可能になります。 必要な出力ファイルには、エクスポートされたONNXモデル、トレーニング状態、トレーニングログが含まれます。 これらのファイルが存在した場合、ML Train Regression TOPはゼロから再トレーニングを行ないません。
ML Train Regression TOPに再トレーニングを行なわせるには、ディスクからそれらの出力ファイルを削除してください。これはTOP UIから削除することができます:
-
ML Train Regression TOPを
クリックして、 Delete this Node’s Output Files from Disk を選択します。
-
単一ワークアイテムの場合は、そのワークアイテムを
クリックして、 Delete File Outputs from Disk を選択します。
ニューラルネットワーク ¶
ML Train Regression TOPを使用すると、コーディング不要でMLPなどの標準的なニューラルネットワークを簡単に利用することができます。 とはいえ、必要に応じて独自のネットワーク構造をプログラミングすることも可能です。 これには、PyTorchライブラリを利用して、数行のPythonコードで構成されたスニペットを1つ以上記述する必要があります。
MLPは、いくつかの全結合層(Fully Connected Layer)で構成されています。 理論上は、常にMLPをトレーニングに使用することができます。 しかし、これは必ずしも実用的ではありません。 入力や出力のサイズが大きい場合、MLPモデルの容量が非常に大きくなってしまいます。 このような大規模なモデルでは、良好な汎化性能を得るために、非常に多くのトレーニングサンプルが必要になります。また、大規模なモデルは、お使いのマシンで利用可能なメモリ容量を超えてしまう可能性があります。
独自のニューラルネットワーク ¶
標準のモデルや標準の損失関数では不十分な場合、独自のモデルや独自の損失関数を作成することができます。 これは、 Network Composition が Partitioned に設定されている場合に適用されます。 さらに柔軟性を高めたいのであれば、 Network Composition を Unified に切り替えることも可能です。 この場合、入力コンポーネントとターゲットコンポーネントを受け取ってスカラー値を出力する独自の統合ネットワークを自由に作成することができます。
Pythonスニペットを記述することで、PyTorchネットワークモジュールを用いて独自のモデル、損失関数、統一ネットワークを作成することができます。 各スニペットのパラメータにはデフォルト値が設定されており、参考値として役立ちます。
各Pythonスニペットは、kwargs辞書にアクセスすることができ、resultという名前の辞書を設定しなければなりません。
Pythonスニペットは、PyTorchライブラリが既にインクルードされているかのように記述することができます。
PyTorchモジュールを使用したニューラルネットワークの作成に関する詳細は、PyTorchのドキュメントを参照してください。
kwargs辞書には、入力シェイプのタプルのinput_shapes、ターゲットシェイプのタプルのtarget_shapes、(独自ネットワークの)ハイパーパラメータの辞書のhyperparametersが格納されています。
Pythonスニペット内では、これらの値を次のように抽出して個別の変数に代入することができます:
input_shapes = kwargs["input_shapes"] target_shapes = kwargs["target_shapes"] hyperparameters = kwargs["hyperparameters"]
input_shapesとtarget_shapesは、どちらもデータセットによって決定されます。
Houdini21では、入力コンポーネントとターゲットコンポーネントの両方が常に平坦化されて連結されるため、input_shapesとtarget_shapesには単一シェイプのみが含まれ、この単一シェイプは単一次元のみを持ちます。
入力コンポーネントの平坦化されて連結された表現では、その入力コンポーネントの(スカラー)要素の総数は常にinput_shapes[0][0]となります。
同様に、ターゲットコンポーネントの平坦化されて連結された表現では、そのターゲットコンポーネントの(スカラー)要素の総数は常にtarget_shapes[0][0]となります。
hyperparameters辞書は、JSONファイルから読み込まれます。
このファイルの場所は、 Hyperparameter Folder パラメータと Hyperparameter Base Name パラメータで指定することができます。
このhyperparameters辞書の内容によって、独自のネットワークの構造を制御することができます。
独自のネットワークを定義するスニペットでは、必ずresult辞書を設定しなければなりません。
このresult辞書では、module_classとmodule_kwargsの両方に値を割り当てなければなりません。
module_classに関連付ける値は、torch.nn.ModuleのサブクラスであるPythonクラスオブジェクトでなければなりません。
例えば、Pythonスニペットでは、このresult辞書は以下のように設定します:
class MyModule(torch.nn.Module): ... my_module_kwargs = ... ... result = {"module_class": MyModule, "module_kwargs": my_module_kwargs}
ここで、my_model_kwargsは、MyModelの構築において有効なキーワード引数にしてください。
制限事項 ¶
SOPおよびROPに含まれているML Train Regression TOPやML Exampleファミリーの教師あり機械学習系ノードは、Houdiniで教師あり機械学習の実験を始めるための手軽な出発点となります。 ML Train Regression TOPの適用範囲は、独自のモデルネットワークや独自の損失関数を任意に作成できるスクリプトオプションを活用することで拡張可能です。 Network Composition の Unified オプションを使用すれば、柔軟性をさらに高め、ML Train Regression TOPをより多くの機械学習用途に適用できるようになります。
カスタマイズを行なっても、ML Train Regression TOPがご自身の用途に対して汎用性が足りないと感じる場合があるかもしれません。
その場合は、$HHP/hutil/ml/regressionにあるこのノードの基盤となるスクリプトを抽出してコピーし、独自トレーニングノードを作成するための出発点としてご利用いただけます。
SOPやROPに存在する教師あり機械学習ツールキットの他の多くのツール(例えばML Exampleオペレーターファミリーなど)は、データセットの準備に引き続き利用することができます。
パラメータ ¶
Network Composition
トレーニングに使用するニューラルネットワークを構成する方法。
Partitioned
ニューラルネットワークは、モデル、損失関数、正則化項という別々の部分で構成されています。 モデルは、各サンプル(バッチ)から入力コンポーネントのみを受け取って、そのモデル出力を返します。 損失関数は、そのモデル出力(バッチ)、サンプル(バッチ)からのターゲットコンポーネントの両方を受け取ります。 正則化項は、そのモデル出力(バッチ)のみを受け取りますが、モデルパラメータにもアクセスすることができます。
Unified
ニューラルネットワークは、サンプル(バッチ)の入力コンポーネントとターゲットコンポーネントを受け取って、損失(バッチ)を出力します。 このオプションは、モデル、損失関数、正則化項を別々のネットワークパーツとして用意するよりも、より高い柔軟性が得られます。
Model Kind
標準モデル(例えば、平均二乗誤差)またはユーザ定義のモデルのどちらかを指定します。
Standard
標準モデルネットワーク。
Custom
ユーザ定義のモデルネットワーク。
Standard Type
標準モデルネットワークのタイプ。
MLP
全結合線形層(Fully Connected Linear Layer)と活性化層(Activation Layer)が交互に配置されたモデルネットワークを作成します。 このネットワークアーキテクチャは、一般的に多層パーセプトロン(Multilayer Perceptron:MLP)と呼ばれています。
Model Module
モデルの作成方法を記述したPythonスクリプト。 詳細は、“独自のネットワーク構造”を参照してください。
Loss Kind
標準損失関数(例えば、平均二乗誤差)またはユーザ定義の損失関数です。
Standard
標準損失ネットワーク。
Custom
ユーザ定義の損失ネットワーク。
Standard Loss Type
特定の標準損失関数です。 現在のところ、平均二乗誤差(MSE)のみをサポートしています。
Loss Module
モデルの作成方法を記述したPythonスクリプト。 詳細は、“独自のネットワーク構造”を参照してください。 これは、バッチ内のサンプルの合計損失ではなく平均損失である必要があります。
Weight Decay
この値が大きいほど、トレーニングセッションはウェイトを小さく保つように試みます(バイアスではなく、ウェイトのみ)。 これは、オーバーフィッティング(過学習)を回避するための非常に基本的な手法です。
Random Seed
ニューラルネットワークのパラメータを初期化するために使用される乱数シード。 シードが異なると、精度の異なるモデルが生成されます。 このハイパーパラメータはWedgeに適しています。
Unified Module
モデルの作成方法を記述したPythonスクリプト。 詳細は、“独自のネットワーク構造”を参照してください。
Shuffle
有効(推奨)にすると、データセットが使用される前にそのデータセットのエレメントがランダム順に並び替わります。 これによって、検証セットにはデータセットからのランダムなサンプルが含まれるようになります。
Shuffle Random Seed
データセット内のサンプルをシャッフルするのに使用される乱数シード。
Limit Size
有効にすると、データセットの初期部分のみが保持されます。
残りのデータは削除されます。
この工程は、データセットがトレーニングに使用される前のシャッフルの直後に実行されます。
このオプションは、トレーニング済みモデルの汎化誤差がデータサイズ(例えば、Wedge TOPの利用)にどのように依存しているのか調べるのに役立ちます。
その結果のカーブは、汎化性能を向上させるためにどれほどのデータが有益であるかどうかを示します。
Upper Limit
保持されるデータセット数の上限を指定します。 残りのデータセットのサイズは、初期データサイズの最小値とこの上限になります。
Enable Partial Training
トレーニング中のワークアイテム毎のエポック数に厳格な上限を適用します。 これは、TOPsのフィードバックループ内でML Train Regression TOPを使用する場合に役立ちます。 そのフィードバックループの反復の度に、このパラメータを使用してエポック数を制限することができます。
Max Epochs (for a single cook)
ML Train Regression TOPの1回のクックにおけるエポック数に対する厳格な上限。 次のクックでは、トレーニングは次のエポックから再開されます。
Enable Validation
有効にすると、データセットがトレーニング部分と検証部分に分割され、それぞれ Training Data Proportion および Validation Data Proportion によって制御されます。 Epochs per Validation エポック毎に検証部分が評価されます。
Training Data Proportion
Enable Early Stopping が有効な場合にのみ適用されます。 これは、モデルのトレーニングに使用されるデータセットの割合です。
Validation Data Proportion
Enable Early Stopping が有効な場合にのみ適用されます。 これは、モデルの性能を検証するのに使用されるデータセットの割合です。 Shuffle が有効な場合、検証セットはデータの末尾にある連続した要素の範囲で構成されます。 Shuffle オプションを有効にすることをお勧めします。 そうしないと、検証セットは通常ではデータセット全体のランダムなサンプルで構成されなくなります。
Epochs per Validation
各検証損失評価の前にトレーニングされるエポック数。
Maximum Epochs Total (over all cooks)
ML Train Regression TOPのすべてのクックにおける最大エポック数。 トレーニングは、このエポック数に達すると終了します。 これは、部分トレーニングが有効になっている場合に最も役立ちます。
Enable Early Stopping
有効にすると、検証セットにおけるモデルの性能が向上しなくなった時点でトレーニングを終了します。
Patience
現行のベストな検証損失の改善が見られずに評価を中止するまでの検証損失が評価される回数。
Note
このパラメータは、エポック数ではなく評価回数で指定します。 評価中にトレーニングされるエポック数を確認するには、 Epochs per Validation パラメータを参照してください。
Algorithm
トレーニング工程で使用する最適化アルゴリズムを決定します。
Adam
Adamアルゴリズムを使用します。 詳細は、PyTorchのドキュメントを参照してください。
Adadelta
ADADELTAアルゴリズムを使用します。 詳細は、PyTorchのドキュメントを参照してください。
SGD
Stochastic Gradient Descent(確率的勾配降下法:SGD)アルゴリズムを使用します。 詳細は、PyTorchのドキュメントを参照してください。
ASGD
Averaged Stochastic Gradient Descent(平均化確率的勾配降下法:ASGD)アルゴリズムを使用します。 詳細は、PyTorchのドキュメントを参照してください。
Learning Rate
トレーニング中のステップサイズを制御します。 ステップサイズが大きいほど、パラメータの更新の間隔も大きくなります。 ステップサイズを小さくすると処理時間は長くなりますが、局所的に最適な解がスキップされるのを防ぐことができます。
Beta1
この係数は、Adam最適化アルゴリズム固有のものです。 PyTorchのドキュメントを参照してください。
Beta2
この係数は、Adam最適化アルゴリズム固有のものです。 PyTorchのドキュメントを参照してください。
Rho
Algorithm が Adadelta に設定されている場合、最適化アルゴリズムで使用されるrho値を決定します。
値が大きいほどトレーニング速度は速くなりますが、安定性が低下する可能性があります。
Momentum
Algorithm が SGD に設定されている場合、モーメンタム値を決定します。 この値はオプションですが、過去の勾配計算が最適化プロセスに影響を与えることを可能にすることで、 学習プロセスの収束を早めるのに役立ちます。 モーメンタム値は、過去の結果が最適化プロセスにどの程度強く影響するかを決定します。
Rate Scheduler
トレーニング工程を通じて学習率を可変させるスケジューラのタイプを決定します。
Cosine Annealing
Cosine Annealing(コサインアニーリング)スケジューリングを使用します。 詳細は、PyTorchのドキュメントを参照してください。
Linear
Learning Rate パラメータで定義された学習率を一定に保ち、その後、トレーニング工程の終盤に向けて0値へと線形に減少させます。
Linear Decay パラメータは、学習率を0まで低下させるために費やすべきトレーニング反復回数を決定します。
Step
一定値の学習率を維持し、 Step 回のトレーニング反復毎に Gamma の倍率で乗算されます。
Exponential
エポック毎に学習率が定数で乗算倍されます。
Linear Decay
Rate Scheduler が Linear に設定されている場合、学習率を0に向けて減衰させるのに要する反復回数を決定します。
例えば、50に設定すると、最後の50回のトレーニング反復において学習率が0に向かって減衰します。
Step Size
Rate Scheduler が Step に設定されている場合、学習率の更新間隔となるトレーニング反復回数を決定します。
Gamma
Rate Scheduler が Step に設定されている場合、スケジューラのステップに到達する度に学習率に適用されるスケール係数を決定します。
Exponential Style
学習率に乗算される定数の指定方法を指定します。
Multiplicative Factor
定数を直接指定します。
End Learning Rate
初期学習率と指定された最終学習率から定数を決定します。
Gamma
Rate Scheduler が Step 、 Exponential Style が Multiplicative Factor に設定されている場合、 これは、各エポック後の学習率に適用されるスケール係数となります。
End Learning Rate
Rate Scheduler が Step 、 Exponential Style が End Learning Rate に設定されている場合、 これは、最終エポック後の学習率がこの指定された終了学習率になるようスケール係数を設定します。
Max Batch Size
各最適化工程においてトレーニングセットからランダムに選択されるラベル付きサンプルの数の上限。 これは、ミニバッチの最大サイズとなります。
Hyperparameter Folder
ニューラルネットワークの仕様および作成スクリプトで利用可能な(独自ネットワークの)ハイパーパラメータを保存するJSONファイルが含まれているソースフォルダ。
Hyperparameter Base Name
ハイパーパラメータファイルのベース名(.json拡張子を除く)。
Data Set Folder
1つ以上のデータセットが含まれているソースフォルダ。
Data Set Base Name
データセットのベース名(.raw拡張子を除く)。
Models Folder
トレーニングされたモデルの保存先フォルダ。
Model Base Name
トレーニングされたモデルのベース名(.onnx拡張子を除く)。
Logs Folder
1つ以上のトレーニングログが格納されるフォルダ。
Log Base Name
トレーニングログのベース名(.txt拡張子を除く)。
States Folder
トレーニングノードがトレーニング状態を保存する保存先フォルダ。
State Base Name
トレーニング状態のベース名(拡張子を除く)。 これは、トレーニングノードが再開される状態です。
Model Save Event
トレーニング中にモデルが保存されるイベントのタイプ。
Never
モデルはトレーニング中に保存されません。 最終モデルのみが保存されます。
Per Epoch
改善の有無にかかわらず、モデルを保存することができます。
Per Improvement
モデルが改善された場合にのみ保存することができます。
Model Save Epochs per Output
2回の保存の間隔の最小エポック数。 このパラメータの設定にかかわらず、最終モデルは常に保存されます。
Model Save Epochs per Output
モデル保存イベントをチェックする間隔となるエポック数。
Model Save Append Epoch to Name
モデル保存イベントをチェックする間隔(エポック数)。
Model Export Event
トレーニング中にモデルがエクスポートされるイベントのタイプ。
Never
モデルはトレーニング中にエクスポートされません。 最終モデルのみがエクスポートされます。
Per Epoch
改善の有無にかかわらず、モデルをエクスポートすることができます。
Per Improvement
モデルが改善された場合にのみエクスポートすることができます。
Model Export Epochs per Output
2回のエクスポートの間隔の最小エポック数。 このパラメータの設定にかかわらず、最終モデルは常にエクスポートされます。
Model Save Epochs per Output
モデルエクスポートイベントをチェックする間隔となるエポック数。
Model Save Append Epoch to Name
モデルエクスポートイベントをチェックする間隔(エポック数)。
Parameter Storage
エクスポート時に、トレーニング済みモデルのパラメータを保存する場所。
Same File
トレーニング済みモデルのパラメータは、ONNXファイル内に保存されます。 これは、2GB未満のモデルでのみ機能します。
Same Directory
トレーニング済みモデルのパラメータは、ONNXファイルと同じディレクトリ内の別のファイルに保存されます。 これは、2GBを超えるモデルをエクスポートする際に必要です。
Loss Log Event
トレーニング中に損失をログに記録するイベントのタイプ。
Never
損失はトレーニング中に記録されません。
Per Epoch
各エポック終了後に損失が記録されます。
Per Batch
各ミニバッチの後に損失が記録されます。
Log to Standard Output
有効にすると、トレーニング中に情報が標準出力に書き込まれます。 これによって、ログファイルに同じ情報の書き出しが停止されるわけではありません。
Use CPU Exclusively
有効にすると、トレーニング全体がGPUを使用せず、CPU上で実行されます。 処理が非常に遅くなるため、これは推奨しません。 このオプションはデバッグ目的で用意されています。
Cache Mode
ワークアイテムから目的のファイル結果がレポートされるように、プロセッサノードがそのワークアイテムを制御する方法を決めます。
Automatic
目的の結果ファイルがディスク上に存在すれば、そのワークアイテムはスケジュールに組まれずにクック済みとマークされます。 そのファイルが 存在しなければ 、そのワークアイテムは通常どおりにスケジュールに組まれます。 上流のワークアイテムの依存関係がクック中に新しいファイルを書き出す場合、このノード内のワークアイテムのキャッシュファイルもout-of-date(古い)としてマークされます。
Automatic (Ignore Upstream)
Automatic と同様ですが、上流のファイルの書き込みは、このノード内のワークアイテムのキャッシュファイルを 無効にしません 。 そして、このノードは自身のワークアイテムの出力ファイルのみをチェックします。
Read Files
目的の結果ファイルがディスク上に存在すれば、そのワークアイテムはスケジュールに組まれずにクック済みとマークされます。 そのファイルが存在しなければ、そのワークアイテムは失敗とマークされます。
Write Files
目的の結果ファイルがディスク上に存在していても、ワークアイテムが常にスケジュールに組まれ、その目的の結果ファイルを無視します。
Environment Path
このノードの内部トレーニングスクリプトが実行されるPython仮想環境のパス。
Use Pip Cache
有効にすると、pipは、パッケージを毎回ダウンロードするのではなく、ローカルシステム上にキャッシュされたパッケージの使用を試みるようになります。 これによって、異なる仮想環境で同じPythonパッケージを繰り返しインストールする際のインストール時間を短縮することができます。
TOP Scheduler Override
このパラメータは、このノードのTOPスケジューラを上書きします。
Schedule When
有効にすると、このパラメータを使用して、このノードのどのワークアイテムをスケジュールに組むのかを決めるエクスプレッションを指定することができます。 そのエクスプレッションが指定されたワークアイテムに対して0を返すと、そのワークアイテムはスケジューラに組まれずに、即座にクック済みとしてマークされます。 そのエクスプレッションが0以外の値を返すと、そのワークアイテムは従来どおりにスケジュールに組まれます。
Work Item Label
このノードがワークアイテムにどのようにラベルを付けるのかを決めます。 このパラメータによって、固有でないラベル文字列をワークアイテムに割り当てることができ、そのラベルを使用してアトリビュートパネル、タスクバー、スケジューラジョブ名のワークアイテムを区別することができます。
Use Default Label
このノード内のワークアイテムは、TOPネットワークからデフォルトのラベルを使用します。 デフォルトが設定されていない場合は、それらのワークアイテムにはラベルは付きません。
Inherit From Upstream Item
ワークアイテムは親ワークアイテムのラベルを継承します。
Custom Expression
ワークアイテム毎に評価される Label Expression カスタムエクスプレッションをワークアイテムのラベルに設定します。
Node Defines Label
ワークアイテムのラベルをこのノードの内部ロジックで定義します。
Label Expression
有効にすると、このパラメータを使用して、このノードで作成されたワークアイテムに独自のラベルを指定することができます。
このパラメータには、ワークアイテムアトリビュートの参照またはビルトインのプロパティを含めたエクスプレッションを使用することができます。
例えば、$OS: @pdg_frameは、フレーム値に基づいて各ワークアイテムのラベルを設定します。
Work Item Priority
このパラメータは、現行スケジューラがこのノード内のワークアイテムの優先度を設定する方法を決めます。
Inherit From Upstream Item
ワークアイテムは、親ワークアイテムの優先度を継承します。ワークアイテムに親ワークアイテムがなければ、その優先度は0に設定されます。
Custom Expression
ワークアイテムの優先度は、 Priority Expression の値に設定されます。
Node Defines Priority
ワークアイテムの優先度は、このノード自身の内部優先度計算に基づいて設定されます。
このオプションは、
Python Processor TOP,
ROP Fetch TOP, ROP Output TOPのノードでのみ利用可能です。
これらのノードは、各自のノードロジックで実装された優先度設定スキームを定義しています。
Priority Expression
このパラメータには、ワークアイテムの優先度を設定するためのエクスプレッションを指定します。 このエクスプレッションは、ノード内のワークアイム毎に評価されます。
このパラメータは、 Work Item Priority が Custom Expression に設定されている場合にのみ利用可能です。
| See also |