一种路径编码、相似路径检索方法及装置和电子设备与流程

文档序号:15615592发布日期:2018-10-09 21:17阅读:187来源:国知局

本公开实施例涉及计算机技术领域,尤其涉及一种路径编码、相似路径检索方法及装置和电子设备。



背景技术:

随计算机以及互联网技术的不断发展,基于地理位置提供服务(lbs,locationbasedservice)越来越多。

在lbs场景中,针对某用户的路径数据检索相似路径的情况经常出现,例如出行应用中提供的拼车服务,即是根据出行用户提交的路径,检索相似地别的出行用户的路径,并将这两个出行用户合并为同一订单,从而实现拼车。

现有技术中,基于用户的路径数据寻找相似路径,由于不同路径有长有短各有不同,通常可以采用dynamictimewrapping(动态时间规整)算法。然而,这种算法较为复杂,计算量大,检索需要的时间较多,因此检索的效率较低;并且随着业务量不断增长,这种算法越来越无法满足不断增长的检索需求。



技术实现要素:

本公开实施例通过提供的一种路径编码、相似路径检索方法及装置和电子设备,以解决现有技术中存在的路径检索效率较低的问题。

根据本公开实施例的第一方面,提出一种路径信息编码方法,该方法包括:

获取待编码路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

将待编码路径信息输入预先构建的循环神经网络模型中进行计算;其中,所述循环神经网络模型的隐含层至少包括m个神经元,第1个神经元的输入数据为第1个路径点的位置信息,第i(其中2≤i≤m)个神经元的输入数据为第i个路径点的位置信息以及第(i-1)个神经元的输出数据;

获取所述循环神经网络模型的隐藏层的第m个神经元的输出数据,第m个神经元的输出数据为:维数为n的向量,其中n为预设的编码长度值;

利用预设的编码函数,将第m个神经元的输出的n维向量编码为长度为n的编码。

可选地,所述循环神经网络模型通过如下方式离线训练得到:

设所述循环神经网络模型隐藏层的第i个神经元的传递函数为si=g(u*zi+v*si-1),并分别设置u和v的初始值,其中:u为模型输入层参数,v为模型隐藏层参数,si为隐藏层第i个神经元的输出,zi为第i个路径点的位置信息,g为预设的非线性激活函数;

获取用于模型训练的多条样本路径的信息,所述样本路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

将每条样本路径的信息分别输入所述传递函数,利用u和v的初始值计算出每条样本路径对应的si;

根据条样本路径对应的si,根据反向传播算法以及梯度下降算法训练得到u和v的训练值。

可选地,所述si=g(u*zi+v*si-1)通过如下方式计算得到:

根据1*n向量si-1、以及1*2向量zi,构建1*(n+2)矩阵;

根据n*n矩阵v和2*n矩阵u,构建(n+2)*n矩阵;

将所述1*(n+2)矩阵与(n+2)*n矩阵相乘,得到1*n矩阵;

将所述1*n矩阵中的元素,带入非线性激活函数g中,得到1*n向量si。

可选地,所述si=g(u*zi+v*si-1)通过如下方式计算得到:

根据n*1向量si-1、以及2*1向量zi,构建(n+2)*1矩阵;

根据n*n矩阵v和n*2矩阵u,构建n*(n+2)矩阵;

将所述n*(n+2)矩阵与(n+2)*1矩阵相乘,得到n*1矩阵;

将所述n*1矩阵中的元素,带入非线性激活函数g中,得到n*1向量si。

可选地,所述循环神经网络模型为:长短时记忆模型lstm。

可选地,所述非线性激活函数包括:sigmoid函数、tanh双曲正切函数或relu函数。

可选地,所述编码函数为h(x);其中,x分别对应每一维向量的取值,h(x)分别对应每一维向量的编码结果,当x>0.5时,h(x)=1、当x<=0.5时,h(x)=0。

根据本公开实施例的第二方面,提出一种相似路径检索方法,该方法包括:

接收路径检索请求,所述路径检索请求中携带有待检索路径的路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

应用如上述实施例所述的路径信息编码方法,对检索请求中携带的路径信息进行编码,得到待检索编码;

根据预设的匹配规则,在预设的路径数据库中,查询与所述待检索编码相同的已知路径编码,并将查询结果对应的已知路径确定为待检索路径的相似路径;其中,所述路径数据库中,预先存储有至少一条已知路径的编码结果。

根据本公开实施例的第三方面,提出一种路径信息编码装置,包括:

路径获取单元,用于获取待编码路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

计算单元,用于将待编码路径信息输入预先构建的循环神经网络模型中进行计算;其中,所述循环神经网络模型的隐含层至少包括m个神经元,第1个神经元的输入数据为第1个路径点的位置信息,第i(其中2≤i≤m)个神经元的输入数据为第i个路径点的位置信息以及第(i-1)个神经元的输出数据;

数据获取单元,用于获取所述循环神经网络模型的隐藏层的第m个神经元的输出数据,第m个神经元的输出数据为:维数为n的向量,其中n为预设的编码长度值;

第一编码单元,用于利用预设的编码函数,将第m个神经元的输出的n维向量编码为长度为n的编码。

可选地,上述装置还包括:

训练单元,用于通过离线训练得到所述循环神经网络模型;

其中,所述训练单元包括:

设置子单元,用于设所述循环神经网络模型隐藏层的第i个神经元的传递函数为si=g(u*zi+v*si-1),并分别设置u和v的初始值,其中:u为模型输入层参数,v为模型隐藏层参数,si为隐藏层第i个神经元的输出,zi为第i个路径点的位置信息,g为预设的非线性激活函数;

获取子单元,用于获取用于模型训练的多条样本路径的信息,所述样本路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

计算子单元,用于将每条样本路径的信息分别输入所述传递函数,利用u和v的初始值计算出每条样本路径对应的si;

训练子单元,用于根据条样本路径对应的si,根据反向传播算法以及梯度下降算法训练得到u和v的训练值。

可选地,所述计算单元,通过以下方式计算第i个神经元的输出si:根据1*n向量si-1、以及1*2向量zi,构建1*(n+2)矩阵;根据n*n矩阵v和2*n矩阵u,构建(n+2)*n矩阵;将所述1*(n+2)矩阵与(n+2)*n矩阵相乘,得到1*n矩阵;将所述1*n矩阵中的元素,带入非线性激活函数g中,得到1*n向量si=g(u*zi+v*si-1)。

