【问题标题】:Keras: What is the difference between model and layers?Keras:模型和层有什么区别?
【发布时间】:2020-05-12 13:51:55
【问题描述】:

编辑:Franchois Chollet 的This videoLayer + training eval methods = Model


在 keras 文档中,它说模型由层组成。但是in this section 表明模型可以由模型组成。

from keras.layers import Conv2D, MaxPooling2D, Input, Dense, Flatten
from keras.models import Model

# First, define the vision modules
digit_input = Input(shape=(27, 27, 1))
x = Conv2D(64, (3, 3))(digit_input)
x = Conv2D(64, (3, 3))(x)
x = MaxPooling2D((2, 2))(x)
out = Flatten()(x)

vision_model = Model(digit_input, out)

# Then define the tell-digits-apart model
digit_a = Input(shape=(27, 27, 1))
digit_b = Input(shape=(27, 27, 1))

# The vision model will be shared, weights and all
out_a = vision_model(digit_a)
out_b = vision_model(digit_b)

concatenated = keras.layers.concatenate([out_a, out_b])
out = Dense(1, activation='sigmoid')(concatenated)

classification_model = Model([digit_a, digit_b], out)

那么,模型和层之间的有效区别是什么?它只是为了代码的可读性还是提供一些功能?

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    在 Keras 中,networklayersdirected acyclic graph (DAG)。 模型是一个网络,增加了训练和评估例程。

    该框架允许您从各个层和其他 DAG 构建网络 DAG。后者就是您在示例中看到的内容,并且似乎是造成混乱的原因。

    【讨论】:

      【解决方案2】:

      不同之处在于模型可以被训练(它们有一个fit 方法),而层没有这种方法并且需要成为Model 实例的一部分,这样你就可以训练它们。一般来说,孤立的层是没有用的。

      Functional API 在模型中使用模型的想法是,您可以定义一个模型,并以共享权重的方式将其权重作为另一个模型的一部分重用。仅靠层是不可能的。

      【讨论】:

      • 我们可以重用层的权重。
      • @Souradeep,您能否详细说明如何重用层的权重?
      猜你喜欢
      • 2014-02-15
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 2017-12-11
      • 2010-09-12
      • 2020-03-16
      • 1970-01-01
      • 2019-08-09
      相关资源
      最近更新 更多