ベクターカプセルネットワークレイヤー

ダイナミックルーティングを使用したベクターカプセルネットワークでのレイヤー実装。 NeoPulse®を使用してベクトルカプセルネットワークを構築するためのチュートリアルは こちらです。

PrimaryCaps_Vector

PrimaryCaps_Vector:[channels=32, capsule_dim=16, kernel_size=9, strides=2, padding='valid', kernel_initializer='glorot_uniform', bias_initializer='zeros']

動的ルーティングを使用したベクトル カプセル ネットワークのプライマリキャップ レイヤ。

このレイヤーは、畳み込みレイヤーによって検出された基本フィーチャを取得し、フィーチャの組み合わせを生成し、フィーチャをベクター カプセルにグループ化します。これは、畳み込み、形状変更、およびスカッシュの3つの異なるプロセスを使用して達成され、スカッシュ機能は、各カプセルベクトルの長さが1から0の間であることを確認します。カプセルベクターの高い次元にある位置情報を破壊することはありません。

引数

  • channels: 整数。各空間ポイントにおける出力カプセルの数で、畳み込みレイヤー内のフィルターの数と同様である。

  • capsule_dim: 整数。各出力ベクトルカプセルの次元。

  • kernel_size: 畳み込みプロセスのカーネル サイズを指定する整数または単一整数のリスト。

  • strides: 整数または単一整数のリストで、畳み込みプロセスのストライドを指定します。

  • padding: ”valid"または"same"のいずれか。畳み込みプロセスのパディングパターン。

  • kernel_initializer: Specifying the kernel initializer type for Convolution process.(see keras initializer)

  • bias_initilaizer: 畳み込みプロセスのカーネルイニシャライザータイプを指定する。(keras initializerを参照)

入力シェープ:

4D tensor of shape [batch, height, width, input_channels]

出力シェープ:

3D tensor of shape [batch, num_capsule, capsule_dim]

DigitCaps

DigitCaps:[num_capsule, capsule_dim, routings=3, kernel_initializer='glorot_uniform']

ダイナミック ルーティングを使用したベクトル カプセル ネットワークの DigitCaps レイヤ。

このレイヤーは、プライマリ カプセルが (動的ルーティングを使用して) ルーティングする上位レベルのカプセル 層です。DigitCap は、密度の高いレイヤーの同様の拡張にすぎません。スカラーと出力スカラーを取る代わりに、ベクターカプセルと出力ベクトルカプセルを取ります。

引数

  • num_capsule: 整数、出力カプセルベクトルの数。

  • capsule_dim: 整数、出力カプセルベクトルの次元。

  • routings: 動的ルーティング アルゴリズムの反復回数を整数で指定します。

  • kernel_initializer: 変換行列の初期化子型を指定します。(keras initializerを参照)

入力シェープ:

3D tensor of shape [batch, input_numb_capsule, input_dim_capsules]

出力シェープ:

3D tensor of shape [batch, num_capsule, capsule_dim]

ClassCaps

ClassCaps:[num_capsule]

カプセル ベクターの長さを計算します。

引数

  • num_capsule: 整数、入力カプセルベクトルの数。これはクラスの数に同じです。

入力シェープ:

3D tensor of shape [batch, num_capsule, capsule_dim]

出力シェープ:

2D tensor of shape [batch, num_capsule]

Squash

Squash:[axis=-1]

ベクターカプセルネットワークで使用される非線形アクティベーション。大きなベクトルの長さを 1 に近くし、小さいベクトルを 0 に駆動します。

:"PrimaryCaps_Vector"と「DigitCaps」レイヤーには、このプロセスが含まれています。"PrimaryCaps_Vector" と "DigitCaps" を使用する場合は、"Squash"はアーキテクチャに個別に記載する必要はありません。

引数

  • axis: 整数:スカッシュする軸。

入力シェープ:

Arbitrary.

出力シェープ:

Same shape as input.

MaskCaps

MaskCaps:[]

最大長のカプセルまたは追加の定型入力によって、shape=[None, num_capsuledim_vector] でテンソルをマスクします。最大長カプセル(または指定されたカプセル)を除き、すべてのベクトルはゼロにマスクされます。その後、マスクされたテンソルを平らにします。

入力シェープ:

