<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          從零開(kāi)始深度學(xué)習(xí)Pytorch筆記(11)—— DataLoader類

          共 2593字,需瀏覽 6分鐘

           ·

          2020-04-10 23:23

          d1fa95126e0f5a5715b8086feca0ebc9.webp
          9a222edf6e8a1453ca3f8b34938e9b3c.webp前文傳送門:開(kāi)學(xué)習(xí)Pytorch1Pytorch開(kāi)學(xué)習(xí)Pytorch2創(chuàng)開(kāi)學(xué)習(xí)Pytorch3創(chuàng)開(kāi)學(xué)習(xí)Pytorch4開(kāi)學(xué)習(xí)Pytorch5開(kāi)學(xué)習(xí)Pytorch6數(shù)學(xué)運(yùn)開(kāi)學(xué)習(xí)Pytorch7?使Pytorch實(shí)現(xiàn)開(kāi)學(xué)習(xí)Pytorch8?計(jì)動(dòng)導(dǎo)
          開(kāi)學(xué)習(xí)Pytorch9?計(jì)動(dòng)導(dǎo)從零開(kāi)始深度學(xué)習(xí)Pytorch筆記(10)—— Dataset類


          在該系列的上一篇,我們講解了Dataset類,Dataset一次調(diào)用只是返回一條數(shù)據(jù),在深度學(xué)習(xí)中,我們經(jīng)常是對(duì)一個(gè)batch的數(shù)據(jù)進(jìn)行操作,也就是一批一批數(shù)據(jù)交給模型訓(xùn)練,同時(shí)還需要對(duì)數(shù)據(jù)進(jìn)行shuffle(打亂)操作和并行加速等等,這時(shí)候,使用Dataset就顯得功能不太足夠了,幸好,Pytorch提供了DataLoader給我們使用。DataLoader的參數(shù)為:
          DataLoader(dataset,?batch_size=1,?shuffle=False,?sampler=None,?batch_sampler=None,?num_workers=0,?collate_fn=None,?pin_memory=False,?drop_last=False,?timeout=0,?worker_init_fn=None,?multiprocessing_context=None)
          其中的參數(shù)含義為:dataset:加載的數(shù)據(jù)集(Dataset對(duì)象)batch_size:batch的大小shuffle::是否將數(shù)據(jù)打亂sampler:樣本抽樣num_workers:使用多進(jìn)程加載的進(jìn)程數(shù),0代表不使用多進(jìn)程collate_fn:如何將多個(gè)樣本數(shù)據(jù)拼接成一個(gè)batch,一般使用默認(rèn)的拼接方式即可pin_memory:是否將數(shù)據(jù)保存在pin memory區(qū),pin memory中的數(shù)據(jù)轉(zhuǎn)到GPU會(huì)快一些drop_last:dataset中的數(shù)據(jù)個(gè)數(shù)可能不是batch_size的整數(shù)倍,drop_last如果為True會(huì)將多出來(lái)不足一個(gè)batch的數(shù)據(jù)丟棄我們給出一個(gè)簡(jiǎn)單的DataLoader的例子:
          import?torch
          import?torch.utils.data?as?Data

          BATCH_SIZE?=?5

          x?=?torch.linspace(1,?20,?20)
          y?=?torch.linspace(20,?1,?20)

          torch_dataset?=?Data.TensorDataset(x,?y)#創(chuàng)建Dataset

          loader?=?Data.DataLoader(
          ????dataset=torch_dataset,#數(shù)據(jù)
          ????batch_size=BATCH_SIZE,#批次的大小
          ????shuffle=True,#打亂數(shù)據(jù)
          ????num_workers=2,#多進(jìn)程
          )

          for?epoch?in?range(3):#三個(gè)epoch
          ????for?step,?(batch_x,?batch_y)?in?enumerate(loader):
          ????????print('Epoch:?',?epoch,?'|?Step:?',?step,?'|?batch?x:?',
          ??????????????batch_x.numpy(),?'|?batch?y:?',?batch_y.numpy())
          3008b1564038c1a2434afe35911a5bc8.webp其中的一個(gè)epoch為將所有訓(xùn)練集訓(xùn)練一次的意思,而一個(gè)batch指的是將一批訓(xùn)練數(shù)據(jù)交給模型訓(xùn)練的意思。例如以上代碼的batchsize為5,訓(xùn)練集一共20條數(shù)據(jù),所以一個(gè)epoch分為4個(gè)batch(因?yàn)?0/5=4)。在深度學(xué)習(xí)中,所有訓(xùn)練集并不是只有一次加入模型訓(xùn)練,所以會(huì)有多個(gè)epoch的情況。我們把batchsize改為4,并且把數(shù)據(jù)打亂設(shè)置為False,再看看結(jié)果:
          import?torch
          import?torch.utils.data?as?Data

          BATCH_SIZE?=?4

          x?=?torch.linspace(1,?20,?20)
          y?=?torch.linspace(20,?1,?20)

          torch_dataset?=?Data.TensorDataset(x,?y)#創(chuàng)建Dataset

          loader?=?Data.DataLoader(
          ????dataset=torch_dataset,#數(shù)據(jù)
          ????batch_size=BATCH_SIZE,#批次的大小
          ????shuffle=False,#打亂數(shù)據(jù)
          ????num_workers=2,#多進(jìn)程
          )

          for?epoch?in?range(3):#三個(gè)epoch
          ????for?step,?(batch_x,?batch_y)?in?enumerate(loader):
          ????????print('Epoch:?',?epoch,?'|?Step:?',?step,?'|?batch?x:?',
          ??????????????batch_x.numpy(),?'|?batch?y:?',?batch_y.numpy())
          4447aef10b390bc306ec64aec4f2bdec.webp我們可以看到數(shù)據(jù)的batchsize變?yōu)榱?,并且數(shù)據(jù)的輸出是有序的,而深度學(xué)習(xí)中為了避免數(shù)據(jù)分布的干擾,一般都會(huì)講數(shù)據(jù)打亂輸入模型中!

          歡迎關(guān)注公眾號(hào)學(xué)習(xí)之后的深度學(xué)習(xí)連載部分~

          歷史文章推薦閱讀:
          從零開(kāi)始學(xué)自然語(yǔ)言處理(四)—— 做 NLP 任務(wù)文本 id 化與預(yù)訓(xùn)練詞向量初始化方法
          從零開(kāi)始學(xué)自然語(yǔ)言處理(三)——手把手帶你實(shí)現(xiàn)word2vec(skip-gram)
          從零開(kāi)始學(xué)自然語(yǔ)言處理(二)——手把手帶你用代碼實(shí)現(xiàn)word2vec
          從零開(kāi)始學(xué)自然語(yǔ)言處理(一)—— jieba 分詞
          一文詳解NLP語(yǔ)料構(gòu)建技巧你不知道的Python環(huán)境管理技巧,超級(jí)好用!
          Python快速安裝庫(kù)的靠譜辦法你只會(huì)用Python的pip安裝包?別錯(cuò)過(guò)這些好用功能!
          掃碼下圖關(guān)注我們不會(huì)讓你失望!23946e4b6b7e9a81f7b22714ee0d0ff8.webp


          09771de187f03447d6899d75ec8c2118.webp喜歡記得點(diǎn)再看哦,證明你來(lái)看過(guò)~
          瀏覽 81
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  自拍偷拍电影网 | 天天日天天干天天色 | 免费黄色小说网站 | 在线吴梦梦视频一区二区 | 天天不射视频网站 |