3.3.2. renom.layers.function package

class BatchNormalize ( moving_avg=0.1 , input_size=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

バッチ正規化クラス[ref]

初期重みは0と1で初期化される。 推論時に使用される移動平均は、引数で与えられたmoving_avgを 使って以下の式で計算される。

past\_avg \gets past\_avg * moving\_avg + (1 - moving\_avg)*new\_avg

パラメータ:
  • moving_avg ( float ) – 指数平均計算時の重み
  • input_size ( int , tuple ) – 入力データサイズ
  • name ( string ) – 層の名前

バッチ正規化は以下のように活性化関数の前で使用する。

>>> import renom.layers as L
>>> from renom.model import Model
>>> model = Model(
...     layers = [
...         L.Input(unit = 100),
...         L.Dense(unit = 10),
...         L.BatchNormalize(), #バッチ正規化レイヤ
...         L.Dense(unit =10),
...         L.Mean_squared_error()
...     ])
class Conv2d ( channel=1 , filter_size=(3 , 3) , stride=(1 , 1) , padding=(0 , 0) , input_size=None , weight_scale=0.1 , initializer=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Conv2dクラス

以下の計算式で与えられる出力を返す。 ReNomでは画像をN(画像枚数), C(チャネル), H(縦), W(横)の並び順で扱っている。

C_{in},C_{out} :入力, 出力画像チャネル数
H,W :縦, 横方向のフィルタサイズ
wt, b :重み、バイアスパラメータ
y_{c_{out},i,j} = \sum_{c_{in}=0}^{C_{in}} \sum_{h=0}^{H} \sum_{w=0}^{W} wt_{c_{out},c_{in},h,w}*x_{c_{in},i+h,j+w}+b_{c}
パラメータ:
  • channel ( int ) – 出力チャネル数
  • filter_size ( tuple ) – 畳み込みフィルタサイズ
  • stride ( tuple ) – ストライド幅
  • padding ( tuple ) – パディング幅
  • input_size ( tuple ) – 入力データサイズ
  • weight_scale ( float ) – 初期重みパラメータを与えるガウス分布の標準偏差
  • initializer ( Initializer ) – 重みパラメータの初期化方法
  • name ( string ) – 層の名前

注釈

paddingは0パディングとなっている。

class Dense ( unit=0 , input_size=None , weight_scale=0.1 , initializer=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Denseクラス

以下の式で与えられる。ニューラルネットワークにおける全結合レイヤを表す。

y_{i} = \sum_{j=0}^{J} w_{i,j}*x_{j} + b_i
パラメータ:
  • unit ( int ) – 出力ユニットサイズ
  • input_size ( int ) – 入力ユニットサイズ
  • weight_scale ( float ) – 初期重みを与えるガウス分布の標準偏差
  • initializer ( Initializer ) – 重み初期化方法を与える
  • name ( string ) – 層の名前
class Dropout ( dropout_ratio=0.5 , input_size=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Dropoutクラス

出力値を、(1 - 引数に与えられた確率)で0にする。

パラメータ:
  • dropout_ratio ( float ) – 確率
  • input_size ( int , tuple ) – 入力データサイズ
  • name ( string ) – 層の名前

注釈

引数に与えられた確率は、ドロップアウトされない確率を表すことに注意。

class Flatten ( input_size=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Flattenクラス

テンソル形式データを行列形式に変換する。

パラメータ:
  • input_size ( tuple ) – 入力データサイズ
  • name ( string ) – 層の名前
>>> import renom.layers as L
>>> from renom.model import Model
>>> model = Model(
...     layers = [
...         L.Input((3, 32, 32)),
...         L.Conv2d(channel = 32),
...         ###
...         # Conv2dのTensor形式出力をMatrix形式に変換する。
...         L.Flatten(),
...         ###
...         L.Dense(1000),
...         L.Mean_squared_error()
...     ])
class Input ( unit=0 , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Inputクラス

Modelクラスを使ってニューラルネットワークを 構築する際、入力を受け付けるレイヤ。

パラメータ:
  • unit ( int , tuple ) – 入力データサイズ
  • name ( string ) – 層の名前
>>> import renom.layers as L
>>> from renom.model import Model
>>> 
>>> model = Model(
...     layers = [
...         #####
...         # ニューラルネットワークに入力する行列データのサイズを与える。
...         L.Input(100),
...         ###
...         L.Dense(unit = 10),
...         L.Sigmoid(),
...         L.Dense(5),
...         L.Mean_squared_error()
...     ])
>>> 
class Lrn ( n=5 , k=2 , a=0.0001 , b=0.75 , input_size=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Lrnクラス

局所正規化を行うクラス。

y_{c_{out},j,i}= x_{c_{out},i,j}/(k + a*{\sum_{c=max(0, i-n/2)}^{min(N-1, i+n/2)} (x_{c,i,j})})^b
パラメータ:
  • n ( int ) – 定数
  • k ( int ) – 定数
  • a ( float ) – 定数
  • b ( float ) – 定数
  • input_size ( tuple ) – 層への入力サイズ
  • name ( string ) – 層の名前
class Lstm ( unit=0 , weight_scale=0.1 , initializer=None , input_size=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Lstmクラス

下記の式で与えられる、Peep hole付きLSTM

W_{ij}, Wgi_{ij}, Wgf_{ij}, Wgo_{ij}
:時刻tにおけるユニット、入力ゲート、忘却ゲート、出力ゲートへの入力値に対する重み
R_{ij}, Rgi_{ij}, Rgf_{ij}, Rgo_{ij}
:時刻tにおけるユニット、入力ゲート、忘却ゲート、出力ゲートへの入力値に対する重み
P_{ij}, Pgi_{ij}, Pgf_{ij}, Pgo_{ij}
:状態sからユニット、入力ゲート、忘却ゲート、出力ゲートへの入力値に対する重み
\begin{split}u^t_{i} &= \sum_{j = 0}^{J-1} W_{ij}*x^t_{j} + \sum_{k = 0}^{K-1} R_{ik}*y^{t-1}_{k} + P_{i}*s^{t-1}_{i} + b_i \\ gi^t_{i} &= \sum_{j = 0}^{J-1} Wgi_{ij}*x^t_{j} + \sum_{k = 0}^{K-1} Rgi_{ik}*y^{t-1}_{k} + Pgi_{i}*s^{t-1}_{i} + bi_i \\ gf^t_{i} &= \sum_{j = 0}^{J-1} Wgfi_{ij}*x^t_{j} + \sum_{k = 0}^{K-1} Rgf_{ik}*y^{t-1}_{k} + Pgf_{i}*s^{t-1}_{i} + bi_f \\ go^t_{i} &= \sum_{j = 0}^{J-1} Wgo_{ij}*x^t_{j} + \sum_{k = 0}^{K-1} Rgo_{ik}*y^{t-1}_{k} + Pgo_{i}*s^{t}_{i} + bi_o \\ s^t_i &= sigmoid(gi^t_{i})*tanh(u^t_{i}) + s^{t-1}_i*sigmoid(gf^t_{i}) \\ y^t_{i} &= tanh(s^t_{i})*go^t_{i}\end{split}
パラメータ:
  • unit ( int ) – 出力サイズ
  • weight_scale ( float ) – 初期値を与えるガウス分布の標準偏差
  • initializer ( Initializer ) – 初期化方法
  • input_size ( int ) – 入力サイズ
  • name ( string ) – 層の名前
class Pass ( unit=0 , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Passクラス

入力をそのまま出力するレイヤ。

パラメータ:
  • unit ( int , tuple ) – 入力データサイズ
  • name ( string ) – 層の名前
>>> import renom.layers as L
>>> from renom.model import Model
>>> 
>>> model = Model(
...     layers = [
...         #####
...         # ニューラルネットワークに入力する行列データのサイズを与える。
...         L.Input(100),
...         ###
...         L.Dense(unit = 10),
...         L.Sigmoid(),
...         L.Pass(),    # 入出力に変化はない。
...         L.Dense(5),
...         L.Mean_squared_error()
...     ])
>>> 
class Pool2d ( filter_size=(3 , 3) , stride=(1 , 1) , padding=(0 , 0) , input_size=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Max Poolingを行うクラス。

y_{c,i,j} = max_{(p,q) \in P_{ij}} x_{c,p,q}

P_{ij} :画素(i,j)を中心とした、フィルタサイズ分の領域

パラメータ:
  • filter_size ( tuple ) – フィルタサイズ
  • stride ( tuple ) – ストライドサイズ
  • padding ( tuple ) – パディングサイズ
  • input_size ( int ) – 入力サイズ
  • name ( string ) – 層の名前
class Rnn ( unit=0 , weight_scale=0.1 , initializer=None , activation=<renom.layers.activation.tanh.Tanh object> , input_size=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Rnnクラス

W_{ij}
:時刻tにおけるユニット、入力ゲート、忘却ゲート、出力ゲートへの入力値に対する重み
R_{ik}
:時刻tにおけるユニット、入力ゲート、忘却ゲート、出力ゲートへの入力値に対する重み
y^t_{i} = \sum_{j = 0}^{J-1} W_{ij}*x^t_{j} + \sum_{k = 0}^{K-1} R_{ik}*y^{t-1}_{k} + b_i
パラメータ:
  • unit ( int ) – 層の出力サイズ
  • weight_scale ( float ) – 初期値を与えるガウス分布の標準偏差
  • initializer ( Initializer ) – 初期化方法
  • activation ( Activation ) – 活性化関数
  • input_size ( int ) – 入力サイズ
  • name ( string ) – 層の名前
class SpatialDropout2d ( dropout_ratio=0.5 , input_size=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

Spatial_dropout2dクラス

画像にドロップアウトをかけるさい、チャネル単位で ドロップアウトをかける。

Dropoutクラスでは、ピクセルごとにドロップアウトをかける 事になっている。

パラメータ:
  • dropout_ratio ( float ) – ドロップアウトする要素の割合
  • input_size ( tuple ) – 入力データサイズ
  • name ( string ) – 層の名前
class UpConv2d ( channel=1 , filter_size=(3 , 3) , stride=(1 , 1) , padding=(0 , 0) , input_size=None , output_image_size=None , weight_scale=0.1 , initializer=None , name=None , **kwargs )

ベースクラス: renom.layers.layer.Layer

畳み込みにより画像をアップサンプリングするクラス。

output_image_sizeが指定された場合、与えられたフィルタサイズと パディング幅はそのままに、stride値が変更される(予定)。

パラメータ:
  • channel ( int ) – 出力チャネル数
  • filter_size ( tuple ) – フィルタサイズ
  • stride ( tuple ) – stride幅
  • padding ( tuple ) – padding幅
  • input_size ( tuple ) – 入力画像サイズ(c, h, w)形式のtuple
  • output_image_size ( tuple ) – 出力画像サイズ(h, w)形式のtuple
  • weight_scale ( float ) –
  • initializer ( Initializer ) –
  • name ( string ) –