可选地,所述计算单元,通过以下方式计算第i个神经元的输出si:根据n*1向量si-1、以及2*1向量zi,构建(n+2)*1矩阵;根据n*n矩阵v和n*2矩阵u,构建n*(n+2)矩阵;将所述n*(n+2)矩阵与(n+2)*1矩阵相乘,得到n*1矩阵;将所述n*1矩阵中的元素,带入非线性激活函数g中,得到n*1向量si=g(u*zi+v*si-1)。

可选地,所述循环神经网络模型为:长短时记忆模型lstm。

可选地,所述非线性激活函数包括:sigmoid函数、tanh双曲正切函数或relu函数。

可选地,所述编码函数为h(x);其中,x分别对应每一维向量的取值,h(x)分别对应每一维向量的编码结果,当x>0.5时,h(x)=1、当x<=0.5时,h(x)=0。

根据本公开实施例的第四方面,提出一种相似路径检索装置,包括:

接收单元,用于接收路径检索请求,所述路径检索请求中携带有待检索路径的路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

第二编码单元,用于应用如上述实施例所述的路径信息编码方法,对检索请求中携带的路径信息进行编码,得到待检索编码;

查询单元,用于根据预设的匹配规则,在预设的路径数据库中,查询与所述待检索编码相同的已知路径编码,并将查询结果对应的已知路径确定为待检索路径的相似路径;其中,所述路径数据库中,预先存储有至少一条已知路径的编码结果。

根据本公开实施例的第五方面,提出一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

获取待编码路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

将待编码路径信息输入预先构建的循环神经网络模型中进行计算;其中,所述循环神经网络模型的隐含层至少包括m个神经元,第1个神经元的输入数据为第1个路径点的位置信息,第i(其中2≤i≤m)个神经元的输入数据为第i个路径点的位置信息以及第(i-1)个神经元的输出数据;

获取所述循环神经网络模型的隐藏层的第m个神经元的输出数据,第m个神经元的输出数据为:维数为n的向量,其中n为预设的编码长度值;

利用预设的编码函数,将第m个神经元的输出的n维向量编码为长度为n的编码。

根据本公开实施例的第六方面,提出一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

接收路径检索请求,所述路径检索请求中携带有待检索路径的路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

应用如上述实施例中的路径信息编码方法,对检索请求中携带的路径信息进行编码,得到待检索编码;

根据预设的匹配规则,在预设的路径数据库中,查询与所述待检索编码相同的已知路径编码,并将查询结果对应的已知路径确定为待检索路径的相似路径;其中,所述路径数据库中,预先存储有至少一条已知路径的编码结果。

本公开实施例中,由于循环神经网络的隐藏层的前一个神经元输出的向量可以作为后一个神经元的输入;对于后一个神经元来说,其输入不仅具有输入层的路径点,还具有隐藏层的前一个神经元传递的向量;因此,对于隐藏层的任意第i个神经元输出的向量都可以包含前i个路径点的信息;而最后一个神经元输出的向量则最大化地包含了整条路径信息。而且,由于隐藏层的向量长度是固定的,进一步通过预设的哈希函数,将所述向量进行编码。应用本公开方案,可以将任意长度的路径信息编码为相同长度的编码,不仅便于存储和数据管理,而且还可以进一步实现不同长度的路径点之间的相似性检索,并且降低检索的复杂度,提高检索效率。

附图说明

图1是本公开一实施例提供的一种路径编码方法的示意流程图;

图2是本公开一实施例提供的一种出行应用的示意图;

图3是本公开一实施例提供的一个循环神经网络结构的示意图;

图4是本公开一实施例提供的另一个循环神经网络结构的示意图;

图5是本公开一实施例提供的一种相似路径检索方法的示意流程图;

图6是本公开一实施例提供的一种路径信息编码装置的示意框图;

图7是本公开一实施例提供的另一种路径信息编码装置的示意框图;

图8是本公开一实施例提供的一种相似路径检索装置的示意框图;

图9是本公开一实施例提供的一种服务器的硬件结构的示意图;

图10是本公开一实施例提供的一种服务器的示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在本公开实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

请参见图1,为本公开一实施例提供的一种路径编码方法的示意流程图,所述方法包括以下步骤:

步骤110:获取待编码路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

本实施例中,所述路径信息可以表达为z=[z1,z2,...,zi,..,zm],即路径信息是由任意数量m的路径点信息zi组成的,并且z1,z2,...,zi,..,zm构成了一个有序的点集序列,该序列的顺序与路径的方向一致。

一般的,每个路径点可以是以经纬度的形式表达,例如zi=(xi,yi),其中,xi表示第i个路径点的经度,yi表示第i个路径点的纬度。因此,上述路径信息也可以表达为z=[(x1,y1),(x2,y2),...,(xi,yi),..,(xm,ym)]。

步骤120:将待编码路径信息输入预先构建的循环神经网络模型中进行计算。

循环神经网络(recurrentneuralnetworks,rnn)一般适用于处理序列数据,即按照某种规则排列的若干数据。本公开中的路径信息就属于序列数据的一种。

循环神经网络分为3层,即输入层(inputlayer)、隐藏层(hiddenlayer)和输出层(outputlayer);其中,循环神经网络与传统的神经网络不同之处在于,其位于隐藏层的神经元之间是可以相互级联的。具体体现在,隐藏层中的前一个神经元(i-1)输出的向量可以传递到后一个神经元i,从而作为后一个神经元i隐藏层的输入。

在循环神经网络中,一般具有足够数量的神经元,而每次计算实际使用的神经元数量取决于输入的序列的长度。例如,输入的序列长度为m,则本次计算对应需要使用m个神经元。

如图3所示的循环神经网络结构示意图中,每一个圆圈即为一个神经元。根据本公开方案,对于每一个神经元i,根据当前输入层(inputlayer)输入的数据zi,以及当前隐藏层(hiddenlayer)输入的前一个神经元输出的向量si-1进行计算,得出输出层(inputlayer)输出一个oi,以及隐藏层(hiddenlayer)输出的一个向量si。

