Machine learning NN输入层中的单元数是否可以与数据中的特征数不同?

Machine learning NN输入层中的单元数是否可以与数据中的特征数不同?,machine-learning,keras,neural-network,Machine Learning,Keras,Neural Network,基于tensorflow keras API教程 model=keras.Sequential([ keras.layers.Dense(10,激活=softmax',输入_形状=(32,), keras.层.致密(10,活化='softmax') ]) 我不明白为什么输入层的单位数是10,而输入形状是32。此外,tensorflow教程中也有许多类似的例子。这是新从业者经常混淆的问题,而且也不是没有原因的:正如评论中已经暗示的那样,答案是Keras顺序API中有一个隐式输入层,由第一个显式层

基于tensorflow keras API教程

model=keras.Sequential([
keras.layers.Dense(10,激活=softmax',输入_形状=(32,),
keras.层.致密(10,活化='softmax')
])

我不明白为什么输入层的单位数是10,而输入形状是32。此外,tensorflow教程中也有许多类似的例子。

这是新从业者经常混淆的问题,而且也不是没有原因的:正如评论中已经暗示的那样,答案是Keras顺序API中有一个隐式输入层,由第一个显式层的
input\u shape
参数确定

这在Keras Functional API中是直接可见的(在文档中检查),其中,
Input
本身是一个显式层,您的模型将在其中编写为:

inputs=Input(shape=(32,)#输入层
x=密集(10,激活='softmax')(输入)#隐藏层
输出=密集(10,激活='softmax')(x)#输出层
模型=模型(输入、输出)
i、 e.您的模型实际上是一个具有三层(输入、隐藏和输出)的“好老”神经网络的示例,尽管它看起来像Keras顺序API中的两层网络


(顺便说一句,与问题无关,将
softmax
作为隐藏层的激活没有多大意义。)

这意味着输入是32个数字的向量,第一层的输出是10个数字的向量。也就是说,它有一个32x10的参数矩阵(加上10个偏差向量)。神经网络中每一层的大小都是任意的,不需要依赖于输入的大小。那么在这种情况下,输入层中有多少个单元@在本例中,输入层将有32个单元。