Keras:模型和层之间有什么区别?

6

编辑:Franchois Chollet 的这个视频说,层+训练评估方法=模型


Keras文档表示模型是由层组成的。然而在这一节中,它展示了一个模型可以由多个模型组成。

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)

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

2个回答

4
在Keras中,一个 网络 是由层组成的有向无环图(DAG)。模型是带有训练和评估例程的网络。
该框架允许您使用单个层和其他DAG构建网络DAG。 后者是您在示例中看到的,并且似乎引起了混淆。

1
模型可以进行训练(具有“fit”方法),而层没有这种方法,需要成为“Model”实例的一部分,以便您可以对它们进行训练。总体而言,单独使用层是没有用处的。
函数式API的想法是在模型内部使用模型,这样您可以定义一个模型,并重复使用其权重作为另一个模型的一部分,以共享权重。仅使用层无法实现这一点。

1
我们可以重复使用层的权重。 - Souradeep Nanda
@Souradeep,您能否详细说明如何重复使用层的权重? - Purushothaman Srikanth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接