首页 > 解决方案 > 如何使用 dnnlib.tflib.network.Network 获得中间层输出

问题描述

我正在尝试StyleGAN2 NviLab,我想边生成边看特征图,但是我怎样才能得到中间层的输出呢?该模型由 dnnlib.tflib.network.Network 加载,没有关于此库的文档。

标签: pythontensorflowmodelnvidia

解决方案


我有完全相同的问题,使用完全相同的代码库。这就是我获得中间输出的方式(TF 1.14.0):

步骤1:

检查所有图层的名称及其输出形状。这有助于识别您想要其输出的层的名称:

network.print_layers()

第2步:

获取网络中所有层的列表。此列表中的每个元素都是一个元组(layer name: string, layer output: tensor, layer variables)

layers = network.list_layers()

第 3 步:

使用您需要其输出的层的名称获取对表示层输出的张量的引用:

for layer in layers:
    print(layer[0], ' ', layer[1])
    if layer[0] == REQUIRED_LAYER_NAME:
        tensor = layer[1]

最后,运行图表:

required_output = sess.run(tensor, feed_dict={'INPUT_TENSOR_NAME': input_numpy_array})

推荐阅读