CNTK Python API:评估隐藏层/多个输出

2024-09-30 12:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

对于在CNTK Python api中创建、保存、加载和评估具有多个输出的模型有何建议?(我使用的是cntk2.0rc1)

当我在运行时定义一个网络时,我可以通过向eval函数传递一个小型批处理字典来轻松评估网络的任何层。在

但是,在保存模型并再次加载之后,我只能通过提供输入来计算输出节点(我不知道如何在pythonapi中定义多个输出)。我可以使用find_all_by_name方法访问任何层,但当我尝试使用eval方法评估隐藏层时,它希望我提供层的即时输入,而不是相关网络的输入:

ValueError: No value specified for input Variable 'Output('Block1958_Output_0', [#], [1024 x 200])' of Function 'Dense: Output('Block1958_Output_0', [#], [1024
x 200]) -> Output('conversation_vector', [#], [100])'. 

我只找到了关于这个主题的以下文档,它适用于Brainscript:https://github.com/Microsoft/CNTK/wiki/CNTK-Evaluate-Hidden-Layers——我找不到任何特定于Python API的文档。在


Tags: 方法函数文档模型网络apioutput字典
2条回答

获得所需的所有层之后,可以使用Combine()创建一个新函数,然后对新函数调用eval。它在C++中工作,虽然我没有用Python尝试过。在

https://www.cntk.ai/pythondocs/cntk.ops.html?highlight=combine#cntk.ops.combine

在模型输出[0]是一个变量,可以通过模型输出[0].owner或as\u复合(模型输出[0].owner),如果所有者是基元函数(它只显示立即输入,而复合函数则显示用于映射的根输入变量)

所以试试这个:

as_composite(model.outputs[0].owner).eval(...)

相关问题 更多 >

    热门问题