【深度学习篇】--神经网络中的池化层和CNN架构模型

一、前述

本文讲述池化层和经典神经网络中的架构模型。

二、池化Pooling

1、目标

降采样subsample,shrink(浓缩),减少计算负荷,减少内存使用,参数数量减少(也可防止过拟合) 减少输入图片大小(降低了图片的质量)也使得神经网络可以经受一点图片平移,不受位置的影响(池化后相当于把图片上的点平移了) 正如卷积神经网络一样,在池化层中的每个神经元被连接到上面一层输出的神经元,只对应一小块感受野的区域。我们必须定义大小,步长,padding类型 池化神经元没有权重值它只是聚合输入根据取最大或者是求均值

2*2的池化核,步长为2,没有填充,只有最大值往下传递,其他输入被丢弃掉了

2、举例

 3、结论

长和宽两倍小,面积4倍小,丢掉75%的输入值 一般情况下,池化层工作于每一个独立的输入通道,所以输出的深度和输入的深度相同

4、代码

import numpy as np
from sklearn.datasets import load_sample_images
import tensorflow as tf
import matplotlib.pyplot as plt


# 加载数据集
# 输入图片通常是3D,[height, width, channels]
# mini-batch通常是4D,[mini-batch size, height, width, channels]
dataset = np.array(load_sample_images().images, dtype=np.float32)
# 数据集里面两张图片,一个中国庙宇,一个花
batch_size, height, width, channels = dataset.shape
print(batch_size, height, width, channels)# channels是3个

# 创建输入和一个池化层
X = tf.placeholder(tf.float32, shape=(None, height, width, channels))
# TensorFlow不支持池化多个实例,所以ksize的第一个batch size是1
# TensorFlow不支持池化同时发生的长宽高,所以必须有一个是1,这里channels就是depth维度为1
max_pool = tf.nn.max_pool(X, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='VALID')#没有卷积直接做池化
# avg_pool()

with tf.Session() as sess:
    output = sess.run(max_pool, feed_dict={X: dataset})

plt.imshow(output[0].astype(np.uint8))  # 画输入的第一个图像
plt.show()

总结:在一个卷积层里面,不同的卷积核步长和维度都一样的,每个卷积核的channel是基于上一层的channel来的

三、CNN架构

原理:

典型的CNN架构堆列一些卷积层 1、一般一个卷积层后跟ReLU层,然后是一个池化层,然后另一些个卷积层+ReLU层,然后另一个池化层,通过网络传递的图片越来越小,但是也越来越深,例如更多的特征图!(随着深度越深,宽度越宽,卷积核越多),这些层都是在提取特征。 2、最后常规的前向反馈神经网络被添加,由一些全连接的层+ReLU层组成,最后是输出层预测,例如一个softmax层输出预测的类概率(真正分类是最后全连接层)。 3、一个常见的误区是使用卷积核过大,你可以使用和9*9的核同样效果的两个3*3的核,好处是会有更少的参数需要被计算,还可以在中间多加一个非线性激活函数ReLU,来提供复杂程度(层次越多不是坏事

图示:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

如何找到最优学习率?

经过了大量炼丹的同学都知道,超参数是一个非常玄乎的东西,比如batch size,学习率等,这些东西的设定并没有什么规律和原因,论文中设定的超参数一般都是靠经验...

448100
来自专栏林德熙的博客

C# 已知点和向量,求距离的点

已知一个点 P 和向量 v ,求在这个点P按照向量 v 运行距离 d 的点 B 。

40730
来自专栏计算机视觉与深度学习基础

【深度学习】谷歌deepdream原理及tensorflow实现

什么是DeepDream? DeepDream是谷歌发布的对卷积神经网络(CNN)进行可视化的方法,当然它的用途不仅限于此,我们可以通过它让机器“做梦”,以下是...

44740
来自专栏决胜机器学习

卷积神经网络(三) ——inception网络、迁移学习

卷积神经网络(三) ——inception网络、迁移学习 (原创内容,转载请注明来源,谢谢) 一、Inception网络 1、简介 前面的文章中,有各种的卷积模...

43580
来自专栏Petrichor的专栏

深度学习: 网络超参数设定

卷积时在 图像每一维([batch, in_height, in_width, in_channels])的步长,这是一个一维的向量,长度4。

23220
来自专栏AI科技评论

开发 | 用 Kaggle 经典案例教你用 CNN 做图像分类!

前言 在上一篇专栏中,我们利用卷积自编码器对 MNIST 数据进行了实验,这周我们来看一个 Kaggle 上比较经典的一个图像分类的比赛 CIFAR( CIFA...

41960
来自专栏GAN&CV

基础 | batchnorm原理及代码详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/d...

9610
来自专栏yl 成长笔记

图形搜索中用到的机器学习基础介绍

针对目标图像(具有统一特征的图像),进行基于深度学习技术的模型训练,通过调优模型结构与参数,得到对于指定图像具有提取特征信息的模型 M。将库中所有图像通过 M ...

9730
来自专栏SIGAI学习与实践平台

动手训练模型系列:过拟合与训练集规模

loss值采用Cross_entropy计算,表征训练/测试样本与实际训练/测试分类结果的总误差。

16820
来自专栏机器学习算法工程师

Scikit-learn之决策树

作者:章华燕 编辑:黄俊嘉 决策树在学习应用中非常有用,接下来给大家分享一下自己有关于决策树的一些想法! 决策树概述 决策树是一个非参数的监督式学习方法,主要用...

31160

扫码关注云+社区

领取腾讯云代金券