CNTK Python API:评估隐藏层/多个输出
CNTK Python API: evaluating hidden layers / multiple outputs
在 CNTK Python APIs 中创建、保存、加载和评估具有多个输出的模型有哪些建议? (我使用的是 CNTK 2.0 RC1)
当我在 运行 时间内定义网络时,我可以通过将小批量字典传递给 eval 函数来轻松评估网络的任何层。
但是,在我保存模型并再次加载之后,我只能通过提供输入来评估输出节点(而且我不知道如何在 Python [=34= 中定义多个输出]).我可以使用 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.
获得所有你想要的图层后,你可以使用 Combine() 创建一个新的 Function,然后在新的 Function 上调用 eval。它在 C++ 中工作,但我没有在 Python 中尝试过。
https://www.cntk.ai/pythondocs/cntk.ops.html?highlight=combine#cntk.ops.combine
model.outputs[0]是一个变量,你可以通过model.outputs[0].owner,或者as_composite(model.outputs[0]去实现它的功能.owner) 如果所有者是原始函数(它只显示直接输入,而复合函数显示用于映射的根输入变量)
所以试试这个:
as_composite(model.outputs[0].owner).eval(...)
在 CNTK Python APIs 中创建、保存、加载和评估具有多个输出的模型有哪些建议? (我使用的是 CNTK 2.0 RC1)
当我在 运行 时间内定义网络时,我可以通过将小批量字典传递给 eval 函数来轻松评估网络的任何层。
但是,在我保存模型并再次加载之后,我只能通过提供输入来评估输出节点(而且我不知道如何在 Python [=34= 中定义多个输出]).我可以使用 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.
获得所有你想要的图层后,你可以使用 Combine() 创建一个新的 Function,然后在新的 Function 上调用 eval。它在 C++ 中工作,但我没有在 Python 中尝试过。
https://www.cntk.ai/pythondocs/cntk.ops.html?highlight=combine#cntk.ops.combine
model.outputs[0]是一个变量,你可以通过model.outputs[0].owner,或者as_composite(model.outputs[0]去实现它的功能.owner) 如果所有者是原始函数(它只显示直接输入,而复合函数显示用于映射的根输入变量)
所以试试这个:
as_composite(model.outputs[0].owner).eval(...)