填充在输入卷积的外部添加额外的0 , 以便卷积最终具有与输入相同数量的输出 。 如果我们不使用填充 , 则在每个卷积层之后 , 边界处的信息将丢失 , 这将减小卷积的大小以及性能 。
类型:有效填充 , 相同填充 。
在有效填充中 , 与输入相比 , 该特征的维度降低 , 而在相同填充中 , 维度增加或保持相同 。
文章插图
零填充
展平(Flattening ):
在应用了所有上述层后 , 我们得到矩阵形式的最终输出 , 但神经网络需要向量形式(1D)的输入数据 , 因此我们需要将我们的池化的特征映射展平成如下图所示的列 。
文章插图
完全连接层(Fully connected Layer)(FC):
在这里 , 我们将展平数据提供给FC的输入层(例如 x1 , x2 ...) 。 我们在中间层应用ReLU等激活函数 。
这里基本的神经网络工作发生像反向传播 , 优化 。
文章插图
激活函数:
在中间层中 , 优选ReLu , 而对于输出层 , 则使用Softmax或sigmoid 。
以下是部分代码展示:
Importing the Libraries and Packagesfrom keras.models import Sequentialfrom keras.layers import Convolution2Dfrom keras.layers import MaxPooling2Dfrom keras.layers import Flattenfrom keras.layers import Dense
文章插图
创建神经网络的第一步是使用keras中的顺序类初始化网络 。
Initialising the CNNmodel = Sequential()Convolutional Layermodel.add(Convolution2D(filters = 32, kernel_size = (3, 3),input_shape = (64, 64, 3),activation = ‘relu’))
文章插图
池化层
model.add(MaxPooling2D(pool_size = (2, 2)))
文章插图
pool_size:池化窗口的形状 。
展平层
model.add(Flatten())完全连接的层
Adding the Hidden layermodel.add(Dense(units = 128, activation = ‘relu’))Adding the Output Layermodel.add(Dense(units = 1, activation = ‘sigmoid’))
文章插图
编译CNN
model.compile(optimiser = ‘adam’,loss = ‘binary_crossentropy’,metrics = [‘accuracy’])
文章插图
重要提示:
如果训练的数据非常少 , 那么我们可以通过应用缩放 , 翻转原始图像和创建新图像等操作从现有数据创建新数据 。
Generating Image Datafrom keras.preprocessing.image import ImageDataGeneratortrain_datagen = ImageDataGenerator(rescale = 1./255,shear_range = 0.1,zoom_range = 0.2,horizontal_flip = True)test_datagen = ImageDataGenerator(rescale = 1./255)
文章插图
推荐阅读
- Windows10将永久删除Flash Player,一加9葡萄紫配色上手图曝光
- 物联网更加智能安全:研究人员开发微型神经网络,你家冰箱以后也能深度学习了
- Layer 2方案——DeFi可能不会从以太坊上迁徙出去了
- 为什么说卷积神经网络,是深度学习算法应用最成功的领域之一?
- 扩展图神经网络:暴力堆叠模型深度并不可取
- 输出层|PyTorch可视化理解卷积神经网络
- 基于神经网络的风格迁移目标损失解析
- 人体|用于单目3D人体姿态估计的局部连接网络,克服图卷积网络限制
- 图神经网络快速爆发,最新进展都在这里了
- 麻省理工学院的神经网络知道自己什么时候可以被信任