3D tensor of shape [batch, num_capsule, capsule_dim]

optional 2D Mask of shape [batch, num_capsule]

出力シェープ:

2D tensor of shape [batch, num_capsule * capsule_dim]

マトリックス カプセル ネットワーク レイヤー

[EM ルーティングを使用したマトリックス カプセル ネットワーク] (https://openreview.net/pdf?id=HJWLfGWRb)でのレイヤー実装。NeoPulse®を使用してマトリックスカプセルネットワークを構築するためのチュートリアルは こちらです。.

PrimaryCaps_Matrix

PrimaryCaps_Matrix:[channels=32, pose_size=4, kernel_size=1, strides=1, padding='valid', kernel_initializer='glorot_uniform', bias_initializer='zeros']

EM ルーティングを使用したマトリックス カプセル ネットワークのPrimaryCapsレイヤ。

このレイヤーは、畳み込みレイヤーによって検出された基本フィーチャを受け取り、畳み込みフィルター (通常の場合 1x1) を適用して、基本フィーチャをプライマリ カプセルに変換します。各カプセルには、ポーズマトリックス(多くの場合4x4)とアクティベーション値が含まれています。PrimaryCaps を実装するために、通常の畳み込みレイヤーを使用します。

引数

  • channels: 整数。各空間ポイントにおける出力カプセルの数で、畳み込みレイヤー内のフィルターの数と同様である。

  • pose_size: カプセルのポーズ行列のサイズを指定する整数または単一の整数のリスト。

  • kernel_size:整数または単一の整数のリストで、畳み込みプロセスのkernel_sizeを指定します。

  • strides: 整数または単一の整数のリストで、畳み込みプロセスのストライドを指定します。

  • padding: "valid"または"same"のいずれか。畳み込みプロセスのパディングパターンです。

  • kernel_initializer: 畳み込みプロセスのカーネルイニシャライザータイプを指定する。keras initializerを参照。

  • bias_initializer: 畳み込みプロセスのバイアスイニシャライザーの種類を指定します。keras initializerを参照。

入力シェープ:

4D tensor of shape [batch, input_height, input_width, input_channel]

出力シェープ:

pose: 6D tensor of shape [batch, output_height, output_width, channels, pose_height, pose_width]

activation [batch, output_height, output_width, channels]

ConvCaps

ConvCaps:[channels, kernel_size, strides, routings=3, kernel_initializer='glorot_normal']

EMルーティングを用いたマトリックスカプセルネットワークの畳み込みカプセル層

ConvCaps入力および出力カプセルとして受けます。ConvCaps は通常の畳み込み層に似ていますが、EM ルーティングを使用してカプセル出力を計算する点が異なります。

引数

  • channels: 整数。各空間ポイントにおける出力カプセルの数で、畳み込みレイヤー内のフィルターの数と同様である。

  • kernel_size: カプセル畳み込みプロセスのkernel_sizeを指定する整数または単一整数のリスト。

  • strides: カプセル畳み込みプロセスのストライドを指定する整数または単一整数のリスト。

  • routings: 整数。EM ルーティング アルゴリズムの反復回数を指定します。

  • kernel_initializer: EM ルーティング パラメータのカーネルイニシャライザータイプを指定します。 (keras initializerを参照。)

入力シェープ:

pose: 6D tensor of shape [batch, input_height, input_width, input_channels, input_pose_height, input_pose_width]

activation: 4D tensor of shape [batch, input_height, input_width, input_channels]

出力シェープ:

pose: 6D tensor of shape [batch, output_height, output_width, channels, pose_height, pose_width]

activation [batch, output_height, output_width, channels]

ClassCaps

ClassCaps:[num_capsule, routings=3, kernel_initializer='glorot_normal']

EMルーティングを備えたマトリックスカプセルネットワーク用のクラスカプセルレイヤー。

このレイヤーは、EM ルーティングを使用して ConvCaps の機能を統合し、クラスごとに 1 つのカプセルを出力します。

引数

  • num_capsule: 整数。出力カプセルの数。クラスの数と同じ。

  • routings: 整数。EM ルーティング アルゴリズムの反復回数を指定します。

  • kernel_initializer: 整数。EM ルーティング アルゴリズムの反復回数を指定します。keras initializerを参照。

入力シェープ:

pose: 6D tensor of shape [batch, input_height, input_width, input_channels, input_pose_height, input_pose_width]

activation: 4D tensor of shape [batch, input_height, input_width, input_channels]

出力シェープ:

pose: 4D tensor of shape [batch, num_capsule, pose_height, pose_width]
activation 2D tensor of shape: [batch, num_capsule]

画像検出レイヤー

画像検出器問題のレイヤー実装. NeoPulse®を使用してSSDモデルを構築するためのチュートリアルは こちらです。

アンカーボックス

AnchorBoxes:[img_height, img_width, this_scale, next_scale, aspect_ratios=[0.5, 1.0, 2.0], two_boxes_for_ar1=True, this_steps=None, this_offsets=None, clip_boxes=True, variances=[0.1, 0.1, 0.2, 0.2], coords=None, normalize_coords=True]

入力テンソルと渡された引数に基づいてアンカーボックスの座標とその分散を含む出力テンソルを作成するレイヤー。

入力テンソルの空間単位ごとに、異なるアスペクト比の 2D アンカー ボックスのセットが作成されます。ユニットごとに作成されるアンカーボックスの数は、引数 aspect_ratiostwo_boxes_for_ar1, に依存します(デフォルトの場合は 4)。ボックスは、座標タプル (xmin, xmax, ymin, ymax)によってパラメーター化されます。.

引数

  • img_height: 整数、入力イメージの高さ。

  • img_width: 整数、入力イメージの幅。

  • this_scale: [0, 1] の浮動小数点数で、生成されたアンカー ボックスのサイズのスケーリング係数を、入力イメージの短辺の割合として指定します。

  • next_scale: [0, 1] の浮動小数点数で、次の大きなスケールファクターを指定します。次の場合のみ関連します。self.two_boxes_for_ar1 == True.

  • aspect_ratios: 浮動小数点数のリストで、このレイヤーに対してデフォルト ボックスが生成される縦横比のリスト。

  • two_boxes_for_ar1: Bool は aspect_ratios に 1 が含まれている場合にのみ関連します。 Trueの場合、縦横比 1 に対して 2 つの既定のボックスが生成されます。1つ目は各レイヤーのスケーリング係数を使用して生成されます。2番目のレイヤーは前記のスケーリング係数と次に大きなスケーリング係数の幾何学的平均を使用して生成されます。

  • this_step: 単一の整数、浮動小数点数、または 2 つの整数か浮動小数点数のリスト。ステップピクセル値、つまりアンカーボックスの中心点が垂直方向と水平方向にどの距離離れているか。デフォルト値は次の値 [image_height/feature_map_height, image_width/feature_map_width]です。

  • this_offsets: 単一の整数、浮動小数点数、または 2 つの整数か浮動小数点数のリスト。オフセットピクセル値、つまり、最初のアンカーボックスの中心点が画像の上と左から得られるピクセル値。デフォルト値は次の値[0.5, 0.5]です。

  • clip_boxes: ブール。もし Trueの場合、アンカー ボックスの座標をクリップしてイメージの境界内に収めます。

  • variances: 4 つの正の浮動小数点数のリスト。各座標のアンカー ボックスオフセットがそれぞれの分散値で除算されます。

  • coords: 文字列、モデル内で内部的に使用されるボックス座標形式(つまり、これはグラウンドトゥルースラベルの入力形式ではありません)。形式 (cx, cy, w, h) (ボックスの中心座標、幅、および高さ)のおよび高さ)の ' centroids '、形式 '(xmin,ymin, xmax, ymax)' の ' corners ' または形式 '(xmin, xmax, ymin, ymax)' のいずれかです。

  • normalize_coords: ブール。モデルが絶対座標の代わりに相対座標を使用する場合、つまり、モデルが絶対座標ではなく [0,1] 内のボックス座標を予測する場合はTrueに設定します。

