本申请涉及卷积运算,特别涉及一种神经网络模型的处理方法、装置、设备及介质。
背景技术:
1、在神经网络模型中,循环节点是指不同于常规的矩阵乘法和卷积等操作的节点,循环节点可以为条件语句、循环语句等,常常需要根据输入数据的当前状态做出决策。由于循环节点的存在,可能会出现函数的递归调用、大循环重复产生的情况,使得神经网络模型中部分算子的执行顺序是不确定的,提高了神经网络模型计算图的复杂度,增加了神经网络模型占用的内存,并且由于循环节点的存在,可能会导致神经网络模型运行过程中出现不确定的运行延迟,造成内存溢出的问题。
技术实现思路
1、为解决由于循环节点的存在,提高了神经网络模型的计算图的复杂度,增加了神经网络模型占用的内存的问题,本申请实施例中提供一种神经网络模型的处理方法、装置、设备及介质。
2、第一方面,本申请实施例提供了一种神经网络模型的处理方法,应用于电子设备,方法包括:获取待处理的神经网络模型,并确定神经网络模型中所有的初始循环结构;遍历初始循环结构,确定每个初始循环结构的循环次数,并根据循环次数对初始循环结构进行循环展开,得到展开循环结构;在确定初始循环结构和展开循环结构不相同的情况下,将初始循环结构更新为展开循环结构,得到处理后的神经网络模型。
3、本申请实施例在神经网络模型运行前确定神经网络模型中可以离线确定循环次数的初始循环结构,并基于循环次数循环展开初始循环结构,从而避免在神经网络模型运行过程中确定循环次数一定的初始循环结构的循环次数,从而降低了神经网络模型运行时计算图的复杂度,降低了神经网络模型占用的内存。
4、在一种可能的实现中,确定初始循环结构的循环次数,包括:在初始循环结构的条件语句的参数均为常数的情况下,获取初始循环结构的实际参数;将实际参数输入初始循环结构,以确定初始循环结构的循环次数。
5、在一种可能的实现中,确定初始循环结构的条件语句的参数是否均为常数的方法,包括:确定初始循环结构的条件语句的表达式;确定表达式的循环参数,循环参数用于确定初始循环结构的循环次数;若循环参数可以离线确定,则确定初始循环结构的条件语句的参数均为常数;若循环参数不可以离线确定,则确定初始循环结构的条件语句的参数包括非常数。
6、在一些实施例中,循环参数用于确定初始循环结构的循环次数和循环展开后的展开循环结构的最终结果值。
7、在一种可能的实现中,将实际参数输入初始循环结构,以确定初始循环结构的循环次数,包括:配置循环计数器;将实际参数输入初始循环结构,通过循环计数器确定初始循环结构的循环次数。
8、在一种可能的实现中,遍历初始循环结构包括:创建循环结构列表,循环结构列表用于存储初始循环结构;从循环结构列表中依次读取初始循环结构,直至循环结构列表为空。
9、在一种可能的实现中,还包括创建无效展开结构列表,无效展开结构列表用于存储展开循环结构与初始循环结构相同的循环结构,以及从循环结构列表中删除与无效展开结构列表中的展开循环结构相同的初始循环结构。
10、本申请实施例通过删除与无效展开结构列表中的展开循环结构相同的初始循环结构,避免重复循环展开神经网络模型中相同结构的初始循环结构,从而提高了神经网络模型的处理效率。
11、在一种可能的实现中,包括:获取循环结构列表的第i个初始循环结构,i为自然数;确定第i个初始循环结构的第一循环次数,并根据第一循环次数对第i个初始循环结构进行循环展开,得到第i个展开循环结构;在确定第i个展开循环结构与第i个初始循环结构相同的情况下,将第i个展开循环结构存储于无效展开结构列表;确定神经网络模型中所有的初始循环结构,以更新循环结构列表;删除更新后的循环结构列表中与无效展开列表中第i个展开循环结构相同的初始循环结构。
12、在一种可能的实现中,若初始循环结构和展开循环结构的循环节点个数和循环节点的连接关系均相同,确定初始循环结构和展开循环结构相同;若初始循环结构和展开循环结构的循环节点个数或循环节点的连接关系不相同,确定初始循环结构和展开循环结构不相同。
13、在一种可能的实现中,在初始循环结构的条件语句的参数包括非常数的情况下,确定循环结构和展开循环结构相同。
14、可以理解,在初始循环结构的条件语句的参数包括非常数的情况下,无法离线确定初始循环结构的循环次数,因此无法对初始循环结构进行循环展开,因此确定循环结构和展开循环结构相同。
15、在一种可能的实现中,条件语句包括if语句,if else语句中的至少一种。
16、在一种可能的实现中,神经网络模型包括循环神经网络,门控循环单元,长短时记忆网络,条件生成模型,强化学习模型中的至少一种。
17、第二方面,本申请实施例提供了一种装置,包括获取模块、展开模块和更新模块,获取模块,用于获取待处理的神经网络模型,并确定神经网络模型中所有的初始循环结构;展开模块,用于遍历初始循环结构,确定每个初始循环结构的循环次数,并根据循环次数对初始循环结构进行循环展开,得到展开循环结构;更新模块,用于在确定初始循环结构和展开循环结构不相同的情况下,将初始循环结构更新为展开循环结构,得到处理后的神经网络模型。
18、本申请实施例在神经网络模型运行前确定神经网络模型中可以离线确定循环次数的初始循环结构,并基于循环次数循环展开初始循环结构,从而避免在神经网络模型运行过程中确定循环次数一定的初始循环结构的循环次数,从而降低了神经网络模型运行时计算图的复杂度,降低了神经网络模型占用的内存。
19、第三方面,本申请实施例提供了一种电子设备,包括:存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及处理器,是电子设备的一个或多个处理器之一,用于实现上述第一方面及上述第一方面的各种可能实现提供的任一种神经网络模型的处理方法。
20、第四方面,本申请实施例提供了一种计算机可读介质,其上存储有指令,指令被执行时实现上述第一方面及上述第一方面的各种可能实现提供的任一种神经网络模型的处理方法。
1.一种神经网络模型的处理方法,其特征在于,应用于电子设备,所述方法包括:
2.根据权利要求1所述的神经网络模型的处理方法,其特征在于,确定所述初始循环结构的循环次数,包括:
3.根据权利要求2所述的神经网络模型的处理方法,其特征在于,确定所述初始循环结构的条件语句的参数是否均为常数的方法,包括:
4.根据权利要求2所述的神经网络模型的处理方法,其特征在于,所述将所述实际参数输入所述初始循环结构,以确定所述初始循环结构的循环次数,包括:
5.根据权利要求2所述的神经网络模型的处理方法,其特征在于,遍历所述初始循环结构包括:
6.根据权利要求5所述的神经网络模型的处理方法,其特征在于,还包括创建无效展开结构列表,所述无效展开结构列表用于存储展开循环结构与所述初始循环结构相同的循环结构,以及
7.根据权利要求5-6任一项所述的神经网络模型的处理方法,其特征在于,包括:
8.根据权利要求6所述的神经网络模型的处理方法,其特征在于,包括:
9.根据权利要求6所述的神经网络模型的处理方法,其特征在于,包括:
10.根据权利要求9所述的神经网络模型的处理方法,其特征在于,所述条件语句包括if语句,if else语句中的至少一种。
11.根据权利要求1-10任一项所述的神经网络模型的处理方法,其特征在于,所述神经网络模型包括循环神经网络,门控循环单元,长短时记忆网络,条件生成模型,强化学习模型中的至少一种。
12.一种神经网络模型的处理装置,其特征在于,包括获取模块、展开模块和更新模块,
13.一种电子设备,其特征在于,包括:存储器,用于存储由所述电子设备的一个或多个处理器执行的指令,以及所述处理器,是所述电子设备的所述一个或多个处理器之一,用于执行所述指令以实施如权利要求1至11中任一项所述的神经网络模型的处理方法。
14.一种计算机可读介质,其上存储有指令,其特征在于,所述指令被执行时实现权利要求1至11中任一项所述的神经网络模型的处理方法。