一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于标准化算子接口的神经网络模型部署方法及系统与流程

2022-09-04 05:54:52 来源:中国专利 TAG:


1.本发明涉及人工智能技术领域,特别涉及一种基于标准化算子接口的神经网络模型部署方法及系统。


背景技术:

2.神经网络技术在应用于实际生产时面临碎片化、复杂化的挑战。神经网络部署方案形态多样,不同类型方案之间的兼容性不佳,所以在已有多种类型方案的情况下,将神经网络技术工程化、规模化以解决实际生产问题时,需要处理复杂的兼容性问题,来保证神经网络算法在不同现存方案中都能满足具体生产需求。
3.在考虑云端、边端与终端的场景下,现有神经网络从训练部署到生产环境的方案可分为以下三种形态:一是神经网络算法厂商提供设备与算法形成“终 边”端,对云端提供算法厂商定制化接口;二是云厂商提供“终 边 云”的协同环境,向算法厂商提供算法部署的一体化环境支持;三是算法厂商、设备厂商、云厂商各自提供接口,需要根据业务需求处理各接口之间的兼容性问题。
4.标准化算子接口对神经网络算法所使用的大部分运算操作的调用格式与运算语义做了统一规定,有助于缓解神经网络生态的碎片化和复杂化问题。基于标准化算子接口和神经网络训练推理系统可以将神经网络算法模型转换为使用标准化算子描述的模型,从而被其他神经网络部署和推理系统识别解析。通过算法语义的统一标准,实现神经网络算法的翻译转换,缓解不同方案之间的兼容性问题。
5.目前上述神经网络解决方案与完全基于标准化算子接口的解决方案有一定局限性,具体还存在接口兼容性低、算法性能优化效果不一以及算法外泄等问题。


技术实现要素:

