📜  keras 中密集层的输入形状 (1)

📅  最后修改于: 2023-12-03 15:17:08.147000             🧑  作者: Mango

Keras中密集层的输入形状

在Keras中,密集层(Dense Layer)是最基本和常见的层之一。这种层将输入张量与可训练的权重矩阵相乘,并添加偏置,然后应用激活函数得到输出张量。

下面将讨论Keras中密集层的输入形状。密集层可以接受不同形状的输入,但需要注意的是输入形状必须与权重矩阵的形状匹配。

一维输入

当输入是一维向量时,例如对文本进行分类时,常使用的是全连接层(即密集层),输入形状为(batch_size, input_dim),其中batch_size为输入张量的批次大小,input_dim为输入向量的维度。

from tensorflow import keras

model = keras.Sequential()
model.add(keras.layers.Dense(64, input_dim=100, activation='relu'))
二维输入

当输入是二维张量时,例如对图像进行分类时,常使用卷积层(Convolutional Layer),然后使用一个或多个全连接层。卷积层的输出形状为(batch_size, height, width, channels),该输出可以通过一个或多个全连接层进行处理。全连接层的输入形状为(batch_size, input_dim),其中batch_size与卷积层输出的batch_size相同,input_dim为卷积层输出的元素数量。

from tensorflow import keras

model = keras.Sequential()
model.add(keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(keras.layers.MaxPooling2D((2, 2)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(64, activation='relu'))
model.add(keras.layers.Dense(10))
高阶输入

对于具有更高阶形状的输入(例如视频、音频等),可以使用对应的卷积层、循环层和注意力层等神经网络层来处理。这些层经过适当的处理可以将任意形状的输入转化为2D张量,然后使用全连接层进行处理。

总结

Keras中密集层可以接受不同形状的输入,但需要与权重矩阵的形状相匹配。对于1D输入,可以直接使用全连接层;对于2D输入,通常需要使用卷积层和全连接层的结合;对于高阶输入,可以使用其他神经网络层将其转化为2D张量进行处理。