如何将CNTK模型保存为文本?

时间:2017-01-26 01:24:08

标签: cntk

我有一个在CNTK创建和训练的神经网络。我可以用Python中的model.save_model(“mymodel.dnn”)保存它。这将生成以protobuf格式序列化的文件。 如何将模型保存为纯文本或将.dnn文件转换为纯文本?

4 个答案:

答案 0 :(得分:3)

CNTK使用的格式是protobuf。因此你可以使用像 import google.protobuf.text_format 创建可读输出。 This page有更多信息。

我们的protobuf文件目前位于this location。我很难链接到版本2b9。确保使用正确的.proto文件。

答案 1 :(得分:2)

protobuf编译器可以从二进制模型文件生成文本表示,您只需要指向CNTK原型定义并告诉它在模型文件中需要一个Dictionary:

%PROTOBUF_PATH%\bin\protoc --decode CNTK.proto.Dictionary --proto_path [CNTK root]\Source\CNTKv2LibraryDll\proto\ [CNTK root]\Source\CNTKv2LibraryDll\proto\CNTK.proto < mymodel.dnn >  mymodel.txt

答案 2 :(得分:0)

使用Brainscript,您可以添加

command = <yourCommands>:DumpNodeInfo
modelDir = "./ANNmodel"
modelPath = "$modelDir$/NN.dnn"

...

# dump parameter values
DumpNodeInfo = {
    action = "dumpNode"
    printValues = true
}

点击here了解详情。

答案 3 :(得分:0)

您可以使用CNTK的dumpnode命令将CNTK训练的模型转换为txt格式。这是内容配置文件txt.conf:

command = convert2txt

convert2txt = [
    action = "dumpnode"    
    modelPath="./cntkSpeechFF.dnn.5"
    nodeName = "Prior" # if not specified, all nodes will be printed
    outputFile = "./cntkSpeechFF.dnn.5.txt" # the path to the output file. If not specified a file name will be automatically generated based on the modelPath.

    printValues = true
    printMetadata = true

]

然后您以cntk身份运行

cntk configFile=txt.conf