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

时间:2019-07-10 03:31:46

标签: python tensorflow keras

在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)

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

2 个答案:

答案 0 :(得分:3)

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

该框架允许您从单个层和其他DAG中构建网络DAG。后者就是您在示例中看到的,并且似乎引起了混乱。

答案 1 :(得分:0)

区别在于可以训练模型(它们具有fit方法),而图层则没有这种方法,并且需要成为Model实例的一部分,因此您可以对其进行训练。一般来说,隔离层没有用。

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

相关问题