日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

解决神经网络过拟合问题—Dropout方法、python实现

發布時間:2025/3/12 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决神经网络过拟合问题—Dropout方法、python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解決神經網絡過擬合問題—Dropout方法

    • 一、what is Dropout?如何實現?
    • 二、使用和不使用Dropout的訓練結果對比

一、what is Dropout?如何實現?

如果網絡模型復雜,L2范數權值衰減方法就難以對付過擬合。這種情況下,用Dropout方法。

Dropout是一種在學習過程中隨機刪除神經元的方法。

訓練時,隨機選出隱藏層神經元,然后將其刪除。每傳遞一次數據,就會隨機選擇要刪除的神經元。

測試時,對各個神經元的輸出,要成上訓練時的刪除比例。

實現代碼:

每次正向傳播,self.mask以False形式保存要刪除的神經元。

self.mask = np.random.rand(*x.shape) > self.dropout_ratio

self.mask隨機生成和x形狀相同數組,將值大于dropout_ratio元素設為True。

每次反向傳播,如果正向傳播時候傳遞了信號的神經元,反向傳按原樣傳,反之不傳。

class Dropout:"""http://arxiv.org/abs/1207.0580"""def __init__(self, dropout_ratio=0.5):self.dropout_ratio = dropout_ratioself.mask = Nonedef forward(self, x, train_flg=True):if train_flg:self.mask = np.random.rand(*x.shape) > self.dropout_ratioreturn x * self.maskelse:return x * (1.0 - self.dropout_ratio)def backward(self, dout):return dout * self.mask

二、使用和不使用Dropout的訓練結果對比

從MNIST數據集里只選出來300個數據,然后增加網絡復雜幅度用7層網絡,每層100個神經元,激活函數ReLU。

# coding: utf-8 import os import sys sys.path.append(os.pardir) # 為了導入父目錄的文件而進行的設定 import numpy as np import matplotlib.pyplot as plt from dataset.mnist import load_mnist from common.multi_layer_net_extend import MultiLayerNetExtend from common.trainer import Trainer(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True)# 為了再現過擬合,減少學習數據 x_train = x_train[:300] t_train = t_train[:300]# 設定是否使用Dropuout,以及比例 ======================== use_dropout = True # 不使用Dropout的情況下為False dropout_ratio = 0.2 # ====================================================network = MultiLayerNetExtend(input_size=784, hidden_size_list=[100, 100, 100, 100, 100, 100],output_size=10, use_dropout=use_dropout, dropout_ration=dropout_ratio) trainer = Trainer(network, x_train, t_train, x_test, t_test,epochs=301, mini_batch_size=100,optimizer='sgd', optimizer_param={'lr': 0.01}, verbose=True) trainer.train()train_acc_list, test_acc_list = trainer.train_acc_list, trainer.test_acc_list# 繪制圖形========== markers = {'train': 'o', 'test': 's'} x = np.arange(len(train_acc_list)) plt.plot(x, train_acc_list, marker='o', label='train', markevery=10) plt.plot(x, test_acc_list, marker='s', label='test', markevery=10) plt.xlabel("epochs") plt.ylabel("accuracy") plt.ylim(0, 1.0) plt.legend(loc='lower right') plt.show()

下圖是使用Dropout的情況

下圖是不使用Dropout的情況。

對比得出,使用Dropout,訓練數據和測試數據的識別精度的差距變小了,并且訓練數據也沒有到100%識別。

總結

以上是生活随笔為你收集整理的解决神经网络过拟合问题—Dropout方法、python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品一区二区小说 | 成人免费视 | 天堂中文在线官网 | 日韩欧美一卡 | 国产无玛 | 91亚洲天堂 | 日本福利一区二区三区 | 中文字幕一区三区 | 成人黄色片网站 | 国产在线视频卡一卡二 | 国产免费av一区 | 日日噜噜噜夜夜爽爽狠狠视频97 | aⅴ在线免费观看 | 蜜桃av影院| 青青久久国产 | 综合色在线 | 亚洲一区二区色图 | 四虎国产成人精品免费一女五男 | 日韩av网址大全 | 亚洲精品乱码久久 | 久久夫妻视频 | 国产吞精囗交免费视频网站 | 手机福利在线 | 在线观看a级片 | 欧美二级片 | 黄色片一区二区三区 | 国产原创91 | 特级黄毛片 | 午夜黄色网址 | 国产噜噜噜噜噜久久久久久久久 | 久操av在线| 成人av一区二区三区在线观看 | 日韩欧美一区二区三区四区五区 | 国产爽爽视频 | 黄色网久久 | 琪琪色在线视频 | 淫久久| 中文字幕在线观看三区 | av久久久| www.国产欧美 | 天天色棕合合合合合合合 | 国产传媒视频在线 | 在线观看一二区 | 久久高清国产 | 一个人在线观看免费视频www | 成人黄色国产 | 爽妇网国产精品 | 国产精品精品久久久久久 | 成人精品黄段子 | 久操视频免费在线观看 | 97精品人妻一区二区 | 三级电影网址 | 91视频免费 | 美日韩精品一区二区 | 怨女1988国语版在线观看高清 | 在线观看亚洲a | 久久先锋| 在线视频日韩精品 | 天天看天天摸 | www.天堂av.com | 日韩中文字幕av | 久草视频福利在线 | 狠狠操免费视频 | 视频一区二区三区精品 | 草逼国产 | 粗大黑人巨茎大战欧美成人 | av色区 | 欧美日韩在线高清 | 黑人巨大精品欧美一区二区 | 成年人国产视频 | 91最新入口 | 欧美福利专区 | 日本精品视频在线观看 | 6080成人 | 一级片日韩 | 久久最新精品 | 日韩欧美一区二区三区四区 | www一起操 | 天天干天天舔 | www.96av| 欧美字幕 | 日韩精品无码一区二区三区 | 91口爆一区二区三区在线 | 亚洲电影中文字幕 | av在线播放中文字幕 | 久久免费少妇高潮99精品 | 亚洲二区在线 | 欧美乱妇日本无乱码特黄大片 | 亚洲午夜网站 | 色老头综合网 | 91亚瑟| 美女脱光内衣内裤 | 日本xxxx裸体xxxx | 五月婷婷小说 | 欧美精品一区二区三区久久 | 亚洲区综合 | 激情片网站 | 国产亚洲制服欧洲高清一区 | aaaa视频 |