演算モデル (Operation models)¶
models モジュールには、ネットワークを構成するための各種演算モデルがあります。
DifferentiableLut クラス¶
- class binarybrain.models.DifferentiableLut(output_shape=None, *, input_shape=None, connection='random', binarize=True, batch_norm=True, momentum=0.0, gamma=0.3, beta=0.5, seed=1, name=None, N=6, bin_dtype=DType.FP32, real_dtype=DType.FP32, core_model=None)¶
ベースクラス:
SparseModel
- DifferentiableLut class
微分可能LUTモデル
内部計算的には StocasticLUT + BatchNormalization + Binarize(HardTanh) で構成される
FPGA合成するためのルックアップテーブル型のモデルを学習することができる 純粋な Stochastic 演算のみを行いたい場合は binarize と batch_norm の両方を False にすればよい。
- パラメータ
output_shape (List[int]) -- 出力のシェイプ
connection (str) -- 結線ルールを 'random', 'serial', 'depthwise' から指定可能
batch_norm (bool) -- BatchNormalization を有効にするか
binarize (bool) -- 二値化出力を有効にするか
momentum (float) -- BatchNormalization の momentum
gamma (float) -- BatchNormalization の gamma
beta (float) -- BatchNormalization の beta
N (int) -- LUTの入力数
seed (int) -- 変数初期値などの乱数シード
bin_dtype (DType)) -- バイナリ出力の型を bb.DType.FP32 と bb.DType.BIT から指定(bb.DType.BIT は binarize=True 時のみ)
AverageLut クラス¶
- class binarybrain.models.AverageLut(output_shape=None, *, input_shape=None, name=None, N=6, connection='serial', binarize=True, binarize_input=False, seed=1, bin_dtype=DType.FP32, real_dtype=DType.FP32, core_model=None)¶
ベースクラス:
SparseModel
- AverageLut class
入力値の平均を出力するLUT型のモデル バイナリの場合、bitをカウントして1の方が多ければ1を出力するテーブル固定のLUTと考える事ができる
- パラメータ
output_shape ([int]) -- 出力のシェイプ
connection (str) -- 結線ルールを 'random', 'serial', 'depthwise' から指定可能
binarize (bool) -- 二値化出力を有効にするか
binarize_input (bool) -- 入力を二値化してから使うようにするか
N (int) -- LUTの入力数
seed (int) -- 変数初期値などの乱数シード
bin_dtype (DType)) -- バイナリ出力の型を bb.DType.FP32 と bb.DType.BIT から指定(bb.DType.BIT は binarize=True 時のみ)
BinaryLut クラス¶
- class binarybrain.models.BinaryLut(output_shape=None, *, input_shape=None, connection='random', seed=1, name=None, N=6, fw_dtype=DType.FP32, bw_dtype=DType.FP32, core_model=None)¶
ベースクラス:
SparseModel
バイナリLUTモデル
一般的なFPGAのLUTと同等の機能をするモデル。 学習能力はなく、他のモデルで学習した結果をインポートしてモデル評価を行うためのもの
- パラメータ
output_shape (List[int]) -- 出力のシェイプ
connection (str) -- 結線ルールを 'random', 'serial', 'depthwise' から指定可能(未実装)
N (int) -- LUTの入力数
seed (int) -- 変数初期値などの乱数シード
fw_dtype (DType)) -- forwardの型を bb.DType.FP32 と bb.DType.BIT から指定
DenseAffine クラス¶
- class binarybrain.models.DenseAffine(output_shape=None, *, input_shape=None, initialize_std=0.01, initializer='', seed=1, name=None, dtype=DType.FP32, core_model=None)¶
ベースクラス:
Model
- DenseAffine class
普通のDenseAffine
- パラメータ
output_shape (List[int]) -- 出力のシェイプ
initialize_std (float) -- 重み初期化乱数の標準偏差
initializer (str) -- 変数の初期化アルゴリズム選択(default/normal/uniform/He/Xavier)。
seed (int) -- 変数初期値などの乱数シード
DenseAffineQuantize クラス¶
- class binarybrain.models.DenseAffineQuantize(output_shape=None, *, input_shape=None, quantize=True, weight_bits=8, output_bits=16, input_bits=0, weight_scale=0.00390625, output_scale=0.00390625, input_scale=0.00390625, initialize_std=0.01, initializer='', seed=1, name=None, dtype=DType.FP32, core_model=None)¶
ベースクラス:
Model
- DenseAffineQuantize class
DenseAffine に量子化のサポートを付けたもの
- パラメータ
output_shape (List[int]) -- 出力のシェイプ
initialize_std (float) -- 重み初期化乱数の標準偏差
initializer (str) -- 変数の初期化アルゴリズム選択(default/normal/uniform/He/Xavier)。
quantize (bool) -- 量子化の有効状態の初期値
weight_bits (int) -- 重みの量子化bit数 (0で量子化しない)
output_bits (int) -- 入力の量子化bit数 (0で量子化しない)
input_bits (int) -- 出力の量子化bit数 (0で量子化しない)
weight_scale (float) -- 重みの量子化スケール(0でbit数に合わせる)
output_scale (float) -- 入力の量子化スケール(0でbit数に合わせる)
input_scale (float) -- 出力の量子化スケール(0でbit数に合わせる)
seed (int) -- 変数初期値などの乱数シード
DepthwiseDenseAffine クラス¶
- class binarybrain.models.DepthwiseDenseAffine(output_shape=None, *, input_shape=None, input_point_size=0, depth_size=0, initialize_std=0.01, initializer='', seed=1, name=None, dtype=DType.FP32, core_model=None)¶
ベースクラス:
Model
- DepthwiseDenseAffine class
普通のDepthwiseDenseAffine
- パラメータ
output_shape (List[int]) -- 出力のシェイプ
input_point_size (int) -- 入力のpoint数
depth_size (int) -- depthサイズ
initialize_std (float) -- 重み初期化乱数の標準偏差
initializer (str) -- 変数の初期化アルゴリズム選択(default/normal/uniform/He/Xavier)。
seed (int) -- 変数初期値などの乱数シード
DepthwiseDenseAffineQuantize クラス¶
- class binarybrain.models.DepthwiseDenseAffineQuantize(output_shape=None, *, input_shape=None, input_point_size=0, depth_size=0, quantize=True, weight_bits=8, output_bits=16, input_bits=0, weight_scale=0.00390625, output_scale=0.00390625, input_scale=0.00390625, initialize_std=0.01, initializer='', seed=1, name=None, dtype=DType.FP32, core_model=None)¶
ベースクラス:
Model
- DepthwiseDenseAffineQuantize class
DepthwiseDenseAffine に量子化のサポートを付けたもの
- パラメータ
output_shape (List[int]) -- 出力のシェイプ
input_point_size (int) -- 入力のpoint数
depth_size (int) -- depthサイズ
weight_bits (int) -- 重みの量子化bit数 (0で量子化しない)
output_bits (int) -- 入力の量子化bit数 (0で量子化しない)
input_bits (int) -- 出力の量子化bit数 (0で量子化しない)
weight_scale (float) -- 重みの量子化スケール(0でbit数に合わせる)
output_scale (float) -- 入力の量子化スケール(0でbit数に合わせる)
input_scale (float) -- 出力の量子化スケール(0でbit数に合わせる)
initialize_std (float) -- 重み初期化乱数の標準偏差
initializer (str) -- 変数の初期化アルゴリズム選択(default/normal/uniform/He/Xavier)。
seed (int) -- 変数初期値などの乱数シード