6.本发明所要解决的技术问题是:提供一种基于标准化算子接口的神经网络模型部署方法及系统,能够提高不同设备间的兼容性,同时保障算法性能优化效果以及算法的安全性。
7.为了解决上述技术问题,本发明采用的技术方案为:
8.一种基于标准化算子接口的神经网络模型部署方法,包括步骤:
9.接收待部署的神经网络模型和神经网络模型输入数据的数据样本;
10.对所述待部署的神经网络模型中的待加速算子进行标记,并使用标准化算子接口描述所述待加速算子;
11.使用标准化算子接口的神经网络模型将已描述的待加速算子进行解析,并使用转换参数将解析后的待加速算子转换为目标部署设备支持的算子;
12.根据转换后的神经网络模型中算子的性能,基于所述数据样本对所述转换参数进行调整;
13.将所述待部署的神经网络模型中的未转换算子和已转换算子分别进行封装,生成
可部署的神经网络模型。
14.为了解决上述技术问题,本发明采用的另一技术方案为:
15.一种基于标准化算子接口的神经网络模型部署系统,包括标准化算子接口适配模块、算子执行引擎、算法部署优化模块和模型封装模块:
16.接收待部署的神经网络模型和神经网络模型输入数据的数据样本;
17.所述标准化算子接口适配模块,用于对所述待部署的神经网络模型中的待加速算子进行标记,并使用标准化算子接口描述所述待加速算子;
18.所述算子执行引擎,用于使用标准化算子接口的神经网络模型将已描述的待加速算子进行解析,并使用转换参数将解析后的待加速算子转换为目标部署设备支持的算子;
19.所述算法部署优化模块,用于根据转换后的神经网络模型中算子的性能,基于所述数据样本对所述转换参数进行调整;
20.所述模型封装模块,用于将所述待部署的神经网络模型中的未转换算子和已转换算子分别进行封装,生成可部署的神经网络模型。
21.本发明的有益效果在于:通过将待部署神经网络模型中的待加速算子进行标记和标准化算子接口描述,能够对待部署神经网络模型进行原始算子和标准化算子的划分,能够在支持标准化算子接口的同时,也支持基于通用算力设备的通用接口,更为灵活地支持通用的执行逻辑。基于标准化算子接口将待加速算子转换为目标部署设备支持的算子,并且根据算子的执行性能对转换参数进行调整,能够保障转换后的算法准确度;通过对待部署的神经网络进行划分、转换、优化和封装,保证算法的安全性。
附图说明
22.图1为本发明实施例的一种基于标准化算子接口的神经网络模型部署方法的流程图;
23.图2为本发明实施例的一种基于标准化算子接口的神经网络模型部署系统化的框架图;
24.图3为本发明实施例的一种基于标准化算子接口的神经网络模型部署方法的流程图;
25.图4为本发明实施例的一种基于标准化算子接口的神经网络模型部署方法的模型优化流程图;
26.图5为本发明实施例的一种基于标准化算子接口的神经网络模型部署方法的导出模型框架图。
具体实施方式
27.为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
28.请参照图1,本发明实施例提供了一种基于标准化算子接口的神经网络模型部署方法,包括步骤:
29.接收待部署的神经网络模型和神经网络模型输入数据的数据样本;
30.对所述待部署的神经网络模型中的待加速算子进行标记,并使用标准化算子接口
描述所述待加速算子;
31.使用标准化算子接口的神经网络模型将已描述的待加速算子进行解析,并使用转换参数将解析后的待加速算子转换为目标部署设备支持的算子;
32.根据转换后的神经网络模型中算子的性能,基于所述数据样本对所述转换参数进行调整;
33.将所述待部署的神经网络模型中的未转换算子和已转换算子分别进行封装,生成可部署的神经网络模型。
34.从上述描述可知,本发明的有益效果在于:通过将待部署神经网络模型中的待加速算子进行标记和标准化算子接口描述,能够对待部署神经网络模型进行原始算子和标准化算子的划分,能够在支持标准化算子接口的同时,也支持基于通用算力设备的通用接口,更为灵活地支持通用的执行逻辑。基于标准化算子接口将待加速算子转换为目标部署设备支持的算子,并且根据算子的执行性能对转换参数进行调整,能够保障转换后的算法准确度;通过对待部署的神经网络进行划分、转换、优化和封装,保证算法的安全性。
35.进一步地,所述根据转换后的神经网络模型中算子的性能,基于所述数据样本对所述转换参数进行调整包括:
36.根据所述神经网络模型内各算子的依赖关系建立有向无环图;
37.以所述数据样本为所述神经网络模型的输入数据,按照所述有向无环图的拓扑顺序依次执行神经网络模型的算子;
38.若所述算子为待加速算子,则比对原始的待加速算子与已转换的待加速算子的执行结果,若所述执行结果的相似度超过预设阈值,则调整所述转换参数,并判断原始的待加速算子和调整预设次数的转换参数的已转换的待加速算子的执行结果相似度是否超过预设阈值,若是,则将已转换的待加速算子还原为原始的待加速算子。
39.由上述描述可知,通过算子依赖关系的有向无环图,对其中的待加速算子进行其原始算子和已转换算子的执行结果比对,并根据比对结果相似性进行已转换算子的调整,能够保障转换后的算法准确度;并且将经过多次调整仍不符合需求的算子,将其还原为原始算子,以此保证最终的模型质量。
40.进一步地,若所述算子为待加速算子,则比对原始的待加速算子与已转换的待加速算子的执行结果,若所述执行结果的相似度超过预设阈值,则调整所述转换参数包括:
41.若所述算子为待加速算子,则以所述数据样本为输入数据,计算在待部署神经网络模型中原始的待加速算子的第一执行结果,并计算在所述标准化算子接口的神经网络模型中已转换的待加速算子的第二执行结果;
42.计算所述第一执行结果和所述第二执行结果的相似度,判断所述相似度是否超过预设阈值,若是,则使用启发式算法调整所述转换参数。
43.由上述描述可知,使用待部署神经网络模型执行原始算子的算法模型,使用标准化算子接口的神经网络模型执行已转换算子的算法模型,能够更准确地得到转换前后的算子执行性能,便于对算子进行调整和重划分。
44.进一步地,将所述待部署的神经网络模型中的未转换算子和已转换算子分别进行封装,生成可部署的神经网络模型包括:
45.使用预设格式对所述待部署的神经网络模型以及所述未转换算子进行组织、压缩
和加密;
46.使用所述标准化算子接口的神经网络模型的格式对所述已转换算子进行组织、压缩和加密。
47.进一步地,所述生成可部署的神经网络模型包括:
48.将封装后的所述未转换算子和所述已转换算子按照预设模型组织标准进行数据排放,得到可部署的神经网络模型。
49.由上述描述可知,使用待部署的神经网络模型和标准化算子接口的神经网络模型对未转换算子和已转换算子分别进行封装,通过标准化算子接口的神经网络模型对已转换算子进行组织、压缩和加密,减少传输流量,并在一定程度上保障模型传输过程中的安全性。
50.请参照图2,本发明实施例提供了一种基于标准化算子接口的神经网络模型部署系统,包括标准化算子接口适配模块、算子执行引擎、算法部署优化模块和模型封装模块:
51.接收待部署的神经网络模型和神经网络模型输入数据的数据样本;
52.所述标准化算子接口适配模块,用于对所述待部署的神经网络模型中的待加速算子进行标记,并使用标准化算子接口描述所述待加速算子;
53.所述算子执行引擎,用于使用标准化算子接口的神经网络模型将已描述的待加速算子进行解析,并使用转换参数将解析后的待加速算子转换为目标部署设备支持的算子;
54.所述算法部署优化模块,用于根据转换后的神经网络模型中算子的性能,基于所述数据样本对所述转换参数进行调整;
55.所述模型封装模块,用于将所述待部署的神经网络模型中的未转换算子和已转换算子分别进行封装,生成可部署的神经网络模型。
56.由上述描述可知,通过将待部署神经网络模型中的待加速算子进行标记和标准化算子接口描述,能够对待部署神经网络模型进行原始算子和标准化算子的划分,能够在支持标准化算子接口的同时,也支持基于通用算力设备的通用接口,更为灵活地支持通用的执行逻辑。基于标准化算子接口将待加速算子转换为目标部署设备支持的算子,并且根据算子的执行性能对转换参数进行调整,能够保障转换后的算法准确度;通过对待部署的神经网络进行划分、转换、优化和封装,保证算法的安全性。
57.进一步地,所述根据转换后的神经网络模型中算子的性能,基于所述数据样本对所述转换参数进行调整包括:
58.根据所述神经网络模型内各算子的依赖关系建立有向无环图;
59.以所述数据样本为所述神经网络模型的输入数据,按照所述有向无环图的拓扑顺序依次执行神经网络模型的算子;
60.若所述算子为待加速算子,则比对原始的待加速算子与已转换的待加速算子的执行结果,若所述执行结果的相似度超过预设阈值,则调整所述转换参数,并判断原始的待加速算子和调整预设次数的转换参数的已转换的待加速算子的执行结果相似度是否超过预设阈值,若是,则将已转换的待加速算子还原为原始的待加速算子。
61.由上述描述可知,通过算子依赖关系的有向无环图,对其中的待加速算子进行其原始算子和已转换算子的执行结果比对,并根据比对结果相似性进行已转换算子的调整,能够保障转换后的算法准确度;并且将经过多次调整仍不符合需求的算子,将其还原为原
始算子,以此保证最终的模型质量。
62.进一步地,若所述算子为待加速算子,则比对原始的待加速算子与已转换的待加速算子的执行结果,若所述执行结果的相似度超过预设阈值,则调整所述转换参数包括:
63.若所述算子为待加速算子,则以所述数据样本为输入数据,计算在待部署神经网络模型中原始的待加速算子的第一执行结果,并计算在所述标准化算子接口的神经网络模型中已转换的待加速算子的第二执行结果;
64.计算所述第一执行结果和所述第二执行结果的相似度,判断所述相似度是否超过预设阈值,若是,则使用启发式算法调整所述转换参数。
65.由上述描述可知,使用待部署神经网络模型执行原始算子的算法模型,使用标准化算子接口的神经网络模型执行已转换算子的算法模型,能够更准确地得到转换前后的算子执行性能,便于对算子进行调整和重划分。
66.进一步地,将所述待部署的神经网络模型中的未转换算子和已转换算子分别进行封装,生成可部署的神经网络模型包括:
67.使用预设格式对所述待部署的神经网络模型以及所述未转换算子进行组织、压缩和加密;
68.使用所述标准化算子接口的神经网络模型的格式对所述已转换算子进行组织、压缩和加密。
69.进一步地,所述生成可部署的神经网络模型包括:
70.将封装后的所述未转换算子和所述已转换算子按照预设模型组织标准进行数据排放,得到可部署的神经网络模型。
71.由上述描述可知,使用待部署的神经网络模型和标准化算子接口的神经网络模型对未转换算子和已转换算子分别进行封装,通过标准化算子接口的神经网络模型对已转换算子进行组织、压缩和加密,减少传输流量,并在一定程度上保障模型传输过程中的安全性。
72.本发明上述的一种基于标准化算子接口的神经网络模型部署方法及终端,适用于在有多厂商设备资源的情况下,提升不同设备间的兼容性,支持跨厂商地部署神经网络算法,同时保障算法性能优化效果,保护算法的安全性,以下通过具体的实施方式进行说明:
73.实施例一
74.请参照图1、图3至图5,一种基于标准化算子接口的神经网络模型部署方法,包括步骤:
75.s1、接收待部署的神经网络模型和神经网络模型输入数据的数据样本。
76.s11、接收用户定义的或者通用的待部署神经网络模型。
77.s12、在生产环境中,采集所述待部署的神经网络模型的真实输入数据,获得预设数量的数据样本。
78.具体的,不同的神经网络模型的采样数量可以不同,例如计算机视觉分类任务模型需要的数据样本的样本数量为128份。
79.s2、对所述待部署的神经网络模型中的待加速算子进行标记,并使用标准化算子接口描述所述待加速算子。
80.具体的,通过标记待部署的神经网络模型中需要加速的算子,并使用标准化算子
接口描述需要加速转换的算子,将待部署的神经网络模型划分为需要加速的算子和原始算子。
81.s3、使用标准化算子接口的神经网络模型将已描述的待加速算子进行解析,并使用转换参数将解析后的待加速算子转换为目标部署设备支持的算子。
82.具体的,基于标准化算子接口的神经网络模型部署系统解析使用标准化算子接口描述的待加速算子,并通过预设的键值映射,调用目标部署设备与算子相对应的转换方法,使用默认或用户配置的转换参数将待加速算子转换为设备支持推理的算子。
83.s4、根据转换后的神经网络模型中算子的性能,基于所述数据样本对所述转换参数进行调整。
84.s41、根据所述神经网络模型内各算子的依赖关系建立有向无环图。
85.s42、以所述数据样本为所述神经网络模型的输入数据,按照所述有向无环图的拓扑顺序依次执行神经网络模型的算子。
86.具体的,以数据样本为模型数据输入,按照有向无环图的拓扑排序顺序执行原始神经网络模型内部算子。
87.s43、若所述算子为待加速算子,则比对原始的待加速算子与已转换的待加速算子的执行结果,若所述执行结果的相似度超过预设阈值,则调整所述转换参数,并判断原始的待加速算子和调整预设次数的转换参数的已转换的待加速算子的执行结果相似度是否超过预设阈值,若是,则将已转换的待加速算子还原为原始的待加速算子。
88.s431、若所述算子为待加速算子,则以所述数据样本为输入数据,计算在待部署神经网络模型中原始的待加速算子的第一执行结果,并计算在所述标准化算子接口的神经网络模型中已转换的待加速算子的第二执行结果。
89.具体的,在本实施例中,待部署的神经网络模型即为用户定义的神经网络训练推理系统。请参照图4,当所执行算子为转换后算子时,则同时调用目标部署设备的神经网络推理系统与用户定义系统执行。调用目标部署设备的神经网络推理系统得到的算子执行结果为转换后结果;调用用户定义系统得到的算子执行结果为原始结果。
90.s432、计算所述第一执行结果和所述第二执行结果的相似度,判断所述相似度是否超过预设阈值,若是,则使用启发式算法调整所述转换参数。
91.在本实施例中,使用相似性评价指标来计算相似度,具体的请参照图4,针对有转换后算子的情况,使用相似性评价指标(如:均方误差mse)评价转换后结果与原始结果。若得出的相似性评价指标超过用户设定的阈值,则使用启发式算法(如:网格搜索)或反向传播算法对转换参数进行更新,再重新执行转换后算子,进行相似性评价。当更新周期超过一定阈值或者评价指标超过一定阈值时,将转换后算子还原,将该算子标记为使用用户定义的神经网络训练推理系统执行,重新划分模型。
92.具体的,在本实施例中,使用均方误差mse相似性评价指标,其待加速算子的计算结果是张量。对于同一输入,原算子的计算结果为张量转换后算子的计算结果为首先将t1和t2展开为向量,分别得到t
′1=[0.2,0.3,0.4,0.3]和t
′2=[0.21,0.3,0.4,0.3],则根据均方误差mse的计算公式,计算结果为
即,在本实施例中,基于mse相似性评价指标得到的相似性数值为0.00005。
[0093]
此时,评价指标输出的相似性评价结果为一个标量,其取值范围为:[0, ∞)。若用户设定阈值为α=0.0002,则当相似性评价结果小于等于阈值0.0002时,认为没有超过用户设定阈值;当相似性评价结果大于阈值0.0002时,则认为超过用户所设定阈值。
[0094]
其中,判定是否超过用户设定阈值的标准是和所使用的相似性评价指标相关的,并非直接根据数值比较得出是否超过阈值。例如,若使用作为评价指标,若用户设定阈值为α=5000,则当相似性评价结果大于等于阈值5000时,认为没有超过用户设定阈值;当相似性评价结果小于阈值5000时,则认为超过用户所设定阈值。
[0095]
在一些实施例中,使用启发式算法对转换参数进行更新具体为:使用网格搜索启发式算法,转换方法为一种线性量化方法,即其中,scale和zero_point为转换参数,ceil为向上取整函数;待转换算子需要的参数为张量w,算子输入为张量a。首先为w和a分别设置scale和zero_point各自的离散取值范围,w或a的scale和zero_point的可能取值组合都可以表示为二维平面上的离散点集。为w和a双循环迭代每一个scale和zero_point的可能取值组合,使用取值组合(scalei,zero_pointi)和(scalej,zero_pointj)分别量化w和a,得到qi(w)和qj(a)后带入量化后算子运算得到量化后运算结果t
i,j
,与原计算结果t
ori
通过相似性评价指标得到相似性数值。若相似性符合预设值则停止参数更新,返回(scalei,zero_pointi)和(scalej,zero_pointj)。
[0096]
在一些实施例中,使用反向传播算法对转换参数进行更新具体为:转换方法为一种线性量化方法,即其中,scale和zero_point为转换参数,ceil为向上取整函数,并假设q(x)的求导函数与相同;待转换算子需要的参数为张量w,算子输入为张量a;损失函数为首先设置scale0和zero_point0为初始值,计算得到转换后结果t0,与原始结果t
ori
计算损失mse(t0,t
ori
)。根据链式求导法则对w求偏导得到w’。基于w’利用常见的更新算法(如:随机梯度下降法sgd)更新w,得到w1。依照这一流程持续迭代更新wi直到基于mse相似性评价指标满足预设值。
[0097]
其中,相似性评价指标、启发式算法、反向传播算法和用户设定的阈值都支持替换。
[0098]
s44、若所述算子不为待加速算子,则直接计算在待部署神经网络模型中该算子的执行结果。
[0099]
具体的,当所执行算子为原始算子时,则直接调用用户定义的神经网络训练推理系统执行。
[0100]
s5、将所述神经网络模型中的未转换算子和已转换算子分别进行封装,生成可部署的神经网络模型。
[0101]
步骤s5具体包括以下步骤:
[0102]
使用预设格式对所述待部署的神经网络模型以及所述未转换算子进行组织、压缩和加密;使用所述标准化算子接口的神经网络模型的格式对所述已转换算子进行组织、压缩和加密。
[0103]
将封装后的所述未转换算子和所述已转换算子按照预设模型组织标准进行数据排放,得到可部署的神经网络模型。
[0104]
具体的,原始算子部分的算法模型和用户自定义神经网络训练推理系统软件按照用户定义的方式进行组织、压缩、加密,在执行时使用用户定义的方式进行解密、解压、解析,用户自定义神经网络训练推理系统软件在通用算力设备(如:cpu)上执行原始算子部分的算法模型;转化后算子部分的算法模型按照基于标准化算子接口的神经网络模型部署系统所规定的格式(格式支持更新迭代)进行组织、压缩、加密(使用国密sm2等算法,算法可替换),在执行时使用基于标准化算子接口的神经网络模型部署系统进行解密、解压、解析。
[0105]
请参照图5,导出的模型包括用户定义部分和标准化算子接口部分:
[0106]
用户定义的或者通用的待部署神经网络模型包含可执行软件、数据与元数据。其中,可执行软件为用户定义神经网络训练推理系统软件或其他运行在通用算力平台上的软件;数据为被用户定义可执行软件访问的数据,其访问权限可由用户定义可执行软件控制;元数据按照规定好的格式存储可执行软件的调用入口与调用参数,以及其他用户在解密、解压、解析这一部分模型所需要的其他参数。
[0107]
标准化算子接口部分包含模型数据、运行参数和元数据。模型数据按照标准化算子接口组织,符合标准化算子接口语义;运行参数与目标部署设备相关;元数据中包含了模型数据和运行参数的储存位置等目标部署设备中神经网络推理系统在解密、解压、解析这一部分模型所需要的其他参数。
[0108]
实施例二
[0109]
请参照图2,一种基于标准化算子接口的神经网络模型部署系统,包括标准化算子接口适配模块、算子执行引擎、算法部署优化模块和模型封装模块:
[0110]
标准化算子接口适配模块,用于对所述待部署的神经网络模型中的待加速算子进行标记,并使用标准化算子接口描述所述待加速算子;
[0111]
具体的,标准化算子接口适配模块的输入为按标准化算子描述的神经网络算子与转换参数,输出为可以被用户定义神经网络训练推理系统调用的利用目标设备执行的算子,用于将用户定义的神经网络训练推理系统算子转换为算法语义相同的设备执行的算子。
[0112]
算子执行引擎,用于使用标准化算子接口的神经网络模型将已描述的待加速算子进行解析,并使用转换参数将解析后的待加速算子转换为目标部署设备支持的算子;
[0113]
具体的,算子执行引擎的输入为算子的输入数据,输出为算子根据输入数据执行的结果数据,用于得到利用目标设备执行的结果,该引擎包括:数值转换模块,用于根据数值转换参数将算子的输入数据格式转换为符合目标设备要求的格式,将算子的输出数据格式转换为符合用户定义神经网络训练推理系统要求的格式;辅助计算模块,用于向不完全符合标准化算子接口语义的设备,添加辅助的计算处理逻辑,使得被用户定义神经网络训练推理系统调用的算子符合标准化算子接口语义。
[0114]
算法部署优化模块,用于根据转换后的神经网络模型的性能,基于所述数据样本
对所述转换参数进行调整;
[0115]
具体的,算法部署优化模块的输入为初步划分的可执行调用的神经网络模型、用户设定阈值、用户设定相似性评价指标、用户设定转换参数搜索算法,输出为优化后的可执行调用的神经网络模型,用于优化神经网络模型的算法准确度。
[0116]
模型封装模块,用于将所述神经网络模型中的未转换算子和已转换算子分别进行封装,生成可部署的神经网络模型;
[0117]
具体的,模型封装模块的输入为优化后的可执行调用的神经网络模型、用户定义神经网络训练推理系统软件、用户定义模型组织与加密方法,输出为可部署的加密的封装后的神经网络模型,用于生成可以部署于生产环境的神经网络模型,该模块包含:模型组织模块,用于依照标准排放算法模型数据;模型压缩模块,用于压缩模型数据,减少传输流量;模型加密模块,用于加密模型数据,在一定程度上保障模型传输过程中的安全性。
[0118]
综上所述,本发明提供的一种基于标准化算子接口的神经网络模型部署方法及系统,通过将待部署神经网络模型中的待加速算子进行标记和标准化算子接口描述,能够对待部署神经网络模型进行原始算子和标准化算子的划分,能够在支持标准化算子接口的同时,也支持基于通用算力设备的通用接口,更为灵活地支持通用的执行逻辑。基于标准化算子接口将待加速算子转换为目标部署设备支持的算子,并且根据算子的执行性能对转换参数进行调整,能够保障转换后的算法准确度;通过对待部署的神经网络进行划分、转换、优化和封装,保证算法的安全性。
[0119]
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献