網站首頁 編程語言 正文
torch.nn.Flatten(start_dim=1,?end_dim=-?1)
作用:將連續的維度范圍展平為張量。 經常在nn.Sequential()中出現,一般寫在某個神經網絡模型之后,用于對神經網絡模型的輸出進行處理,得到tensor類型的數據。
有倆個參數,start_dim和end_dim,分別表示開始的維度和終止的維度,默認值分別是1和-1,其中1表示第一維度,-1表示最后的維度。結合起來看意思就是從第一維度到最后一個維度全部給展平為張量。(注意:數據的維度是從0開始的,也就是存在第0維度,第一維度并不是真正意義上的第一個)
同理,如果我這么寫:
self.flat = nn.Flatten(start_dim=2, end_dim=3)
那么意思就是從第二維度開始,到第三維度全部給展平,也就是將2、3兩個維度展平。
官網給出的示例:
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)的隨機數據。
1.先使用一次nn.Flatten(),使用默認參數:
m = nn.Flatten()
也就是說從第一維度展平到最后一個維度,數據的維度是從0開始的,第一維度實際上是數據的第二個位置代表的維度,也就是樣例中的1。
因此進行展平后的結果也就是[32,1×5×5]?[32,25]
2.接著再使用一次指定參數的nn.Flatten(),即
m = nn.Flatten(0, 2)
也就是說從第0維度展平到第2維度,0~2,對應的也就是前三個維度。
因此結果就是[32×1×5,5]?[160,5]
因此進行展平后的結果也就是[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), # 通過卷積,得到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), # 通過卷積,得到torch.size([32, 32, 3, 3]
nn.Flatten(start_dim=0))
output = m(input)
print(output.size())
>>torch.Size([9216])
總結
原文鏈接:https://blog.csdn.net/gx19990824/article/details/127807334
相關推薦
- 2022-09-25 Linux安裝Nginx詳細教程
- 2022-06-28 ADO.NET防SQL注入與使用參數增刪改查_實用技巧
- 2022-05-02 Pyinstaller+Pipenv打包Python文件的實現示例_python
- 2022-10-19 python類參數定義及數據擴展方式unsqueeze/expand_python
- 2022-07-15 python新手練習實例之萬年歷_python
- 2022-10-27 python中partial庫的使用方法解析_python
- 2022-05-10 spring管理事務@Transactional注解相關參數
- 2022-07-02 C++中關于互斥量的全面認知_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支