其中,对于隐含层的第1个神经元(i=1),由于不存在“前一个”神经元,因此,将第1个神经元的级联输入初始化为0。也就是说:根据本申请方案,在待编码的路径包括m个路径点的情况下,对应的循环神经网络模型的隐含层至少包括m个神经元,其中:

当i=1时,第1个神经元的输入数据为第1个路径点的位置信息,(级联输入端为0);

当2≤i≤m时,第i个神经元的输入数据为第i个路径点的位置信息以及第(i-1)个神经元的输出数据;

本公开实施例中,需要利用到隐藏层向量,无需使用输出层的输出,因此以下详细介绍隐藏层向量的计算过程:

隐藏层向量是根据当前神经元输入层输入的数据,以及前一神经元输出的隐藏层向量进行计算的,如下公式1所示:

si=g(u*zi+v*si-1)公式1

其中,si为隐藏层u为模型输入层参数,v为模型隐藏层参数,si为隐藏层第i个神经元的输出,zi为第i个路径点的位置信息,g为预设的非线性激活函数;

非线性激活函数可以选用sigmoid函数。由于sigmoid函数能够使得输出值在0-1之间,因此,可以令每一个神经元输出的隐藏层向量更接近一种概率值。

当然,所述非线性激活函数还可以是其它适用的函数,例如所述非线性激活函数还可以使用tanh(双曲正切函数)或者relu(rectifiedlinearunits)函数。本公开并不对其加以限定。需要说明的是,由于relu(rectifiedlinearunits)函数的效率较高,所以使用relu函数可以加速优化过程。

本公开实施例中,所述循环神经网络模型可以通过如下方式离线训练得到:

a1,首先假设设所述循环神经网络模型隐藏层的第i个神经元的传递函数为si=g(u*zi+v*si-1),并分别设置u和v的初始值;

a2,获取用于模型训练的多条样本路径的信息。为了达到训练目的,一般需要大量的路径样本,每条样本路径信息形式为z=[z1,z2,...,zi,..,zm],其中m可以为任意值,代表任意数量m的路径点;

a3,将每条样本路径的信息分别输入所述传递函数,利用u和v的初始值计算出每条样本路径对应的si;

a4,根据条样本路径对应的si,根据反向传播算法以及梯度下降算法训练得到u和v的训练值。

上述a1-a4,实际上就是在预先假设传递函数si的形式后,求解输入层参数u和隐藏层参数v的过程,为了实现求解,需要预先根据经验设置u和v的初始值,然后利用反向传播算法结合梯度下降算法训练出最优的u和v。

下面结合一个具体的实例,对上述a1-a4进行说明:

假设神经元的传递函数如a1所示、并且在a2获取的样本路径信息为z=[(x1,y1),(x2,y2),(x3,y3),(x4,y4)];

根据a3,将样本路径信息输入到循环神经网络的输入层,则可以对应如图4所示的循环神经网络结构示意图;

第一个神经元根据输入层输入的路径点(x1,y1),由于该神经元是第一个神经元,没有前一个神经元,因此可以隐藏层输入的向量可以为0,计算后隐藏层输出的向量为s1;并且,将所述s1传递给第二个神经元;

第二个神经元根据输入层输入的路径点(x2,y2),隐藏层输入的前一个神经元输出的向量s1,计算后隐藏层输出的向量为s2;并且,将所述s2传递给第二个神经元;

第三个神经元根据输入层输入的路径点(x3,y3),隐藏层输入的前一个神经元输出的向量s2,计算后隐藏层输出的向量为s3;并且,将所述s3传递给第二个神经元;

第四个神经元根据输入层输入的路径点(x4,y4),隐藏层输入的前一个神经元输出的向量s3,计算后隐藏层输出的向量为s4;

由于第四个神经元是最后一个神经元,因此可以得到该路径信息对应隐藏层最后一个神经元输出的向量s4。

隐藏层第i个神经元的输出si=g(u*zi+v*si-1)可以通过如下方式计算得到:

方式1:

根据输入层输入的第i个路径点zi和隐藏层中的第i-1个神经元传递过来的向量si-1,构建1*(n+2)矩阵;其中,si-1为1*n向量、zi为1*2向量(经纬度坐标分别对应一维向量)。

根据输入层的参数u和隐藏层的参数v,构建(n+2)*n矩阵;其中,v为n*n矩阵、u为2*n矩阵;

将所述1*(n+2)矩阵与(n+2)*n矩阵相乘,得到1*n矩阵;

将所述1*n矩阵中的元素,带入非线性激活函数g中,得到1*n向量si。

这里的n为预设的数值,与步骤130中的“编码长度值”一致。

以下以图4中第四个神经元(i=4)为例加以说明,假设预设的编码长度n=3;

首先,假设s3=(b,c,d),即该例子中隐藏层的向量的维数为n=3;以下将路径点(x4,y4)中x4简称为x,y4简称为y。

根据输入的路径点(x,y)以及隐藏层输入的(b,c,d),构建一个1*(3+2)矩阵:

[bcdxy]

u为3*3矩阵、v为2*3矩阵,需要构建的矩阵规模为(3+2)*3=5*3;

需要说明的是,由于1*5矩阵的第1行中第1至3列为隐藏层的数据,因此构建的5*3的矩阵中第1至3行为隐藏层的参数;由于1*5矩阵的第1行中第4至5列为输入层的数据,因此构建的5*3的矩阵中第4至5行为输入层的参数;假设5*3的矩阵为:

其中,参数v11表示矩阵中第1行第1列的参数;其他参数类似。

将所述1*5的矩阵和5*3的矩阵进行矩阵相乘得到1*3矩阵:

之后,将所述1*3矩阵中的元素,经由非线性激活函数g计算可以得到3个位于0-1之间的概率值,也就是隐藏层的最后一个神经元(i=4)输出的维数为3的向量:

s4=[g(v11b+v21c+v31d+u41x+u51y),

g(v12b+v22c+v32d+u42x+u52y),

g(v13b+v23c+v33d+u43x+u53y)]

可以理解的是,上述方式1中,将si-1理解为1*n向量、zi为理解1*2向量,实际应用中,也可以将向量的横纵关系互换,从而得到另一种计算方式:

方式2:

