首页 > 其他分享 >【PyTorch】 torch.flatten()与nn.Flatten()的区别

【PyTorch】 torch.flatten()与nn.Flatten()的区别

时间:2022-10-29 19:37:20浏览次数:57  
标签:__ dim nn torch PyTorch flatten Flatten


问题

torch.flatten()与nn.Flatten()都可以实现展开Tensor,那么二者的区别是什么呢?

方法

经过查阅相关资料,发现二者主要区别有:
(1) 默认的dim不同,torch.flatten()默认的dim=0,而nn.Flatten()默认的dim=1,例如输入数据的尺寸是[3,1,4,4],经过torch.flatten()展开后的尺寸变为[48],而经过nn.Flatten()后得到的结果是[3, 16];
(2) nn.Flatten是一个类,而torch.flatten()则是一个函数。

相关实验代码如下所示:

import torch
from torch import nn

'''torch.flatten与nn.Flatten的区别
- torch.flatten()的dim默认是从0维开始;
- nn.Flatten()的dim默认是从1维开始;
'''

if __name__ == '__main__':
x = torch.rand(3, 1, 4, 4)

m = nn.Flatten()
out1 = m(x)
print(f'nn.Flatten(x) size is: {out1.size()}')

out2 = torch.flatten(x)
print(f'torch.flatten(x) size is: {out2.size()}')

结语

本文主要介绍了nn.Flatten()与torch.flatten()二者的区别,深入理解二者细微的区别方能更好的应用。


标签:__,dim,nn,torch,PyTorch,flatten,Flatten
From: https://blog.51cto.com/where2go/5806452

相关文章

  • pytorch 训练模型很慢,卡在数据读取,卡I/O的有效解决方案
    多线程加载在datalaoder中指定​​num_works>0​​,多线程加载数据集,最大可设置为cpu核数设置​​pin_memory=True​​,固定内存访问单元,节约内存调度时间示例如下......
  • JAVA-Scanner
    packagecom.itheima;importjava.util.Scanner;/*Scanner的基本使用*/publicclassScanner01{publicstaticvoidmain(String[]args){//创建......
  • GTX1050 安装GPU版pytorch流程
    版本安装情况Windows10+NVIDIAGTX1050(笔记本版)+ DriverVersion:471.41+CUDA10.1+python3.7+conda4.10.1+pytorch1.7.1Anaconda安装官网进行下载:ht......
  • onnx
    作者:林大佬链接:https://www.zhihu.com/question/476780154/answer/2407943185来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。最近有大......
  • PostgreSQL/GreenPlum Merge Inner Join解密
    PostgreSQL/GreenPlumMergeInnerJoin解密1、什么是MergeJoin合并连接是一种匹配算法,其中外表的每个记录与内表的每个记录进行匹配,直到存在连接子句匹配的可能性为止。仅......
  • Scanner类
    1、需要传参:System.in2、scanner.next()接收字符串类型3、scanner.nextInt()接收整型packagecom.ke.demo1;importjava.util.Scanner;publicclassdemo1{......
  • PyTorch: 张量的拼接、切分、索引
    本文已收录于Pytorch系列专栏:​​Pytorch入门与实践​​专栏旨在详解Pytorch,精炼地总结重点,面向入门学习者,掌握Pytorch框架,为数据分析,机器学习及深度学习的代码能力打下......
  • virtual memory exhausted: Cannot allocate memory Linux
    https://blog.csdn.net/u014171641/article/details/104027339 https://blog.csdn.net/cliukai/article/details/93988721?spm=1001.2101.3001.6650.1&utm_medium=distr......
  • OpenFlow: Enabling Innovation in Campus Networks论文学习
    1.可编程网络的需要由于当今网络基础设施已经“僵化”,网络研究方面的大多数新想法都未经尝试和测试。虚拟化可编程网络可以降低尝试新想法的门槛,提高网络基础设施的创新速......
  • 一文带你了解Java中的Scanner键盘输入关键字、random 随机数关键字、System类和匿名函
    Scanner键盘输入Scanner类的功能:可以实现键盘输入数据,到程序当中。引用类型的一般使用步骤:1.导包import包路径.包名称如果需要使用目标类,和当前类位于同一个包下,......