我想计算模型图层的数量。我使用两种方法:
len(model.layers)
和
len(model.layers_by_depth)
但我得到了不同的结果。 layers_by_depth
和layers
之间有什么区别?谢谢!
答案 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
。