keras - layers_by_depth和layers之间的区别

时间:2017-11-24 07:57:44

标签: keras

我想计算模型图层的数量。我使用两种方法:

len(model.layers)

len(model.layers_by_depth)

但我得到了不同的结果。 layers_by_depthlayers之间有什么区别?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以阅读source code以了解layers_by_depth的构建方式:

# Build a dict {depth: list of layers with this depth}
layers_by_depth = {}
for layer, depth in layers_depths.items():
    if depth not in layers_by_depth:
        layers_by_depth[depth] = []
layers_by_depth[depth].append(layer)

以及如何构建self.layers

# Set self.layers and self.layers_by_depth.

layers = []
for depth in depth_keys:
    layers_for_depth = layers_by_depth[depth]
    # Container.layers needs to have a deterministic order:
    # here we order them by traversal order.
    layers_for_depth.sort(key=lambda x: layer_indices[x])
    for layer in layers_for_depth:
        layers.append(layer)
self.layers = layers
self.layers_by_depth = layers_by_depth

答案 1 :(得分:0)

model.layers为您提供所有图层的列表。添加它们时,它们的顺序差不多。

model.layers_by_depth(似乎已在较新版本中删除)将为您提供一个字典,其中包含每个深度(键)的层列表。

model.layers_by_depth对于线性模型(即每一层都有一个输入/输出)将非常相似,但对于非线性模型(例如起始网)则有所不同。在这里,层将按深度分组。 如果您有一个深度为n的图层输出到两个图层,则可以在列表中深度为n+1的列表中找到这两个新图层,而不是未分组的model.layers