E資格【ラビット・チャレンジ】108日目/Dropoutの実装
# Dropoutの実装
class Dropout: # インスタンスの定義
def __init__(self, dropout_ratio=0.5):
self.dropout_ratio = dropout_ratio
self.mask = None # 順伝播メソッドの定義
def forward(self, x, train_flg=True): # ランダムにニューロンを消去
if train_flg: # 訓練時
self.mask = np.random.rand(*x.shape) > self.dropout_ratio
return x * self.mask
else: # テスト時
return x * (1.0 - self.dropout_ratio) # 逆伝播メソッドの定義
def backward(self, dout):
return dout * self.mask
この記事が気に入ったらサポートをしてみませんか?