【深度学习篇】--神经网络中的卷积神经网络

一、前述

Convolutional neural networks  视觉皮层、感受野,一些神经元看线,一些神经元看线的方向,一些神经元有更大的感受野,组合 底层的图案 1998年Yann LeCun等人推出了LeNet-5架构,广泛用于手写体数字识别,包含全连接层和sigmoid 激活函数,还有卷积层和池化层

二、具体原理

1、直观感受:(每一个神经元只看到一部分,并且先看到基本的形状,然后再把相关特征进行组合,只需要局部连接即可)

2、卷积层理解

CNN里面最重要的构建单元就是卷积层 神经元在第一个卷积层不是连接输入图片的每一个像素,只是连接它们感受野的像素,以此类推, 第二个卷积层的每一个神经元仅连接位于第一个卷积层的一个小方块的神经元 以前我们做MNIST的时候,把图像变成1D的,现在直接用2D

3、Zero Padding

Zero Padding是一个可选项,加上说明更注重于边缘的像素点

VALID 不适用zero padding,有可能会忽略图片右侧或底下,这个得看stride的设置 SAME 必要会加zero padding,这种情况下,输出神经元个数等于输入神经元个数除以步长 ceil(13/5)=3,当步长为1时卷积完后的长宽一样,像素点一样,维度一样(输入神经元的个数和输出神经元的个数一样)

 4、卷积的计算

假设有一个5*5的图像,使用一个3*3的filter(卷积核)进行卷积,想得到一个3*3(没有使用Zero_padding,因为下一层和上一层长宽不一样)的Feature Map。

演示如图:

结论:

通过3*3的维度可以看到对角线上的大概分布,因为卷积核想保留对角线上的值

5、当步长为2时(生成的Feacture_map更小了)

举例如下:

6.当多个卷积核时(3D图片使用,3个通道累加,再加上bias偏置项)图示如下:

D是深度;F是filter的大小(宽度或高度,两者相同); Wd,m,n表示filter的第m行第n列权重; ad,I,j表示图像的第d层第i行第j列像素;

结论:

在一个卷积层里面可以有多个卷积核,每一个卷积核可以有多个维度

每一个卷积核生成一个Feature_map,因为有两个卷积核,所以生成两个Feacture_Map

7、卷积核的设置 Vertical line filter 中间列为1,周围列为0 Horizontal line filter 中间行为1,周围行为0

8、代码演示

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)

# 创建两个filter
# 高,宽,通道,卷积核
# 7, 7, channels, 2
filters_test = np.zeros(shape=(7, 7, channels, 2), dtype=np.float32)
filters_test[:, 3, :, 0] = 1  # 垂直
filters_test[3, :, :, 1] = 1  # 水平

# filter参数是一个filters的集合
X = tf.placeholder(tf.float32, shape=(None, height, width, channels))
# strides=[1, 2, 2, 1] 中第一最后一个为1,中间对应sh和sw
convolution = tf.nn.conv2d(X, filter=filters_test, strides=[1, 2, 2, 1], padding='SAME')

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

plt.imshow(output[1, :, :, 1])  # 绘制第一个图的第二个特征图
plt.show()

在一个特征图里面,所有的神经元共享一样的参数(weights bias),权值共享

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏文武兼修ing——机器学习与IC设计

基于sklearn的线性支持向量机分类器原理代码实现

原理 分类器 机器学习的分类器,均可以看成一个或一组超平面,将label不同的数据点在数据空间中分开。对于线性可分问题,属于相同label的数据点在数据空间中可...

43090
来自专栏LhWorld哥陪你聊算法

【神经网络篇】--RNN递归神经网络初始与详解

由图可知,比如第二个节点的输入不仅依赖于本身的输入U1,而且依赖上一个节点的输入W0,U0,同样第三个节点依赖于前两个节点的输入,

56620
来自专栏数据处理

笔记之一

17760
来自专栏计算机视觉life

OpenCV学习入门(三):kmeans原理及代码

Kmeans是一种非监督的聚类方法,是最常用的聚类技术之一。kmeans尝试找到数据的自然类别,通过用户设定的类别个数K,它可以快速的找到“好的”类别中心,“好...

28850
来自专栏xingoo, 一个梦想做发明家的程序员

吴恩达机器学习笔记 —— 8 正则化

在训练过程中,在训练集中有时效果比较差,我们叫做欠拟合;有时候效果过于完美,在测试集上效果很差,我们叫做过拟合。因为欠拟合和过拟合都不能良好的反应一个模型应用新...

8300
来自专栏Ldpe2G的个人博客

PCANet --- 用于图像分类的深度学习基准

99420
来自专栏深度学习思考者

目标检测 | SSD原理以及相关问题

SSD: Single Shot MultiBox Detector ? intro: ECCV 2016 Oral arxiv: http://arxiv...

601100
来自专栏Duncan's Blog

ccx

10210
来自专栏Petrichor的专栏

深度学习: translation invariant (平移不变性)

33530
来自专栏yl 成长笔记

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

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

9730

扫码关注云+社区

领取腾讯云代金券