【问题标题】:How do you create an input layer in Keras? [duplicate]如何在 Keras 中创建输入层? [复制]
【发布时间】:2021-05-30 02:53:21
【问题描述】:

按照教程,这是一个简单的 3 层顺序神经网络示例:

model = keras.Sequential(
    [
        layers.Dense(2, activation="relu", name="layer1"),
        layers.Dense(3, activation="relu", name="layer2"),
        layers.Dense(4, name="layer3"),
    ]
) 

这是否意味着输入层是 2 个神经元?因为我发现如果我给模型一个不同大小的向量,它会改变。如果我拟合除 2 以外的任何大小的向量,我预计会出现错误,因为输入层只有 2 个神经元。

【问题讨论】:

    标签: tensorflow machine-learning keras neural-network


    【解决方案1】:

    您需要在顺序模型的第一层中定义输入形状。试试这个:

        from keras.models import Sequential
        from keras.layers import Dense, Activation
        model = Sequential([
                            Dense(32, input_shape=(784,)),
                            Activation('relu'),
                            Dense(10),
                            Activation('softmax'),
                            ])
    

    【讨论】:

    • 但是传递给 Sequential 的第一层有 32 个神经元,而不是 784 个,所以我很困惑。第一层,也就是输入层,神经元的数量应该和特征的数量一样多(在这种情况下,有 784 个特征,可能代表图像的 784 个像素)?
    • @JohnS :你是对的,但这是由 Keras API 处理的。实际上,它会使用您的输入创建一个输入层,然后下一层(您在模型中定义的第一层)有 32 个神经元。
    • @JohnS 对于顺序模型,这里的第一层不是“输入层”,实际上是具有可训练参数的第一层。参数 'input_shape' 为您的输入创建一个类似张量的对象(即占位符)。然后将其馈送到 32 个单元的第一个 Dense 层(即,该 Dense 层的输出大小为 32)
    【解决方案2】:

    第一层,即输入层,应该有尽可能多的 神经元,因为有特征(在这种情况下,有 784 个特征,

    这是不正确的,你可以在层中只放一个神经元,它会起作用,但它的权重的数量必须等于特征的数量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      相关资源
      最近更新 更多