根据输入层输入的第i个路径点zi和隐藏层中的第i-1个神经元传递过来的向量si-1,构建(n+2)*1矩阵;其中,si-1为n*1向量、zi为2*1向量。可以看出,这里相对与方式1而言,将横纵关系交换,得到另一种表达形式。

根据n*n矩阵v和n*2矩阵v,构建n*(n+2)矩阵;

将所述n*(n+2)矩阵与(n+2)*1矩阵相乘,得到n*1矩阵;

将所述n*1矩阵中的元素,带入非线性激活函数g中,得到n*1向量si。

仍然以图4中第四个神经元(i=4)为例加以说明,假设预设的编码长度n=3;

本实施例中,根据输入的路径点(x,y)以及隐藏层输入的(b,c,d),构建的5*1矩阵为:

根据输入层的参数u和隐藏层的参数v,构建的3*5矩阵为:

将所述5*1的矩阵和3*5的矩阵进行矩阵相乘得到3*1矩阵:

将所述3*1矩阵的元素,经由非线性激活函数计算可以得到隐藏层的最后一个神经元(i=4)输出的维数为3的向量;

s4=[g(v11b+v21c+v31d+u41x+u51y),

g(v12b+v22c+v32d+u42x+u52y),

g(v13b+v23c+v33d+u43x+u53y)]

可见,方式1和方式2的区别仅在于构建矩阵的方式不同,最终的结果是一致的。

进一步执行a4:根据条样本路径对应的si,根据反向传播算法以及梯度下降算法训练得到u和v的训练值。

在参数训练阶段,如前所述需要训练的参数[u,v]的数量为2n+n^2=(2+n)n个,n为隐藏层输出向量的维数,也是最终编码所需的长度。

本实施例中,参数训练可以通过最大似然估计训练得到,假设用于训练的路径点有l条,且每条路径信息对应的隐藏层最后一个神经元输出的向量为si'(例如第一条路径信息对应的向量为s1',第二条路径信息对应的向量为s2'...第l条路径信息对应的向量为sl')。

所述最大似然估计的目标就是最大化所有路径信息存在的概率,即使得max(s1'*s2'*s3'*...*sl')。为了方便求导,可以采用对数的形式,令:

参数[u,v]=argmax(log(s1')+log(s2')+log(s3')+...+log(sl'))。

具体的,可以根据每一条所述路径信息对应的向量,基于反向传播(back-propagation)算法结合梯度下降(gradientdescent)算法进行递归计算。具体的计算过程可参见现有的相关技术,本申请不再做详细说明。另外在应用中,可以根据实际需求选择具体的算法,例如梯度下降算法可以选用随机梯度下降(stochasticgradientdescent)算法等,本公开对此不需要进行限定。

步骤130:获取所述循环神经网络模型的隐藏层的第m个神经元的输出数据,第m个神经元的输出数据为:维数为n的向量,其中n为预设的编码长度值;

沿用上述步骤中的例子,获取所述循环神经网络模型的隐藏层的最后一个神经元输出的维数为3的向量为:

s4=[g(v11b+v21c+v31d+u41x+u51y),

g(v12b+v22c+v32d+u42x+u52y),

g(v13b+v23c+v33d+u43x+u53y)]

其中编码长度3为预设值。一般的,n越大能够反映路径点的信息越多,检索的准确度越高;但是,n越大,构建循环神经网络模型以及所述循环神经网络模型计算所需时间越长,因此本领技术人员可以根据实际需求灵活选择,例如n=64位或128位等。

在实际应用中,传统的循环神经网络模型可能会存在梯度消失的问题,为了解决梯度消失的问题,循环神经网络模型具体可以选用长短时记忆模型(longshort-termmemory,lstm)等,当然,本公开并不对选用的具体模型种类进行限定。

步骤140:利用预设的编码函数,将第m个神经元的输出的n维向量编码为长度为n的编码。

在一种具体实施方式中,可以选择哈希函数为h(x)作为编码函数,并且为了方便存储,可以选择二进制作为最终的编码格式。例如定义h(x)如下:;

当x>0.5时,h(x)=1、当x<=0.5时,h(x)=0,其中,x分别对应每一维向量的取值,h(x)分别对应每一维向量的编码结果,则生成的编码是包含0、1两种码字的二进制编码。

假设,所获取的隐藏层最后一个神经元输出的维度为n的向量s=(x1,x2,...,xn);

则,根据预设哈希函数h(x),将所述向量s哈希处理为二进制编码[h(x1),h(x2),...,h(xn)];其中,当x>0.5,h(x)为1,当x<=0.5,h(x)为0。

如此,就可以将任意长度m路径信息编码为固定长度n的二进制编码,便于统一存储及管理。

可以理解的是,上述的哈希函数的具体形式并不构成对本公开方案的限定,并且最终的编码形式也并不局限于二进制、例如还可以是10进制、16进制等等,本领域技术人员可以根据实际需求选定具体的编码方式。

为了解决现有技术中存在的路径检索效率较低的问题,本公开一实施例提供了相似路径检索方法,图5所示为该方法的示意流程图,所述方法包括以下步骤:

步骤210:接收路径检索请求,所述路径检索请求中携带有待检索路径的路径信息;

其中路径信息与前述实施例中的定义一致,这里不再重复说明。

所述路径检索的请求,可以是用户使用的客户端发送的。如图2所示的出行应用示意图中,用户使用出行应用进行拼车过程中,一般需要输入起点和终点,并在点击拼车后,规划得出的一条路径信息,该路径信息是由从起点到终点之间的若干路径点例如经纬度点组成,进一步的,所述出行应用会向服务器发送路径检索的请求,该请求中携带有待检索路径的路径信息。

在其它实施例中,所述路径检索的请求,也可以是服务器在接收到用户使用的客户端发送的起点和终点后,规划生成的路径信息,该路径信息是由从起点到终点之间的若干路径点例如经纬度点组成,并且一般是按照途径各点时间的先后顺序排序的。之后,所述服务器会生成的一个针对该路径信息的路径检索的请求。如图2所示的出行应用示意图中,用户使用出行应用时,一般需要输入起点和终点,并在点击拼车后,所述出行应用就可以将用户所输入的起点和终点发送至服务器,从而生成拼车订单。服务器在接收到用户的起点和终点后,可以规划生成一条路径信息,该路径信息由从起点到终点之间的若干路径点例如经纬度点组成,并且一般是按照时间的先后顺序排序的。

