首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在PyTorch中查找函数/类定义

在PyTorch中查找函数/类定义
EN

Stack Overflow用户
提问于 2021-04-13 15:20:20
回答 1查看 107关注 0票数 1

我想找出某些类和函数在PyTorch (和其他库)中定义的位置。

不幸的是,以下方法不起作用:

代码语言:javascript
运行
AI代码解释
复制
import inspect
import torch

inspect.getsource(torch.tensor)

它抛出以下错误:

代码语言:javascript
运行
AI代码解释
复制
TypeError: module, class, method, function, traceback, frame, or code object was expected, got builtin_function_or_method

此外,在PyCharm中,我通常使用'gd‘(在vim模式下)来查找函数/类定义,但这对PyTorch也不起作用。

请帮助我了解这里的问题是什么,更重要的是,我如何才能找到这些定义。

EN

回答 1

Stack Overflow用户

发布于 2021-04-14 08:49:23

这实际上很复杂。Pytorch/libtorch是一个庞大的项目,它依赖于许多已经在C/Cuda中实现的内置底层函数。大多数低级内核(例如数学运算)甚至有几个实现,以便针对CPU和GPU等进行不同的优化。因此,这个库中有很多不是python代码的东西,inspect将会有一段艰难的时间。

如果您想找到源文件,您可能需要自己深入研究github repository,并充分利用grepfind等工具。然而,torch.nn模块几乎完全是python,所以我认为inspect可以正确地使用它的特性(如数据集、数据加载器、模块、优化器等)。

最后,如果您需要的话,下面是python的文件,您可以在其中找到混合了对C api的调用的torch.tensor代码:torch tensor source code

关于下面评论中的问题:

我不能提供一个完整的答案,因为这超出了我对python和C++代码在torch中是如何接口的理解。但我会尽我所能(如果有人对此有任何更正或改进,请一定要做)。

C源代码和python代码之间有一个根本的区别: C/C++是编译的,因此在这些语言中实现的特性是编译后的汇编代码。换句话说,当python代码从底层C代码调用函数/对象时,它会调用人类不再可读的汇编函数。因此,计算机可以进行调用,但是查找源代码(供您阅读)的inspect功能无法工作,因为这些代码不再存在(至少不是inspect正在查找的地方)。您还需要其他专门分析汇编指令的工具,如反汇编程序、调试器等(如果您足够勇敢,还可以学习x86-64汇编语言编程)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67077747

复制
相关文章
Double为什么会丢失精度
在工作中,谈到有小数点的加减乘除都会想到用BigDecimal来解决,但是有很多人对于double或者float为啥会丢失精度一脸茫然。还有BigDecimal是怎么解决的?话不多说,我们开始。
用户4283147
2022/10/08
2.4K0
Double为什么会丢失精度
VS2017 安装 Microsoft Visual Studio Installer Project
1.安装打包插件:Microsoft Visual Studio 2017安装程序项目
全栈程序员站长
2022/09/09
2.7K0
VS2017 安装 Microsoft Visual Studio Installer Project
如何修复Ubuntu 14.04 系统设置丢失的问题
其实遇到这个问题的一个最主要的原因是之前执行过卸载ibus输入法的操作,所以为了避免这个问题请不要卸载ibus输入法,大家依然可以安装fcitx输入法使用。
WindCoder
2018/09/19
2.1K0
如何修复Ubuntu 14.04 系统设置丢失的问题
VS2019内C语言头文件丢失
安装VS 2019 的时候。嫌弃占用空间大 然后就没有安装 之后编译程序出现没有头文件的问题 先点击这里 在C++的这里把SDK重新装上 记得关闭自己的程序 安装,稍等片刻 接着就成功了
云深无际
2021/03/12
1.1K0
VS2019内C语言头文件丢失
jenkins修改安全策略,权限设置丢失
默认的jenkins用户权限,通过插件Role-based Authorization Strategy来设置的。
py3study
2020/04/08
1.8K0
vs2010设置问题
解决办法:拷贝整个Microsoft Help Viewer覆盖以前的文件,覆盖后可能会遇到vs中F1帮助或者菜单栏里的选项失效,需要手动启动help libary代理解决。
sofu456
2019/07/09
8900
vs2010设置问题
高效的编码:我的VS Code设置
代码编辑器很多,有些是免费的,有些是付费的。其中最喜欢的代码编辑器是 Visual Studio Code。它是免费的,并具有惊人的功能。我从 Web 开发旅程的开始就开始使用它。
张张
2020/03/18
1.8K0
高效的编码:我的VS Code设置
VS2010Web默认的浏览器设置和VS里调试JavaScript代码的设置
   重装系统后,VS调用的Web浏览器不是IE了,VS调式不了JavaScript代码了。这两天一直在试终于搞定了。这里查找的问题当然主要是VS里面调式JavaScript代码了。
