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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

(pytorch-深度学习系列)pytorch避免过拟合-dropout丢弃法的实现-学习笔记

發布時間:2024/8/23 pytorch 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (pytorch-深度学习系列)pytorch避免过拟合-dropout丢弃法的实现-学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pytorch避免過擬合-dropout丟棄法的實現

對于一個單隱藏層的多層感知機,其中輸入個數為4,隱藏單元個數為5,且隱藏單元hih_ihi?i=1,…,5i=1, \ldots, 5i=1,,5)的計算表達式為:
hi=?(x1w1i+x2w2i+x3w3i+x4w4i+bi)h_i = \phi\left(x_1 w_{1i} + x_2 w_{2i} + x_3 w_{3i} + x_4 w_{4i} + b_i\right) hi?=?(x1?w1i?+x2?w2i?+x3?w3i?+x4?w4i?+bi?)
這里?\phi?是激活函數,x1,…,x4x_1, \ldots, x_4x1?,,x4?是輸入,隱藏單元iii的權重參數為w1i,…,w4iw_{1i}, \ldots, w_{4i}w1i?,,w4i?,偏差參數為bib_ibi?。當對該隱藏層使用丟棄法時,該層的隱藏單元將有一定概率被丟棄掉。設丟棄概率為ppp,那么有ppp的概率hih_ihi?會被清零,有1?p1-p1?p的概率hih_ihi?會除以1?p1-p1?p做拉伸。丟棄概率是丟棄法的超參數。具體來說,設隨機變量ξi\xi_iξi?為0和1的概率分別為ppp1?p1-p1?p。使用丟棄法時我們計算新的隱藏單元hi′h_i'hi?
hi′=ξi1?phih_i' = \frac{\xi_i}{1-p} h_i hi?=1?pξi??hi?
(這個公式就表示 hi′h_i'hi?1?p1-p1?p的概率為hih_ihi?

由于E(ξi)=1?pE(\xi_i) = 1-pE(ξi?)=1?p,因此

E(hi′)=E(ξi)1?phi=hiE(h_i') = \frac{E(\xi_i)}{1-p}h_i = h_i E(hi?)=1?pE(ξi?)?hi?=hi?
即丟棄法不改變其輸入的期望值。我們對隱藏層使用丟棄法,一種可能的結果是h2h_2h2?h5h_5h5?被清零。這時輸出值的計算不再依賴h2h_2h2?h5h_5h5?,在反向傳播時,與這兩個隱藏單元相關的權重的梯度均為0。由于在訓練中隱藏層神經元的丟棄是隨機的,即h1,…,h5h_1, \ldots, h_5h1?,,h5?都有可能被清零,輸出層的計算無法過度依賴h1,…,h5h_1, \ldots, h_5h1?,,h5?中的任一個,從而在訓練模型時起到正則化的作用,并可以用來應對過擬合。在測試模型時,我們為了拿到更加確定性的結果,一般不使用丟棄法。

開始實現drop丟棄法避免過擬合

定義dropout函數:

%matplotlib inline import torch import torch.nn as nn import numpy as npdef dropout(X, drop_prob):X = X.float()assert 0 <= drop_prob <= 1keep_prob = 1 - drop_prob# 這種情況下把全部元素都丟棄if keep_prob == 0:return torch.zeros_like(X)mask = (torch.rand(X.shape) < keep_prob).float()return mask * X / keep_prob

定義模型參數:

num_inputs, num_outputs, num_hiddens1, num_hiddens2 = 784, 10, 256, 256W1 = torch.tensor(np.random.normal(0, 0.01, size=(num_inputs, num_hiddens1)), dtype=torch.float, requires_grad=True) b1 = torch.zeros(num_hiddens1, requires_grad=True) W2 = torch.tensor(np.random.normal(0, 0.01, size=(num_hiddens1, num_hiddens2)), dtype=torch.float, requires_grad=True) b2 = torch.zeros(num_hiddens2, requires_grad=True) W3 = torch.tensor(np.random.normal(0, 0.01, size=(num_hiddens2, num_outputs)), dtype=torch.float, requires_grad=True) b3 = torch.zeros(num_outputs, requires_grad=True)params = [W1, b1, W2, b2, W3, b3]

定義模型將全連接層和激活函數ReLU串起來,并對每個激活函數的輸出使用丟棄法。分別設置各個層的丟棄概率。通常的建議是把靠近輸入層的丟棄概率設得小一點。在這個實驗中,我們把第一個隱藏層的丟棄概率設為0.2,把第二個隱藏層的丟棄概率設為0.5。我們可以通過參數is_training來判斷運行模式為訓練還是測試,并只在訓練模式下使用丟棄法。

drop_prob1, drop_prob2 = 0.2, 0.5def net(X, is_training=True):X = X.view(-1, num_inputs)H1 = (torch.matmul(X, W1) + b1).relu()if is_training: # 只在訓練模型時使用丟棄法H1 = dropout(H1, drop_prob1) # 在第一層全連接后添加丟棄層H2 = (torch.matmul(H1, W2) + b2).relu()if is_training:H2 = dropout(H2, drop_prob2) # 在第二層全連接后添加丟棄層return torch.matmul(H2, W3) + b3def evaluate_accuracy(data_iter, net):acc_sum, n = 0.0, 0for X, y in data_iter:if isinstance(net, torch.nn.Module):net.eval() # 評估模式, 這會關閉dropoutacc_sum += (net(X).argmax(dim=1) == y).float().sum().item()net.train() # 改回訓練模式else: # 自定義的模型if('is_training' in net.__code__.co_varnames): # 如果有is_training這個參數# 將is_training設置成Falseacc_sum += (net(X, is_training=False).argmax(dim=1) == y).float().sum().item() else:acc_sum += (net(X).argmax(dim=1) == y).float().sum().item() n += y.shape[0]return acc_sum / n

訓練和測試模型:

num_epochs, lr, batch_size = 5, 100.0, 256 loss = torch.nn.CrossEntropyLoss()def load_data_fashion_mnist(batch_size, resize=None, root='~/Datasets/FashionMNIST'):"""Download the fashion mnist dataset and then load into memory."""trans = []if resize:trans.append(torchvision.transforms.Resize(size=resize))trans.append(torchvision.transforms.ToTensor())transform = torchvision.transforms.Compose(trans)mnist_train = torchvision.datasets.FashionMNIST(root=root, train=True, download=True, transform=transform)mnist_test = torchvision.datasets.FashionMNIST(root=root, train=False, download=True, transform=transform)if sys.platform.startswith('win'):num_workers = 0 # 0表示不用額外的進程來加速讀取數據else:num_workers = 4train_iter = torch.utils.data.DataLoader(mnist_train, batch_size=batch_size, shuffle=True, num_workers=num_workers)test_iter = torch.utils.data.DataLoader(mnist_test, batch_size=batch_size, shuffle=False, num_workers=num_workers)return train_iter, test_iterdef train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size,params=None, lr=None, optimizer=None):for epoch in range(num_epochs):train_l_sum, train_acc_sum, n = 0.0, 0.0, 0for X, y in train_iter:y_hat = net(X)l = loss(y_hat, y).sum()# 梯度清零if optimizer is not None:optimizer.zero_grad()elif params is not None and params[0].grad is not None:for param in params:param.grad.data.zero_()l.backward()if optimizer is None:sgd(params, lr, batch_size)else:optimizer.step() # “softmax回歸的簡潔實現”一節將用到train_l_sum += l.item()train_acc_sum += (y_hat.argmax(dim=1) == y).sum().item()n += y.shape[0]test_acc = evaluate_accuracy(test_iter, net)print('epoch %d, loss %.4f, train acc %.3f, test acc %.3f'% (epoch + 1, train_l_sum / n, train_acc_sum / n, test_acc)) train_iter, test_iter = load_data_fashion_mnist(batch_size) train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, params, lr)

總結

以上是生活随笔為你收集整理的(pytorch-深度学习系列)pytorch避免过拟合-dropout丢弃法的实现-学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 91理论片午午伦夜理片久久 | 精品夜夜澡人妻无码av | 宅男在线视频 | 91精品一区二区三区在线观看 | jzz在线观看 | 手机看片1024久久 | 午夜在线免费观看视频 | 黄色网址最新 | 国产99在线视频 | 在线观看高清av | 在线看黄免费 | 成人国产网站 | 狠狠干狠狠干 | www成人在线 | www.欧美亚洲 | 米奇影视第四色 | 黄色wwww | 超碰青娱乐 | 亚洲欧美综合久久 | 91久久极品少妇xxxxⅹ软件 | 艳妇臀荡乳欲伦交换在线播放 | 久草播放 | 午夜资源网 | 本道久久| 雪花飘电影在线观看免费高清 | 日韩国产欧美在线视频 | 91精品在线视频观看 | 91刺激视频 | 永久精品网站 | 美女视频一区二区 | 影音先锋在线播放 | 成年人午夜影院 | 亚洲欧美一区二区三区在线观看 | 日日摸夜夜添夜夜 | 91日韩一区二区 | xxxxx黄色| 成人免费一区二区三区在线观看 | 久久午夜国产精品 | 国内精品久久久 | 蜜桃视频在线观看一区二区 | 国产免费无遮挡 | 久久久久一区二区 | 成人久久一区二区 | 国产视频黄色 | 网站av在线 | 欧洲一区二区三区在线 | 国产在线观看免费视频软件 | 欧美福利一区二区 | 国产精品系列在线播放 | 天堂av成人 | 久久精品精品 | 好吊妞在线 | 无码人妻精品一区二区三应用大全 | 17c在线视频 | 有码一区二区三区 | 日本大尺度床戏揉捏胸 | 在线免费小视频 | 欧美色精品在线 | 新超碰97| 四虎影城库 | 欧美成人午夜免费视在线看片 | 人人澡人人透人人爽 | 欧美人和黑人牲交网站上线 | 中国av一区 | 不卡的av在线免费观看 | 日韩成人在线看 | 91在线免费播放 | 女同另类之国产女同 | 美女屁股无遮挡 | 一区二区三区视频在线 | 性xxxx欧美老肥妇牲乱 | 欧美日韩影院 | 国产传媒在线视频 | 国产精品免费入口 | 射一射| 天天做天天爱天天爽综合网 | 色乱码一区二区三区熟女 | 俄罗斯乱妇 | 五月综合色婷婷 | 欧美精品黄色片 | 欧美黄色片网站 | 男人和女人在床的app | 亚洲高清视频在线 | 永久免费未满视频 | 小珊的性放荡羞辱日记 | 久久亚洲综合国产精品99麻豆精品福利 | 日韩欧美一区二区三区四区五区 | 国产精品久久久久久久天堂 | 欧美春色| 亚洲AV无码久久精品色三人行 | 超级乱淫视频 | 精品国产一区二区三区在线观看 | 一级黄网 | 欧美黄色免费网站 | 国产精品xxx在线观看 | 性开放视频| 黄色高清在线观看 | 好吊妞这里只有精品 | 伊人久久爱 |