Keras 中的密集层与顺序层

机器算法验证 机器学习 神经网络 喀拉斯
2022-03-17 18:52:53

Keras 中的密集层和顺序层有什么区别?

它们似乎都只是神经网络中的另一层。

2个回答

在 Keras 中,“密集”通常指的是单层,而“顺序”通常指的是整个模型,而不仅仅是一层。所以我不确定“密集与顺序”之间的比较是否有意义。

顺序是指您在 Keras 中使用顺序 api ( from keras.models import Sequential) 构建模型的方式,您可以在其中一次构建一层神经网络,依次为:输入层、隐藏层 1、隐藏层 2 等...输出层。这简单直观,但限制了您可以构建的网络类型。

将此与功能 api ( from keras.models import Model) 进行对比,您可以在其中构建非循环图、共享层等......但是您必须自己指定很多参数(例如,应该如何连接层,哪个是输入和哪一个是输出,等等......)

“密集”是指在该特定层中使用的神经元和连接的类型,特别是标准的全连接层,而不是 LSTM 层、CNN 层(与密集相比的不同类型的神经元)或具有Dropout(与 Dense 相比,神经元相同,但连接性不同)。

不同类型的层可以在同一个网络中共存,例如:

from keras.models import Sequential
model = Sequential()
model.add(LSTM(50, activation='relu', return_sequences=True, input_shape=(n_steps,n_features)))
model.add(LSTM(50, activation='relu'))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')

Sequential不是层,而是模型。在顺序模型中,您堆叠多个相同/或不同的层,其中一个输出进入另一个前面。这是神经网络的默认结构。Dense 是一种层类型(全连接层)。还有其他的,例如卷积、池化、LSTM 等。