问题描述:

提示:刚入门深度学习,记录一些犯下的小错误:

由于本周开始试图复现华为的CTR库以增加记忆,熟悉代码细节,没想到第一天看基础模块的时候就遇到了麻烦,在torch.utils类中,有如下获取损失函数的代码块:

def get_loss_fn(loss):if isinstance(loss, str):if loss in ["bce", "binary_crossentropy", "binary_cross_entropy"]:loss = "binary_cross_entropy"try:loss_fn = getattr(torch.functional.F, loss)except:try:from . import lossesloss_fn = getattr(losses, loss)except:raise NotImplementedError("loss={} is not supported.".format(loss))return loss_fn

其中getattr()函数是用于返回一个对象属性值(Tip: class中的方法也是一种对象属性),因此可以看出第6行代码的作用就是返回torch.functional.F这个类中的loss函数,那么问题来了:上面代码片中的torch.functional.F是哪个类呢,或者说是哪个模块呢?之前在学习PyTorch的过程中只接触过其中的:

import torch.nn.functional as F

那么这个torch.functional.Ftorch.nn.functional有何区别?


解惑

因此抱着分辨清楚的目的,查看PyTorch官方文档,我发现只有torch.nn.functional才有一系列的loss函数的实现,而输入关键词torch.functional在搜索引擎上基本找不到相关的资料,返回的搜索结果都是与前者相关的文档。于是我决定去看源码弄清楚:


可以看到这两个模块显然是不同的模块!!!而后我打开torch.functional.py文件,出现了我无语的一幕,原来在torch.functional.py的第一行就是这么写的:


问题解决了,torch.functional .F指向的就是torch.nn.functional,可能刚开始试图复现这个CTR库吧,实在搞不懂作者为什么不直接直接使用torch.nn.functional来指代?

END~


PyTorch踩坑记录——torch.functional 与 torch.nn.functional的区别相关推荐

  1. Pytorch踩坑记录:关于用net.eval()和with no grad装饰器计算结果不一样的问题

    Pytorch踩坑记录 相同点 net.eval()和with toch.no_grad()的相同点:都停止反向传播 不同点: 1.net.eval() 用net.eval(),此时BN层会用训练时的 ...

  2. PyTorch踩坑记录

    使用Pytorch也一年多了,记录一下自己遇到的各种问题. 各种踩坑记录 loss.backward()报错 一种非常常见的错误,在网络前向传播时没问题,但是当loss.backward()时会报错 ...

  3. 在linux上运行python脚本(安装pytorch踩坑记录,pyinstaller使用方式,构建docker镜像)

    背景 脚本需要导入pytorch等库才能运行. 脚本在windows上运行成功,尝试放到linux上运行. linux服务器内存较小. 方法一:在linux上安装依赖 把脚本放到linux上,直接安装 ...

  4. Pytorch踩坑记之交叉熵(nn.CrossEntropy,nn.NLLLoss,nn.BCELoss的区别和使用)

    目录 nn.Softmax和nn.LogSoftmax nn.NLLLoss nn.CrossEntropy nn.BCELoss 总结 在Pytorch中的交叉熵函数的血泪史要从nn.CrossEn ...

  5. Detectron2 win10踩坑记录

    Detectron2 win10踩坑记录 安装CUDA clone到本地 修改cocoeval.cpp第483行(不同版本行数不一样) 创建虚拟环境 安装pycocotools 安装VS2019或者生 ...

  6. Win10+yolov5 踩坑记录

    Windows10下配置yolov5环境 踩坑记录 起因随笔 基本的环境要求 yolov5各代码作用 踩坑的Package windwos下torch和torchvision的安装 windows下p ...

  7. 微软NNI进行神经网络模型剪枝压缩的踩坑记录

    微软NNI进行神经网络模型剪枝压缩的踩坑记录 NNI进行模型剪枝分类 NNI剪枝的流程 NNI现有剪枝方法 剩下的剪枝操作比较复杂还没有研究透,不过应该大同小异,有机会继续研究更新. 最近做毕设嵌入式 ...

  8. Nvidia Jetson TX2 详细刷机教程及踩坑记录(Jetpack3.3,python2.7,torch1.2,torchvision0.2.2)

    本文总结了自带系统安装cuda等深度学习环境和使用jetpack3.3刷机的步骤,虽然自己的代码没用上,但有需要的人可以参考一下. PS:Jetpack4.5的刷机教程请移步另一篇文章: xyl-50 ...

  9. Nvidia Jetson TX2 详细刷机教程及踩坑记录(Jetpack4.5.1,python3.6,torch1.6,torchvision0.7)

    最近接触到了Nvidia Jetson TX2这块开发板,想入手测试一下自己的深度学习模型,因此和TX2的故事开始了! 前言 本人刷机多次,尝试各种大小坑: 自带系统搭建环境:刚开始不想刷机,就自己手 ...

最新文章

  1. 升级 Impala(翻译)
  2. 财经法规税收征收管理法律制度练习题二
  3. 文件名不能为null_色即是空,空即是色---java有关null的几件小事
  4. python获取当前线程名称_python使用标准库根据进程名如何获取进程的pid详解
  5. Oracle Enterprise Manager简介
  6. php 正则 尖括号,php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符...
  7. tensorflow模型在实际上线进行预测的时候,使用CPU工作
  8. MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突
  9. centos搭建NFS服务器
  10. 分块编码(Transfer-Encoding: chunked)
  11. 自动化刷EOS资金盘(类Fomo3D)游戏
  12. PSSP Based on Data Partition and Semi-Random Subspace Method 论文笔记
  13. On persistence in mutual fund performance 1997翻译
  14. [Note] 多项式全家桶 小球与盒子 分拆数
  15. MapReduce案例:手机流量的统计
  16. SPSS教程:数据不符合正态分布,如何统计描述
  17. DRV8814PWPR
  18. HDU-1849-Rabbit and Grass
  19. Error creating bean with name 'servletEndpointRegistrar' defined in class path resource
  20. 喜闻乐见的git autocrlf问题

热门文章

  1. 小唐开始学 Spring Boot——(3)利用mybatis访问数据表
  2. JavaScript 创建对象---寄生构造函数模式
  3. 想跳槽涨薪的必看!企业java开发用什么软件
  4. OR青年导师访谈特辑 | 香港理工大学助理教授 马玮:一次拉长的面试 一个交流的平台
  5. mysql values_values在数据库中是什么意思?
  6. 解决pip install报错:setup command: use_2to3 is invalid
  7. 通过ssh协议从github上下载代码
  8. 实际开发中,数据库设计可行的两种过程
  9. 四款PDF文档制作软件横向评测
  10. c语言中全局变量的设置