实验:模拟Pytorch框架中tensor流转加工的过程

前言:

今天我使用类的__call__方法,模拟了多位专家在一个签名簿上留言并签名的过程。
(1)签名簿是一个字符串变量 input;
(2)签名过程是一个自定义方法 forward();
(3)签名动作就是向 input 中追加留言和名字。
签名结束后,输出签名簿。
通过上面的模拟实验,可以帮助我们理解Pytorch框架中tensor流转加工的过程。希望这个小小的模拟实验,能够对您的学习带来一些帮助。

代码:

'''
使用类的__call__方法,模拟了多位专家在一个签名簿上留言并签名的过程。
(1)签名簿是一个字符串变量 input;
(2)签名过程是一个自定义方法 forward();
(3)签名动作就是向 input 中追加留言和名字。
签名结束后,输出签名簿。
通过上面的模拟任务,可以帮助我们理解Pytorch框架中tensor流转加工的过程。

'''
class person:
    def __init__(self,name):
        self.name=name
    def __call__(self,input,txt):
        return self.forward(input,txt)
    def forward(self,input,txt):
        input=input+f'\n\n{txt}\n专家:{self.name}\n'+'-'*20
        return input

if __name__ =='__main__':

    #空白签名簿
    input = ''

    #签名
    p1 = person('张三')
    input = p1(input,'开门笑迎八方来客,抬头喜纳四海财源')

    p2 = person('李四')
    input = p2(input,'鹏程似锦,千端称意,新业兴旺,万事顺心')
    
    p3 = person('王五')
    input = p3(input,'祝火红的事业财源广进,温馨的祝愿繁荣昌隆')

    #输出
    print('input = \n',input)

结果截图:

总结:

类的__call__方法是一个私有的名字固定的特殊方法。它让类的对象能够像函数一样接收输入和返回结果。

例如:在语句p1 = person('张三') 中,定义了对象p1;在语句 input = p1(input,'开门笑迎八方来客,抬头喜纳四海财源')中,对象p1接收了两个实参,并返回一个结果 input。

对象p1接收的两个实参,传给了__call__方法,__call__方法又传递给了forward()方法,forward()方法处理后,把结果回传给了__call__方法,__call__方法把结果回传给了对象p1。

p1处理后的结果,转交p2继续处理,p2处理后的结果转交p3继续处理。这个过程类似Pytorch框架中tensor流转加工的过程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值