畳み込み/プーリング(Convolution and Pooling)

models モジュールの、畳み込みやプーリングなどのフィルタ演算を行うモデルです。

Convolution2d クラス

class binarybrain.models.Convolution2d(sub_layer, filter_size=(1, 1), stride=(1, 1), *, input_shape=None, padding='valid', border_mode='reflect_101', border_value=0.0, name=None, fw_dtype=DType.FP32, bw_dtype=DType.FP32)

ベースクラス: Sequential

Convolution class

Lowering による畳み込み演算をパッキングするクラス

sub_layer で指定した演算レイヤーを畳み込み計算するためのモデル 例えば sub_layer に DenseAffineレイヤーを指定すると一般的なCNN用の畳み込み層となるが、 BinaryBrain ではここに DifferentiableLut モデルを組み合わせて作った複合レイヤーを 指定することでFPGA化に適した畳み込み層を学習させることができる。

sub_layer で指定したサブレイヤーが im2col と col2im で挟み込まれ、一般に Lowering と呼ばれる方法で畳み込み演算が実行される

パラメータ
  • sub_layer (Model) -- 畳み込みを行うサブレイヤー(このレイヤが im2col と col2im で挟み込まれる)

  • filter_size ((int, int)) -- 2次元のタプルでフィルタサイズを指定する

  • stride ((int, int)) -- 2次元のタプルでストライドサイズを指定する

  • batch_norm (bool) -- BatchNormalization を有効にするか

  • padding (str)) -- パディングの方法を 'valid' と 'same' で指定する

  • border_mode (Border)) -- 'same' 時のボーダー処理を指定する

  • border_value (float) -- 'same' 時のボーダー処理が CONSTANT の場合にパディング値を指定する

  • fw_dtype (DType)) -- forwarする型を bb.DType.FP32 と bb.DType.BIT から指定

backward(dy_buf)

Backward

モデルは学習の為に backword メソッドを持つ 必ず forwad と対で呼び出す必要があり、直前の forward 結果に対する 勾配計算を行いながら逆伝搬する

BinaryBrain は自動微分の機能を備えないので、backword の実装は必須である

パラメータ

dy_buf (FrameBuffer) -- 入力データ

戻り値

出力データ

戻り値の型

dx_buf (FrameBuffer)

dumps()

バイトデータにシリアライズ

モデルのデータをシリアライズして保存するためのバイト配列を生成

戻り値

Serialize data

戻り値の型

data (bytes)

forward(x_buf, train=True)

Forward

モデルは学習および推論の為に forward メソッドを持つ

train 変数を

パラメータ
  • x_buf (FrameBuffer) -- 入力データ

  • train (bool) -- Trueで学習、Falseで推論

戻り値

出力データ

戻り値の型

y_buf (FrameBuffer)

loads(data)

バイトデータをロード

モデルのデータをシリアライズして復帰のバイト配列ロード

パラメータ

data (bytes) -- Serialize data

send_command(command, send_to='all')

コマンドの送信

モデルごとにコマンド文字列で設定を行う コマンド文字列の定義はモデルごとに自由である Sequentialクラスなどは、保有する下位のモデルに再帰的にコマンドを 伝搬させるので、複数の層に一括した設定が可能である 受取先は send_to で送り先はインスタンス名やクラス名で制限でき 'all' を指定すると フィルタリングされない

パラメータ
  • command (str) -- コマンド文字列

  • send_to (str) -- 送信先

set_input_shape(shape)

入力シェイプ設定

BinaryBarainではモデル生成時に入力のシェイプを決定する必要はなく ネットワーク構築後に、ネットワークを構成する各モデルの set_input_shape を順に呼び出して形状を伝搬させることで 各モデルの形状の設定を簡易化できる

set_input_shape が呼ばれるとそれまでの各層で保有する情報は 保証されない。ネットワーク構築後に一度だけ呼び出すことを想定している

パラメータ

input_shape (List[int]) -- 入力シェイプ

戻り値

出力シェイプ

戻り値の型

output_shape (List[int])

MaxPooling クラス

class binarybrain.models.MaxPooling(filter_size=(2, 2), *, input_shape=None, name=None, fw_dtype=DType.FP32, bw_dtype=DType.FP32, core_model=None)

ベースクラス: Model

MaxPooling class

パラメータ
  • filter_size ((int, int)) -- 2次元のタプルでフィルタサイズを指定する

  • fw_dtype (DType)) -- forwarする型を bb.DType.FP32 と bb.DType.BIT から指定

StochasticMaxPooling クラス

class binarybrain.models.StochasticMaxPooling(filter_size=(2, 2), *, input_shape=None, name=None, fw_dtype=DType.FP32, bw_dtype=DType.FP32, core_model=None)

ベースクラス: Model

StochasticMaxPooling class

Stochastic 演算として OR 演算で Pooling 層を構成するモデル

パラメータ
  • filter_size ((int, int)) -- 2次元のタプルでフィルタサイズを指定する(現在2x2のみ)

  • fw_dtype (DType)) -- forwarする型を bb.DType.FP32 と bb.DType.BIT から指定

UpSampling クラス

class binarybrain.models.UpSampling(filter_size=(2, 2), *, fill=True, input_shape=None, name=None, fw_dtype=DType.FP32, bw_dtype=DType.FP32, core_model=None)

ベースクラス: Model

UpSampling class

畳み込みの逆方向にアップサンプリングを行うモデル

パラメータ
  • filter_size ((int, int)) -- 2次元のタプルでフィルタサイズを指定する(現在2x2のみ)

  • fw_dtype (DType)) -- forwarする型を bb.DType.FP32 と bb.DType.BIT から指定