欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > pytorch Dropout過擬合的操作

pytorch Dropout過擬合的操作

熱門標簽:手機網(wǎng)頁嵌入地圖標注位置 河北防封卡電銷卡 電銷機器人的風險 地圖標注線上如何操作 開封語音外呼系統(tǒng)代理商 400電話辦理哪種 天津電話機器人公司 開封自動外呼系統(tǒng)怎么收費 應電話機器人打電話違法嗎

如下所示:

import torch
from torch.autograd import Variable
import matplotlib.pyplot as plt
torch.manual_seed(1)
N_SAMPLES = 20
N_HIDDEN = 300
# training data
x = torch.unsqueeze(torch.linspace(-1, 1, N_SAMPLES), 1)
y = x + 0.3 * torch.normal(torch.zeros(N_SAMPLES, 1), torch.ones(N_SAMPLES, 1))
x, y = Variable(x), Variable(y)
# test data
test_x = torch.unsqueeze(torch.linspace(-1, 1, N_SAMPLES), 1)
test_y = test_x + 0.3 * torch.normal(torch.zeros(N_SAMPLES, 1), torch.ones(N_SAMPLES, 1))
test_x = Variable(test_x, volatile=True)
test_y = Variable(test_y, volatile=True)
# show data
# plt.scatter(x.data.numpy(), y.data.numpy(), c='magenta', s=50, alpha=0.5, label='train')
# plt.scatter(test_x.data.numpy(), test_y.data.numpy(), c='cyan', s=50, alpha=0.5, label='test')
# plt.legend(loc='upper left')
# plt.ylim((-2.5, 2.5))
# plt.show()
net_overfitting = torch.nn.Sequential(
    torch.nn.Linear(1, N_HIDDEN),
    torch.nn.ReLU(),
    torch.nn.Linear(N_HIDDEN, N_HIDDEN),
    torch.nn.ReLU(),
    torch.nn.Linear(N_HIDDEN, 1),
)
net_dropped = torch.nn.Sequential(
    torch.nn.Linear(1, N_HIDDEN),
    torch.nn.Dropout(0.5),
    torch.nn.ReLU(),
    torch.nn.Linear(N_HIDDEN, N_HIDDEN),
    torch.nn.Dropout(0.5),
    torch.nn.ReLU(),
    torch.nn.Linear(N_HIDDEN, 1),
)
print(net_overfitting)
print(net_dropped)
optimizer_ofit = torch.optim.Adam(
    net_overfitting.parameters(),
    lr = 0.01,
)
optimizer_drop = torch.optim.Adam(
    net_dropped.parameters(),
    lr = 0.01,
)
loss_func = torch.nn.MSELoss()
plt.ion()
for t in range(500):
    pred_ofit = net_overfitting(x)
    pred_drop = net_dropped(x)
    loss_ofit = loss_func(pred_ofit, y)
    loss_drop = loss_func(pred_drop, y)
    optimizer_ofit.zero_grad()
    optimizer_drop.zero_grad()
    loss_ofit.backward()
    loss_drop.backward()
    optimizer_ofit.step()
    optimizer_drop.step()
    if t % 10 == 0:
        net_overfitting.eval()
        net_dropped.eval()
        plt.cla()
        test_pred_ofit = net_overfitting(test_x)
        test_pred_drop = net_dropped(test_x)
        plt.scatter(x.data.numpy(), y.data.numpy(), c='magenta', s=50, alpha=0.3, label='train')
        plt.scatter(test_x.data.numpy(), test_y.data.numpy(), c='cyan', s=50, alpha=0.3, label='test')
        plt.plot(test_x.data.numpy(), test_pred_ofit.data.numpy(), 'r-', lw=3, label='overfitting')
        plt.plot(test_x.data.numpy(), test_pred_drop.data.numpy(), 'b--', lw=3, label='dropout(50%)')
        plt.text(0, -1.2, 'overfitting loss=%.4f' % loss_func(test_pred_ofit, test_y).data[0], fontdict={'size': 20, 'color':  'red'})
        plt.text(0, -1.5, 'dropout loss=%.4f' % loss_func(test_pred_drop, test_y).data[0], fontdict={'size': 20, 'color': 'blue'})
        plt.legend(loc='upper left'); plt.ylim((-2.5, 2.5));plt.pause(0.1)
        net_overfitting.train()
        net_dropped.train()
plt.ioff()
plt.show()

補充:pytorch避免過擬合-dropout丟棄法的實現(xiàn)

對于一個單隱藏層的多層感知機,其中輸入個數(shù)為4,隱藏單元個數(shù)為5,且隱藏單元的計算表達式為:

