<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>

          【小白學(xué)習(xí)PyTorch教程】二、動態(tài)計(jì)算圖和GPU支持操作

          共 1818字,需瀏覽 4分鐘

           ·

          2021-08-05 09:48

          「@Author:Runsen」

          動態(tài)計(jì)算圖

          在深度學(xué)習(xí)中使用 PyTorch 的主要原因之一,是我們可以自動獲得定義的函數(shù)的梯度/導(dǎo)數(shù)

          當(dāng)我們操作我們的輸入時,會自動創(chuàng)建一個計(jì)算圖。該圖顯示了如何從輸入到輸出的動態(tài)計(jì)算過程。

          為了熟悉計(jì)算圖的概念,下面將為以下函數(shù)創(chuàng)建一個:

          這里的 是我們的參數(shù),我們想要優(yōu)化(最大化或最小化)輸出 . 為此,我們想要獲得梯度.

          在下面的代碼中,我將使用[1,2,3]作輸入。

          # 只有浮動張量有梯度
          x = torch.arange(1,4, dtype=torch.float32, requires_grad=True
          print("X", x)

          # X tensor([1., 2., 3.], requires_grad=True)

          現(xiàn)在讓我來一步一步地構(gòu)建計(jì)算圖,了解每個操作是到底是如何添加到計(jì)算圖中的。

          a = x + 2
          b = a ** 2
          c = b + 3
          y = c.mean()
          print("Y", y)
          # Y tensor(19.6667, grad_fn=<MeanBackward0>)

          使用上面的語句,我們創(chuàng)建了一個類似于下圖的計(jì)算圖(通過tensorboard )查看:

          我們計(jì)算 a 基于輸入x  和常數(shù)2,  ba平方等等操作。計(jì)算圖通常以相反的方向可視化(箭頭從結(jié)果指向輸入)。

          我們可以通過backward()在最后一個輸出上調(diào)用函數(shù)來對計(jì)算圖執(zhí)行反向傳播,這樣可以,計(jì)算了每個具有屬性的張量的梯度requires_grad=True

          y.backward()

          最后打印x.grad就可以查看對應(yīng)梯度。

          GPU支持操作

          在Pytorch中GPU 可以并行執(zhí)行數(shù)以千計(jì)的小運(yùn)算,因此非常適合在神經(jīng)網(wǎng)絡(luò)中執(zhí)行大型矩陣運(yùn)算。

          「CPU 與 GPU的區(qū)別」

          CPUGPU
          中央處理器圖形處理單元
          幾個核心多核
          低延遲高吞吐量
          適合串行處理適合并行處理
          可以一次做一些操作可以同時進(jìn)行數(shù)千次操作

          PyTorch 使用GPU,需要搭建NVIDIA 的CUDAcuDNN。

          下面代碼,檢查是否有可用的 GPU:

          gpu_avail = torch.cuda.is_available()
          print("Is the GPU available? %s" % str(gpu_avail))

          現(xiàn)在創(chuàng)建一個張量并將其推送到GPU設(shè)備:

          device = torch.device("cuda"if torch.cuda.is_available() else torch.device("cpu")
          print("Device", device)
          x = x.to(device)
          print("X", x)

          # Device cuda
          # X tensor([1., 1., 1.], device='cuda:0')

          cuda 旁邊的零表示這是計(jì)算機(jī)上的第0個 GPU 設(shè)備。因此,PyTorch 還支持多 GPU 系統(tǒng),

          下面將CPU 上的大型矩陣乘法的運(yùn)行時間與 GPU 上的運(yùn)算進(jìn)行比較:

          根據(jù)系統(tǒng)中的配置而定,GPU加速提高模型的訓(xùn)練速度。

          往期精彩回顧




          本站qq群851320808,加入微信群請掃碼:


          瀏覽 54
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  蜜桃传媒在线一二三区 | 黄 色 成 人 免费 视频 黄色视频网站日本大全免费看 | 成人乱码一区二区三区 | 操B毛片 操屄在线 | 国产又爽 又黄 免费观看 |