基本モデル (Base models)¶
models モジュールには、ネットワークを構成するための各種演算モデルがあります。
Model クラス¶
- class binarybrain.models.Model(*, core_model=None, input_shape=None, name=None)¶
ベースクラス:
Object
Model class ネットワーク各層の演算モデルの基底クラス すべてのモデルはこのクラスを基本クラスに持つ
BinaryBrain では、モデルを実際にインスタンスとして生成して組み合わせることで 学習ネットワークを構成する。特にネットワーク内のインスタンス化された モデルをレイヤーという呼び方をする場合がある。
- set_name(name: str)¶
インスタンス名の設定
生成したモデルには任意の名前を付けることが可能であり、表示や 保存時のファイル名などに利用することが可能である
- パラメータ
name (str) -- 新しいインスタンス名
- get_name()¶
インスタンス名の取得
インスタンス名を取得する。名称が設定されていない場合はクラス名が返される
- 戻り値
name (str)
- is_named()¶
インスタンス名の設定確認
インスタンス名が設定されているかどうか確認する
- 戻り値
named (bool)
- get_model_name()¶
モデル名の取得
モデル名を取得する。
- 戻り値
model name (str)
- get_info(depth: int = 0, *, columns: int = 70, nest: int = 0) str ¶
モデル情報取得
モデルの情報表示用の文字列を取得する そのまま表示やログに利用することを想定している
- 戻り値
info (str)
- print_info(depth: int = 0)¶
モデル情報表示
モデルの情報を表示する
- send_command(command, send_to='all')¶
コマンドの送信
モデルごとにコマンド文字列で設定を行う コマンド文字列の定義はモデルごとに自由である Sequentialクラスなどは、保有する下位のモデルに再帰的にコマンドを 伝搬させるので、複数の層に一括した設定が可能である 受取先は send_to で送り先はインスタンス名やクラス名で制限でき 'all' を指定すると フィルタリングされない
- パラメータ
command (str) -- コマンド文字列
send_to (str) -- 送信先
- set_input_shape(input_shape)¶
入力シェイプ設定
BinaryBarainではモデル生成時に入力のシェイプを決定する必要はなく ネットワーク構築後に、ネットワークを構成する各モデルの set_input_shape を順に呼び出して形状を伝搬させることで 各モデルの形状の設定を簡易化できる
set_input_shape が呼ばれるとそれまでの各層で保有する情報は 保証されない。ネットワーク構築後に一度だけ呼び出すことを想定している
- パラメータ
input_shape (List[int]) -- 入力シェイプ
- 戻り値
出力シェイプ
- 戻り値の型
output_shape (List[int])
- get_input_shape() List[int] ¶
入力シェイプ取得
- 戻り値
入力シェイプ
- 戻り値の型
input_shape (List[int])
- get_output_shape() List[int] ¶
出力シェイプ取得
- 戻り値
出力シェイプ
- 戻り値の型
output_shape (List[int])
- get_parameters()¶
パラメータ変数取得
学習対象とするパラメータ群を Variables として返す 主に最適化(Optimizer)に渡すことを目的としている
モデル側を自作する際には、このメソッドで戻す変数の中に 含めなかったパラメータは学習対象から外すことができる為 パラメータを凍結したい場合などに利用できる
- 戻り値
パラメータ変数
- 戻り値の型
parameters (Variables)
- get_gradients()¶
勾配変数取得
get_parameters と対になる勾配変数を Variables として返す 主に最適化(Optimizer)に渡すことを目的としている
- 戻り値
勾配変数
- 戻り値の型
gradients (Variables)
- forward(x_buf, train=True)¶
Forward
- モデルは学習および推論の為に forward メソッドを持つ
train 変数を
- パラメータ
x_buf (FrameBuffer) -- 入力データ
train (bool) -- Trueで学習、Falseで推論
- 戻り値
出力データ
- 戻り値の型
y_buf (FrameBuffer)
- backward(dy_buf)¶
Backward
モデルは学習の為に backword メソッドを持つ 必ず forwad と対で呼び出す必要があり、直前の forward 結果に対する 勾配計算を行いながら逆伝搬する
BinaryBrain は自動微分の機能を備えないので、backword の実装は必須である
- パラメータ
dy_buf (FrameBuffer) -- 入力データ
- 戻り値
出力データ
- 戻り値の型
dx_buf (FrameBuffer)
Sequential クラス¶
- class binarybrain.models.Sequential(model_list=None, *, input_shape=None, name=None)¶
ベースクラス:
Model
- Sequential class
複数レイヤーを直列に接続してグルーピングするクラス
リストの順番で set_input_shape, forward, backward などを実行する また send_command の子レイヤーへのブロードキャストや、 get_parameters, get_gradients の統合を行うことで複数のレイヤーを 1つのレイヤーとして操作できる
- パラメータ
model_list (List[Model]) -- モデルのリスト
Switcher クラス¶
- class binarybrain.models.Switcher(model_dict=None, init_model_name=None, *, input_shape=None, name=None)¶
ベースクラス:
Model
モデル切り替え用基底クラス
主に蒸留や転移学習などでレイヤー差し替えに用いる send_command から 'switch_model [name]' でも切り替え可能
- パラメータ
(Dict{str (model_dict) -- Model}): 切り替えるモデルの辞書
init_model_name (str) -- 初期選択するモデルの名前
- 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)
- get_gradients()¶
勾配変数取得
get_parameters と対になる勾配変数を Variables として返す 主に最適化(Optimizer)に渡すことを目的としている
- 戻り値
勾配変数
- 戻り値の型
gradients (Variables)
- get_info(depth: int = 0, *, columns: int = 70, nest: int = 0) str ¶
モデル情報取得
モデルの情報表示用の文字列を取得する そのまま表示やログに利用することを想定している
- 戻り値
info (str)
- get_input_shape() List[int] ¶
入力シェイプ取得
- 戻り値
入力シェイプ
- 戻り値の型
input_shape (List[int])
- get_output_shape() List[int] ¶
出力シェイプ取得
- 戻り値
出力シェイプ
- 戻り値の型
output_shape (List[int])
- get_parameters()¶
パラメータ変数取得
学習対象とするパラメータ群を Variables として返す 主に最適化(Optimizer)に渡すことを目的としている
モデル側を自作する際には、このメソッドで戻す変数の中に 含めなかったパラメータは学習対象から外すことができる為 パラメータを凍結したい場合などに利用できる
- 戻り値
パラメータ変数
- 戻り値の型
parameters (Variables)
- loads(data)¶
バイトデータをロード
モデルのデータをシリアライズして復帰のバイト配列ロード
- パラメータ
data (bytes) -- Serialize data
- send_command(command, send_to='all')¶
コマンドの送信
モデルごとにコマンド文字列で設定を行う コマンド文字列の定義はモデルごとに自由である Sequentialクラスなどは、保有する下位のモデルに再帰的にコマンドを 伝搬させるので、複数の層に一括した設定が可能である 受取先は send_to で送り先はインスタンス名やクラス名で制限でき 'all' を指定すると フィルタリングされない
- パラメータ
command (str) -- コマンド文字列
send_to (str) -- 送信先
- set_input_shape(input_shape: List[int])¶
入力シェイプ設定
BinaryBarainではモデル生成時に入力のシェイプを決定する必要はなく ネットワーク構築後に、ネットワークを構成する各モデルの set_input_shape を順に呼び出して形状を伝搬させることで 各モデルの形状の設定を簡易化できる
set_input_shape が呼ばれるとそれまでの各層で保有する情報は 保証されない。ネットワーク構築後に一度だけ呼び出すことを想定している
- パラメータ
input_shape (List[int]) -- 入力シェイプ
- 戻り値
出力シェイプ
- 戻り値の型
output_shape (List[int])
- switch_model(model_name: str)¶
モデルを切り替える
- パラメータ
(Dict{str (model_dict) -- Model}): 切り替えるモデルの辞書