入力シェープ

    4D tensor of shape [batch, height, width, channels]

出力シェープ:

    5D tensor of shape [batch, height, width, n_boxes, 8]. The last axis contains
    the four anchor box coordinates and the four variance values for each box.

L2Normalization正規化

L2Normalization:[gamma_init=20]

論文 "Parsenet: より良く見るために広く見える" で説明されているように、入力テンソル上で L2 正規化を元の SSD modelと同じように実行します

引数

  • gamma_init: 整数、初期スケーリング パラメータ。

入力シェープ

4D tensor of shape [batch, height, width, channels]

出力シェープ:

The scaled tensor. Same shape as the input tensor.

教師なし学習レイヤー

NeoPulse®を使用して教師なし学習モデルを構築するため。チュートリアルは こちら です。

Kmeans

Kmeans:[n_clusters=8, init='k-means++', max_iter=100, batch_size=100, verbose=0, compute_labels=True, random_state=None, tol=0.0, max_no_improvement=10, init_size=None, n_init=3, reassignment_ratio=0.01, precompute_distances='auto', copy_x=True, n_jobs=None, algorithm='auto', batch=False]

Kmeans は、教師なし学習用のクラスタリングレイヤー。2つのフィッティングモードがサポートされ、データは一度にフィードインすることも、まとめてバッチでフィードインすることもできます。

