<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能開發者 正文
      發私信給AI研習社-譯站
      發送

      0

      深度學習基礎:張量運算

      本文作者: AI研習社-譯站 2020-08-20 15:00
      導語:淺談Pytorch,以及使用Pytorch的核心矩陣操作。

      深度學習基礎:張量運算

      字幕組雙語原文:深度學習基礎:張量運算

      英語原文:Tensor Operations — Basic Building Blocks of Deep Learning

      翻譯:雷鋒字幕組(大表哥、Shangru


      深度學習基礎:張量運算

      2012-至今:深度學習爆炸時代

      在2012年的Imagenet運動之后,深度學習取得了突飛猛進的發展。 深度學習現在已經成為我們日常生活中不可或缺的一部分,當我們與語音助手交談、使用家庭自動化系統、寫電子郵件等時,許多算法都在運行。事實上,它的影響是如此之大,以至于我們可以在亞馬遜上看到名為“嬰兒的神經網絡”的書籍:D

      “深度”學習是如何發生的?

      就其核心而言,深度學習只不過是人腦工作方式的縮影(忽略了人腦中存在的實際復雜性,這種復雜性仍然很難復制)。 計算機使用成百上千個跨越深層的神經元連接從它的輸入和輸出中學習(因此有了“深度學習”這個詞)。

      每一個神經元連接都有與自身相關的不同重量。

      深度學習基礎:張量運算

      在每次迭代中對權值進行優化,使預測損失最小化,并以最高精度預測輸出。計算機是機器,機器只懂數字。因此,在底層,我們討論的所有這些權重都是n維矩陣或張量。

      由于每個權值都是一個n維矩陣或張量,權值的學習和優化涉及數百萬個矩陣乘法。在過去的6-7年中,我們已經看到許多DL框架的出現,它們簡化了這個任務。

      深度學習基礎:張量運算

      五大深度學習框架(Pythorch、Tensorflow、Keras、CNTK、Caffe)

      什么是Pytorch

      Pytorch是一個流行的深度學習框架,由Facebook人工智能研究(FAIR)開發和維護,用于處理張力。自2016年1.0.0發布以來,由于使用的簡單性和靈活性,它獲得了極大的普及。在本文中,我們將主要關注使用Pytorch的一些核心張量運算。您可能想通過這個博客了解如何安裝PyTorch的詳細說明。

      1. torch.size

      2. torch.mm

      3. torch.cat

      4. torch.mul

      5. torch.inverse

      1.torch.size

      Torch.size返回任何輸入張量的維度。

      x = torch.tensor([
                       [[1, 2, 3, 4],
                       [3, 4., 6, 7]],
                       [[10,20,30,40],
                        [20,30,40,50]],
                       [[5,6,7,8],
                        [9,10,11,12]]
                      ])
      x.size()
      torch.Size([3, 2, 4])

      在上面的示例中,我創建了一個3X2X4張量,torch.size返回3個維度。 我們的張量在外括號內有3個元素,每個元素都是一個矩陣。 每個矩陣同樣有2個元素,每個元素都是一個包含4個元素的列表。

      2.torch.mm

      torch.mm返回任意兩個輸入矩陣matr1和mat2的矩陣乘法(不是元素一一對應相乘)

      mat1 = torch.tensor([[1,2,3],
                         [4,5,6],
                         [6,7,8]])
      mat2 = torch.tensor([[10,20,30],
                         [40,50,60],
                         [60,70,80]])
      x = torch.mm(mat1, mat2)
      y = mat1@mat2
      x,y
      (tensor([[ 270,  330,  390],         [ 600,  750,  900],         [ 820, 1030, 1240]]), tensor([[ 270,  330,  390],         [ 600,  750,  900],         [ 820, 1030, 1240]]))

      在上面的示例中,mat1和mat2的大小均為3X3。 因此,torch.mm的輸出大小也為3X3。 我們可以看到可以使用“ @”運算符代替torch.mm來執行相同的操作。

      使用torch.mm()時要注意的幾點

      • 第一個輸入矩陣的列大小應等于第二個輸入矩陣的行大小

      • 對于不是矩陣或大于2維的張量,torch.mm不起作用,我們可以使用torch.mul進行逐個元素的乘法

      • ‘@'運算符執行與torch.mm相同的操作

      3.torch.cat

      Torch.cat可以水平或垂直連接2個張量

      #假設我們有以下2個張量,并嘗試垂直連接它門x = torch.tensor([[1,3],
                      [2,5],
                      [3,6]])
      y = torch.tensor([[10,30],
                       [20,50],
                       [30,60]])
      z = torch.cat((x,y))
      z
      tensor([[ 1,  3],        [ 2,  5],        [ 3,  6],        [10, 30],        [20, 50],        [30, 60]])

      我們可以看到,張量y已經堆疊在張量x的下方。

      # 現在我們嘗試著將它們水平連接起來x = torch.tensor([[1,3],
                      [2,5],
                      [3,6]])
      y = torch.tensor([[10,30],
                       [20,50],
                       [30,60]])
      z = torch.cat((x,y), dim = 1)
      z
      tensor([[ 1,  3, 10, 30],        [ 2,  5, 20, 50],        [ 3,  6, 30, 60]])

      通過使用dim參數并將其設置為1,我們可以水平連接2個張量。 默認設置為0,這將導致垂直串聯。

      使用torch.cat時的注意事項

      • 使用dim = 1來水平連接張量

      • 可以連接任意數量的張量,但是,請確保張量在串聯方向上的大小應相同

      4.torch.mul

      torch.mul 可對2個張量進行逐元素乘法。

      mat1 = torch.tensor([[[1,2,3],
                         [4,5,6]],
                          [[5,6,7],
                          [8,9,10]],
                         [[11,12,13],
                         [13,14,15]]])
      mat2 = torch.tensor([[[10,20,30],
                         [40,50,60]],
                          [[50,60,70],
                          [80,90,100]],
                         [[110,120,130],
                         [130,140,150]]])
      x = torch.mul(mat1, mat2)
      y = mat1 * mat2
      z = mat1.mul(mat2)

      x,y,z

      (tensor([[[  10,   40,   90],
               [ 160,  250,  360]],

              [[ 250,  360,  490],
               [ 640,  810, 1000]],

              [[1210, 1440, 1690],
               [1690, 1960, 2250]]]),
      tensor([[[  10,   40,   90],
               [ 160,  250,  360]],

              [[ 250,  360,  490],
               [ 640,  810, 1000]],

              [[1210, 1440, 1690],
               [1690, 1960, 2250]]]),

      tensor([[[  10,   40,   90],
               [ 160,  250,  360]],

              [[ 250,  360,  490],
               [ 640,  810, 1000]],

              [[1210, 1440, 1690],
               [1690, 1960, 2250]]]))

      我們可以看到逐元素乘法適用于任何維度的張量。使用*運算符或者使用a.mul(b),其中a和b為輸入張量,也可以實現torch.mul的功能。

      mat1 = torch.randn(1,1,4)
      mat2 = torch.randn(2,2,4)
      x = torch.mul(mat1, mat2)
      y = mat1 * mat2
      z = mat1.mul(mat2)

      x,y,z
      (tensor([[[ 0.3923,  1.2011, -0.7222, -0.0097],
               [-0.3082, -0.7667,  0.0777, -0.1011]],

              [[-0.0289,  0.6919,  0.2720, -0.0952],
               [-0.3427, -1.1867, -1.0518, -0.0562]]]),
      tensor([[[ 0.3923,  1.2011, -0.7222, -0.0097],
               [-0.3082, -0.7667,  0.0777, -0.1011]],

              [[-0.0289,  0.6919,  0.2720, -0.0952],
               [-0.3427, -1.1867, -1.0518, -0.0562]]]),
      tensor([[[ 0.3923,  1.2011, -0.7222, -0.0097],
               [-0.3082, -0.7667,  0.0777, -0.1011]],

              [[-0.0289,  0.6919,  0.2720, -0.0952],
               [-0.3427, -1.1867, -1.0518, -0.0562]]]))

      Torch.mul can be used for broadcasting of tensors. For tensors to be broadcastable, the following conditions should be met:

      Each tensor should have atleast one dimension

      When iterating over the dimension sizes, starting at the trailing dimension,

      the dimension sizes must either be equal,

      one of them is 1, or

      one of them does not exist.

      使用torch.mul時要注意的幾點

      • torch.mul類似于兩個向量之間的點積。

      • “ *”運算符或a.mul(b)也執行與torch.mm相同的操作

      • 輸入張量應滿足廣播條件

      5.torch.inverse

      torch.inverse計算任意張量的逆

      x = torch.rand(4, 4)
      print(x)
      y = torch.inverse(x)
      print(y)

      print(x@y)
      tensor([[0.5113, 0.6916, 0.4692, 0.0154],
             [0.3848, 0.3022, 0.0248, 0.9268],
             [0.8846, 0.6778, 0.0108, 0.8708],
             [0.2503, 0.9674, 0.8385, 0.3985]])
      tensor([[ 5.4673,  3.9426, -2.8567, -3.1387],
             [-7.0532, -7.4136,  6.1454,  4.0863],
             [ 6.5743,  6.5758, -5.9237, -2.6038],
             [-0.1456,  1.6838, -0.6596,  0.0402]])
      tensor([[ 1.0000e+00, -5.8052e-07, -4.9533e-08,  2.9703e-09],
             [ 2.4891e-07,  1.0000e+00, -2.3864e-08, -1.8278e-07],
             [ 3.2888e-07,  2.2601e-08,  1.0000e+00, -1.5329e-07],
             [ 3.5323e-07, -2.4265e-08, -4.5756e-07,  1.0000e+00]])

      這里,我們通過使用randn函數來建立了一個由隨機數組成的4x4張量。torch.inverse可計算x的逆。Inv(x) @ X 則會返回一個單位矩陣。

      使用torch.inverse需要注意的幾點:

      • 只有在輸入張量的各個維度的元素數量相同時才可以正常使用torch.inverse

      • torch.inverse 同樣適用于3維張量。但是張量在各個方向上的維度需要相同或者為方陣張量。

      總結

      這篇文章里我主要提及了一下幾點:

      • 什么是深度學習?

      • Pytorch是啥?

      • 什么是重要的張量運算?

      • 如何實現執行上述張量運算的核心功能?

      • 使用這些功能時要注意的幾點是什么?


      雷鋒字幕組是一個由 AI 愛好者組成的翻譯團隊,匯聚五百多位志愿者的力量,分享最新的海外AI資訊,交流關于人工智能技術領域的行業變革與技術創新的見解。

      團隊成員有大數據專家、算法工程師、圖像處理工程師、產品經理、產品運營、IT咨詢人、在校師生;志愿者們來自IBM、AVL、Adobe、阿里、百度等知名企業,北大、清華、港大、中科院、南卡羅萊納大學、早稻田大學等海內外高校研究所。

      如果,你也是位熱愛分享的AI愛好者。歡迎與雷鋒字幕組一起,學習新知,分享成長。

      深度學習基礎:張量運算

      雷鋒網雷鋒網

      雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知

      深度學習基礎:張量運算

      分享:
      相關文章

      知情人士

      AI研習社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學習知識的門檻。(原雷鋒字幕組)
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 国产无套乱子伦精彩是白视频| 精品综合久久久久久8888| 久久综合老鸭窝色综合久久| AV色导航| 成人免费无遮挡无码黄漫视频| 天天爱天天做天天爽夜夜揉| 色狠狠久久av五月综合| 影音先锋人妻啪啪av资源网站| 国产精品无码素人福利不卡| 一级国产在线观看高清| 精品va在线观看| caoporn国产| 尹人香蕉久久99天天拍| 国产欧美精品另类又又久久| 国产成人精品亚洲日本语言| 亚洲自偷自拍另类第1页| 日本午夜视频| 久久综合88熟人妻| 国产99久久久国产精品~~牛| 亚洲精品97久久中文字幕无码 | 中文幕无线码中文字夫妻| 国产精品一区二区av| 精选国产av精选一区二区三区 | 91在线小视频| 99久久精品一区二区国产| 欧美精品1区| 人妻综合第一| 久久国产精品久久久久久| 久久性色欲av免费精品观看| 色综合视频一区二区三区| 不卡无码av| 亚洲人成网线在线播放VA | 苍井空毛片精品久久久| 性生生活大片又黄又| 中文字幕乱论| 中文字幕乱码在线播放| 亚洲伊人情人综合网站| 亚洲av午夜福利精品一区二区| 亚洲人成人网站| 国产亚洲精品AA片在线爽| 国产成人精品无码专区|