通常情况下,用户都是以当前地理位置作为起点。此时当前地理位置可以是客户端(例如手机)所处的位置,经该客户端中的定位装置记录下的,代表位置的坐标信息。常见的定位装置可以采用美国gps卫星导航系统,欧洲“伽利略”卫星导航系统,俄罗斯glonass卫星导航系统,或者中国“北斗”卫星导航系统等,或者类似的组合。这类定位的坐标信息也称为移动定位。

所当前地理位置还可以是基于客户端信号特点转换得到的,例如由网络运营商利用基站覆盖原理,通过所述客户端的信号通过基站定位计算得到的位置信息。在后者的定位计算中,一般由客户端测量不同基站的下行导频信号,得到不同基站下行导频的到达时刻(timeofarrival,toa)或到达时间差(timedifferenceofarrival,tdoa),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,从而计算出移动终端的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,现有技术中有多种算法,较为复杂。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。

此外,所述当前地理位置,还可以是通过基站辅助定位并结合客户端中的定位装置共同定位得到的较为精确的位置。

步骤220:对检索请求中携带的路径信息进行编码,得到待检索编码;

具体的编码方式可参见前面的实施例,此处不再赘述。

步骤230:根据预设的匹配规则,在预设的路径数据库中,查询与所述待检索编码相同的已知路径编码,并将查询结果对应的已知路径确定为待检索路径的相似路径;

根据本公开方案,在路径数据库中,预先存储有至少一条已知路径的编码结果,编码的方式均与前述实施例相同,此处不再赘述。

例如,在应用于拼车场景中时,所述数据库中存储有已经根据待拼车订单的路径信息编译好的二进制编码。由于所有路径信息哈希后的二进制编码长度都是相同,并且可以预先进行索引,因此,在给定一个待检索路径后,可以快速地检索到与其相似(即编码结果一致)的路径。

通过本实施例,由于循环神经网络的隐藏层中的前一个神经元输出的向量可以作为后一个神经元的输入;对于后一个神经元来说,其输入不仅具有输入层的路径点,还具有隐藏层的前一个神经元传递的向量;因此,对于隐藏层的任意第i个神经元输出的向量都可以包含前i个路径点的信息;而最后一个神经元输出的向量则最大化地包含了整条路径信息。而且,由于隐藏层的向量长度是固定的,进一步通过预设的哈希函数,将所述向量进行编码。如此,由于任意长度的路径信息最终都会得到相同长度的编码,如此可以实现不同长度的路径点之间的检索,还可以降低检索的复杂度,提高检索效率。

与上述路径编码方法实施例和相似路径检索方法实施例相对应,本公开还提供了路径编码装置和相似路径检索装置的实施例。

图6示出了根据本公开一个实施例的一种路径信息编码装置的示意框图。如图6所示,所述装置包括:

路径获取单元61,用于获取待编码路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值。

本实施例中,所述路径信息可以表达为z=[z1,z2,...,zi,..,zm],即路径信息是由任意数量m的路径点信息zi组成的,并且z1,z2,...,zi,..,zm构成了一个有序的点集序列,该序列的顺序与路径的方向一致。

一般的,每个路径点可以是以经纬度的形式表达,例如zi=(xi,yi),其中,xi表示第i个路径点的经度,yi表示第i个路径点的纬度。因此,上述路径信息也可以表达为z=[(x1,y1),(x2,y2),...,(xi,yi),..,(xm,ym)]。

计算单元62,用于将待编码路径信息输入预先构建的循环神经网络模型中进行计算;其中,所述循环神经网络模型的隐含层至少包括m个神经元,第1个神经元的输入数据为第1个路径点的位置信息,第i(其中2≤i≤m)个神经元的输入数据为第i个路径点的位置信息以及第(i-1)个神经元的输出数据。

在一个实施例中,循环神经网络可以适用于处理序列数据,即按照某种规则排列的若干数据。本公开中的路径信息就属于序列数据的一种。

循环神经网络分为3层,即输入层、隐藏层和输出层;其中,循环神经网络与传统的神经网络不同之处在于,其位于隐藏层的神经元之间是可以相互级联的。具体体现在,隐藏层中的前一个神经元(i-1)输出的向量可以传递到后一个神经元i,从而作为后一个神经元i隐藏层的输入。

在循环神经网络中,一般具有足够数量的神经元,而每次计算实际使用的神经元数量取决于输入的序列的长度。例如,输入的序列长度为m,则本次计算对应需要使用m个神经元。

如图3所示的循环神经网络结构示意图中,每一个圆圈即为一个神经元。根据本公开方案,对于每一个神经元i,根据当前输入层(inputlayer)输入的数据zi,以及当前隐藏层(hiddenlayer)输入的前一个神经元输出的向量si-1进行计算,得出输出层(inputlayer)输出一个oi,以及隐藏层(hiddenlayer)输出的一个向量si。

其中,对于隐含层的第1个神经元(i=1),由于不存在“前一个”神经元,因此,将第1个神经元的级联输入初始化为0。也就是说:根据本申请方案,在待编码的路径包括m个路径点的情况下,对应的循环神经网络模型的隐含层至少包括m个神经元,其中:

当i=1时,第1个神经元的输入数据为第1个路径点的位置信息,(级联输入端为0);

当2≤i≤m时,第i个神经元的输入数据为第i个路径点的位置信息以及第(i-1)个神经元的输出数据。

根据本公开的实施例,可利用到隐藏层向量,而无需使用输出层的输出,因此以下详细介绍隐藏层向量的计算过程:

隐藏层向量是根据当前神经元输入层输入的数据,以及前一神经元输出的隐藏层向量进行计算的,如下公式1所示:

si=g(u*zi+v*si-1)公式1

其中,si为隐藏层u为模型输入层参数,v为模型隐藏层参数,si为隐藏层第i个神经元的输出,zi为第i个路径点的位置信息,g为预设的非线性激活函数;

非线性激活函数可以选用sigmoid函数。由于sigmoid函数能够使得输出值在0-1之间,因此,可以令每一个神经元输出的隐藏层向量更接近一种概率值。

