ブロックコンストラクト

ブロックコンストラクトは、入力、出力、およびニューラルフローブロックを必要としアーキテクチャーコンストラクトに似ています。ただし、ユーザーは定義しているレイヤーに渡すパラメーターを定義できる '''params'' ブロックも含まれています。残余 ID ブロック (ResNet のコンポーネントの 1 つ) を定義する次の例を考えてみます。

block: residual_identity_block
  input: in ;
  output: out ;
  params: k, nbf1, nbf2, nbf3 ;

  in -> Conv2D: [nbf1, 1]
    -> BatchNormalization: []
    -> Activation: ['relu'] -> x

  x -> Conv2D: [nbf2, k, padding='same']
    -> BatchNormalization: []
    -> Activation: ['relu'] -> x

  x -> Conv2D: [nbf3, 1]
    -> BatchNormalization: []
    -> x

  [x, inp] -> Merge: [mode="sum"]
           -> Activation: ['relu']
           -> out ;

入力ブロックと出力ブロックは、 residual_identity_block レイヤーへの入力と出力を表す変数を定義するだけです。

params ブロックは、このブロックを呼び出すときに指定する必要がある 4 つのパラメーターを定義します。

params: k, nbf1, nbf2, nbf3;

ニューラルフローはアーキテクチャコンストラクトと同じ方法で定義されます。

このブロックは.nmlスクリプトに保存し、 import キーワードを使用してトレーニングスクリプトにインポートできます。

import "/DM-Dash/library/res_identity.nml"

このレイヤーは、パラメーターの値を指定して、アーキテクチャのニューラルフローで使用されます。

-> residual_identity_block[3, 64, 256, 128] ->