開始實現(xiàn)drop丟棄法避免過擬合

定義dropout函數(shù):

%matplotlib inline
import torch
import torch.nn as nn
import numpy as np
def dropout(X, drop_prob):
    X = X.float()
    assert 0 = drop_prob = 1
    keep_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

定義模型參數(shù):

num_inputs, num_outputs, num_hiddens1, num_hiddens2 = 784, 10, 256, 256
W1 = 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]

定義模型將全連接層和激活函數(shù)ReLU串起來,并對每個激活函數(shù)的輸出使用丟棄法。

分別設置各個層的丟棄概率。通常的建議是把靠近輸入層的丟棄概率設得小一點。

在這個實驗中,我們把第一個隱藏層的丟棄概率設為0.2,把第二個隱藏層的丟棄概率設為0.5。

我們可以通過參數(shù)is_training來判斷運行模式為訓練還是測試,并只在訓練模式下使用丟棄法。

drop_prob1, drop_prob2 = 0.2, 0.5
def 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) + b3
def evaluate_accuracy(data_iter, net):
    acc_sum, n = 0.0, 0
    for X, y in data_iter:
        if isinstance(net, torch.nn.Module):
            net.eval() # 評估模式, 這會關閉dropout
            acc_sum += (net(X).argmax(dim=1) == y).float().sum().item()
            net.train() # 改回訓練模式
        else: # 自定義的模型
            if('is_training' in net.__code__.co_varnames): # 如果有is_training這個參數(shù)
                # 將is_training設置成False
                acc_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表示不用額外的進程來加速讀取數(shù)據(jù)
    else:
        num_workers = 4
    train_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_iter
def 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, 0
        for 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回歸的簡潔實現(xiàn)”一節(jié)將用到
            
            
            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)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PyTorch dropout設置訓練和測試模式的實現(xiàn)
  • 淺談pytorch中的dropout的概率p
  • PyTorch 實現(xiàn)L2正則化以及Dropout的操作
  • pytorch 實現(xiàn)在測試的時候啟用dropout
  • pytorch 中nn.Dropout的使用說明
  • Pytorch之如何dropout避免過擬合

標簽:駐馬店 常州 宿遷 成都 江蘇 六盤水 蘭州 山東