当然,所述非线性激活函数还可以是其它适用的函数,例如所述非线性激活函数还可以使用tanh(双曲正切函数)或者relu(rectifiedlinearunits)函数。本公开并不对其加以限定。需要说明的是,由于relu(rectifiedlinearunits)函数的效率较高,所以使用relu函数可以加速优化过程。

本公开实施例中,所述循环神经网络模型可以通过如下方式离线训练得到:

a1,首先假设设所述循环神经网络模型隐藏层的第i个神经元的传递函数为si=g(u*zi+v*si-1),并分别设置u和v的初始值;

a2,获取用于模型训练的多条样本路径的信息。为了达到训练目的,一般需要大量的路径样本,每条样本路径信息形式为z=[z1,z2,...,zi,..,zm],其中m可以为任意值,代表任意数量m的路径点;

a3,将每条样本路径的信息分别输入所述传递函数,利用u和v的初始值计算出每条样本路径对应的si;

a4,根据条样本路径对应的si,根据反向传播算法以及梯度下降算法训练得到u和v的训练值。

上述a1-a4,实际上就是在预先假设传递函数si的形式后,求解输入层参数u和隐藏层参数v的过程,为了实现求解,需要预先根据经验设置u和v的初始值,然后利用反向传播算法结合梯度下降算法训练出最优的u和v。

下面结合一个具体的实例,对上述a1-a4进行说明:

假设神经元的传递函数如a1所示、并且在a2获取的样本路径信息为z=[(x1,y1),(x2,y2),(x3,y3),(x4,y4)];

根据a3,将样本路径信息输入到循环神经网络的输入层,则可以对应如图4所示的循环神经网络结构示意图;

第一个神经元根据输入层输入的路径点(x1,y1),由于该神经元是第一个神经元,没有前一个神经元,因此可以隐藏层输入的向量可以为0,计算后隐藏层输出的向量为s1;并且,将所述s1传递给第二个神经元;

第二个神经元根据输入层输入的路径点(x2,y2),隐藏层输入的前一个神经元输出的向量s1,计算后隐藏层输出的向量为s2;并且,将所述s2传递给第二个神经元;

第三个神经元根据输入层输入的路径点(x3,y3),隐藏层输入的前一个神经元输出的向量s2,计算后隐藏层输出的向量为s3;并且,将所述s3传递给第二个神经元;

第四个神经元根据输入层输入的路径点(x4,y4),隐藏层输入的前一个神经元输出的向量s3,计算后隐藏层输出的向量为s4;

由于第四个神经元是最后一个神经元,因此可以得到该路径信息对应隐藏层最后一个神经元输出的向量s4。

隐藏层第i个神经元的输出si=g(u*zi+v*si-1)可以通过如下方式计算得到:

方式1:

根据输入层输入的第i个路径点zi和隐藏层中的第i-1个神经元传递过来的向量si-1,构建1*(n+2)矩阵;其中,si-1为1*n向量、zi为1*2向量(经纬度坐标分别对应一维向量)。

根据输入层的参数u和隐藏层的参数v,构建(n+2)*n矩阵;其中,v为n*n矩阵、u为2*n矩阵;

将所述1*(n+2)矩阵与(n+2)*n矩阵相乘,得到1*n矩阵;

将所述1*n矩阵中的元素,带入非线性激活函数g中,得到1*n向量si。

这里的n为预设的数值,与步骤130中的“编码长度值”一致。

以下以图4中第四个神经元(i=4)为例加以说明,假设预设的编码长度n=3;

首先,假设s3=(b,c,d),即该例子中隐藏层的向量的维数为n=3;以下将路径点(x4,y4)中x4简称为x,y4简称为y。

根据输入的路径点(x,y)以及隐藏层输入的(b,c,d),构建一个1*(3+2)矩阵:

[bcdxy]

u为3*3矩阵、v为2*3矩阵,需要构建的矩阵规模为(3+2)*3=5*3;

需要说明的是,由于1*5矩阵的第1行中第1至3列为隐藏层的数据,因此构建的5*3的矩阵中第1至3行为隐藏层的参数;由于1*5矩阵的第1行中第4至5列为输入层的数据,因此构建的5*3的矩阵中第4至5行为输入层的参数;假设5*3的矩阵为:

其中,参数v11表示矩阵中第1行第1列的参数;其他参数类似。

将所述1*5的矩阵和5*3的矩阵进行矩阵相乘得到1*3矩阵:

之后,将所述1*3矩阵中的元素,经由非线性激活函数g计算可以得到3个位于0-1之间的概率值,也就是隐藏层的最后一个神经元(i=4)输出的维数为3的向量:

s4=[g(v11b+v21c+v31d+u41x+u51y),

g(v12b+v22c+v32d+u42x+u52y),

g(v13b+v23c+v33d+u43x+u53y)]

可以理解的是,上述方式1中,将si-1理解为1*n向量、zi为理解1*2向量,实际应用中,也可以将向量的横纵关系互换,从而得到另一种计算方式:

方式2:

根据输入层输入的第i个路径点zi和隐藏层中的第i-1个神经元传递过来的向量si-1,构建(n+2)*1矩阵;其中,si-1为n*1向量、zi为2*1向量。可以看出,这里相对与方式1而言,将横纵关系交换,得到另一种表达形式。

根据n*n矩阵v和n*2矩阵v,构建n*(n+2)矩阵;

将所述n*(n+2)矩阵与(n+2)*1矩阵相乘,得到n*1矩阵;

将所述n*1矩阵中的元素,带入非线性激活函数g中,得到n*1向量si。

仍然以图4中第四个神经元(i=4)为例加以说明,假设预设的编码长度n=3;

本实施例中,根据输入的路径点(x,y)以及隐藏层输入的(b,c,d),构建的5*1矩阵为:

根据输入层的参数u和隐藏层的参数v,构建的3*5矩阵为:

将所述5*1的矩阵和3*5的矩阵进行矩阵相乘得到3*1矩阵:

将所述3*1矩阵的元素,经由非线性激活函数计算可以得到隐藏层的最后一个神经元(i=4)输出的维数为3的向量;