引数

  • n_clusters: 整数、形成するクラスターの数、および生成する図心の数。

  • init: {'k-means++', 'random' or an ndarray}, 初期化のメソッド。デフォルトで 'k-means++' に設定されます。

    • 'k-means++' : 収束を高速化するスマートな方法で、k-meanクラスタリングの初期クラスタ中心を選択します。詳細については、「k_init の注」を参照してください。

    • 'random': 最初の重心のデータからランダムにk観測値(行)を選択します。

    • ndarray: ndarray が渡された場合、その配列は形状 (n_clusters、n_features) であり、初段階の中心点を示します。

  • max_iter: 整数。1実行時ごとにおける k-means アルゴリズムの反復回数です。

  • batch_size: 整数、'batch=True'時のみに該当する。ミニバッチのサイズ。

  • verbose: ブール、冗長性モード。

  • compute_labels: ブール.'batch=True'の場合にのみ該当する。ミニバッチ最適化が適切に収束した後、完全なデータセットのラベル割り当てと慣性を計算します。

  • random_state: 整数、RandomState インスタンスまたはなし。中心点の初期化とランダム再割り当ての乱数の生成を決定します。int を使用して、ランダム性を決定論的なものにします。

  • tol: 浮動小数点。収束を宣言する慣性に関する相対許容誤差。

  • max_no_imporovement:整数。batch=True,の場合にのみ該当する。平滑化慣性の向上を生じない連続した数のミニバッチに基づいて早期停止を制御する。

  • init_size:整数。batch=True,、初期化を高速化(時には正確さを犠牲にして)するためにランダムにサンプリングするサンプルの数。唯一のアルゴリズムは、データのランダムなサブセットに対してバッチKMeansを実行することによって初期化される。これはn_clustersよりも大きくする必要があります。

  • n_init: 整数

    batch=Falseの場合、k-meansアルゴリズムが異なる中芯点のシードで実行される回数です。最終的な結果は、慣性の面で連続n_init実行の最高の出力になります。

    When batch=Trueの場合、試行されるランダムな初期化の数です。 batch=False とは対照的に、アルゴリズムは慣性によって測定されるn_init初期化の最良を使つかい一度だけ実行されます。

- reassignment_ratio: 浮動小数点。再割り当てするセンターの最大カウント数の割合を制御します。値が高いほど、低いカウント センターがより簡単に再割り当てされ、モデルの収束に時間がかかりますが、より適切なクラスタリングに収束します。

  • precompute_distances: {‘auto’, True, False}, batch=Falseの場合にのみ関連し、距離を事前に計算します (より高速ですが、より多くのメモリを必要とします)。

    • ‘auto’ : n_samples * n_clusters > 12 millionの場合は距離を事前に計算しません。これは、倍精度を使用したジョブあたり約 100MB のオーバーヘッドに対応します。

    • True : 常に距離を事前計算する

    • False : 距離を事前に計算しない

  • copy_x: ブール。batch=Falseの場合にのみ該当し、事前に距離を計算する場合、最初にデータを中央に配置する方が数値的に正確です。copy_xが True (既定値) の場合、元のデータは変更されず、X は C の連続性を持ちます。False の場合、元のデータが変更され、関数が返される前に戻されますが、データの平均を減算して加算することで小さな数値の違いが生じる可能性があり、大幅な減速を起こすかもしれない。

  • n_jobs: 整数。batch=False、計算に使用するジョブの数にのみ該当します。これは、各n_init実行を並列に計算することによって機能します。「None」は、joblib.parallel_backend コンテキストでない限り 1 を意味します。-1 は、すべてのプロセッサーを使うことです。

  • algorithm: {“auto”, “full” or “elkan”}, batch=FalseK-meansアルゴリズムが使用するときの場合にのみ該当する。古典的なEM形式のアルゴリズムは“full”です。“elkan”のバリエーションは、三角不等式を使用することでより効率的ですが、現在はスパースデータをサポートしていません。“auto”は、高密度データの場合は“elkan”、 スパースデータの場合は“full”を選択します。

  • batch: ブール、フィッティングモード、'batch=True'の場合、データはバッチでフィードされます。'batch=False' の場合、データは一度にフィードされます。

