因为我要在封装的类或者方法(函数)的基础上进行修改,所以继承然后重写覆盖不能满足我的要求,所以我采用最复杂也是最简单当方式来做

1.找到原始类或者函数,将其复制到我的代码里面

2.进行修改

3.调用复制到自己代码中的类或者方法,而不是调用库里面的

下面解决几个可能遇到的问题

1.如何找到原始函数?

在pycharm中Ctrl + 鼠标左键 就可以快速进入函数内部

但是不少小伙伴是在服务器上跑的,或者由于各种原因无法使用上面的快捷方式

可以使用以下函数将函数打印出来

import torch.nn.functional as F
import inspect
source_code=inspect.getsource(F.multi_head_attention_forward)
print(module_source_code)

#print(MyClass)
#类也是一样的

2.调用调整好的类或者方法

调用和一般的调用没什么区别

def aMethod():
    print("我已经成功调用这个函数了")

class MyClass:
    def __init__(self, value):
        self.value = value
        

    def forward(self):
        print("print(value*2)")
        print(self.value*2)
        aMethod()



myclass=MyClass(11)
myclass.forward()

或者

class MyClass:
    def __init__(self, value):
        self.value = value
        
    def aMethod(self):
        print("我已经成功调用这个函数了")
    def forward(self):
        print("print(value*2)")
        print(self.value*2)
        self.aMethod()



myclass=MyClass(11)
myclass.forward()

本站无任何商业行为
个人在线分享 » pytorch里面封装好的函数,如果要修改怎么办
E-->