Keras 中的密集层和顺序层有什么区别?
它们似乎都只是神经网络中的另一层。
Keras 中的密集层和顺序层有什么区别?
它们似乎都只是神经网络中的另一层。
在 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 等。