【问题标题】:Keras confusion about number of layersKeras对层数的困惑
【发布时间】:2018-01-01 21:18:27
【问题描述】:

我对 Keras 模型中使用的层数有点困惑。文档在这件事上相当不透明。

根据 Jason Brownlee 的说法,第一层在技术上由两层组成,输入层(由 input_dim 指定)和隐藏层。请参阅his blog 上的第一个问题。

在所有 Keras 文档中,第一层通常指定为 model.add(Dense(number_of_neurons, input_dim=number_of_cols_in_input, activtion=some_activation_function)).

因此,我们可以制作的最基本的模型是:

 model = Sequential()
 model.add(Dense(1, input_dim = 100, activation = None))

此模型是由单层组成,其中 100 维输入通过单个输入神经元传递,还是由两层组成,第一层是 100 维输入层,第二层是 1 维隐藏层?

此外,如果我要指定这样的模型,它有多少层?

model = Sequential()
model.add(Dense(32, input_dim = 100, activation = 'sigmoid'))
model.add(Dense(1)))

这是一个具有 1 个输入层、1 个隐藏层和 1 个输出层的模型,还是具有 1 个输入层和 1 个输出层的模型?

【问题讨论】:

    标签: python tensorflow neural-network deep-learning keras


    【解决方案1】:

    对于您的第一个问题,模型是:

    1 个输入层和 1 个输出层。

    第二个问题:

    1 个输入层

    1 个隐藏层

    1 个激活层(Sigmoid 层)

    1 个输出层

    对于输入层,这是由 Keras 用 input_dim arg 或 input_shape 抽象出来的,但是您可以在以下位置找到该层:

    from keras.layers import Input
    

    激活层也是如此。

    from keras.layers import Activation
    

    【讨论】:

    • 基于另一个答案,我不完全确定您对第一个模型是否正确。我认为它只是一个输入层和一个输出层,没有任何隐藏层。我认为你对第二个模型是正确的。
    • 嗨,确实,我写得太快了。它由 1 个输入层(100 个神经元)和一个输出层组成。 (由1个神经元组成)我要编辑它
    • 感谢您的澄清
    • 激活层是指激活函数吗?
    • 我认为类似于第一种情况,对于第二种情况,它将是三层,一个输入,一个隐藏和一个输出。 @Pusheen_the_dev 你不这么认为吗?
    【解决方案2】:

    你的第一个由 100 个神经元输入层组成,连接到一个输出神经元

    您的第二个由 100 个神经元的输入层、一个 32 个神经元的隐藏层和一个单个神经元的输出层组成。

    您必须将第一层视为输入层(神经元数量与维度相同,因此为 100 个)连接到具有您指定的神经元数量的另一层(第一种情况下为 1,32在第二个)

    在 Keras 中有用的是命令

    model.summary()
    

    【讨论】:

    • 击败我建议 model.summary ;) 这是一个救星,我强烈推荐给 OP。
    • 在这里我们看到一个隐藏层。是否可以添加多个隐藏层?
    • @Advika 如果你还没有得到答案,但为了后代的缘故,我会被炸死:model.add(Dense(32, activation = 'sigmoid')) 会添加一个 32 个神经元的隐藏层,因为你正在使用 @987654325 @。添加图层的另一种方法是通过keras functional API
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多