CN110705715B - 超参数管理方法、装置及电子设备 - Google Patents
超参数管理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN110705715B CN110705715B CN201910930047.0A CN201910930047A CN110705715B CN 110705715 B CN110705715 B CN 110705715B CN 201910930047 A CN201910930047 A CN 201910930047A CN 110705715 B CN110705715 B CN 110705715B
- Authority
- CN
- China
- Prior art keywords
- hyper
- parameter
- code
- information
- parameters
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种超参数管理方法、装置及电子设备,涉及机器学习技术领域,包括:基于预设函数在原始代码的至少一个位置添加超参数,得到更新代码;对更新代码进行解析,得到超参数的位置信息和使用信息;基于位置信息和使用信息对超参数进行管理。本发明既能够有效提升用户使用超参数的便利性,又能够降低超参数的管理难度。
Description
技术领域
本发明涉及机器学习技术领域,尤其是涉及一种超参数管理方法、装置及电子设备。
背景技术
在机器学习过程中需要多次尝试超参数,对数量大且不断变化的超参数进行有效管理是十分必要的。发明人通过调研大量的深度学习实验,发现目前普遍采用如下两种超参数管理方式。一种是集中式超参数管理,它遵循传统软件中的配置管理方法。然而该管理方式繁琐复杂,诸如当引入新的超参数时,必须在配置文件中对其进行声明,同时在不同位置(如嵌套较深、容易忘记的文件)中使用超参数。该管理方式不方便用户使用超参数,在使用超参数过程很容易出现错误,对用户要求过高。
另一种是分布式超参数管理,它是一种抛弃配置文件,在项目中直接定义并使用超参数的管理方式。在该管理方式下,超参数会野蛮增长并给项目造成极大的灾难;同时,用户很难去获知项目出现问题时具体发生了什么、发生的时间以及该去哪里查找原因。以上问题导致超参数管理难度非常大。
发明内容
有鉴于此,本发明的目的在于提供一种超参数管理方法、装置及电子设备,既能够有效提升用户使用超参数的便利性,又能够降低超参数的管理难度。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种超参数管理方法,包括:基于预设函数在原始代码的至少一个位置添加超参数,得到更新代码;对所述更新代码进行解析,得到所述超参数的位置信息和使用信息;基于所述位置信息和所述使用信息对所述超参数进行管理。
进一步,所述方法还包括:根据预设的时间间隔和/或预设的超参数添加数量间隔,检测所述更新代码的启动状态;根据所述更新代码的启动状态确定代码解析方式;所述对所述更新代码进行解析,得到所述超参数的位置信息和使用信息的步骤,包括:根据所述代码解析方式对所述更新代码进行解析,得到所述超参数的位置信息和使用信息。
进一步,所述根据所述更新代码的启动状态确定代码解析方式的步骤,包括:判断所述更新代码是否启动运行;如果是,确定所述代码解析方式为运行时解析法;如果否,确定所述代码解析方式为静态解析法。
进一步,所述代码解析方式为静态解析法,所述根据所述代码解析方式对所述更新代码进行解析,得到所述超参数的位置信息和使用信息的步骤,包括:采用所述静态解析法对所述更新代码进行静态解析,获取所述更新代码中每个超参数的位置信息和使用信息;其中,所述静态解析法包括以下至少一项:ast.literal_val函数、Spec Checker工具、Splint工具和PC-lint工具;所述位置信息包括所述超参数的所在文件和所在文件行号;所述使用信息包括以下至少一项:所述超参数的名称、操作类型、操作优先级、超参数默认值和初始化次数。
进一步,所述使用信息包括初始化次数;所述基于所述位置信息和所述使用信息对所述超参数进行管理的步骤,包括:检测所述超参数的初始化次数是否多于一次;如果是,确定初始化次数多于一次的超参数为异常超参数;根据所述异常超参数的位置信息生成冲突提示信息;展示所述冲突提示信息,以提示用户根据所述冲突提示信息对所述异常超参数进行操作。
进一步,所述基于所述位置信息和所述使用信息对所述超参数进行管理的步骤,包括:基于所述更新代码获取使用所述超参数的项目的项目标识;根据所述位置信息、所述使用信息和所述项目标识生成对所述超参数的存储控制指令;响应所述存储控制指令,将所述超参数的所述位置信息和所述使用信息按照所述项目标识进行存储。
进一步,所述预设函数包括下划线函数;所述基于预设函数在原始代码的至少一个位置添加超参数的步骤,包括:响应用户交互界面监测到的下划线函数编码操作,基于所述下划线函数编码操作在原始代码的至少一个位置添加超参数;其中,所述用户交互界面包括:命令行界面CLI、交互式笔记本Jupyter或VSCode。
第二方面,本发明实施例还提供一种超参数管理装置,包括:超参数添加模块,用于基于预设函数在原始代码的至少一个位置添加超参数,得到更新代码;代码解析模块,用于对所述更新代码进行解析,得到所述超参数的位置信息和使用信息;超参数管理模块,用于基于所述位置信息和所述使用信息对所述超参数进行管理。
第三方面,本发明实施例提供了一种电子设备,包括:处理器和存储装置;所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时执行如第一方面任一项所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面任一项所述的方法的步骤。
本发明实施例提供了一种超参数管理方法、装置及电子设备,通过基于预设函数在原始代码的至少一个位置添加超参数,得到更新代码;对更新代码进行解析,得到超参数的位置信息和使用信息;基于位置信息和使用信息对超参数进行管理。本实施例提供的上述方式,能够通过预设函数在代码中任何需要使用超参数的位置添加超参数,从而极大地降低超参数的添加成本,较好地提升用户使用超参数的便利性;通过解析得到的超参数的位置信息能够快速定位到超参数,并结合解析得到的超参数的使用信息能够便于对超参数进行管理,有效降低超参数的管理难度。
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例所提供的一种电子设备的结构示意图;
图2示出了本发明实施例所提供的一种超参数管理方法流程图;
图3示出了本发明实施例所提供的一种实现超参数管理方法的架构示意图;
图4示出了本发明实施例所提供的一种超参数管理装置的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
发明人在研究过程中发现,现有的两种超参数管理方式中,其中一种集中式超参数管理方式对用户使用超参数并不友好,诸如存在如下明显问题:(1)当引入新的超参数时,必须在配置文件中对其进行声明,同时在嵌套较深、容易忘记的文件中使用超参数;(2)当放弃现有的超参数时,不仅必须在嵌套较深、容易忘记的文件中删除该超参数的每一次使用信息(如名称、默认值和类型等),还必须在集中配置文件中将其删除;(3)当管理超参数时,需要在代码中查找其定义,在配置文件中查找其用途,却无法同时获取超参数的定义和用途。以上问题导致用户在使用超参数过程很容易出现错误,对用户要求过高。另一种分布式超参数管理虽然方便用户在项目中任何需要使用超参数的位置直接定义并使用超参数,但当发生异常时,需要用户重头阅读所有的源代码,导致超参数管理难度非常大。基于此,为改善以上问题至少之一,本发明实施例提供了一种超参数管理方法、装置及电子设备,既能够有效提升用户使用超参数的便利性,又能够降低超参数的管理难度。该技术可以应用于基于机器学习并使用超参数的各种项目(该项目可以是应用于知识共享、通信、复制和工程等领域中的项目)中,诸如应用于人脸识别的项目中。为便于理解,以下对本发明实施例进行详细介绍。
实施例一:
首先,参照图1来描述用于实现本发明实施例的超参数管理方法及装置的示例电子设备100。
如图1所示的一种电子设备的结构示意图,电子设备100包括一个或多个处理器102、一个或多个存储装置104、输入装置106、输出装置108以及图像采集装置110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。
所述处理器102可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制所述电子设备100中的其它组件以执行期望的功能。
所述存储装置104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
所述输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
所述图像采集装置110可以拍摄用户期望的图像(例如照片、视频等),并且将所拍摄的图像存储在所述存储装置104中以供其它组件使用。
示例性地,用于实现根据本发明实施例的一种超参数管理方法及装置的示例电子设备可以被实现为诸如智能手机、平板电脑、计算机等智能终端上。
实施例二:
参照图2所示的一种超参数管理方法的流程图,该方法主要包括如下步骤S202~步骤S206:
步骤S202,基于预设函数在原始代码的至少一个位置添加超参数,得到更新代码。
在机器学习的上下文中,超参数是在开始学习过程之前设置的参数;超参数可以是诸如聚类个数、模型的学习率、深层神经网络隐藏层数等参数。本实施例可以将超参数的值视为对同一内容的不同表达方式,诸如针对学习率这一内容,其不同表达方式可以为学习率的值的不同大小。在此情况下,可以使用预设函数对超参数进行定义并使用,且预设函数是使用代码实现的,基于此,可在原始代码中任何需要使用超参数的位置通过编写预设函数,实现对新的超参数的添加;其中,原始代码是基于机器学习的一个项目(诸如人脸识别项目)的完整代码。基于每次添加的超参数,原始代码是不断更新的,可以认为每添加一个超参数后的新代码均为更新代码。
步骤S204,对更新代码进行解析,得到超参数的位置信息和使用信息。
在实际应用中,可以将代码理解为数据,从而能够像操作数据一样对代码进行操作,有利于对代码进行解析、展开和变更等管理。在本实施例中,可以采用一些代码解析工具(诸如starTool)对更新代码进行解析,解析得到的超参数的位置信息用于表示添加的超参数在项目中的位置,诸如超参数所在的配置文件;位置信息包括超参数的所在文件和所在文件行号;解析得到的使用信息用于表示针对项目对应的学习模型,在对超参数进行优化以提高学习模型学习的性能和效果的过程中,超参数在代码中的使用方式,改使用方式诸如超参数的名称、操作类型和默认值等。
上述每个超参数的位置信息和使用信息表示当前超参数在代码中的操作记录,从而可以将超参数的位置信息和使用信息称为超参数事件(Hyper Parameter Occurrence)。
步骤S206,基于位置信息和使用信息对超参数进行管理。
在本实施例中,基于位置信息可以便于用户快速的在代码中对超参数进行定位,基于使用信息可以同时获取超参数的诸如名称、默认值和初始化次数等完整的使用记录;基于位置信息和使用信息可以方便对超参数进行诸如删除、异常提醒和存储等多种管理。
本实施例提供的超参数管理方法,通过基于预设函数在原始代码的至少一个位置添加超参数,得到更新代码;对更新代码进行解析,得到超参数的位置信息和使用信息;基于位置信息和使用信息对超参数进行管理。本实施例提供的上述方式,能够通过预设函数在代码中任何需要使用超参数的位置添加超参数,从而极大地降低超参数的添加成本,较好地提升用户使用超参数的便利性;通过解析后的超参数的位置信息能够快速定位到超参数,并结合解析后的超参数的使用信息能够便于对超参数进行管理,有效降低超参数的管理难度。
上述预设函数可以包括下划线函数,在执行上述步骤S202时,可参照如下内容添加超参数:响应用户交互界面(UI,User Interface)监测到的下划线函数编码操作,基于下划线函数编码操作在原始代码的至少一个位置添加超参数。
其中,用户交互界面诸如可以为CLI(command-line interface,命令行界面),Jupyter(交互式笔记本)或VSCode等IDE(集成开发环境,Integrated DevelopmentEnvironment),或者还可以为平台级的实验管理系统。以上仅为对用户交互界面的示例性描述,不应理解为限制。
在一种可能的实现方式中,以Python(计算机程序设计语言)为例,基于下划线函数编码操作在原始代码中添加超参数的实现方式可参照如下两种下划线函数编码示例:
示例一:首先通过编写下划线函数定义超参数的默认值:_("weight_decay",1e-5);然后可以通过编写下划线函数使用超参数的值:weight_decay=_("weight_decay")。
示例二:通过编写下划线函数定义和使用超参数:weight_decay=_("weight_decay",1e-5)。
上述示例中,weight_decay表示超参数的名称,1e-5表示超参数的默认值。
本实施例提供的超参数管理方法,还包括对更新代码的解析方式进行管理,具体可参照如下步骤1和步骤2所示:
步骤1,根据预设的时间间隔和/或预设的超参数添加数量间隔,检测更新代码的启动状态。在实际应用中,可以有如下三种可选的实施方式:
方式一:按照预设的时间间隔(如每隔3分钟)检测更新代码的启动状态。
方式二:按照预设的超参数添加数量间隔(如每添加一个超参数,或每添加三个超参数等)检测更新代码的启动状态;其中,当预设的超参数添加数量间隔为一个时,可以提升超参数的管理效率,比如对于存在异常的超参数可以较早的发现,从而可以及时避免因异常超参数引发的问题;当预设的超参数添加数量间隔为两个或两个以上时,可以有效降低代码解析的工作量,减轻执行超参数管理方法的电子设备的工作负担。
方式三:判断在预设的时间间隔内是否有添加的新的超参数;如果有添加的新的超参数,判断添加的新的超参数的数量是否大于或等于预设的超参数添加数量间隔;如果大于或等于预设的超参数添加数量间隔,检测更新代码的启动状态;如果小于预设的超参数添加数量间隔,在下一个时间间隔判断添加的新的超参数的累计数量是否大于或等于预设的超参数添加数量间隔,其中,该累计数量是指上述小于预设的超参数添加数量间隔对应的时间间隔(t)与该下一个时间间隔(t+1)内累计添加的超参数的数量。该时间间隔和超参数添加数量间隔相结合的方式,是为了避免对更新代码进行无效解析,也即相对于原始代码,所添加的超参数并没有达到预设的超参数添加数量间隔,在此情况下无需机械的对代码进行重复解析,相应的,也就不需要检测更新代码的启动状态。该方式能够有效降低代码解析的工作量。
当然,以上三种检测更新代码的启动状态的实施方式仅为示例性描述,在实际应用中还可以包括其它方式,在此不进行限制。
步骤2,根据更新代码的启动状态确定代码解析方式。启动状态包括启动运行或未启动运行;在具体实现时,可以判断更新代码是否启动运行;如果是,确定代码解析方式为运行时解析法(Runtime Value Getter/Setter);如果否,确定代码解析方式为静态解析法(Static Parsing)。其中,静态解析法是指在代码未启动运行的状态下,通过词法分析、语法分析和数据流分析等技术对代码进行扫描,检测代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。运行时解析法与静态解析法类似,不同之处在于:运行时解析法是在代码启动运行的状态下的一种代码分析技术。
基于确定的代码解析方式,上述步骤S204的实现方式可以包括:根据代码解析方式对更新代码进行解析,得到超参数的位置信息和使用信息。下面分别根据上述静态解析法和运行时解析法,结合具体实施方式对解析更新代码的过程进行详细介绍。
代码解析方式为静态解析法,根据代码解析方式对更新代码进行解析,得到超参数的位置信息和使用信息的步骤可以包括:
采用静态解析法对更新代码进行静态解析,获取更新代码中每个超参数的位置信息和使用信息;其中,静态解析法诸如包括以下至少一项:ast.literal_val函数、SpecChecker工具、Splint工具和PC-lint工具;位置信息包括超参数的所在文件和所在文件行号;使用信息包括但不限于以下至少一项:超参数的名称、操作类型、操作优先级、超参数默认值和初始化次数。
例如,采用python中ast.literal_eval函数对更新代码进行静态解析,结合上述给出的下划线函数的示例,可以理解为采用ast.literal_val函数对编写的下划线函数进行解析,以提取更新代码中每一个超参数的位置信息和使用信息,具体可参照如下的编码:
$./main.py
weight decay is 1e-05
$./main.py--weight-decay 1e-4
weight decay is 0.0001
其中,前两行编码表示使用超参数的默认值运行,后两句编码表示传入新的超参数的值。
为便于理解,本实施例给出一种超参数的位置信息和使用信息的表示示例,如表1所示。表1的第一列为超参数的名称:weight_decay,第二列为超参数的操作类型:float(浮点型数据类型),第三列为超参数的默认值:0.0001,第四列为超参数在更新代码中的上下文信息,该上下文信息所展示的第一行occurrence[0]:表示超参数的初始化次数为1,第二行main.py:10表示超参数所在文件的文件名,第八行10:weight_decay=_("weight_decay",1e-5)即为添加的超参数,且文件行号为“10”,该行代码的上下行代码也同时被展示出来(表中展示了上下5行代码)。
表1
参照该表1的示例,可以明确根据解析到的超参数的位置信息能够准确的定位到代码中使用超出的位置,避免了现有技术中查找超参数位置的繁琐过程,以及在获取到超参数的位置信息后,即可获取其在代码中的上下文信息,进一步根据使用信息准确的获取到超参数的具体使用方式,极大地提升了对超参数管理的便利性。
在一实施例中,通常是在代码运行时对代码进行解析,可能会存在代码运行一段时间后才能发现代码中存在异常(如超参数冲突),或者有很多异常隐藏的比较深,需要运行很久才能够被发现,这种情况将严重影响工作效率。相对于上述通常做法,本实施例采用静态解析法对更新代码进行静态解析,在更新代码启动运行前就可以对更新代码进行解析,一旦更新代码中存在异常,可以提前发现异常情况,也即将发现问题的时间节点提前,从而在代码运行前就可以对代码中存在异常进行修改,以保证更新代码能够正常工作。
代码解析方式为运行时解析法,根据代码解析方式对更新代码进行解析,得到超参数的位置信息和使用信息的步骤可以包括:当更新代码处于启动运行的状态时,根据运行时解析法对更新代码进行解析,得到超参数的位置信息和使用信息。
在本发明实施例的一个可选的实施方式中,上述使用信息包括初始化次数,基于此可以提供一种基于位置信息和使用信息对超参数进行管理的方法,参照如下步骤(1)至步骤(4)执行:
(1)检测超参数的初始化次数是否多于一次。当一个超参数初始化两次及以上时,表示该超参数被定义为两个默认值,在此情况下超参数会产生冲突或二义性,也即一个超参数有两个默认值时,无法确定使用哪一个值,相当于该超参数处于未定义的状态。如果超参数的初始化次数为一次,表示该超参数是正确定义和使用的超参数,不会引起更新代码的异常;如果超参数的初始化次数为大于一次,表示该超参数引起更新代码的异常,并执行如下步骤(2)至(4)。
(2)确定初始化次数多于一次的超参数为异常超参数。
(3)根据异常超参数的位置信息生成冲突提示信息。
(4)展示冲突提示信息,以提示用户根据冲突提示信息对异常超参数进行操作。该冲突提示信息可以包括异常超参数的位置信息和使用信息;其中的位置信息用于提示用户该异常超参数的发声位置,使用信息便于用户了解该异常超参数的完整使用记录,以确定出修改该异常超参数的方式。
在本实施例中,可以通过上述的用户交互界面展示冲突提示信息。诸如,针对具有图形化界面的用户交互界面,可以通过报错窗口展示冲突提示信息。
当用户交互界面监测到用户对异常超参数执行删除默认值或保留默认值等操作时,响应于该用户操作,将异常超参数进行修正,并在解析更新代码的过程中,获取该修正后超参数的位置信息和使用信息。
在本发明实施例的另一个可选的实施方式中,可以提供一种基于位置信息和使用信息对超参数进行管理的方法,参照如下步骤A至步骤C执行:
步骤A,基于更新代码获取使用超参数的项目的项目标识。其中,项目标识可以为项目的名称,诸如project_1。
步骤B,根据位置信息、使用信息和项目标识生成对超参数的存储控制指令。
步骤C,响应存储控制指令,将超参数的位置信息和使用信息按照项目标识进行存储。在本实施例中,将同属于一个项目标识的全部超参数的位置信息和使用信息存储在一个数据库中。数据库诸如redis、MongoDB或基于Python的dict(字典容器)。
基于上述实施例提供的超参数管理方法,本实施例还可以提供一种实际应用中实现该超参数管理方法的架构,参照如图3所示的实现超参数管理方法的架构示意图,该结构可以包括超参数管理器、与超参数管理器相连的用户交互界面、解析部分和超参数数据库。其中,超参数管理器可以接入不同的用户交互界面,诸如CLI UI、Jupyter、VSCode或其它形式的用户交互界面;解析部分包括静态解析部分和动态解析部分。
用户交互界面,用于监测预设函数编码操作,以在原始代码的至少一个位置添加超参数,以及还用于展示冲突提示信息。
超参数管理器是该架构的核心部分,主要用于控制超参数管理方法的实现,诸如:确定代码解析方式,以使解析部分按照代码解析方式对更新代码进行解析;检查超参数是否为异常超参数,并在是异常超参数的情况下,控制用户交互界面展示冲突提示信息;根据位置信息、使用信息和项目标识生成对超参数的存储控制指令,以使超参数数据库对同一项目的全部超参数进行存储。
静态解析部分用于采用静态解析法对更新代码进行静态解析,获取更新代码中每个超参数的位置信息和使用信息。
动态解析部分用于当更新代码处于启动运行的状态时,根据运行时解析法对更新代码进行解析,得到超参数的位置信息和使用信息。
超参数数据库用于响应存储控制指令,将超参数的位置信息和使用信息按照项目标识进行存储。
参照上述实现超参数管理方法的架构,本实施例可以通过用户交互界面在原始代码中任何需要使用超参数的位置直接添加超参数,极大地降低了超参数的添加成本,并体现了对超参数的分布式管理方式;同时,通过超参数管理器对超参数的位置信息和使用信息进行集中管理,降低了超参数的管理难度,并体现了对超参数的集中式管理方式。
实施例三:
对于实施例二中所提供的超参数管理方法,本发明实施例提供了一种超参数管理装置,参见图4所示的一种超参数管理装置的结构框图,该装置包括:
超参数添加模块402,用于基于预设函数在原始代码的至少一个位置添加超参数,得到更新代码。
代码解析模块404,用于对所述更新代码进行解析,得到所述超参数的位置信息和使用信息。
超参数管理模块406,用于基于所述位置信息和所述使用信息对所述超参数进行管理。
本实施例提供了超参数管理装置,通过首先基于预设函数在原始代码的至少一个位置添加超参数,得到更新代码;然后对更新代码进行解析,得到超参数的位置信息和使用信息;最后基于位置信息和使用信息对超参数进行管理。本实施例提供的上述方式,能够通过预设函数直接在代码中任何需要使用超参数的位置添加超参数,从而极大地降低超参数的添加成本,较好地提升用户使用超参数的便利性;通过解析后的超参数的位置信息能够快速定位到超参数,并结合解析后的超参数的使用信息能够便于对超参数进行管理,有效降低超参数的管理难度。
在一些实施方式中,上述超参数管理装置还包括解析方式确定模块(图中未示出),该解析方式确定模块用于根据预设的时间间隔和/或预设的超参数添加数量间隔,检测更新代码的启动状态;根据更新代码的启动状态确定代码解析方式;上述代码解析模块404具体用于:根据代码解析方式对更新代码进行解析,得到超参数的位置信息和使用信息。
在一些实施方式中,上述代码解析模块404还具体用于:判断更新代码是否启动运行;如果是,确定代码解析方式为运行时解析法;如果否,确定代码解析方式为静态解析法。
在一些实施方式中,代码解析方式为静态解析法,上述代码解析模块404具体用于:采用静态解析法对更新代码进行静态解析,获取更新代码中每个超参数的位置信息和使用信息;其中,静态解析法包括以下至少一项:ast.literal_val函数、Spec Checker工具、Splint工具和PC-lint工具;位置信息包括超参数的所在文件和所在文件行号;使用信息包括以下至少一项:超参数的名称、操作类型、操作优先级、超参数默认值和初始化次数。
在一些实施方式中,上述使用信息包括初始化次数;上述超参数管理模块406具体用于:检测超参数的初始化次数是否多于一次;如果是,确定初始化次数多于一次的超参数为异常超参数;根据异常超参数的位置信息生成冲突提示信息;展示冲突提示信息,以提示用户根据冲突提示信息对异常超参数进行操作。
在一些实施方式中,上述超参数管理模块406具体用于:基于更新代码获取使用超参数的项目的项目标识;根据位置信息、使用信息和项目标识生成对超参数的存储控制指令;响应存储控制指令,将超参数的位置信息和使用信息按照项目标识进行存储。
在一些实施方式中,上述预设函数包括下划线函数;上述超参数添加模块402具体用于:响应用户交互界面监测到的下划线函数编码操作,基于下划线函数编码操作在原始代码的至少一个位置添加超参数;其中,用户交互界面包括:命令行界面CLI、交互式笔记本Jupyter或VSCode。
本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例二相同,为简要描述,本实施例部分未提及之处,可参考前述实施例二中相应内容。
实施例四:
基于前述实施例,本实施例给出了一种电子设备,该电子设备包括:处理器和存储设备;存储设备上存储有计算机程序,计算机程序在被处理器运行时执行如实施例二所提供的任一项超参数管理方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
进一步,本实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理设备运行时执行上述实施例二提供的任一项方法的步骤,或者,计算机程序被处理设备运行时执行上述实施例三提供的任一项的方法的步骤。
本发明实施例所提供的一种超参数管理方法、装置及电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种超参数管理方法,其特征在于,包括:
基于预设函数在原始代码的至少一个位置添加超参数,得到更新代码;
对所述更新代码进行解析,得到所述超参数的位置信息和使用信息;其中,解析得到的所述使用信息用于表示针对项目对应的学习模型,在对所述超参数进行优化的过程中,所述超参数在代码中的使用方式;
基于所述位置信息和所述使用信息对所述超参数进行管理;
其中,所述对所述更新代码进行解析,得到所述超参数的位置信息和使用信息,包括:
根据预设的时间间隔和/或预设的超参数添加数量间隔,检测所述更新代码的启动状态;
根据所述更新代码的启动状态确定代码解析方式;其中,当所述更新代码启动运行时,确定所述代码解析方式为运行时解析;当所述更新代码未启动运行时,确定所述代码解析方式为静态解析法;
根据所述代码解析方式对所述更新代码进行解析,得到所述超参数的位置信息和使用信息。
2.根据权利要求1所述的方法,其特征在于,所述代码解析方式为静态解析法,所述根据所述代码解析方式对所述更新代码进行解析,得到所述超参数的位置信息和使用信息的步骤,包括:
采用所述静态解析法对所述更新代码进行静态解析,获取所述更新代码中每个超参数的位置信息和使用信息;其中,所述静态解析法包括以下至少一项:ast.literal_val函数、Spec Checker工具、Splint工具和PC-lint工具;所述位置信息包括所述超参数的所在文件和所在文件行号;所述使用信息包括以下至少一项:所述超参数的名称、操作类型、操作优先级、超参数默认值和初始化次数。
3.根据权利要求1所述的方法,其特征在于,所述使用信息包括初始化次数;所述基于所述位置信息和所述使用信息对所述超参数进行管理的步骤,包括:
检测所述超参数的初始化次数是否多于一次;
当所述超参数的初始化次数多于一次时,确定初始化次数多于一次的超参数为异常超参数;
根据所述异常超参数的位置信息生成冲突提示信息;
展示所述冲突提示信息,以提示用户根据所述冲突提示信息对所述异常超参数进行操作。
4.根据权利要求1所述的方法,其特征在于,所述基于所述位置信息和所述使用信息对所述超参数进行管理的步骤,包括:
基于所述更新代码获取使用所述超参数的项目的项目标识;
根据所述位置信息、所述使用信息和所述项目标识生成对所述超参数的存储控制指令;
响应所述存储控制指令,将所述超参数的所述位置信息和所述使用信息按照所述项目标识进行存储。
5.根据权利要求1所述的方法,其特征在于,所述预设函数包括下划线函数;所述基于预设函数在原始代码的至少一个位置添加超参数的步骤,包括:
响应用户交互界面监测到的下划线函数编码操作,基于所述下划线函数编码操作在原始代码的至少一个位置添加超参数;其中,所述用户交互界面包括:命令行界面CLI、交互式笔记本Jupyter或VSCode。
6.一种超参数管理装置,其特征在于,包括:
超参数添加模块,用于基于预设函数在原始代码的至少一个位置添加超参数,得到更新代码;
代码解析模块,用于对所述更新代码进行解析,得到所述超参数的位置信息和使用信息;其中,解析得到的所述使用信息用于表示针对项目对应的学习模型,在对所述超参数进行优化的过程中,所述超参数在代码中的使用方式;
超参数管理模块,用于基于所述位置信息和所述使用信息对所述超参数进行管理;
其中,在对所述更新代码进行解析,得到所述超参数的位置信息和使用信息时,所述代码解析模块,用于:
根据预设的时间间隔和/或预设的超参数添加数量间隔,检测所述更新代码的启动状态;
根据所述更新代码的启动状态确定代码解析方式;其中,当所述更新代码启动运行时,确定所述代码解析方式为运行时解析;当所述更新代码未启动运行时,确定所述代码解析方式为静态解析法;
根据所述代码解析方式对所述更新代码进行解析,得到所述超参数的位置信息和使用信息。
7.一种电子设备,其特征在于,包括:处理器和存储装置;
所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时执行如权利要求1至5任一项所述的方法。
8.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1至5任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910930047.0A CN110705715B (zh) | 2019-09-27 | 2019-09-27 | 超参数管理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910930047.0A CN110705715B (zh) | 2019-09-27 | 2019-09-27 | 超参数管理方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110705715A CN110705715A (zh) | 2020-01-17 |
CN110705715B true CN110705715B (zh) | 2023-04-18 |
Family
ID=69197889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910930047.0A Active CN110705715B (zh) | 2019-09-27 | 2019-09-27 | 超参数管理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110705715B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113052248A (zh) * | 2021-03-31 | 2021-06-29 | 北京字节跳动网络技术有限公司 | 超参数确定方法、装置、深度强化学习框架、介质及设备 |
CN114089981B (zh) * | 2022-01-24 | 2022-05-10 | 麒麟软件有限公司 | 基于VSCode集成开发环境快速制作spec文件的方法及插件工具 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841782A (zh) * | 2011-06-23 | 2012-12-26 | 腾讯科技(深圳)有限公司 | 全局变量管理方法及装置 |
CN103257919A (zh) * | 2012-02-21 | 2013-08-21 | 腾讯科技(深圳)有限公司 | 脚本程序检查方法和装置 |
CN103309804A (zh) * | 2013-04-08 | 2013-09-18 | 中国电子科技集团公司第十研究所 | 自动化代码规则检查平台 |
CN106155897A (zh) * | 2015-04-16 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 一种业务处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330362B2 (en) * | 2013-05-15 | 2016-05-03 | Microsoft Technology Licensing, Llc | Tuning hyper-parameters of a computer-executable learning algorithm |
-
2019
- 2019-09-27 CN CN201910930047.0A patent/CN110705715B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841782A (zh) * | 2011-06-23 | 2012-12-26 | 腾讯科技(深圳)有限公司 | 全局变量管理方法及装置 |
CN103257919A (zh) * | 2012-02-21 | 2013-08-21 | 腾讯科技(深圳)有限公司 | 脚本程序检查方法和装置 |
CN103309804A (zh) * | 2013-04-08 | 2013-09-18 | 中国电子科技集团公司第十研究所 | 自动化代码规则检查平台 |
CN106155897A (zh) * | 2015-04-16 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 一种业务处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110705715A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220006828A1 (en) | System and user context in enterprise threat detection | |
US8140573B2 (en) | Exporting and importing business objects based on metadata | |
US9383973B2 (en) | Code suggestions | |
US8468391B2 (en) | Utilizing log event ontology to deliver user role specific solutions for problem determination | |
US9613074B2 (en) | Data generation for performance evaluation | |
EP3674918B1 (en) | Column lineage and metadata propagation | |
US20170178026A1 (en) | Log normalization in enterprise threat detection | |
US20170178025A1 (en) | Knowledge base in enterprise threat detection | |
US10565089B2 (en) | Identification of code features potentially associated with code behavior | |
US10657324B2 (en) | Systems and methods for generating electronic document templates and electronic documents | |
US20150066869A1 (en) | Module Database with Tracing Options | |
US20200364042A1 (en) | Static analysis of higher-order merge conflicts in large software development projects | |
CN110705715B (zh) | 超参数管理方法、装置及电子设备 | |
WO2018161509A1 (zh) | 条件编译预处理方法、终端及存储介质 | |
Tao et al. | Logstamp: Automatic online log parsing based on sequence labelling | |
US11386084B2 (en) | Systems and methods for deriving database semantic information using artificial intelligence | |
CN114969819A (zh) | 数据资产风险发现方法和装置 | |
CN112579307A (zh) | 一种物理锁资源的分配检测方法、装置及电子设备 | |
EP3816814A1 (en) | Crux detection in search definitions | |
JP2020129359A (ja) | 知識ベースを管理するための方法、装置、設備及び媒体 | |
CN113779117A (zh) | 一种数据监控方法、装置、存储介质和电子设备 | |
US11475078B2 (en) | Endpoint identifier for application programming interfaces and web services | |
EP3042314B1 (en) | Module specific tracing in a shared module environment | |
JP2013105349A (ja) | 動的リンクライブラリの更新、実行方法 | |
US20230251879A1 (en) | Methods and systems for reidentification in a user interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |