Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当只传递网络的输入和输出时,keras函数API模型如何知道层_Python_Tensorflow_Keras - Fatal编程技术网

Python 当只传递网络的输入和输出时,keras函数API模型如何知道层

Python 当只传递网络的输入和输出时,keras函数API模型如何知道层,python,tensorflow,keras,Python,Tensorflow,Keras,我不熟悉Keras,也不了解函数api模型结构 一,- 如前所述。keras.Model只接受输入和输出参数,层列在模型前面。有人能告诉我,当我们只传递输入和输出数组时,keras.Model如何知道层结构以及输入和输出之间的多层结构 二,- 还有,层的输出是什么。输出或层。输入。输出不是一个简单的张量吗?当我打印图层时,我看到下面的输出。使用其他图层的语法输出。看起来像layers.output和layers.input也包含层信息,像densed\u 5/Relu:0。有人能澄清以下输出的组

我不熟悉Keras,也不了解函数api模型结构

一,- 如前所述。
keras.Model
只接受输入和输出参数,层列在模型前面。有人能告诉我,当我们只传递输入和输出数组时,
keras.Model
如何知道层结构以及输入和输出之间的多层结构

二,- 还有,
层的输出是什么。输出
层。输入
。输出不是一个简单的张量吗?当我打印图层时,我看到下面的输出。使用其他图层的语法输出。看起来像layers.output和layers.input也包含层信息,像
densed\u 5/Relu:0
。有人能澄清以下输出的组成部分代表什么吗

print [layer.output for layer in model.layers]
输出:

 [<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已经知道模型内部是什么

  • 您正在考虑获取中间层的输出。这是迁移学习(当您使用预先训练的模型作为特征提取器时)或某些体系结构作为跳过连接时的常见原则。在这种情况下,您将获得多个输出。此外,根据模型用途,网络在模型末尾可以有多个输出。在您的示例中,它们仅用于演示目的,没有任何意义。看看更有意义的

  • 为了回答您关于模型如何知道中间张量上调用的层的第一个问题,我认为看一下
    help(keras.Input)

    Input()
    用于实例化Keras张量

    Keras张量是一个类似于符号张量的对象,我们用它来扩充它 某些属性允许我们仅通过 了解模型的输入和输出

    因此,基本上,Keras使用Python在引擎盖下做一些魔术

    每次在Keras张量上调用Keras层时,它都会根据层的功能输出变换后的Keras张量,但也会将有关该层的一些信息添加到此Keras张量(作为对象的属性)