CNTK&;python:如何将输入数据传递给eval func?

CNTK&;python:如何将输入数据传递给eval func?,python,cntk,Python,Cntk,使用CNTK,我创建了一个网络,其中包含2个输入神经元和1个输出神经元。 培训文件中的一行看起来像 |features 1.567518 2.609619 |labels 1.000000 然后用脑脚本对网络进行训练。现在我想用网络来预测数值。例如:输入数据为[1.82,3.57]。网络的输出是多少 我用下面的代码尝试了Python,但这里我是新手。代码不起作用。所以我的问题是:如何将输入数据[1.82,3.57]传递给eval函数 关于stackoverflow,有一些提示,但对我来说太抽

使用CNTK,我创建了一个网络,其中包含2个输入神经元1个输出神经元。 培训文件中的一行看起来像

|features 1.567518 2.609619 |labels 1.000000 
然后用脑脚本对网络进行训练。现在我想用网络来预测数值。例如:输入数据为[1.82,3.57]。网络的输出是多少

我用下面的代码尝试了Python,但这里我是新手。代码不起作用。所以我的问题是:如何将输入数据[1.82,3.57]传递给eval函数

关于stackoverflow,有一些提示,但对我来说太抽象了

多谢各位

import cntk as ct
import numpy as np

z = ct.load_model("LR_reg.dnn", ct.device.cpu())

input_data= np.array([1.82, 3.57], dtype=np.float32)

pred = z.eval({ z.arguments[0] : input_data })

print(pred)

这是最具防御性的方法。如果在使用V2构造指定网络时省略了其中一些内容,那么CNTK是可以原谅的。不确定使用V1代码创建的网络

基本上,每个轴都需要一对支架。Brainscript中存在哪些轴?有一个批处理轴,一个序列轴,然后是网络的静态轴。您拥有一维数据,因此这意味着以下各项应能正常工作:

input_data=np.array([[1.82,3.57]]],dtype=np.float32)
这指定了一批长度为1的序列,包含两个元素的1d向量。您还可以尝试省略最外面的大括号,看看是否得到相同的结果

更新根据下面评论中的更多信息,我们不应该忘记,V1代码还保存了网络中计算损失和准确性的部分。如果我们只提供功能,CNTK会抱怨没有提供标签。处理这个问题有两种方法。一种可能是提供一些假标签,以便网络能够评估这些辅助操作。另一种可能性是确定预测并使用它。如果预测在V1中被称为“p”,那么这段python代码


p=z。按名称(“p”)查找


应该创建一个CNTK函数,该函数只需要特征就可以计算预测。

谢谢您的回答,但它不起作用。我得到了错误消息:ValueError:1个必需参数“Input('features',[#,],[2])的值,请求的输出(“output('err',[],[]))、输出('lr',[],[],[])、输出('p',[#,],[1])依赖于这些参数,未提供。此错误是因为V1模型还保存了依赖于标签的内容,如错误消息中提到的“err”和“lr”输出。我将更新关于如何避免此错误的答案。