【问题标题】:Cloning a CNTK node to test it in isolation克隆 CNTK 节点以单独测试它
【发布时间】:2017-09-20 01:33:14
【问题描述】:

我正在加载一个模型,现在我想独立于图形的其余部分来测试每个节点,因此我使用了 clone(CloneMethod.clone) 方法,但我发现这会重新创建整个模型.例如,当我克隆 BatchNormalization 层时,我得到了这个图。那么如何克隆 BatchNormalization 但将其与父减节点断开连接?

【问题讨论】:

    标签: cntk


    【解决方案1】:

    您可以命名每个节点,然后通过它们的名称找到它们。 在下面的模型中:

    def create_model():
        with C.layers.default_options(initial_state=0.1):
            return C.layers.Sequential([
                C.layers.Embedding(emb_dim, name='embed'),
                C.layers.Recurrence(C.layers.LSTM(hidden_dim), go_backwards=False),
                C.layers.Dense(num_labels, name='classify')
            ])
    

    你可以打电话

    z = create_model()
    print(z.embed.E.shape)
    print(z.classify.b.value)
    

    您可以尝试使用克隆方法克隆特定节点。您可以在许多教程中找到按节点名称查询 CNTK 图的示例。您还可以在 CNTK 206 教程中了解如何选择性地处理子图。

    一些示例代码

    import cntk as C
    x = C.input_variable(5)
    m = C.layers.Dense(4, name='foo')(x)
    n = C.layers.Dense(3, name='baz')(m)
    z = C.layers.Dense(2, name='bar')(n)
    n_clone = z.baz.clone(method='share')
    

    这将克隆从n 连接到输入x 的所有层。可以通过声明一个新变量 y 来获得名为 baz 的层。 y = C.input.variable(4) n_clone_baz = n_clone(y)

    可以使用更通用的克隆方法here

    clone_method 可以让您克隆子图。

    def clone_model(base_model, from_node_names, to_node_names, clone_method):
        from_nodes = [find_by_name(base_model, node_name) for node_name in from_node_names]
        if None in from_nodes:
            print("Error: could not find all specified 'from_nodes' in clone.")
        to_nodes = [find_by_name(base_model, node_name) for node_name in to_node_names]
        if None in to_nodes:
            print("Error: could not find all specified 'to_nodes' ...... ")
    
        input_placeholders = dict(zip(from_nodes, [placeholder() for x in from_nodes]))    
        cloned_net = combine(to_nodes).clone(clone_method, input_placeholders)
        return cloned_net
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 2015-12-18
      • 1970-01-01
      • 2010-10-12
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多