基本モデル (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]) -- モデルのリスト

append(model)

リストへのモデル追加

パラメータ

model (Model) -- リストに追加するモデル

get_model_list()

モデルリストの取得

戻り値

モデルのリスト

戻り値の型

model_list (List[Model])

set_model_list(model_list)

モデルリストの設定

パラメータ

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}): 切り替えるモデルの辞書