我是Keras的新手,对功能api模型的结构也很了解。
1- 如here in docs所述。 keras.Model仅接受输入和输出参数,并且层在模型之前列出。当我们只传递输入和输出数组时,有人可以告诉我keras.Model如何知道层结构以及输入和输出之间的多层。
2- 另外,layers.output或layers.input的输出是什么。输出不是简单的张量吗?当我使用this example中的语法为其他图层打印layers.output时,看到下面的输出。看起来就像layers.output,layers.input也包含了图层信息,例如“ dense_5 / Relu:0”。有人可以说明下面的输出代表什么吗?
打印[model.layers中图层的layer.output]#下面的输出
[<tf.Tensor 'input_6:0' shape=(None, 3) dtype=float32>,
<tf.Tensor 'dense_5/Relu:0' shape=(None, 4) dtype=float32>,
<tf.Tensor 'dense_6/Softmax:0' shape=(None, 5) dtype=float32>]
答案 0 :(得分:1)
就像您的示例:
inputs = keras.Input(shape=(784,)) # input layer
dense = layers.Dense(64, activation="relu") # describe a dense layer
x = dense(inputs) # set x as a result of dense layer with inputs
x = layers.Dense(64, activation="relu")(x) # "update" x with next layer which has previous dense layer as input
outputs = layers.Dense(10)(x) # set your output
model = keras.Model(inputs=inputs, outputs=outputs, name="mnist_model") # incorporate all layers in a model
因此,基本上Keras已经知道模型中的内容。
答案 1 :(得分:0)
要回答关于模型如何知道在中间张量上调用的层的第一个问题,我认为看一下 help(keras.Input)
会很有帮助:
Input()
用于实例化 Keras 张量。
Keras 张量是一个象征性的类张量对象,我们用它来增强 某些属性允许我们仅通过以下方式构建 Keras 模型 知道模型的输入和输出。
所以基本上,Keras 正在使用 Python 在幕后做一些魔术。
每次在 Keras 张量上调用 Keras 层时,它都会根据层的功能输出转换后的 Keras 张量,但也会将有关该层的一些信息添加到此 Keras 张量(作为对象的属性)。