aehyok
2018/09/11
1.2K0
VS2010Web默认的浏览器设置和VS里调试JavaScript代码的设置
explicit_defaults_for_timestamp参数详解
explicit_defaults_for_timestamp 系统变量决定MySQL服务端对timestamp列中的默认值和NULL值的不同处理方法。此变量自MySQL 5.6.6 版本引入,分为全局级别和会话级别,可动态更新,默认值为OFF。本文主要介绍该参数打开和关闭情况下对timestamp的影响 。
MySQL技术
2019/09/08
4.6K0
Infor ERP LN有用的Session:ttstpdeldeflt Remove User Defaults
在使用Infor ERP LN的过程中,由于网络中断或者不稳定经常会出现用户打开某个Session的时候报错,信息类似如下:
崔文远TroyCui
2020/12/01
6240
Infor ERP LN有用的Session:ttstpdeldeflt Remove User Defaults
Mac vs code自动换行设置
windows 的话可以设置 wordwrap,但是 mac 的内置格式化插件好像有问题,我试了改 wordwrap 的值不管用。 有个更简单的方法,只要 option+z【alt+z】 就好了。
小蓝枣
2020/09/23
2.2K0
VS 2017打开老项目报错:Project Target Framework Not Installed
由于笔记本硬盘转速太慢,把光驱拆了,装了一个光驱位硬盘支架,搞了块250G的三星SSD固态硬盘,然后使用Samsung Data Migration,花了近2个小时把C盘近200G文件无损迁移到新硬盘,然后将笔记本启动项修改为Bay(这里耗费了好多时间去测试),老机器重获新生!
崔文远TroyCui
2019/02/26
9940
VS 2017打开老项目报错:Project Target Framework Not Installed
杂记随笔:唤醒丢失问题 & 条件变量 vs 信号量
在没有新消息进入的时候,receiver 应该放弃共享缓冲区的锁,然后进入睡眠等待 sender 唤醒。 然而上述代码的问题在于,「放弃缓冲区锁」和「进入睡眠」不是一步原子操作,而是独立的两步操作。
Miigon
2022/10/27
7180
explicit_defaults_for_timestamp参数导致复制中断
explicit_defaults_for_timestamp是从5.6.6引入的一个新参数,默认是off。 作用:对TIMESTAMP类型列的默认值和NULL值的处理,是否启用非标准特性。 默认情况下,explicit_defaults_for_timestamp被禁用,即启用非标准特性。 什么是非标准特性? 标准特性:如果没有显示声明为 NOT NULL,则默认声明为 NULL (除timestamp外的其他数据类型) 非标准特性:如果没有显示声明为 NULL,则默认声明为 NOT NULL(times
MySQL轻松学
2018/03/09
1.5K0
explicit_defaults_for_timestamp参数导致复制中断
[WP Code Highlight.js] Project
https://github.com/owt5008137/WP-Code-Highlight.js
owent
2018/08/01
8000
VS Code 为什么能这么牛?
Visual Studio Code(VS Code)近年来获得了爆炸式增长,成为广大开发者工具库中的必备神器。它作为一个开源项目,也吸引了无数第三方开发者和终端用户,成为顶尖开源项目之一。它在功能上做到了够用,体验上做到了好用,更在拥有海量插件的情况下做到了简洁流畅,实属难能可贵。
GitHubDaily
2019/10/14
1.7K0
如何使用flask的 @app.url_defaults 装饰器
@app.url_defaults 装饰器是 Flask 中的一个装饰器,用来注册一个 URL 变量默认值函数。这个函数会在每次构造 URL 时执行,在请求处理函数之前执行,它的主要作用是为 URL 变量提供默认值。
测试开发囤货
2023/03/14
7770
如何使用flask的 @app.url_defaults 装饰器
vs2019:devExpress设置blazor工程
https://docs.devexpress.com/Blazor/401986/getting-started/install-components-and-create-an-application/without-devexpress-installer/microsoft-templates#2-obtain-your-devexpress-nuget-feed
周星星9527
2021/02/03
1K0
vs2019:devExpress设置blazor工程
点击加载更多

相似问题

Thorntail: project_defaults.yml上的动态值

29

ORDS defaults.xml vs conf/<name>..xml文件上载<entry defaults.xml

13

我到底应该把project-defaults.yml放在哪里?

117

M Project vs Sproutcore

12

如何使用project-defaults yaml配置消息传递activemq thorntail或swarm

131
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文