嗨,我正在尝试为自己的特定领域建立自己的深度学习框架,而keras的作者@fchollet的this post对我有很大帮助。但是我对keras的一个特定设计决策有一个疑问,即Model是从Network继承的类。
如果我负责设计框架,则可能会使用Network作为Model的一个组件,而不是父类。我了解这与"composition over inheritance"的经典原理有关。我只是想知道为什么在这种情况下keras选择继承而不是合成。是否因为网络未在其他地方用作组件? (换句话说,模型是顶层抽象吗?)
欢迎任何评论。谢谢!
答案 0 :(得分:0)
我真的不能说“为什么”。这是创作者的低级/隐藏级决策。
但是我可以说,在以常规方式使用Keras时,切勿显式使用Network
对象。
我们主要使用Layer
,Model
和来自各自背景的张量。我们使用了其他对象,但从未使用过Network
。
因此,为了理解为什么Model
源自Network
的原因,您需要对所有隐藏的源代码有深入的了解。