一种基于BP神经网络的营养配平方法、装置及计算机设备与流程

文档序号:30834881发布日期:2022-07-22 22:46阅读:147来源:国知局
一种基于BP神经网络的营养配平方法、装置及计算机设备与流程
一种基于bp神经网络的营养配平方法、装置及计算机设备
技术领域
1.本发明属于饮食健康技术领域,具体地涉及一种基于bp神经网络的营养配平方法、装置及计算机设备。


背景技术:

2.人体每日的活动需要消耗各种营养素,每种营养素都有它的特殊生理功能,都是人体正常代谢活动所不可缺少的物质。为了保证人群及个体安全地摄入各种营养素,避免出现营养过剩抑或营养不良的状况,中国营养协会提出了适用于各类人群的膳食营养素参考摄入量(dietary reference intakes,dris)。
3.由于人体对营养素需求最终都是通过饮食来获得,因此随着人们的生活水平提高,越来越多的群体和个人在关注膳食营养的合理性,以此期望拥有更加健康的体魄。近年来,各行各业的信息化水平不断提高,营养领域也开始不断寻求信息化和智能化的解决方案。智慧膳食营养配平方法是通过将先进的信息化技术应用到膳食营养领域,使得个人或群体能够快速地找到膳食营养的配平及优化方案。
4.膳食营养配平及优化应用集中发展于2010年前后,主要应用于医院场景和幼儿园场景,其中,在医院场景可帮助医院的营养科科室医生为病人进行专业化和符合个人生理特征的配餐,而在幼儿园场景可帮助学校为幼儿进行科学配餐,以便符合国家保育的要求。
5.然而,截止到目前为止,绝大部分的膳食营养配平及优化方式还停留在手动进行营养素调整或者用常规软件算法针对单一营养素进行调整的阶段,前者方式依赖于专业性较强的人为配平,存在效率低、配平结果较为主观和粗放以及精准度较低的问题,而后者方式则很难保证所有营养素的平衡。


技术实现要素:

6.为了解决现有膳食营养配平及优化方式所存在效率低、精准度低和所有营养素难平衡的问题,本发明目的在于提供一种基于bp神经网络的营养配平方法、装置、计算机设备及计算机可读存储介质,不但无需人为配平,大幅提高效率,缩短配平所需时间,还可得到最接近营养配平目标的营养配平结果,使配平结果具有高精准度和所有营养素均平衡的特点。
7.第一方面,本发明提供了一种基于bp神经网络的营养配平方法,包括:
8.获取待配平食谱和营养配平目标向量,其中,所述待配平食谱记录有m种食物,所述营养配平目标向量记录有n种营养素的目标含量值,m表示不小于2的正整数,n表示不小于2的正整数;
9.根据所述待配平食谱和所述营养配平目标向量,创建包含有输入层、隐藏层和输出层的反向传播bp神经网络,其中,所述隐藏层包含有与所述m种食物一一对应的m个隐藏节点,所述输出层包含有与所述n种营养素一一对应的n个输出节点,所述m个隐藏节点与所述n个输出节点根据食物与营养素的已知包含关系进行如下方式的多对多连接:若与某个
隐藏节点对应的食物包含有与某个输出节点对应的营养素,则建立所述某个隐藏节点与所述某个输出节点的连接关系,反之则不建立;
10.将所述营养配平目标向量导入所述bp神经网络中,得到完成训练的新bp神经网络,其中,所述bp神经网络的训练过程包括有如下步骤s31~s33:
11.s31.按照如下公式计算得到输出向量:
[0012][0013]
式中,n表示不大于n的正整数,yn表示所述n个输出节点中第n个输出节点的输出值,所述输出向量表示为(y1,y2,
…yn
,

,yn),m表示不大于m的正整数,pm表示所述m个隐藏节点中第m个隐藏节点的节点值,w
mn
表示与所述第m个隐藏节点对应的食物在单位重量下包含与所述第n个输出节点对应的营养素的已知含量值;
[0014]
s32.计算得到所述输出向量与所述营养配平目标向量的误差平方值,其中,所述营养配平目标向量表示为(dy1,dy2,

dyn,

,dyn),dyn表示所述n种营养素中第n种营养素的目标含量值;
[0015]
s33.判断所述误差平方值是否小于预设的目标阈值,若是,则停止训练,得到完成训练的新bp神经网络,否则基于bp神经网络的梯度下降法来调整所述m个隐藏节点的节点值,然后返回执行步骤s31,其中,所述节点值的调整约束条件包含有:取值大于或等于零,并且所述m个隐藏节点的且在调整后的节点值总和为预先固定的单人配餐总重量值;
[0016]
从所述新bp神经网络中提取得到所述m个隐藏节点的节点值,以便将所述m个隐藏节点中各个隐藏节点的节点值作为所述待配平食谱中对应食物的配餐重量值,得到所述待配平食谱的营养配平结果。
[0017]
基于上述发明内容,提供了一种可自动进行膳食营养配平及优化的新方案,即在获取待配平食谱和营养配平目标向量后,先结合食物与营养素的已知包含关系创建一个包含有输入层、隐藏层和输出层的bp神经网络,以便用隐藏节点的节点值来作为关联食物的且可基于bp神经网络的梯度下降法进行调整的配餐重量值,然后将所述营养配平目标向量导入所述bp神经网络中,得到完成训练的新bp神经网络,最后从所述新bp神经网络中提取得到各个隐藏节点的节点值来作为对应食物的配餐重量值,得到所述待配平食谱的营养配平结果,如此不但无需人为配平,大幅提高效率,缩短配平所需时间,还可得到最接近营养配平目标的营养配平结果,使配平结果具有高精准度和所有营养素均平衡的特点,便于实际应用和推广。
[0018]
在一个可能的设计中,在创建所述bp神经网络之后且将所述营养配平目标向量导入所述bp神经网络之前,所述方法还包括:
[0019]
判断在所述待配平食谱中是否存在满足食物互斥条件的两种食物;
[0020]
若存在,则将与确定食物对应的隐藏节点的节点值锁定为不可调整的零值,其中,所述确定食物是指在所述两种食物中确定放弃参与营养配平的食物。
[0021]
在一个可能的设计中,计算得到所述输出向量与所述营养配平目标向量的误差平方值,包括:
[0022]
根据所述输出向量和所述营养配平目标向量,按照如下公式计算得到所述n种营养素的含量差值:
[0023][0024]
式中,dfn表示所述n种营养素中第n种营养素的含量差值,dyn表示所述第n种营养素的目标含量值,所述营养配平目标向量表示为(dy1,dy2,

dyn,

,dyn),当dyn为单点值时,或者当dyn为区间值时,表示在dyn中的第一数值,表示在dyn中的第二数值;
[0025]
根据所述n种营养素的含量差值,计算得到所述输出向量与所述营养配平目标向量的误差平方值
[0026]
在一个可能的设计中,基于bp神经网络的梯度下降法来调整所述m个隐藏节点的节点值,包括:
[0027]
针对所述m个隐藏节点中的各个隐藏节点,若发现对应的食物有预设的配餐重量指定值,则当该配餐重量指定值为单点值时,将对应的节点值锁定为该单点值,或者当该配餐重量指定值为区间值时,在该区间值的范围内基于bp神经网络的梯度下降法来调整对应的节点值。
[0028]
在一个可能的设计中,所述营养配平方法还包括:
[0029]
当节点值调整次数超过预设的次数阈值时,根据所述营养配平目标向量与当前所得的所述输出向量的比较结果,对所述待配平食谱进行食物增加、食物剔除和/或食物替换的调整,得到新的待配平食谱;
[0030]
根据所述新的待配平食谱和所述营养配平目标向量,重新创建bp神经网络并进行训练。
[0031]
在一个可能的设计中,根据所述营养配平目标向量与当前所得的所述输出向量的比较结果,对所述待配平食谱进行食物增加、食物剔除和/或食物替换的调整,得到新的待配平食谱,包括:
[0032]
根据所述营养配平目标向量与当前所得的所述输出向量的比较结果,若发现有第一营养素的目标含量值大于对应输出节点的当前输出值,则按照如下方式(a)或(b)对所述待配平食谱进行调整:
[0033]
(a)从食谱库中选取一种未参与本次营养配平的且针对所述第一营养素的已知含量丰富程度大于所有本次营养配平参与食物的第一食物,并将所述第一食物添加到所述待配平食谱中,得到新的待配平食谱;
[0034]
(b)从所有本次营养配平参与食物中选取出针对所述第一营养素具有已知最小含量丰富程度的第二食物,以及从食谱库中选取一种未参与本次营养配平的且针对所述第一营养素的已知含量丰富程度高于所述第二食物的第三食物,并将所述第二食物从所述待配平食谱中剔除,以及将所述第三食物添加到所述待配平食谱中,得到新的待配平食谱;
[0035]
和/或,根据所述营养配平目标向量与当前所得的所述输出向量的比较结果,若发现有第二营养素的目标含量值小于对应输出节点的当前输出值,则按照如下方式(c)或(d)
对所述待配平食谱进行调整:
[0036]
(c)从所有本次营养配平参与食物中选取出针对所述第二营养素具有已知最大含量丰富程度的第四食物,将所述第四食物从所述待配平食谱中剔除,得到新的待配平食谱;
[0037]
(d)从所有本次营养配平参与食物中选取出针对所述第二营养素具有已知最大含量丰富程度的第四食物,以及从食谱库中选取一种未参与本次营养配平的且针对所述第二营养素的已知含量丰富程度小于所述第四食物的第五食物,并将所述第四食物从所述待配平食谱中剔除,以及将所述第五食物添加到所述待配平食谱中,得到新的待配平食谱。
[0038]
在一个可能的设计中,在得到所述待配平食谱的营养配平结果之后,所述营养配平方法还包括:
[0039]
根据膳食营养素参考摄入量dris标准对所述营养配平结果进行评分处理,得到评分值。
[0040]
第二方面,本发明提供了一种基于bp神经网络的营养配平装置,包括有依次通信连接的数据获取模块、网络创建模块、网络训练模块和数值提取模块;
[0041]
所述数据获取模块,用于获取待配平食谱和营养配平目标向量,其中,所述待配平食谱记录有m种食物,所述营养配平目标向量记录有n种营养素的目标含量值,m表示不小于2的正整数,n表示不小于2的正整数;
[0042]
所述网络创建模块,用于根据所述待配平食谱和所述营养配平目标向量,创建包含有输入层、隐藏层和输出层的反向传播bp神经网络,其中,所述隐藏层包含有与所述m种食物一一对应的m个隐藏节点,所述输出层包含有与所述n种营养素一一对应的n个输出节点,所述m个隐藏节点与所述n个输出节点根据食物与营养素的已知包含关系进行如下方式的多对多连接:若与某个隐藏节点对应的食物包含有与某个输出节点对应的营养素,则建立所述某个隐藏节点与所述某个输出节点的连接关系,反之则不建立;
[0043]
所述网络训练模块,用于将所述营养配平目标向量导入所述bp神经网络中,得到完成训练的新bp神经网络,其中,所述网络训练模块包括有输出向量计算单元、误差平方值计算单元和判断单元;
[0044]
所述输出向量计算单元,用于按照如下公式计算得到输出向量:
[0045][0046]
式中,n表示不大于n的正整数,yn表示所述n个输出节点中第n个输出节点的输出值,所述输出向量表示为(y1,y2,
…yn
,

,yn),m表示不大于m的正整数,pm表示所述m个隐藏节点中第m个隐藏节点的节点值,w
mn
表示与所述第m个隐藏节点对应的食物在单位重量下包含与所述第n个输出节点对应的营养素的已知含量值;
[0047]
所述误差平方值计算单元,通信连接所述输出向量计算单元,用于计算得到所述输出向量与所述营养配平目标向量的误差平方值,其中,所述营养配平目标向量表示为(dy1,dy2,

dyn,

,dyn),dyn表示所述n种营养素中第n种营养素的目标含量值;
[0048]
所述判断单元,分别通信连接所述误差平方值计算单元和所述输出向量计算单元,用于判断所述误差平方值是否小于预设的目标阈值,若是,则停止训练,得到完成训练的新bp神经网络,否则基于bp神经网络的梯度下降法来调整所述m个隐藏节点的节点值,然后再次启动所述输出向量计算单元,其中,所述节点值的调整约束条件包含有:取值大于或
等于零,并且所述m个隐藏节点的且在调整后的节点值总和为预先固定的单人配餐总重量值;
[0049]
所述数值提取模块,用于从所述新bp神经网络中提取得到所述m个隐藏节点的节点值,以便将所述m个隐藏节点中各个隐藏节点的节点值作为所述待配平食谱中对应食物的配餐重量值,得到所述待配平食谱的营养配平结果。
[0050]
第三方面,本发明提供了一种计算机设备,包括有依次通信连接的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如第一方面或第一方面中任意可能设计所述的营养配平方法。
[0051]
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如第一方面或第一方面中任意可能设计所述的营养配平方法。
[0052]
第五方面,本发明提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如第一方面或第一方面中任意可能设计所述的营养配平方法。
附图说明
[0053]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0054]
图1是本发明提供的基于bp神经网络的营养配平方法的流程示意图。
[0055]
图2是本发明提供的bp神经网络的结构示意图。
[0056]
图3是本发明提供的误差平方值的计算方法流程示意图。
[0057]
图4是本发明提供的在发现食物互斥时的处理方法流程示意图。
[0058]
图5是本发明提供的待配平食谱的调整方法流程示意图。
[0059]
图6是本发明提供的基于bp神经网络的营养配平装置的结构示意图。
[0060]
图7是本发明提供的计算机设备的结构示意图。
具体实施方式
[0061]
下面结合附图及具体实施例来对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明虽然是用于帮助理解本发明,但并不构成对本发明的限定。本文公开的特定结构和功能细节仅用于描述本发明示例的实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本文阐述的实施例中。
[0062]
应当理解,尽管本文可能使用术语第一和第二等等来描述各种对象,但是这些对象不应当受到这些术语的限制。这些术语仅用于区分一个对象和另一个对象。例如可以将第一对象称作第二对象,并且类似地可以将第二对象称作第一对象,同时不脱离本发明的示例实施例的范围。
[0063]
应当理解,对于本文中可能出现的术语“和/或”,其仅仅是一种描述关联对象的关
联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a、单独存在b或者同时存在a和b等三种情况;对于本文中可能出现的术语“/和”,其是描述另一种关联对象关系,表示可以存在两种关系,例如,a/和b,可以表示:单独存在a或者同时存在a和b等两种情况;另外,对于本文中可能出现的字符“/”,一般表示前后关联对象是一种“或”关系。
[0064]
如图1所示,本实施例第一方面提供的且基于bp神经网络的营养配平方法,可以但不限于由具有一定计算资源的计算机设备执行,例如由个人计算机(personal computer,pc,指一种大小、价格和性能适用于个人使用的多用途计算机;台式机、笔记本电脑到小型笔记本电脑和平板电脑以及超级本等都属于个人计算机)、智能手机、个人数字助理(personal digital assistant,pad)或可穿戴设备等电子设备执行,不但无需人为配平,大幅提高效率,缩短配平所需时间,还可得到最接近营养配平目标的营养配平结果,使配平结果具有高精准度和所有营养素均平衡的特点,便于实际应用和推广。如图1所示,所述基于bp神经网络的营养配平方法,可以但不限于包括有如下步骤s1~s4。
[0065]
s1.获取待配平食谱和营养配平目标向量,其中,所述待配平食谱记录有m种食物,所述营养配平目标向量记录有n种营养素的目标含量值,m表示不小于2的正整数,n表示不小于2的正整数。
[0066]
在所述步骤s1中,所述待配平食谱即为一套需要进行营养配平的食物组合,以便得到最佳的用餐方案,具体可由配餐员输入得到,其中,所述m种食物可以但不限于包括有馒头、包子、米饭、饮料、面包、某种水果和/或某种菜品等。所述营养配平目标向量可由所述配餐员根据目标人群/个人的膳食营养素参考摄入量直接输入或微调得到,其中,所述n种营养素可以但不限于包括有蛋白质、脂类、碳水化合物、矿物质、维生素、水和/或膳食纤维等。此外,所述目标含量值可以是单点值,也可以是区间值(即为一个区间数值范围)。
[0067]
s2.根据所述待配平食谱和所述营养配平目标向量,创建包含有输入层、隐藏层和输出层的反向传播bp神经网络,其中,所述隐藏层包含有与所述m种食物一一对应的m个隐藏节点,所述输出层包含有与所述n种营养素一一对应的n个输出节点,所述m个隐藏节点与所述n个输出节点根据食物与营养素的已知包含关系进行如下方式的多对多连接:若与某个隐藏节点对应的食物包含有与某个输出节点对应的营养素,则建立所述某个隐藏节点与所述某个输出节点的连接关系,反之则不建立。
[0068]
在所述步骤s2中,由于bp(back propagation,反向传播)神经网络是1986年由rumelhart和mcclelland为首的科学家提出的概念,是一种按照误差逆向传播算法(即以误差平方为目标函数,采用梯度下降法来计算该目标函数的最小值)训练的多层前馈神经网络,是应用最广泛的神经网络模型之一;以及bp神经网络的基本结构是在输入层(其可以有若干个输入节点)与输出层(其可以有若干个输出节点)之间增加一层或多层神经元(这些神经元称为隐藏节点,它们与外界没有直接的联系,但是其状态的改变能影响输入与输出之间的关系),得到有若干个隐藏节点的隐藏层,因此创建而得的所述bp神经网络的网络结构可如图2所示,以便可用隐藏节点的节点值来作为对应食物的且可基于bp神经网络的梯度下降法进行调整的配餐重量值。所述多对多连接的具体建立方式,可举例如下:馒头(假设其对应隐藏节点1)含有蛋白质(假设其对应输出节点3)、脂肪(假设其对应输出节点4)和碳水化合物(假设其对应输出节点5)等营养素,但缺乏膳食纤维(假设其对应输出节点1)等营养素,如此可建立隐藏节点1分别与输出节点3、输出节点4和输出节点5等的连接关系,而
不建立隐藏节点1与输出节点1的连接关系。此外,如图2所示,所述输入层也可包含有与所述m种食物一一对应的m个输入节点,并使所述m个输入节点与所述m个隐藏节点一对一连接,以便构建起一个完整的bp神经网络结构。
[0069]
s3.将所述营养配平目标向量导入所述bp神经网络中,得到完成训练的新bp神经网络。
[0070]
在所述步骤s3中,所述营养配平目标向量用于作为训练所需的验证数据,可具体表示为(dy1,dy2,

dyn,

,dyn),其中,n表示不大于n的正整数,dyn表示所述n种营养素中第n种营养素的目标含量值。所述bp神经网络的训练过程包括但不限于有如下步骤s31~s33。
[0071]
s31.按照如下公式计算得到输出向量:
[0072][0073]
式中,n表示不大于n的正整数,yn表示所述n个输出节点中第n个输出节点的输出值,所述输出向量表示为(y1,y2,
…yn
,

,yn),m表示不大于m的正整数,pm表示所述m个隐藏节点中第m个隐藏节点的节点值,w
mn
表示与所述第m个隐藏节点对应的食物在单位重量下包含与所述第n个输出节点对应的营养素的已知含量值。
[0074]
在所述步骤s31中,pm的初始值可为随机生成的任意正数值,w
mn
可以基于对食物的营养素含量研究分析结果得到,例如每100克馒头大致包含有7.00克蛋白质、1.10克脂肪和47.00克碳水化合物。此外,从上述公式也可以看出,输出向量与输入向量无关,因此训练所需的输入向量可设计为任意值。
[0075]
s32.计算得到所述输出向量与所述营养配平目标向量的误差平方值。
[0076]
在所述步骤s32中,所述误差平方值可以但不限于基于离均差平方和、方差或标准差公式等计算得到。考虑所述目标含量值存在为单点值/区间值的情况,优选的,如图3所示,计算得到所述输出向量与所述营养配平目标向量的误差平方值,包括但不限于有如下步骤s321~s322。
[0077]
s321.根据所述输出向量和所述营养配平目标向量,按照如下公式计算得到所述n种营养素的含量差值:
[0078][0079]
式中,dfn表示所述n种营养素中第n种营养素的含量差值,dyn表示所述第n种营养素的目标含量值,所述营养配平目标向量表示为(dy1,dy2,

dyn,

,dyn),当dyn为单点值时,或者当dyn为区间值时,表示在dyn中的第一数值,表示在dyn中的第二数值。
[0080]
在所述步骤s321中,所述第一数值可以但不限于为区间值dyn中的最小值、中间值、最大值或其它值,优选为最大值;所述第二数值也可以但不限于为区间值dyn中的最小值、中间值、最大值或其它值,优选为最小值。此外,当dyn为单点值时,yn∈dyn也即yn=dyn。
[0081]
s322.根据所述n种营养素的含量差值,计算得到所述输出向量与所述营养配平目
标向量的误差平方值
[0082]
在所述步骤s322中,当dyn为单点值时,所述误差平方值即为所述输出向量与所述营养配平目标向量的离均差平方和,所述误差平方值即为所述输出向量与所述营养配平目标向量的方差,所述误差平方值即为所述输出向量与所述营养配平目标向量的标准差。
[0083]
s33.判断所述误差平方值是否小于预设的目标阈值,若是,则停止训练,得到完成训练的新bp神经网络,否则基于bp神经网络的梯度下降法来调整所述m个隐藏节点的节点值,然后返回执行步骤s31,其中,所述节点值的调整约束条件包含有:取值大于或等于零,并且所述m个隐藏节点的且在调整后的节点值总和为预先固定的单人配餐总重量值。
[0084]
在所述步骤s33中,基于bp神经网络的梯度下降法进行调整的现有原理是:转入误差的反向传播过程;误差反传是将输出误差通过隐含层向输入层逐层反传,并将误差分摊给各层所有节点,以从各层获得的误差信号作为调整各节点值的依据;通过调整输入节点与隐藏节点的连接强度和隐藏节点与输出节点的连接强度以及阈值,使误差沿梯度方向下降;最后经过反复学习训练,即可确定与最小误差相对应的网络参数。为了实现对某种食物的配餐重量进行预先锁定的目的,优选的,基于bp神经网络的梯度下降法来调整所述m个隐藏节点的节点值,包括但不限于有:针对所述m个隐藏节点中的各个隐藏节点,若发现对应的食物有预设的配餐重量指定值,则当该配餐重量指定值为单点值时,将对应的节点值锁定为该单点值,或者当该配餐重量指定值为区间值时,在该区间值的范围内基于bp神经网络的梯度下降法来调整对应的节点值。举例的,若发现与某个隐藏节点对应的食物为苹果且预先设为200克(即单点值)或200~240克(即区间值),可在调整过程中将该某个隐藏节点的节点值锁定为200克,或者在200~240克内进行调整。此外,所述单人配餐总重量值也可以是单点值或区间值(此时若所述节点值总和属于该区间值,则表示所述节点值总和为所述单人配餐总重量值)。
[0085]
s4.从所述新bp神经网络中提取得到所述m个隐藏节点的节点值,以便将所述m个隐藏节点中各个隐藏节点的节点值作为所述待配平食谱中对应食物的配餐重量值,得到所述待配平食谱的营养配平结果。
[0086]
在所述步骤s4中,由于所述m个隐藏节点与所述m种食物一一对应,因此可以基于所述m个隐藏节点的节点值,得到所述m种食物中各种食物的配餐重量值,进而得到最接近营养配平目标的营养配平结果,使配平结果具有高精准度和所有营养素均平衡的特点。此外,为了对所述营养配平结果进行客观评估,在得到所述待配平食谱的营养配平结果之后,所述营养配平方法还包括但不限于有:根据膳食营养素参考摄入量dris标准对所述营养配平结果进行评分处理,得到评分值,其中的具体评分处理方式为现有处理手段。
[0087]
由此基于前述步骤s1~s4所描述的且基于bp神经网络的营养配平方法,提供了一
种可自动进行膳食营养配平及优化的新方案,即在获取待配平食谱和营养配平目标向量后,先结合食物与营养素的已知包含关系创建一个包含有输入层、隐藏层和输出层的bp神经网络,以便用隐藏节点的节点值来作为关联食物的且可基于bp神经网络的梯度下降法进行调整的配餐重量值,然后将所述营养配平目标向量导入所述bp神经网络中,得到完成训练的新bp神经网络,最后从所述新bp神经网络中提取得到各个隐藏节点的节点值来作为对应食物的配餐重量值,得到所述待配平食谱的营养配平结果,如此不但无需人为配平,大幅提高效率,缩短配平所需时间,还可得到最接近营养配平目标的营养配平结果,使配平结果具有高精准度和所有营养素均平衡的特点,便于实际应用和推广。
[0088]
本实施例在前述第一方面的技术方案基础上,还提供了一种如何避免食物相克的可能设计一,即如图4所示,在创建所述bp神经网络之后且将所述营养配平目标向量导入所述bp神经网络之前,所述方法还包括但不限于有如下步骤s301~s302。
[0089]
s301.判断在所述待配平食谱中是否存在满足食物互斥条件的两种食物。
[0090]
在所述步骤s301,具体判断方式可以基于各种食物的黑名单进行,其中,所述黑名单记录有与对应食物相斥的其它食物,例如在豆腐的黑名单中记录有蜂蜜。
[0091]
s302.若存在,则将与确定食物对应的隐藏节点的节点值锁定为不可调整的零值,其中,所述确定食物是指在所述两种食物中确定放弃参与营养配平的食物。
[0092]
在所述步骤s302中,由于是将与所述确定食物对应的隐藏节点的节点值锁定为不可调整的零值,如此可确保后续所得的营养配平结果不会存在食物相克问题。所述确定食物的确定方式可以但不限于为在提醒警示后由配餐员进行指定、基于现有比较算法(例如基于价格比较方法,将价格更高的食物作为所述确定食物)进行确定或随机确定(即在所述两种食物中任选一种)。此外,若不存在,可直接将所述营养配平目标向量导入所述bp神经网络中。
[0093]
由此基于前述步骤s301~s302所描述的可能设计一,可在发现所述待配平食谱中存在满足食物互斥条件的两种食物时,通过将与该两种食物中某种食物对应的隐藏节点的节点值锁定为不可调整的零值,来确保后续所得的营养配平结果不会存在食物相克问题。
[0094]
本实施例在前述第一方面或可能设计一的技术方案基础上,还提供了一种在初次配平失败时如何进行配平优化的可能设计二,即如图5所示,所述营养配平方法还包括但不限于有如下步骤s61~s62。
[0095]
s61.当节点值调整次数超过预设的次数阈值时,根据所述营养配平目标向量与当前所得的所述输出向量的比较结果,对所述待配平食谱进行食物增加、食物剔除和/或食物替换的调整,得到新的待配平食谱。
[0096]
在所述步骤s61中,所述次数阈值用于作为判定初次配平是否失败的依据,即表示在多次进行节点值调整后依然不能接近营养配平目标(具体可能是因至少一种营养素在所述食物组合中含量过低或过高导致)。具体的,根据所述营养配平目标向量与当前所得的所述输出向量的比较结果,对所述待配平食谱进行食物增加、食物剔除和/或食物替换的调整,得到新的待配平食谱,包括但不限于有如下两种情况(1)和/或(2)。
[0097]
(1)根据所述营养配平目标向量与当前所得的所述输出向量的比较结果,若发现有第一营养素的目标含量值大于对应输出节点的当前输出值,则按照如下方式(a)或(b)对所述待配平食谱进行调整:(a)从食谱库中选取一种未参与本次营养配平的且针对所述第
一营养素的已知含量丰富程度大于所有本次营养配平参与食物的第一食物,并将所述第一食物添加到所述待配平食谱中,得到新的待配平食谱;(b)从所有本次营养配平参与食物中选取出针对所述第一营养素具有已知最小含量丰富程度的第二食物,以及从食谱库中选取一种未参与本次营养配平的且针对所述第一营养素的已知含量丰富程度高于所述第二食物的第三食物,并将所述第二食物从所述待配平食谱中剔除,以及将所述第三食物添加到所述待配平食谱中,得到新的待配平食谱。即若所述第一营养素的目标含量值大于对应输出节点的当前输出值,则表明所述第一种营养素在当前的待配平食谱中含量过低,可能是初次配平失败的原因之一,此时就需要采用方式(a)来添加富含所述第一种营养素的其它食物或者采用方式(b)来用高含量食物替换低含量食物(其可确保待配平食谱的食物总数不变,特别适用于限定了食物总数的营养配平场景),以便再次进行自动配平。
[0098]
(2)根据所述营养配平目标向量与当前所得的所述输出向量的比较结果,若发现有第二营养素的目标含量值小于对应输出节点的当前输出值,则按照如下方式(c)或(d)对所述待配平食谱进行调整:(c)从所有本次营养配平参与食物中选取出针对所述第二营养素具有已知最大含量丰富程度的第四食物,将所述第四食物从所述待配平食谱中剔除,得到新的待配平食谱;(d)从所有本次营养配平参与食物中选取出针对所述第二营养素具有已知最大含量丰富程度的第四食物,以及从食谱库中选取一种未参与本次营养配平的且针对所述第二营养素的已知含量丰富程度小于所述第四食物的第五食物,并将所述第四食物从所述待配平食谱中剔除,以及将所述第五食物添加到所述待配平食谱中,得到新的待配平食谱。即若所述第二营养素的目标含量值小于对应输出节点的当前输出值,则表明所述第二种营养素在当前的待配平食谱中含量过高,可能是初次配平失败的原因之一,此时就需要采用方式(c)来剔除富含所述第二种营养素的配平参与食物或者采用方式(d)来用低含量食物替换高含量食物(其可确保待配平食谱的食物总数不变,特别适用于限定了食物总数的营养配平场景),以便再次进行自动配平。
[0099]
s62.根据所述新的待配平食谱和所述营养配平目标向量,重新创建bp神经网络并进行训练。
[0100]
在所述步骤s62中,同样需要针对所述新的待配平食谱再次执行前述步骤s301~s302,以便确保后续所得的营养配平结果不会存在食物相克问题。
[0101]
由此基于前述步骤s61~s62所描述的可能设计二,可以在初次配平失败时,通过调整参与营养配平的食物组合来进行配平优化,确保最终能够得到最接近营养配平目标的营养配平方案。
[0102]
如图6所示,本实施例第二方面提供了一种实现第一方面或第一方面中任一可能设计所述的营养配平方法的虚拟装置,包括有依次通信连接的数据获取模块、网络创建模块、网络训练模块和数值提取模块;
[0103]
所述数据获取模块,用于获取待配平食谱和营养配平目标向量,其中,所述待配平食谱记录有m种食物,所述营养配平目标向量记录有n种营养素的目标含量值,m表示不小于2的正整数,n表示不小于2的正整数;
[0104]
所述网络创建模块,用于根据所述待配平食谱和所述营养配平目标向量,创建包含有输入层、隐藏层和输出层的反向传播bp神经网络,其中,所述隐藏层包含有与所述m种食物一一对应的m个隐藏节点,所述输出层包含有与所述n种营养素一一对应的n个输出节
点,所述m个隐藏节点与所述n个输出节点根据食物与营养素的已知包含关系进行如下方式的多对多连接:若与某个隐藏节点对应的食物包含有与某个输出节点对应的营养素,则建立所述某个隐藏节点与所述某个输出节点的连接关系,反之则不建立;
[0105]
所述网络训练模块,用于将所述营养配平目标向量导入所述bp神经网络中,得到完成训练的新bp神经网络,其中,所述网络训练模块包括有输出向量计算单元、误差平方值计算单元和判断单元;
[0106]
所述输出向量计算单元,用于按照如下公式计算得到输出向量:
[0107][0108]
式中,n表示不大于n的正整数,yn表示所述n个输出节点中第n个输出节点的输出值,所述输出向量表示为(y1,y2,
…yn
,

,yn),m表示不大于m的正整数,pm表示所述m个隐藏节点中第m个隐藏节点的节点值,w
mn
表示与所述第m个隐藏节点对应的食物在单位重量下包含与所述第n个输出节点对应的营养素的已知含量值;
[0109]
所述误差平方值计算单元,通信连接所述输出向量计算单元,用于计算得到所述输出向量与所述营养配平目标向量的误差平方值,其中,所述营养配平目标向量表示为(dy1,dy2,

dyn,

,dyn),dyn表示所述n种营养素中第n种营养素的目标含量值;
[0110]
所述判断单元,分别通信连接所述误差平方值计算单元和所述输出向量计算单元,用于判断所述误差平方值是否小于预设的目标阈值,若是,则停止训练,得到完成训练的新bp神经网络,否则基于bp神经网络的梯度下降法来调整所述m个隐藏节点的节点值,然后再次启动所述输出向量计算单元,其中,所述节点值的调整约束条件包含有:取值大于或等于零,并且所述m个隐藏节点的且在调整后的节点值总和为预先固定的单人配餐总重量值;
[0111]
所述数值提取模块,用于从所述新bp神经网络中提取得到所述m个隐藏节点的节点值,以便将所述m个隐藏节点中各个隐藏节点的节点值作为所述待配平食谱中对应食物的配餐重量值,得到所述待配平食谱的营养配平结果。
[0112]
本实施例第二方面提供的前述装置的工作过程、工作细节和技术效果,可以参见第一方面或第一方面中任一可能设计所述的营养配平方法,于此不再赘述。
[0113]
如图7所示,本实施例第三方面提供了一种执行如第一方面或第一方面中任一可能设计所述的营养配平方法的计算机设备,包括有依次通信连接的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如第一方面或第一方面中任一可能设计所述的营养配平方法。具体举例的,所述存储器可以但不限于包括随机存取存储器(random-access memory,ram)、只读存储器(read-only memory,rom)、闪存(flash memory)、先进先出存储器(first input first output,fifo)和/或先进后出存储器(first input last output,filo)等等;所述处理器可以但不限于采用型号为stm32f105系列的微处理器。此外,所述计算机设备还可以但不限于包括有电源模块、显示屏和其它必要的部件。
[0114]
本实施例第三方面提供的前述计算机设备的工作过程、工作细节和技术效果,可以参见第一方面或第一方面中任一可能设计所述的营养配平方法,于此不再赘述。
[0115]
本实施例第四方面提供了一种存储包含如第一方面或第一方面中任一可能设计
所述的营养配平方法的指令的计算机可读存储介质,即所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如第一方面或第一方面中任一可能设计所述的营养配平方法。其中,所述计算机可读存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(memory stick)等计算机可读存储介质,所述计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。
[0116]
本实施例第四方面提供的前述计算机可读存储介质的工作过程、工作细节和技术效果,可以参见如第一方面或第一方面中任一可能设计所述的营养配平方法,于此不再赘述。
[0117]
本实施例第五方面提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如第一方面或第一方面中任一可能设计所述的营养配平方法。其中,所述计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。
[0118]
最后应说明的是,本发明不局限于上述可选的实施方式,任何人在本发明的启示下都可得出其他各种形式的产品。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1