ダイレクトヒント

ダイレクトヒントは、モデルを微調整するときにオラクルを指定するために使用されます。

オラクルとのすべてのタイプの直接通信は、auto キーワードを使用して行われます。このキーワードは、アーキテクチャ, ソース, トレーニング,およびブロック コンストラクト内で直接使用されます。 ダイレクトヒントには暗黙的ヒント明示的ヒントの 2 種類があります。

暗黙的なダイレクトヒント:

暗黙的に指示する auto は、現在、アーキテクチャを記述するためにのみ実装され ( アーキテクチャブロック コンストラクト内), それ以外では機能しません。

ネットワークの場合、暗黙的な autoには次の 3 つの形式があります。:

  • Full Auto: 完全auto:アーキテクチャコンストラクトのニューラルフロー宣言の内部では、アーキテクチャを定義する代わりにauto キーワードを使用できます。これにより、オラクルは、使用するアーキテクチャを自動的に把握するように指示します。

    例:

    x -> auto -> y

NOTE: これは アーキテクチャコンストラクトのみ使用できます。

注: 現在、これは oracle("mode") = "classification" タスクに対してのみ実装されています。AI oracle が生成した他のタスク用のアーキテクチャは、間もなく公開される予定です。

  • 呼び出しレベルの Auto:呼び出しレベルautoは、アーキテクチャの特定の層に使用するパラメーター値を自動的に決定するように oracle に指示します。
  • オラクルはoracle("complexity")oracle("regularization") ヒントだけではなく、 oracle("generated")ヒントで指定されたモデルの数に基づいてパラメータを選択します。

    例:

    x -> Convolution2D: auto -> y

注: : This can be used in either アーキテクチャ 又は ブロック コンストラクトのいずれかで使用できます。

  • パラメータ レベルのauto: パラメータ レベルautoは、単一の特定のパラメータの有効なパラメータ範囲を Oracle にクエリします。

例:

```
x -> Convolution2D: [nb_filter = 128, nb_row = auto, nb_col = auto] -> y
```

注: これはアーキテクチャ 又はブロック コンストラクトのいずれかで使用できます。

明示的なダイレクトヒント:

明示的な auto は任意のレベルで動作し、どのコンストラクトにも制限されません。明示的 auto を使用すると、ユーザーは任意のタイプのハイパーパラメーターを選択するために oracle に対する確率分布を指定できます。これらの分布を指定するには、choicedistribution構文の 2 つの方法があります。

choice構文

これにより、ハイパー パラメーターの領域を列挙するときに、指定した確率値で、特定のパラメーターの異なる特定の値を選択するように Oracle に指示します。

構文:

auto(a ? b ? ... ? z, probabilities=[P(a), P(b) ... P(z)], | name="parameter_name")

たとえば、ユーザーは、下記のいずれかの方法で、Oracle が畳み込み2D レイヤーのnb_filterパラメーターのハイパーパラメーターを選択することを指定できます。

  • 同じ確率値で値 512 と 1024 をサンプリングするようにオラクルに指示します。

    Convolution2D: [nb_filter=auto(512 ? 1024)]

  • 2 つの値に等しい確率値を割り当て、ハイパー パラメーターに名前を付けることを Oracle に指示します。(listを使用する場合にハイパーパラメーターの選択肢を識別するため)。

    Convolution2D: [nb_filter=auto(512 ? 1024 | name="nb_filter1")]

  • 確率値が 0.1 と 0.9 のnb_filter パラメーターの値 512 と 1024 をそれぞれサンプリングするように Oracle に指示します。

    Convolution2D: [nb_filter=auto(512 ? 1024, probabilities=[0.1, 0.9])]

  • 確率 0.1 と 0.9 を持つnb_filter パラメーターの値 512 と 1024 をそれぞれサンプリングし、ハイパー パラメーターの名前を指定するように Oracle に指示します (CLI でlistを使用する場合に表示されます)。

    Convolution2D: [nb_filter=auto(512 ? 1024, probabilities=[0.1, 0.9] | name="nb_filter1")]

ディストリビューション構文:

これは、既知の確率分布からハイパーパラメータ値をランダムにサンプリングするようにオラクルに指示します。

例: 下限が 10 で上限が 100 の均一分布からnb_filterパラメーターを整数としてサンプリングします。

Convolution2D: [nb_filter=auto(dist="uniform", low=10, high=100, cast="int" | count=10, name="hello")]

注: 現在実装されているのは、一様分布のみです。今後、さらに追加される予定です。

cast パラメーターは、分布からのサンプルの型 (浮動小数点または整数) を指定します。このパラメーターは必須です。

countパラメーターが指定されていない場合、oracle が分布から選択するサンプルの数を決定します。この値は、次の間接ヒント を設定することで変更できます (既定値は 3)。

oracle("default_sample_rate") = 3