假设我使用以下代码创建模型(简化)但不要命名任何节点:
num_classes = 10
input_var = cntk.input_variable((12,))
model = Sequential([
Dense(256),
Dense(512),
Dense(num_classes)
])(input_var)
如果我想稍后评估中间节点,我该如何访问它们?
我已经
了cntk.logging.get_node_outputs(model)
检查图表并获得以下输出:
[Output('Block30733_Output_0', [#], [10]),
Output('Block30719_Output_0', [#], [512]),
Output('Block30705_Output_0', [#], [256])]
但是,使用这些名称调用model.find_by_name()将返回None。
答案 0 :(得分:2)
一种方法是进行图搜索。您需要找到一种方法来区分要评估的图层。你可以得到这样的所有节点。
blocks = C.logging.graph.depth_first_search(
model, (lambda x : type(x) == C.Function and x.is_block) , depth = 0)
对于lambda,您可以添加任何条件。要获得所有块,您可以使用:
lambda x: True