s4=[g(v11b+v21c+v31d+u41x+u51y),

g(v12b+v22c+v32d+u42x+u52y),

g(v13b+v23c+v33d+u43x+u53y)]

可见,方式1和方式2的区别仅在于构建矩阵的方式不同,最终的结果是一致的。

进一步执行a4:根据条样本路径对应的si,根据反向传播算法以及梯度下降算法训练得到u和v的训练值。

在参数训练阶段,如前所述需要训练的参数[u,v]的数量为2n+n^2=(2+n)n个,n为隐藏层输出向量的维数,也是最终编码所需的长度。

本实施例中,参数训练可以通过最大似然估计训练得到,假设用于训练的路径点有l条,且每条路径信息对应的隐藏层最后一个神经元输出的向量为si'(例如第一条路径信息对应的向量为s1',第二条路径信息对应的向量为s2'...第l条路径信息对应的向量为sl')。

所述最大似然估计的目标就是最大化所有路径信息存在的概率,即使得max(s1'*s2'*s3'*...*sl')。为了方便求导,可以采用对数的形式,令:

参数[u,v]=argmax(log(s1')+log(s2')+log(s3')+...+log(sl'))。

具体的,可以根据每一条所述路径信息对应的向量,基于反向传播(back-propagation)算法结合梯度下降(gradientdescent)算法进行递归计算。具体的计算过程可参见现有的相关技术,本申请不再做详细说明。另外在应用中,可以根据实际需求选择具体的算法,例如梯度下降算法可以选用随机梯度下降(stochasticgradientdescent)算法等,本公开对此不需要进行限定。

数据获取单元63,用于获取所述循环神经网络模型的隐藏层的第m个神经元的输出数据,第m个神经元的输出数据为:维数为n的向量,其中n为预设的编码长度值。

沿用上述步骤中的例子,获取所述循环神经网络模型的隐藏层的最后一个神经元输出的维数为3的向量为:

s4=[g(v11b+v21c+v31d+u41x+u51y),

g(v12b+v22c+v32d+u42x+u52y),

g(v13b+v23c+v33d+u43x+u53y)]

其中编码长度3为预设值。一般的,n越大能够反映路径点的信息越多,检索的准确度越高;但是,n越大,构建循环神经网络模型以及所述循环神经网络模型计算所需时间越长,因此本领技术人员可以根据实际需求灵活选择,例如n=64位或128位等。

在实际应用中,传统的循环神经网络模型可能会存在梯度消失的问题,为了解决梯度消失的问题,循环神经网络模型具体可以选用长短时记忆模型等,当然,本公开并不对选用的具体模型种类进行限定。

第一编码单元64,用于利用预设的编码函数,将第m个神经元的输出的n维向量编码为长度为n的编码。

在一种具体实施方式中,可以选择哈希函数为h(x)作为编码函数,并且为了方便存储,可以选择二进制作为最终的编码格式。例如定义h(x)如下:;

当x>0.5时,h(x)=1、当x<=0.5时,h(x)=0,其中,x分别对应每一维向量的取值,h(x)分别对应每一维向量的编码结果,则生成的编码是包含0、1两种码字的二进制编码。

假设,所获取的隐藏层最后一个神经元输出的维度为n的向量s=(x1,x2,...,xn);

则,根据预设哈希函数h(x),将所述向量s哈希处理为二进制编码[h(x1),h(x2),...,h(xn)];其中,当x>0.5,h(x)为1,当x<=0.5,h(x)为0。

如此,就可以将任意长度m路径信息编码为固定长度n的二进制编码。

可以理解的是,上述的哈希函数的具体形式并不构成对本公开方案的限定,并且最终的编码形式也并不局限于二进制、例如还可以是10进制、16进制等等,本领域技术人员可以根据实际需求选定具体的编码方式。

图7示出了根据本公开一个实施例的另一种路径信息编码装置的示意框图。如图7所示,在图6所示实施例的基础上,上述装置还包括:

训练单元65,用于通过离线训练得到所述循环神经网络模型;

其中,所述训练单元65包括:

设置子单元651,用于设所述循环神经网络模型隐藏层的第i个神经元的传递函数为si=g(u*zi+v*si-1),并分别设置u和v的初始值,其中:u为模型输入层参数,v为模型隐藏层参数,si为隐藏层第i个神经元的输出,zi为第i个路径点的位置信息,g为预设的非线性激活函数;

获取子单元652,用于获取用于模型训练的多条样本路径的信息,所述样本路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

计算子单元653,用于将每条样本路径的信息分别输入所述传递函数,利用u和v的初始值计算出每条样本路径对应的si;

训练子单元654,用于根据条样本路径对应的si,根据反向传播算法以及梯度下降算法训练得到u和v的训练值。

一般地,在图7所示实施例的基础上,所述计算单元,可以通过以下方式计算第i个神经元的输出si:根据1*n向量si-1、以及1*2向量zi,构建1*(n+2)矩阵;根据n*n矩阵v和2*n矩阵u,构建(n+2)*n矩阵;将所述1*(n+2)矩阵与(n+2)*n矩阵相乘,得到1*n矩阵;将所述1*n矩阵中的元素,带入非线性激活函数g中,得到1*n向量si=g(u*zi+v*si-1)。

一般地,在图7所示实施例的基础上,所述计算单元,可以通过以下方式计算第i个神经元的输出si:根据n*1向量si-1、以及2*1向量zi,构建(n+2)*1矩阵;根据n*n矩阵v和n*2矩阵u,构建n*(n+2)矩阵;将所述n*(n+2)矩阵与(n+2)*1矩阵相乘,得到n*1矩阵;将所述n*1矩阵中的元素,带入非线性激活函数g中,得到n*1向量si=g(u*zi+v*si-1)。

可选地,所述循环神经网络模型为:长短时记忆模型lstm。

可选地,所述非线性激活函数包括:sigmoid函数、tanh双曲正切函数或relu函数。

可选地,所述编码函数为h(x);其中,x分别对应每一维向量的取值,h(x)分别对应每一维向量的编码结果,当x>0.5时,h(x)=1、当x<=0.5时,h(x)=0。

图8示出了根据本公开一个实施例的一种相似路径检索装置的示意框图。如图8所示,该装置包括:

接收单元801,用于接收路径检索请求,所述路径检索请求中携带有待检索路径的路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值。

