我目前正在学习使用Keras实现分层训练模型。我的解决方案很复杂且耗时,有人可以给我一些建议吗?也有人可以解释Keras的拓扑结构,特别是nodes.inbound_layer
,input_tensors
之间的关系以及它们与张量相关联的方式:output_tensors
和input_tensors[i] == inbound_layers[i].inbound_nodes[node_indices[i]].output_tensors[tensor_indices[i]]
?从拓扑source codes on github,我很困惑:
inbound_nodes
为什么output_tensors
包含model.compile()
,我不清楚它们之间的关系......如果我想删除API model
某些位置的图层,我该怎么办?首先删除?另外,在某些地方添加图层时,我该先做什么?
这是我对分层训练模型的解决方案。我可以在Sequential模型上执行此操作,现在尝试在API model
:
要做到这一点,我只需在完成上一次训练后添加一个新图层并重新编译(model.fit()
)并重新拟合(model.pop()
)。
由于Keras模型需要输出层,我总是会添加一个输出层。因此,每当我想添加一个新图层时,我必须删除输出图层然后再添加它。这可以使用model
完成,在这种情况下,keras.Sequential()
必须是Sequential()
模型。
model.add(layer)
模型支持许多有用的功能,包括model=Model(input=...., output=....)
。但是对于使用模型API的自定义模型:pop()
,不支持那些add()
或{{1}}函数,并且实现它们需要一些时间,也许不方便。