繁体   English   中英

keras 功能 API model 仅传递.network 的输入和输出时如何知道层

[英]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.outputlayers.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>]
  1. 在编译/拟合/评估之前,您应该先描述 model。 你做一个序列:第一层是输入,接下来是一堆中间层,然后是 output 层。

就像在你的例子中:

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里面是什么了。

  1. 您正在寻找获取中间层的输出。 这是迁移学习(当您使用预训练的 model 作为特征提取器时)或某些架构作为跳过连接时的通用原则。 在这种情况下,您将获得多个输出。 Also.network 可以在 model 末尾有多个输出,具体取决于 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM