1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        實操教程 | Pytorch Debug指南:15條重要建議

        共 4386字,需瀏覽 9分鐘

         ·

        2021-08-15 17:20

        ↑ 點擊藍(lán)字 關(guān)注極市平臺

        作者 | Coggle

        來源 | Coggle數(shù)據(jù)科學(xué)

        編輯 | 極市平臺

        極市導(dǎo)讀

         

        在使用Pytorch時你或多或少會遇到各種bug,為了緩解你的痛苦??,本文將對常見的錯誤進(jìn)行解釋,并說清楚來龍去脈 >>加入極市CV技術(shù)交流群,走在計算機(jī)視覺的最前沿


        在使用Pytorch時你或多或少會遇到各種bug,為了緩解你的痛苦??,本文將對常見的錯誤進(jìn)行解釋,并說清楚來龍去脈。

        細(xì)節(jié)就是魔鬼,雖然代碼不報錯但還是可能會對精度帶來影響。如果本文對你有幫助,請收藏&轉(zhuǎn)發(fā)!

        CrossEntropyLoss和NLLLoss

        最常見的錯誤是損失函數(shù)和輸出激活函數(shù)之間的不匹配。nn.CrossEntropyLossPyTorch中的損失模塊執(zhí)行兩個操作:nn.LogSoftmaxnn.NLLLoss

        因此nn.CrossEntropyLossPyTorch的輸入應(yīng)該是最后一個線性層的輸出。不要在nn.CrossEntropyLossPyTorch之前應(yīng)用Softmax。 否則將對Softmax輸出計算log-softmax,將會降低模型精度。

        如果使用nn.NLLLoss模塊,則需要自己應(yīng)用log-softmax。nn.NLLLoss需要對數(shù)概率,而不是普通概率。因此確保應(yīng)用nn.LogSoftmaxor nn.functional.log_softmax,而不是nn.Softmax

        Softmax的計算維度

        注意Softmax的計算維度。通常是輸出張量的最后一個維度,例如nn.Softmax(dim=-1)。如果混淆了維度,模型最終會得到隨機(jī)預(yù)測。

        類別數(shù)據(jù)與嵌入操作

        對于類別數(shù)據(jù),常見的做法是進(jìn)行數(shù)值編碼。但對于深度學(xué)習(xí)而言,這并不是一個很好的操作,數(shù)值會帶來大小關(guān)系,且會丟失很多信息。因此對于類別數(shù)據(jù)建議使用one-hotEmbedding操作,對于nn.Embedding模塊,你需要設(shè)置的參數(shù)包括:

        • num_embeddings:數(shù)據(jù)類別的數(shù)量
        • embedding_dim:每個類別的嵌入維度
        • padding_idx:填充符號的索引

        嵌入特征向量從隨機(jī)初始化,不要用 Kaiming、Xavier初始化方法。因為標(biāo)準(zhǔn)差為1,初始化、激活函數(shù)等被設(shè)計為輸入標(biāo)準(zhǔn)差為 1。nn.Embedding模塊的示例用法:

        import torch
        import torch.nn as nn
        # Create 5 embedding vectors each with 32 features
        embedding = nn.Embedding(num_embeddings=5,
        embedding_dim=32)

        # Example integer input
        input_tensor = torch.LongTensor([[0, 4], [2, 3], [0, 1]])

        # Get embeddings
        embed_vectors = embedding(input_tensor)

        print("Input shape:", input_tensor.shape)
        print("Output shape:", embed_vectors.shape)
        print("Example features:\n", embed_vectors[:,:,:2])

        nn.LSTM 中 數(shù)據(jù)維度

        默認(rèn)情況下,PyTorch的nn.LSTM模塊假定輸入維度為[seq_len, batch_size, input_size],所以確保不要混淆序列長度和批大小的次數(shù)。如果混淆LSTM仍然可以正常運行,但會給出錯誤的結(jié)果。

        維度不匹配

        如果Pytorch執(zhí)行矩陣乘法,并兩個矩陣出現(xiàn)維度不匹配,PyTorch會報錯并拋出錯誤。但是也存在PyTorch不會拋出錯誤的情況,此時未對齊的維度具有相同的大小。建議使用多個不同的批量大小測試您的代碼,以防止維度不對齊。

        訓(xùn)練和評估模式

        在PyTorch中,神經(jīng)網(wǎng)絡(luò)有兩種模式:traintrain。您可以使用model.eval()model.train()對模型時進(jìn)行切換。不同的模式?jīng)Q定是否使用dropout,以及如何處理Batch Normalization。常見的錯誤是在eval后忘記將模型設(shè)置回train模式,確定模型在預(yù)測階段為eval模式。

        參數(shù)繼承

        PyTorch支持nn.Modules,一個模塊可以包含另一個模塊,另一個模塊又可以包含一個模塊,依此類推。

        當(dāng)調(diào)用.parameters()時,PyTorch會查找該模塊內(nèi)的所有模塊,并將它們的參數(shù)添加到最高級別模塊的參數(shù)中。

        但是PyTorch不會檢測列表、字典或類似結(jié)構(gòu)中模塊的參數(shù)。如果有一個模塊列表,請確保將它們放入一個nn.ModuleListnn.Sequential對象中。

        參數(shù)初始化

        正確初始化模型的參數(shù)非常重要。用標(biāo)準(zhǔn)正態(tài)分布初始化參數(shù)不是好的選擇,推薦的方法有KaimingXavier。

        zero_grad()

        請記住在執(zhí)行loss.backward()之前調(diào)用optimizer.zero_grad()。如果在執(zhí)行反向傳播之前沒有重置所有參數(shù)的梯度,梯度將被添加到上一批的梯度中。

        指標(biāo)計算邏輯

        在懷疑自己或模型之前,請經(jīng)常檢查您的指標(biāo)計算邏輯計算兩次或更多次。像準(zhǔn)確性這樣的指標(biāo)很容易計算,但在代碼中添加錯誤也很容易。例如,檢查您是否對批次維度進(jìn)行了平均,而不是意外對類維度或任何其他維度進(jìn)行平均。

        設(shè)備不匹配

        如果使用GPU可能會看到一個錯誤,例如:

        Runtime Error: Input type (torch.FloatTensor) dand weigh type (torch.cuda.FloatTensor) should be on the same device.

        此錯誤表示輸入數(shù)據(jù)在CPU上,而權(quán)重在GPU上。確保所有數(shù)據(jù)都在同一設(shè)備上。這通常是GPU,因為它支持訓(xùn)練和測試加速。

        nn.Sequential和nn.ModuleList

        如果模型有很多層,推薦將它們匯總為一個nn.Sequentialnn.ModuleList對象。在前向傳遞中,只需要調(diào)用sequential,或者遍歷模塊列表。

        class MLP(nn.Module):

        def __init__(self, input_dims=64, hidden_dims=[128,256], output_dims=10):
        super().__init__()
        hidden_dims = [input_dims] + hidden_dims
        layers = []
        for idx in range(len(hidden_dims)-1):
        layers += [
        nn.Linear(hidden_dims[i], hidden_dims[i+1]),
        nn.ReLU(inplace=True)
        ]
        self.layers = nn.Sequential(*layers)

        def forward(self, x):
        return self.layers(x)

        參數(shù)重復(fù)計算

        在深度神經(jīng)網(wǎng)絡(luò)中,通常會有重復(fù)添加到模型中的塊。如果這些塊需要比更復(fù)雜的前向函數(shù),建議在單獨的模塊中實現(xiàn)它們。例如,一個 ResNet 由多個具有殘差連接的ResNet塊組成。ResNet模塊應(yīng)用一個小型神經(jīng)網(wǎng)絡(luò),并將輸出添加回輸入。最好在單獨的類中實現(xiàn)這種動態(tài),以保持主模型類小而清晰。

        輸入相同的維度

        如果您有多個具有相同輸入的線性層或卷積,則可以將它們堆疊在一起以提高效率。假設(shè)我們有:

        雖然可以通過兩個線性層來實現(xiàn)它,但您可以通過將兩層堆疊為一層來獲得完全相同的神經(jīng)網(wǎng)絡(luò)。單層效率更高,因為這代表單個矩陣運算,而不是GPU的兩個矩陣運算,因此我們可以并行化計算。

        x = torch.randn(2, 10)

        # Implementation of separate layers:
        y1_layer = nn.Linear(10, 20)
        y2_layer = nn.Linear(10, 30)
        y1 = y1_layer(x)
        y2 = y2_layer(x)

        # Implementation of a stacked layer:
        y_layer = nn.Linear(10, 50)
        y = y_layer(x)
        y1, y2 = y[:,:20], y[:,20:50]

        使用帶logits的損失函數(shù)

        分類損失函數(shù)(例如二元交叉熵)在PyTorch中有兩個版本:nn.BCELossnn.BCEWithLogitsLoss,建議和推薦的做法是使用后者。這因為它在數(shù)值上更穩(wěn)定,并在您的模型預(yù)測非常錯誤時防止出現(xiàn)任何不穩(wěn)定性。

        如果您不使用logit損失函數(shù),則當(dāng)模型預(yù)測不正確的非常高或非常低的值時,您可能會遇到問題。

        如果覺得有用,就請分享到朋友圈吧!

        △點擊卡片關(guān)注極市平臺,獲取最新CV干貨

        公眾號后臺回復(fù)“CVPR21檢測”獲取CVPR2021目標(biāo)檢測論文下載~


        極市干貨
        深度學(xué)習(xí)環(huán)境搭建:如何配置一臺深度學(xué)習(xí)工作站?
        實操教程:OpenVINO2021.4+YOLOX目標(biāo)檢測模型測試部署為什么你的顯卡利用率總是0%?
        算法技巧(trick):圖像分類算法優(yōu)化技巧21個深度學(xué)習(xí)調(diào)參的實用技巧


        CV技術(shù)社群邀請函 #

        △長按添加極市小助手
        添加極市小助手微信(ID : cvmart4)

        備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳)


        即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群


        每月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~



        覺得有用麻煩給個在看啦~  
        瀏覽 68
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美三级在线视频| 黄色视频电影| 久久黄视频| 男人的天堂2019| 国产内射视频| 3DAV一区二区三区动漫| 久久久91人妻无码精品蜜桃ID| 黄色不卡| av无码一区| 中文字幕无码AV| 国产精品婷婷| 欧美视频综合| 一级AAAAA片裸体做受| 国产精品中文| 3D动漫啪啪精品一区二区中文字幕| 亚洲国产成人精品女人| 天天摸天天添| 北条麻妃青青久久| 手机在线看A片| 69成人精品国产| 兔子先生和優奈玩游戲脫衣服,運氣報表優奈輸到脫精光 | 丁香六月婷婷激情| 中文字幕av免费在线观看| 久久久人妻| 久操精品| 老司机精品视频在线观看| 欧美日韩国产成人综合| 日日摸日日操| 夜夜骑夜夜操| 欧美黑人操逼视频| 翔田千里中文字幕无码| 精品国产黄色| 精品视频一区二区三区| 微拍福利一区二区| 国产免费www| 无码爱爱视频| 三级久久| 日韩中文字幕视频在线| 欧美日韩亚洲中文字幕| 亚洲av观看| 特级特黄A级高潮播放| 成人黄色无码视频| 一级黄色片视频| 正在播放李彩斐被洋老外| 日韩高清无码免费观看| 天天插一插| 九九九免费视频| 午夜福利免费在线观看| 国产无套进入免费| 欧美A视频| 老司机精品视频在线观看| 国产三级片AV| 国产对白在线| 99在线视频播放| 国产精品高清无码| 超碰成人在线观看| 骚视频网站| 国产精品第二页| 免费A片在线观看| 日本一区二区视频在线观看| 十八毛片| 大香蕉av在线| 91豆花在线| 亚洲AV成人精品一区二区三区 | 91大鸡| av在线资源网| 人人妻人人澡人人爽久久con | 小视频+福利| 艹b视频在线观看| 日韩熟妇视频| 亚洲WWW| 操人在线观看| 丁香五月欧美激情| 日韩视频一级| 99久re热视频精品98| 中文无码人妻| 97精产国品久久蜜桃臀| 中文字幕你懂的| 中国熟女网站| 在线啊啊啊| 激情操逼| 不卡的AV| 中文字幕亚洲综合| 国产一区在线播放| 天天综合干| 日本黄色影视| 日本人妻在线视频| 日本黄色免费网站| 在线男人天堂| 毛片区| 久久久久无码国产精品一区| 在线免费观看一区| 午夜亚洲AV永久无码精品麻豆| 一级a免一级a做免费线看内祥| 尻屄视频在线观看| 天天视频入口| 一区毛片| 欧美日韩性色无码免费| 亚洲黄色免费网站| 成人黄色免费在线| 日韩人妻精品中文字幕| 精品中文在线| 国产成人久久777777黄蓉| 成人色色| 内射精品| www.199麻豆在线观看网站 | 大香蕉官网| aaa精品视频| 青青草激情视频| 伊人久久久久久久久久久| 日逼综合| 久久成人久久爱| 第一福利视频导航| 91精品久久久久久综合五月天 | 国精产品一二四区黑人| 爱爱高清视频| 色片在线观看| 日韩无码三级视频| 久久夜色精品国产欧美乱极品 | 久久黄视频| 国产91高跟丝袜| 女人天堂AV| 亚洲天堂男人天堂| 国产亚洲AV| 欧美三级片网| 三级片在线观看网站| 激情黄色视频| 日韩中文字幕一区二区| 影音先锋男人资源站| 视频一区二| 熟女探花| 亚洲色,天堂网| 日本黄A级A片国产免费| 亚洲综合社区| 97色情| 久久思思热| 亚洲国产成人AV| 初学影院WWWBD英语完整版在线观看 | 亚洲美女在线观看| 欧美精产国品一| 亚洲av高清无码| 久久人体视频| 婷婷五月天在线观看| 国产精品揄拍500视频| 国产一区2区| 精品国产久久久| 色综合天天操| 免费毛片观看| 东京热男人的天堂| 999久久久精品| 中国老熟妇| 男女拍拍免费视频| 国产香蕉AV| 97国产在线| 日批免费视频| 秋霞午夜久久| 无码视频播放| 欧美少妇视频| 人人妻人人上| 日本成人视频在线免费播放| 中文字幕Av在线| 亚洲高清无码中字| 柠檬福利第一导航| 一级特黄大片色| 免费黄色成人| 日逼一级| 深夜无码| 香蕉视频一区| 日韩干| 操逼视频在线观看| 天天夜夜人人| 五月六月丁香| 最新久欠一区二区免费看| 午夜av影院| 国产女人18毛片水18精品| 亚洲成人视频一区二区| 91熟女视频| 春色av| 久久久五月| 亚洲欧美成人片| 大香蕉综合网| 成人午夜福利电影| www.人人摸| 在线免费看A| A一级横色大片| 色综合色综合| 欧美日韩大片| 人妻18无码人伦一区二区三区精品 | av在线天堂网| 一区在线看| 国产天堂| 中国九九盗摄偷拍偷看| 久热精品在线观看视频| 色视频网| 国产偷拍精品视频| 免费小视频| 免费观看黄色电影| 国产熟妇码视频app| 性欧美日韩| 屌国产精品| 深夜无码| 嫩BBB槡BBBB槡BBBB撒尿| 少妇A片| 一区二区三区高清不卡| 午夜精品18视频国产17c| 日韩中文字幕av| 精品女人| 欧美在线视频一区二区| 日本一区二区三区四区| 亚洲无码自拍| 你懂的在线播放| 能看的av| 在线婷婷| 婷婷五月天色综合| 96精品久久久久久久久久| 殴美亚洲一流| 激情91| av大全在线观看| 波多野结衣亚洲视频| 另类无码| 五月激情久久| 久艹99| 最近中文字幕2022在线观看A | 成人免费AV| 狼人综合色| 中文字幕的色| 影音先锋久久| 中文字幕AV在线观看| 91亚洲国产AⅤ精品一区二区| 国产第一精品| 97精品人妻一区二区三区香蕉| 久久久WWW成人免费无遮挡大片| 国产毛片欧美毛片高潮| 成人网站在线| 亚洲一区二区无码| 黄片大全在线观看| 黄色A视频| 五月天激情综合网| 毛片中文字幕| 亚欧洲精品在线视频| 高清视频一区| 99热99re6国产线播放| 久久久久久久久久久亚洲| 中文人妻第9页| 精品福利视频导航| 人人操在线观看| 亲子伦一区二区三区| 俺也去在线| 国产一级婬乱片AV片AAA毛片| 草草浮力院| 久本草精品| 国产精品美女在线观看| 亚洲婷婷在线观看| 亚洲少妇性爱视频| 热久久在线| 开心色播五月| 国内自拍99| 操逼第二页| 中文字幕码精品视频网站| 亚洲视频中文字母| 三洞齐开Av在线免费观看| 麻豆三级电影| 天天日夜夜| 久久久影院| 东京热综合| 成人在线网| 成人午夜福利| 成人在线视频观看| 国产九九| 一区二区高清无码| 日日干夜夜撸| 黄片av| 三级久久| 欧美国产日韩综合在线观看170| 伊人免费视频| 伊人久久福利视频| 专业操美女视频网站| 婷婷丁香五月激情一区综合网| 国产探花视频在线免费观看| 日本高清色清di免费观看| 婷婷情色五月| 操屄视频播放| 夜夜网站| 无码日韩电影| 成人久久久久久| 天天操人人操| 亚洲无码中文字幕在线| 国产欧美日韩在线播放| AV无码免费| 国产欧美在线看| 国产亚洲欧美精品综合在线| 新妺妺窝窝777777野外| 亚洲无码精品久久| 99热偷拍| 国产乱码一区二区三区四区在线 | 国产日韩欧美91| 动漫啪啪视频| 国产精品揄拍100视频| 嫩苞又嫩又紧AV无码| 亚洲综合在线网|