[英]How does the keras functional API model knows about layers when are only passing inputs and outputs of the network
我是 Keras 的新手,正在研究功能性 api model 结构。
1-如文档中所述。 keras.Model
只接受输入和 output 参数,层列在 Model 之前。有人能告诉我keras.Model
是如何知道输入 33 和 81634 之间的层结构和多层的吗?和 output arrays。
2 - 另外, layers.output
或layers.input
的 output 是什么。 output 不是简单的张量吗? 当我使用此示例中的语法为其他层打印 layers.output 时,我在下面看到 output。 看起来 layers.output 和 layers.input 也包含图层信息,例如dense_5/Relu:0
。 有人可以澄清以下 output 的组件代表什么吗
print [layer.output for layer in model.layers]
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>]
就像在你的例子中:
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已经知道model里面是什么了。
要回答关于 model 如何知道在中间张量上调用的层的第一个问题,我认为查看help(keras.Input)
会很有帮助:
Input()
用于实例化一个 Keras 张量。Keras 张量是一个类似 object 的符号张量,我们通过某些属性对其进行扩充,这些属性允许我们仅通过了解 model 的输入和输出来构建 Keras model。
所以基本上,Keras 正在使用 Python 在引擎盖下做一些魔术。
每次在 Keras 张量上调用 Keras 层时,它会输出一个 Keras 张量,该张量已根据该层的功能进行数学转换,但也会向该 Keras 张量(在对象的 Python 属性中)添加有关该层的一些信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.