我已经训练了一个模型,该模型通过抓取序列中最后一个单词的标签来标记序列:
Sequential([
Embedding(emb_dim),
cntk.ops.sequence.last(Recurrence(LSTM(hidden_dim), go_backwards=False)),
Dense(num_labels)
])
其中 num_labels = 8
我正在使用来自这里的 GPU 库https://github.com/Microsoft/CNTK/wiki/NuGet-Package从 C# (CNTK v2.0.beta8.0) 使用模型:
Variable outputVar = modelFunc.Outputs.Single();
var outputDataMap = new Dictionary<Variable, Value>();
outputDataMap.Add(outputVar, null);
modelFunc.Evaluate(inputDataMap, outputDataMap, device);
Value outputVal = outputDataMap[outputVar];
并且 outputVal 是: 维度:计数 = 3 等级:3 TotalSize:8
而 outputVar 是: 维度:计数 = 1 排名:1 TotalSize:8
以上是正确的吗?我希望 outputVar 和 outputVal 具有相同的Dimensions/Rank/TotalSize。另外,如何提取返回的类?基本上我应该为 outputData 使用什么 C# 类型?我尝试了 github 上的示例中的两个嵌套列表,但没有任何运气。outputVal.CopyVariableValueTo(outputVar, outputData);
谢谢