網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
torch.nn.Flatten(start_dim=1,?end_dim=-?1)
作用:將連續(xù)的維度范圍展平為張量。 經(jīng)常在nn.Sequential()中出現(xiàn),一般寫在某個(gè)神經(jīng)網(wǎng)絡(luò)模型之后,用于對(duì)神經(jīng)網(wǎng)絡(luò)模型的輸出進(jìn)行處理,得到tensor類型的數(shù)據(jù)。
有倆個(gè)參數(shù),start_dim和end_dim,分別表示開始的維度和終止的維度,默認(rèn)值分別是1和-1,其中1表示第一維度,-1表示最后的維度。結(jié)合起來(lái)看意思就是從第一維度到最后一個(gè)維度全部給展平為張量。(注意:數(shù)據(jù)的維度是從0開始的,也就是存在第0維度,第一維度并不是真正意義上的第一個(gè))
同理,如果我這么寫:
self.flat = nn.Flatten(start_dim=2, end_dim=3)
那么意思就是從第二維度開始,到第三維度全部給展平,也就是將2、3兩個(gè)維度展平。
官網(wǎng)給出的示例:
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])
#開頭的代碼是注釋
整段代碼的意思是:給定一個(gè)維度為(32,1,5,5)的隨機(jī)數(shù)據(jù)。
1.先使用一次nn.Flatten(),使用默認(rèn)參數(shù):
m = nn.Flatten()
也就是說(shuō)從第一維度展平到最后一個(gè)維度,數(shù)據(jù)的維度是從0開始的,第一維度實(shí)際上是數(shù)據(jù)的第二個(gè)位置代表的維度,也就是樣例中的1。
因此進(jìn)行展平后的結(jié)果也就是[32,1×5×5]?[32,25]
2.接著再使用一次指定參數(shù)的nn.Flatten(),即
m = nn.Flatten(0, 2)
也就是說(shuō)從第0維度展平到第2維度,0~2,對(duì)應(yīng)的也就是前三個(gè)維度。
因此結(jié)果就是[32×1×5,5]?[160,5]
因此進(jìn)行展平后的結(jié)果也就是[32,1*5*5]?[32,25]
示例1
卷積公式
import torch
import torch.nn as nn
input = torch.randn(32, 1, 5, 5)
m = nn.Sequential(
nn.Conv2d(1, 32, 5, 1, 1), # 通過(guò)卷積,得到torch.size([32, 32, 3, 3]
nn.Flatten())
output = m(input)
print(output.size())
>> torch.Size([32, 288])
示例2
import torch
import torch.nn as nn
input = torch.randn(32, 1, 5, 5)
m = nn.Sequential(
nn.Conv2d(1, 32, 5, 1, 1), # 通過(guò)卷積,得到torch.size([32, 32, 3, 3]
nn.Flatten(start_dim=0))
output = m(input)
print(output.size())
>>torch.Size([9216])
總結(jié)
原文鏈接:https://blog.csdn.net/gx19990824/article/details/127807334
相關(guān)推薦
- 2023-01-10 Go語(yǔ)言rune與字符串轉(zhuǎn)換的密切關(guān)系解析_Golang
- 2024-03-06 PageHelper插件的使用
- 2022-12-01 docker?容器網(wǎng)絡(luò)模式詳解_docker
- 2022-05-09 Python的Pandas時(shí)序數(shù)據(jù)詳解_python
- 2022-12-15 Golang并發(fā)編程深入分析_Golang
- 2023-07-05 docker容器部署nginx外網(wǎng)不通端口監(jiān)聽(tīng)只有tcp6沒(méi)走tcp問(wèn)題
- 2023-01-30 如何使用Flutter實(shí)現(xiàn)手寫簽名效果_Android
- 2022-09-29 shell函數(shù)內(nèi)調(diào)用另一個(gè)函數(shù)(不帶返回值和帶返回值)_linux shell
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支