日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PyTorch教程(五):Broadcasting

發布時間:2024/9/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyTorch教程(五):Broadcasting 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Broadcasting可以自動進行維度的擴展,而且不需要拷貝數據。

例如:

import torcha = torch.rand(3,4) # tensor([[0.0422, 0.9152, 0.5486, 0.8753], # [0.3918, 0.6056, 0.0634, 0.9498], # [0.4444, 0.2209, 0.8165, 0.1533]]) b = torch.rand(4) # tensor([0.4145, 0.2913, 0.1655, 0.3705]) a + b # tensor([[0.4567, 1.2065, 0.7141, 1.2458], # [0.8064, 0.8969, 0.2289, 1.3203], # [0.8589, 0.5122, 0.9819, 0.5238]])

上面的例子可以看到,雖然a和b的shape不同,但是依然可以進行相加操作,原因就是PyTorch自動做了Broadcasting。但不是任何兩個tensor都可以進行Broadcasting。

如果兩個Tensor是broadcastable的,那么就可以對他倆使用支持broadcast的運算,比如直接加減乘除

而兩個向量要是broadcast的話,必須滿足以下兩個條件:

  • 每個tensor至少是一維的
  • 兩個tensor的維數從后往前,對應的位置要么是相等的,要么其中一個是1,或者不存在
>>> x=torch.empty(5,7,3) >>> y=torch.empty(5,7,3) # 相同維數的tensor一定是broadcastable的>>> x=torch.empty((0,)) >>> y=torch.empty(2,2) # 不是broadcastable的,因為每個tensor維數至少要是1>>> x=torch.empty(5,3,4,1) >>> y=torch.empty( 3,1,1) # 是broadcastable的,因為從后往前看,一定要注意是從后往前看! # 第一個維度都是1,相等,滿足第二個條件 # 第二個維度其中有一個是1,滿足第二個條件 # 第三個維度都是3,相等,滿足第二個條件 # 第四個維度其中有一個不存在,滿足第二個條件# 但是 >>> x=torch.empty(5,2,4,1) >>> y=torch.empty( 3,1,1) # 不是broadcastable的,因為從后往前看第三個維度是不match的 2!=3,且都不是1

總結

以上是生活随笔為你收集整理的PyTorch教程(五):Broadcasting的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。