首页 文章

Keras顺序模型输入层

提问于
浏览
4

在Keras中创建Sequential模型时,我知道您在第一层中提供了输入形状 . 这个输入形状是否构成隐式输入层?

例如,下面的模型明确指定了2个Dense图层,但这实际上是一个模型,其中3个图层由输入形状隐含的一个输入图层组成,一个隐藏的密集图层包含32个神经元,然后一个输出图层包含10个可能的输出?

model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])

2 回答

  • 7

    嗯,它实际上是一个隐含的输入层,即你的模型是一个具有三层的输入,隐藏和输出的神经网络的例子 . 这在Keras Functional API中更明确可见(请查看文档中的example),其中您的模型将被编写为:

    inputs = Input(shape=(784,))                 # input layer
    x = Dense(32, activation='relu')(inputs)     # hidden layer
    outputs = Dense(10, activation='softmax')(x) # output layer
    
    model = Model(inputs, outputs)
    

    实际上,这个隐式输入层是您必须仅在序列API中的模型的第一个(显式)层中包含 input_shape 参数的原因 - 在后续层中,输入形状是从先前的输出中推断出来的(请参阅 core.py 源代码中的comments .

    你也可以在 tf.contrib.keras.layers.Input 上发现documentation .

  • 0

    Keras功能API确实使事情变得清晰,并且从编程角度来看更加明确 .

    如果我们简单地将其称为输入,那么将输入调用为隐式输入层(通常会开始考虑具有数学函数的图层)会变得令人困惑 . (vs后续层的行为类似于编程模块或可以接受输入的函数,我们从不将这些输入称为另一个模块,只是输入)

    然后,具有激活功能和重量的两个致密层是正确的层

    NODES的概念往往更加清晰,但是层次抽象往往会模糊我们的思想 .

    我从节点级开始学习编程,然后由于术语的转换而在层级上变得非常困惑 .

    如果嵌入其他概念,你的大脑往往会在类似的事物在结构层面被命名不同时容易混淆 .

相关问题