見出し画像

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

この記事が気に入ったらサポートをしてみませんか?