首页 > 其他分享 >使用 __get__ 向已有类实例注入函数

使用 __get__ 向已有类实例注入函数

时间:2024-05-03 11:11:06浏览次数:27  
标签:__ get predict step 实例 model logits

突然有这样的特殊需求:向已经实例化的类对象添加新方法。例如,我的 model 本没有实现 predict_step 方法,现在我想向 model 注入这个函数:

def predict_step(self, batch, batch_idx, dataloader_idx=0):
    logits = self(**batch)["logits"]
    pred = F.softmax(logits, dim=-1)
    return pred

既然 Python 是万物皆对象,那这个需求应当能实现。

还真别说:

model.predict_step = predict_step.__get__(model)

这样 model 就拥有 predict_step 方法了。没有深究原理,很是神奇。

标签:__,get,predict,step,实例,model,logits
From: https://www.cnblogs.com/chirp/p/18171037

相关文章

  • mORMot 1.18 第19章 安全性
    mORMot1.18第19章安全性第19章安全性在企业数据库设计中,安全性是必不可少的。mORMot已为此做好准备。19.1HTTP/HTTPS您可以在四个受支持的模式中的任何一个中进行选择,它们可以组合使用。Pascal类描述TSQLRestServerAuthenticationDefaultmORMot安全认证,作为一......
  • 容器因存在不可删除文件而无法删除
    #容器开启特权,设置文件不可删除touchachattr+aa可以stop,但是无法rm。去掉可读写层overlay2upperdir中/a文件不可删除属性后,容器可以删除。......
  • FreeRTOS 事件标志组
    FreeRTOS事件标志组使用信号量来完成同步,但是使用信号量来同步的话任务只能与单个的事件或任务进行同步。有时候某个任务可能会需要与多个事件或任务进行同步,此时信号量就无能为力了。事件位用来表明某个事件是否发生,事件位通常用作事件标志,事件标志组是一组事件标志位的集合,......
  • .Net 8.0 下的新RPC,IceRPC之使用Dev Containers进行 .NET QUIC 精简开发
    作者引言很高兴啊,我们来到了IceRPC之使用DevContainers进行.NETQUIC精简开发,主要是一篇指引,如何使用开发容器做为开发环境,进行开发IceRPC,可适用于任务应用的开发使用DevContainers进行.NETQUIC精简开发主要是引导大家,如何使用开发容器DevelopmentContainers,进行......
  • Chapter 3 Tutorials
    T1用等值演算、构造指派等方式判断公式的永真性(1)判断永真性:\((\forallxP(x)\rightarrow\existxQ(x))\rightarrow\existx(P(x)\rightarrowQ(x))\)首先尝试转化前束范式\[\begin{aligned}&(\forallxP(x)\rightarrow\existxQ(x))\rightarrow\existx(P(x)......
  • 微机结构
    在这篇博客中,我们将深入探讨微机结构的一些关键概念和原理。什么是微机结构?微机结构是指计算机硬件的底层设计,包括处理器、内存、输入输出控制器等组件之间的互连方式以及数据的流动方式。微机结构决定了计算机的性能、功耗、成本等方面的特性。它直接影响着计算机的运行速度和......
  • 操作系统
    在这篇博客中,我们将深入探讨操作系统的定义、功能、类型以及未来发展趋势。什么是操作系统?操作系统是一组控制和管理计算机硬件资源,并为用户提供一个与计算机系统交互的软件环境的程序集合。它负责管理计算机的内存、处理器、文件系统、设备驱动程序等资源,以便应用程序可以正确......
  • 微机结构的学习
    学习硬件组成角度谈谈我对于计算机微机的认识,通过学习后,对于CPU来说,它是微机的重要组成部分,其核心就是对数据进行加工运算,并且通过取指-取数-加工-PC++这一流程来运行程序。其中取指的过程是在CPU外完成,向储存器取指,因此就会产生取指速度的偏差,这就产生了高速缓存,而高速缓存则是和......
  • 操作系统的学习
    通过学习后,我了解到软件是由程序+数据+文档构成的,而操作系统作为管理程序的程序,它的目的在于控制计算机软硬件资源、合理组织计算机工作流程。它的特特点就在于可以宏观并行、微观串行。当我们运行多个程序时,操作系统可以为我们合理的分配内存空间与机器周期,以保证多个程序看起来......
  • 全网最全的nginx服务器部署-命令行
    选用的服务器我选用的阿文云服务器,地址是香港,优点是价格十分便宜登录|阿文云计算(xn--kcr903c616a.cn)ssh登录服务器我用的是ubuntu的里面的ssh去登录,用的虚拟机ssh-lroot[你的服务器地址]ssh-lroot38.55.232.150命令的配置安装依赖yuminstall-ygcc......