【发布时间】:2019-02-21 19:48:20
【问题描述】:
此刻我正在努力不绝望只是试图转换它(来自https://cntk.ai/pythondocs/gettingstarted.html#overview-and-first-run)
cntk.minus([1, 2, 3], [4, 5, 6]).eval()
给出“array([-3., -3., -3.], dtype=float32)”
到
public static void Test1()
{
var device = DeviceDescriptor.GPUDevice(0);
var v1 = CNTKLib.InputVariable(new int[] { 1 }, DataType.Float, "e1");
var v2 = CNTKLib.InputVariable(new int[] { 1 }, DataType.Float, "e2");
var o1 = CNTKLib.InputVariable(new int[] { 1 }, DataType.Float, "o1");
var o2 = CNTKLib.InputVariable(new int[] { 1 }, DataType.Float, "o2");
var features1 = new float[] { 1, 2, 3 };
var features2 = new float[] { 4, 5, 6 };
var vv1 = Value.CreateBatch<float>(new int[] { 1 }, features1, device);
var vv2 = Value.CreateBatch<float>(new int[] { 1 }, features2, device);
var d1 = new Dictionary<Variable, Value>()
{
{ v1, vv1 },
{ v2, vv2 },
};
var d2 = new Dictionary<Variable, Value>();
d2.Add(o1, null);
var fun = CNTK.CNTKLib.Minus(v1, v2);
fun.Evaluate(d1, d2, device);
}
给出下一个错误:
"1 个必需参数 'Input('o1', [1], [, #])' 的值,即请求的输出 'Input('o1', [1 ], [, #])' 依赖,未提供"
我无法理解 c# 的文档为何如此空洞,以及如何在 python 中如此简单。
下一个例子也是如此
import numpy as np
x = cntk.input_variable(2)
y = cntk.input_variable(2)
x0 = np.asarray([[2., 1.]], dtype=np.float32)
y0 = np.asarray([[4., 6.]], dtype=np.float32)
cntk.squared_error(x, y).eval({x:x0, y:y0})
->array([ 29.], dtype=float32)
numpy 数组只是完美地解析为字典。我试图在 C# 中做同样的事情(几乎不遵循 https://github.com/Microsoft/CNTK/blob/master/Examples/TrainingCSharp/Common/LogisticRegression.cs 中的示例)但同样的错误。
有人能帮我弄清楚我错过了什么吗?也可能指向一些文档,其中包含在 c# 中使用 api 的基本示例。
谢谢!!
【问题讨论】:
标签: c# function evaluation cntk