畳み込み/プーリング(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 クラス¶
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 から指定