巨人網(wǎng)絡通訊聲明:本文標題《pytorch Dropout過擬合的操作》,本文關鍵詞  pytorch,Dropout,過,擬合,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch Dropout過擬合的操作》相關的同類信息!
  • 本頁收集關于pytorch Dropout過擬合的操作的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    爽好久久久欧美精品| 国产在线不卡av| 国产在线免费av| 精品日韩一区二区三区 | 国产一区二区三区香蕉| 插我舔内射18免费视频| 在线播放视频一区| 亚洲电影第三页| 精品无码人妻少妇久久久久久| 欧美三级日韩三级| 亚洲午夜久久久久久久久电影网| av网站一区二区三区| 欧美又粗又大又长| 亚洲欧美日韩久久| 91麻豆蜜桃一区二区三区| 色老头久久综合| 亚洲精品成人悠悠色影视| 男插女视频网站| 亚洲AV无码片久久精品| 日韩欧美你懂的| 久久99精品一区二区三区| 中文字幕在线观看免费高清| 久久精品亚洲精品国产欧美kt∨| 国产一区二区三区四区在线观看| 亚洲精品卡一卡二| 亚洲人成亚洲人成在线观看图片| 亚洲av无一区二区三区久久| 欧美精品日韩精品| 毛片基地黄久久久久久天堂| 四季av中文字幕| 国产精品国模大尺度视频| 91在线观看污| 4438x成人网最大色成网站| 青娱乐精品视频| 四季av中文字幕| 亚洲欧美另类久久久精品| 五月天丁香社区| 精品国产麻豆免费人成网站| 国产一区二区女| 色哟哟一区二区| 午夜精品久久久久| 精品人妻中文无码av在线| 国产精品乱码人人做人人爱| 91蜜桃视频在线| 日韩精品中午字幕| 国产成人av电影免费在线观看| 色哟哟一区二区| 青青青伊人色综合久久| 三级黄色在线观看| 一区2区3区在线看| 国精产品一区二区三区| 成人免费在线播放视频| 波多野结衣影院| 亚洲国产高清aⅴ视频| 丰满饥渴老女人hd| 精品福利一区二区三区| 不卡视频在线观看| 日韩欧美一级二级| 成人av第一页| 欧美大度的电影原声| 成人激情图片网| 欧美一级视频精品观看| 国产成人福利片| 欧美电影在线免费观看| 国产精品亚洲а∨天堂免在线| 欧美日韩一区三区四区| 国产乱人伦偷精品视频免下载| 欧美天堂一区二区三区| 精品亚洲欧美一区| 精品1区2区3区| 国产成人日日夜夜| 欧美一区二区三区电影| 成人av在线网站| 精品国产免费久久| 熟女人妻一区二区三区免费看| 国产肉丝袜一区二区| 国产人成视频在线观看| 国产精品电影院| 美女脱光内衣内裤| 亚洲在线免费播放| 在线观看黄网址| 裸体一区二区三区| 欧美美女黄视频| 成人激情黄色小说| 久久综合色8888| 88av在线播放| 亚洲免费av在线| 女同久久另类69精品国产| 日本欧美在线看| 欧美伦理影视网| 99精品久久只有精品| 欧美激情综合五月色丁香小说| 毛茸茸多毛bbb毛多视频| 一区二区三区美女| 五月天色婷婷丁香| 久久66热偷产精品| 欧美一区二区免费| avtt中文字幕| 日韩码欧中文字| 国产麻豆a毛片| 韩国欧美国产1区| 欧美大片在线观看一区二区| 精品人妻伦一二三区久| 亚洲精品va在线观看| 成人高潮免费视频| 精彩视频一区二区三区| 欧美va亚洲va在线观看蝴蝶网| 中文字幕在线观看91| 亚洲欧美另类小说| 色天天综合色天天久久| 高清成人免费视频| 欧美高清在线视频| 波多野结衣家庭教师在线观看 | 波多野结衣一区二区三区| 久久色视频免费观看| 在线 丝袜 欧美 日韩 制服| 性欧美大战久久久久久久久| 欧美三级乱人伦电影| 国产黄色一区二区三区| 亚洲色图视频免费播放| 色综合久久久久综合体| 成人av在线资源网站| 《视频一区视频二区| 一区二区在线观看免费视频| 粉嫩绯色av一区二区在线观看| 国产亚洲成年网址在线观看| 黄色av免费播放| 国产呦萝稀缺另类资源| 久久精品夜色噜噜亚洲a∨| 中文天堂资源在线| 国产麻豆精品theporn| 国产欧美一区在线| 2014亚洲天堂| 成人黄页在线观看| 亚洲青青青在线视频| 在线观看日韩电影| 韩国理伦片一区二区三区在线播放| 2欧美一区二区三区在线观看视频| 青青草福利视频| 精品一区二区在线观看| 久久久.com| 国产成人av免费在线观看| 成人少妇影院yyyy| 亚洲靠逼com| 欧美欧美欧美欧美首页| www.日本高清| 久久99久久精品欧美| 亚洲国产成人午夜在线一区| 青青青在线免费观看| 91影视在线播放| 亚洲不卡av一区二区三区| 日韩免费高清av| 永久免费毛片在线观看| 国产不卡高清在线观看视频| 亚洲人成网站色在线观看| 欧美日韩一区二区三区不卡| 捆绑凌虐一区二区三区| 国产一区二区在线视频| 亚洲欧美影音先锋| 欧美日韩精品欧美日韩精品| 国产精品无码永久免费不卡| 国模套图日韩精品一区二区| 中文字幕日韩一区| 欧美日韩三级一区| 亚洲天堂久久新| 国产成人av福利| 亚洲一区二区三区四区的| 日韩一区二区三区精品视频| 国产成人精品视频免费| 91视视频在线观看入口直接观看www| 亚洲电影你懂得| 久久精品日韩一区二区三区| 中文字幕在线观看成人| 50一60岁老妇女毛片| 国产麻豆午夜三级精品| 亚洲精品免费在线观看| 欧美大片日本大片免费观看| 国产精品国产高清国产| 老熟妇精品一区二区三区| 国产精品一区二区三区四区| 亚洲综合免费观看高清在线观看| 日韩美女在线视频 | 日韩av网站在线播放| 美女日批在线观看| 国产自产视频一区二区三区| 亚洲乱码国产乱码精品精可以看| 日韩一区二区三区视频在线观看| 手机在线免费看片| 亚洲一区二区三区无码久久| 成人爽a毛片一区二区免费| 天堂午夜影视日韩欧美一区二区| 欧美国产综合一区二区| 777xxx欧美| 印度午夜性春猛xxx交| 国产女主播喷水高潮网红在线| 91丝袜美腿高跟国产极品老师| 久久99精品久久久久久国产越南| 一区二区三区免费网站| 国产日韩欧美激情| 日韩午夜精品视频|