入力シェープ

2D tensor of shape [batch, dim]

出力シェープ

1D tensor of shape [batch]

Pca

Pca:[n_components=None, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None, batch_size=None, batch=False]

教師なし学習のための PCA 分解層。2 つのフィッティング モードがサポートされており、データは一度にフィードするか、バッチでフィードすることができます。

引数

  • n_components: 整数、保持するコンポーネントの数。

  • copy:ブール、False の場合、X は上書きされます。

  • whiten: ブール

whiten=True の場合、components_ vectorsは n_samples の平方根で乗算され、単数形の値で除算されて、単位成分の分散を持つ非相関出力を確保します。

ホワイトニングは変換された信号(コンポーネントの相対分散スケール)から一部の情報を削除しますが、データがハードワイヤードされた仮定を尊重することで、下流の推定値の予測精度を向上させることができます。

  • svd_solver: string, {‘auto’, ‘full’, ‘arpack’, ‘randomized’}, 当該する場合にのみ batch=False.

    • auto : X.shape と n_components に基づくデフォルトのポリシーによってソルバが選択されます: 入力データが 500x500 より大きく、抽出するコンポーネントの数がデータの最小次元の 80% 未満の場合、より効率的な 「ランダム化」 方式が有効になります。それ以外の場合は、完全な SVD が計算され、必要に応じて後で切り捨てられます。

    • full : scipy.linalg.svdを介して標準LAPACKソルバーを呼び出して正確に全てのSVDを実行し、後処理によってコンポーネントを選択します

    • arpack : SVD を実行すると、spy.sparse.linalg.svds を介して ARPACK ソルバーを呼び出してn_componentsに切り捨てられます。厳密には 0 < n_components < min(X.shape) が必要です。

    • randomized : Halkoらの方法によってランダム化されたSVDを実行する。
  • tol: Float >= 0, batch=Falseの場合にのみ当該します。svd_solver == ‘arpack’.で計算された特異値の許容値。

  • iterated_power: 整数 >= 0、または 'auto' はbatch=False の場合にのみ当該します。svd_solver == ‘randomized’によって計算された累乗法の反復回数。

  • random_state: 整数、ランダム状態インスタンス、または batch=Falseは[None] を指定します。

    整数の場合、random_stateは乱数ジェネレーターで使用されるシードです。RandomState インスタンスの場合、乱数ジェネレーターrandom_stateです。なしの場合、乱数ジェネレーターは、np.random によって使用される RandomState インスタンスです。svd_solver == ‘arpack’ or ‘randomized’ときに使用されます。

  • batch_size: 整数またはなし、batch=True の場合にのみ当該します。各バッチで使用するサンプルの数。batch_sizeが None の場合、batch_sizeはデータから推論され、5 * n_featuresに設定され、近似精度とメモリ消費量のバランスが取れます。

  • batch:ブール、フィッティングモード、'batch=True'の場合、データはバッチでフィードされます。batch=False の場合、データは一度にフィードされます。

入力シェープ

2D tensor of shape [batch, dim]

出力シェープ

2D tensor of shape [batch, n_components]

UnsupervisedFlatten

UnsupervisedFlatten:[]

教師なし学習でサンプルの形状を1Dベクトルに平坦化します。

入力シェープ

Arbitrary.

出力シェープ

2D tensor with shape [batch, flatten_dim]