最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch中的reshape()、view()、nn.flatten()和flatten()使用

 更新時間:2023年08月02日 10:40:22   作者:夢在黎明破曉時啊  
這篇文章主要介紹了pytorch中的reshape()、view()、nn.flatten()和flatten()使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

在使用pytorch定義神經(jīng)網(wǎng)絡結構時,經(jīng)常會看到類似如下的.view() / flatten()用法,這里對其用法做出講解與演示。

torch.reshape用法

reshape()可以由torch.reshape(),也可由torch.Tensor.reshape()調用,其作用是在不改變tensor元素數(shù)目的情況下改變tensor的shape。

torch.reshape() 需要兩個參數(shù),一個是待被改變的張量tensor,一個是想要改變的形狀。

torch.reshape(input, shape) → Tensor

  • input(Tensor)-要重塑的張量
  • shape(python的元組:ints)-新形狀`

案例1.

輸入:

import torch
a = torch.tensor([[0,1],[2,3]])
x = torch.reshape(a,(-1,))
print (x)
b = torch.arange(4.)
Y = torch.reshape(a,(2,2))
print(Y)

結果:

tensor([0, 1, 2, 3])
tensor([[0, 1],
[2, 3]])

torch.view用法

view()的原理很簡單,其實就是把原先tensor中的數(shù)據(jù)進行排列,排成一行,然后根據(jù)所給的view()中的參數(shù)從一行中按順序選擇組成最終的tensor。

view()可以有多個參數(shù),這取決于你想要得到的是幾維的tensor,一般設置兩個參數(shù),也是神經(jīng)網(wǎng)絡中常用的(一般在全連接之前),代表二維。

view(h,w),h代表行(想要變?yōu)閹仔校?,當不知道要變?yōu)閹仔?,但知道要變?yōu)閹琢袝r可取-1;w代表的是列(想要變?yōu)閹琢校?,當不知道要變?yōu)閹琢?,但知道要變?yōu)閹仔袝r可取-1。

一、普通用法(手動調整)

view()相當于reshape、resize,重新調整Tensor的形狀。

案例2.

輸入

import torch
a1 = torch.arange(0,16)
print(a1)

輸出

tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])

輸入

a2 = a1.view(8, 2)
a3 = a1.view(2, 8)
a4 = a1.view(4, 4)
print(a2)
print(a3)
print(a4)

輸出

tensor([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 15]])
tensor([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12, 13, 14, 15]])
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])

二、特殊用法:參數(shù)-1(自動調整size)

view中一個參數(shù)定為-1,代表自動調整這個維度上的元素個數(shù),以保證元素的總數(shù)不變。

輸入

import torch
a1 = torch.arange(0,16)
print(a1)

輸出

tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])

輸入

a2 = a1.view(-1, 16)
a3 = a1.view(-1, 8)
a4 = a1.view(-1, 4)
a5 = a1.view(-1, 2)
a6 = a1.view(4*4, -1)
a7 = a1.view(1*4, -1)
a8 = a1.view(2*4, -1)
print(a2)
print(a3)
print(a4)
print(a5)
print(a6)
print(a7)
print(a8)

輸出

tensor([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]])
tensor([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12, 13, 14, 15]])
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
tensor([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 15]])
tensor([[ 0],
[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12],
[13],
[14],
[15]])
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
tensor([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 15]])

torch.nn.Flatten(start_dim=1,end_dim=-1)

start_dim與end_dim分別表示開始的維度和終止的維度,默認值為1和-1,其中1表示第一維度,-1表示最后的維度。結合起來看意思就是從第一維度到最后一個維度全部給展平為張量。(注意:數(shù)據(jù)的維度是從0開始的,也就是存在第0維度,第一維度并不是真正意義上的第一個)。

因為其被用在神經(jīng)網(wǎng)絡中,輸入為一批數(shù)據(jù),第 0 維為batch(輸入數(shù)據(jù)的個數(shù)),通常要把一個數(shù)據(jù)拉成一維,而不是將一批數(shù)據(jù)拉為一維。所以torch.nn.Flatten()默認從第一維開始平坦化。

使用nn.Flatten(),使用默認參數(shù)

官方給出的示例:

input = torch.randn(32, 1, 5, 5)
# With default parameters
m = nn.Flatten()
output = m(input)
output.size()
#torch.Size([32, 25])
# With non-default parameters
m = nn.Flatten(0, 2)
output = m(input)
output.size()
#torch.Size([160, 5])

#開頭的代碼是注釋

整段代碼的意思是:給定一個維度為(32,1,5,5)的隨機數(shù)據(jù)。

1.先使用一次nn.Flatten(),使用默認參數(shù):

m = nn.Flatten()

也就是說從第一維度展平到最后一個維度,數(shù)據(jù)的維度是從0開始的,第一維度實際上是數(shù)據(jù)的第二位置代表的維度,也就是樣例中的1。

因此進行展平后的結果也就是[32,155]→[32,25]

2.接著再使用一次指定參數(shù)的nn.Flatten(),即

m = nn.Flatten(0,2)

也就是說從第0維度展平到第2維度,0~2,對應的也就是前三個維度。

因此結果就是[3215,5]→[160,25]

torch.flatten

torch.flatten()函數(shù)經(jīng)常用于寫分類神經(jīng)網(wǎng)絡的時候,經(jīng)過最后一個卷積層之后,一般會再接一個自適應的池化層,輸出一個BCHW的向量。

這時候就需要用到torch.flatten()函數(shù)將這個向量拉平成一個Bx的向量(其中,x = CHW),然后送入到FC層中。

在這里插入圖片描述

語句結構

 torch.flatten(input, start_dim=0, end_dim=-1)

input: 一個 tensor,即要被“攤平”的 tensor。

  • start_dim: “攤平”的起始維度。
  • end_dim: “攤平”的結束維度。

作用與 torch.nn.flatten 類似,都是用于展平 tensor 的,只是 torch.flatten 是 function 而不是類,其默認開始維度為第 0 維。

例1:

import torch
data_pool = torch.randn(2,2,3,3) # 模擬經(jīng)過最后一個池化層或自適應池化層之后的輸出,Batchsize*c*h*w
print(data_pool)
y=torch.flatten(data_pool,1)
print(y)

輸出結果:

在這里插入圖片描述

結果是一個B*x的向量。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Django環(huán)境初始化腳本django_setup作用解析

    Django環(huán)境初始化腳本django_setup作用解析

    本文主要介紹了Django環(huán)境初始化腳本django_setup作用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-03-03
  • Django Rest framework解析器和渲染器詳解

    Django Rest framework解析器和渲染器詳解

    這篇文章主要介紹了Django Rest framework解析器和渲染器詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python檢測兩個文本文件相似性的三種方法

    Python檢測兩個文本文件相似性的三種方法

    檢測兩個文本文件的相似性是一個常見的任務,可以用于文本去重、抄襲檢測等場景,Python 提供了多種方法來實現(xiàn)這一功能,x下面小編就來簡單介紹一下吧
    2025-03-03
  • 使用Python進行數(shù)據(jù)清洗與存儲的基本方法

    使用Python進行數(shù)據(jù)清洗與存儲的基本方法

    在爬蟲數(shù)據(jù)獲取完成后,數(shù)據(jù)往往是“原始”的,不適合直接使用,清洗和存儲是將爬取到的原始數(shù)據(jù)轉化為有用信息的關鍵步驟,本文將系統(tǒng)地介紹 Python 中進行數(shù)據(jù)清洗與存儲的基本方法,幫助新手理解如何處理爬蟲數(shù)據(jù),使其更加適合分析和使用,需要的朋友可以參考下
    2024-11-11
  • python使用pip成功導入庫后還是報錯的解決方法(針對vscode)

    python使用pip成功導入庫后還是報錯的解決方法(針對vscode)

    最近在學爬蟲,但在使用Scrapy包時,在終端通過pip裝好包以后,在pycharm中導入包時,依然會報錯,下面這篇文章主要給大家介紹了關于python使用pip成功導入庫后還是報錯的解決方法,需要的朋友可以參考下
    2022-07-07
  • python中時間轉換datetime和pd.to_datetime詳析

    python中時間轉換datetime和pd.to_datetime詳析

    這篇文章主要給大家介紹了關于python中時間轉換datetime和pd.to_datetime的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • Python升級提示Tkinter模塊找不到的解決方法

    Python升級提示Tkinter模塊找不到的解決方法

    這篇文章主要介紹了Python升級提示Tkinter模塊找不到的解決方法,Tkinter的是Tk的GUI工具包,用來開發(fā)GUI界面,需要的朋友可以參考下
    2014-08-08
  • Python科學畫圖代碼分享

    Python科學畫圖代碼分享

    這篇文章主要介紹了Python科學畫圖代碼分享,涉及matplotlib庫的簡單介紹,分享了matplotlib繪圖庫書籍的下載地址,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Python 用戶登錄驗證的小例子

    Python 用戶登錄驗證的小例子

    Python 用戶登錄驗證的小例子,需要的朋友可以參考一下
    2013-03-03
  • Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實例詳解

    Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實例詳解

    這篇文章主要為大家介紹了Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論

长垣县| 德令哈市| 大港区| 浙江省| 井冈山市| 武功县| 晋江市| 沧州市| 五指山市| 湘西| 郓城县| 桓台县| 新闻| 伊吾县| 绵阳市| 云浮市| 额济纳旗| 三台县| 淳安县| 苗栗县| 泰宁县| 迁西县| 丘北县| 龙泉市| 宕昌县| 玉田县| 格尔木市| 峨眉山市| 浦东新区| 伊宁市| 临洮县| 克什克腾旗| 南京市| 化隆| 同德县| 山丹县| 荆州市| 罗江县| 巴青县| 乌鲁木齐县| 板桥市|