其中路径信息与前述实施例中的定义一致,这里不再重复说明。

所述路径检索的请求,可以是用户使用的客户端发送的。如图2所示的出行应用示意图中,用户使用出行应用进行拼车过程中,一般需要输入起点和终点,并在点击拼车后,规划得出的一条路径信息,该路径信息是由从起点到终点之间的若干路径点例如经纬度点组成,进一步的,所述出行应用会向服务器发送路径检索的请求,该请求中携带有待检索路径的路径信息。

在其它实施例中,所述路径检索的请求,也可以是服务器在接收到用户使用的客户端发送的起点和终点后,规划生成的路径信息,该路径信息是由从起点到终点之间的若干路径点例如经纬度点组成,并且一般是按照途径各点时间的先后顺序排序的。之后,所述服务器会生成的一个针对该路径信息的路径检索的请求。如图2所示的出行应用示意图中,用户使用出行应用时,一般需要输入起点和终点,并在点击拼车后,所述出行应用就可以将用户所输入的起点和终点发送至服务器,从而生成拼车订单。服务器在接收到用户的起点和终点后,可以规划生成一条路径信息,该路径信息由从起点到终点之间的若干路径点例如经纬度点组成,并且一般是按照时间的先后顺序排序的。

通常情况下,用户都是以当前地理位置作为起点。此时当前地理位置可以是客户端(例如手机)所处的位置,经该客户端中的定位装置记录下的,代表位置的坐标信息。常见的定位装置可以采用美国gps卫星导航系统,欧洲“伽利略”卫星导航系统,俄罗斯glonass卫星导航系统,或者中国“北斗”卫星导航系统等,或者类似的组合。这类定位的坐标信息也称为移动定位。

所当前地理位置还可以是基于客户端信号特点转换得到的,例如由网络运营商利用基站覆盖原理,通过所述客户端的信号通过基站定位计算得到的位置信息。在后者的定位计算中,一般由客户端测量不同基站的下行导频信号,得到不同基站下行导频的到达时刻(timeofarrival,toa)或到达时间差(timedifferenceofarrival,tdoa),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,从而计算出移动终端的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,现有技术中有多种算法,较为复杂。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。

此外,所述当前地理位置,还可以是通过基站辅助定位并结合客户端中的定位装置共同定位得到的较为精确的位置。

第二编码单元82,用于应用上述实施例所述的路径信息编码方法,对检索请求中携带的路径信息进行编码,得到待检索编码;具体的编码方式可参见前面的实施例,此处不再赘述。

查询单元83,用于根据预设的匹配规则,在预设的路径数据库中,查询与所述待检索编码相同的已知路径编码,并将查询结果对应的已知路径确定为待检索路径的相似路径;其中,所述路径数据库中,预先存储有至少一条已知路径的编码结果。

根据本公开方案,在路径数据库中,预先存储有至少一条已知路径的编码结果,编码的方式均与前述实施例相同,此处不再赘述。

例如,在应用于拼车场景中时,所述数据库中存储有已经根据待拼车订单的路径信息编译好的二进制编码。由于所有路径信息哈希后的二进制编码长度都是相同,并且可以预先进行索引,因此,在给定一个待检索路径后,可以快速地检索到与其相似(即编码结果一致)的路径。

通过本实施例,由于循环神经网络的隐藏层中的前一个神经元输出的向量可以作为后一个神经元的输入;对于后一个神经元来说,其输入不仅具有输入层的路径点,还具有隐藏层的前一个神经元传递的向量;因此,对于隐藏层的任意第i个神经元输出的向量都可以包含前i个路径点的信息;而最后一个神经元输出的向量则最大化地包含了整条路径信息。而且,由于隐藏层的向量长度是固定的,进一步通过预设的哈希函数,将所述向量进行编码。如此,由于任意长度的路径信息最终都会得到相同长度的编码,如此可以实现不同长度的路径点之间的检索,还可以降低检索的复杂度,提高检索效率。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上描述了路径检索装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,例如服务器,图9是根据一示例性实施例示出的一种服务器的硬件结构的示意图,参照图9,该服务器可具体实现为:处理器以及用于存储处理器可执行指令的存储器;

针对路径编码,所述处理器可以被配置为:

获取待编码路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

将待编码路径信息输入预先构建的循环神经网络模型中进行计算;其中,所述循环神经网络模型的隐含层至少包括m个神经元,第1个神经元的输入数据为第1个路径点的位置信息,第i(其中2≤i≤m)个神经元的输入数据为第i个路径点的位置信息以及第(i-1)个神经元的输出数据;

获取所述循环神经网络模型的隐藏层的第m个神经元的输出数据,第m个神经元的输出数据为:维数为n的向量,其中n为预设的编码长度值;

利用预设的编码函数,将第m个神经元的输出的n维向量编码为长度为n的编码。

针对相似路径的检索,所述处理器可以被配置为:

接收路径检索请求,所述路径检索请求中携带有待检索路径的路径信息,所述路径信息为:m个路径点的位置信息所构成的序列,所述序列的顺序与路径方向一致,且m为任意数值;

应用上述任一实施例所述的路径信息编码方法,对检索请求中携带的路径信息进行编码,得到待检索编码;

根据预设的匹配规则,在预设的路径数据库中,查询与所述待检索编码相同的已知路径编码,并将查询结果对应的已知路径确定为待检索路径的相似路径;其中,所述路径数据库中,预先存储有至少一条已知路径的编码结果。

在上述信息的服务器的实施例中,应理解,该处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-onlymemory,缩写:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)、快闪存储器、硬盘或者固态硬盘。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

图10是根据一示例性实施例示出的一种服务器1000的示意图。参照图10,服务器1000包括处理组件1022,其进一步包括一个或多个处理器,以及由存储器1032所代表的存储器资源,用于存储可由处理组件1022的执行的指令,例如应用程序。存储器1032中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1022被配置为执行指令,以执行上述基于卷积神经网络的图片检索方法的全部或部分步骤。

服务器1000还可以包括一个电源组件1026被配置为执行服务器1000的电源管理,一个有线或无线网络接口1050被配置为将服务器1000连接到网络,和一个输入输出(i/o)接口1058。服务器1000可以操作基于存储在存储器1032的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1