一.概述

  卷积神经网络【Convolutional neural networks】里面最重要的构建单元是卷积层。神经元在第一个卷积层不是连接输入图片的每一个像素,只是连接它们感受野1的像素,以此类推,第二个卷积层的每一个神经元仅连接位于第一个卷积层的一个小方格的神经元。

  感受野

  

  卷积层

  

  由此牵扯出感受野的定义,感受野是指在视通路2上各层次的神经细胞,有简单到复杂,它们所处理的信息,分别对应于视网膜上的一个局部区域,层次越深入,该区域就越大。卷积神经网络就是模仿生理学视觉的这个特点,通过多层卷积层,逐步深入。具体细节请看上图!

  

  对于什么是视通路,生理学上讲指的是物体在可见光的照射下经眼睛的光学系统在眼底视网膜上形成物像,视网膜上的感光细胞又将视网膜上接收的光能转换为神经冲动,经过视交叉部分地交换神经纤维后,形成视束,传到中枢神经系统,包括丘脑的外膝体,上丘和视皮层。经过这个流程,人就能看见物体,这整个流程就是视通路。具体细节请看上图!

  因此,整个卷积神经网络就是模仿眼睛的机理,通过逐层处理,提取特征,最后形成对物体整体的描述。

二.代码实现

 1 # -*- coding: utf-8 -*-
2 """
3 Created on Wed Nov 7 15:45:53 2018
4 @author: zhen
5 """
6
7 import numpy as np
8 from sklearn.datasets import load_sample_images
9 import tensorflow as tf
10 import matplotlib.pyplot as plt
11
12 # 加载数据集
13 dataset = np.array(load_sample_images().images, dtype=np.float32)
14 batch_size, height, width, channels = dataset.shape
15
16 filters_test = np.zeros(shape=(7, 7, channels, 2), dtype=np.float32)
17 filters_test[:, 3, :, 0] = 1 # 垂直
18 filters_test[3, :, :, 1] = 1 # 水平
19
20 x = tf.placeholder(tf.float32, shape=(None, height, width, channels))
21 # 卷积
22 convolution = tf.nn.conv2d(x, filter=filters_test, strides=[1, 2, 2, 1], padding='SAME')
23 # pooling
24 max_pool = tf.nn.max_pool(x, ksize=[1, 4, 4, 1], strides=[1, 4, 4, 1], padding='VALID')
25
26 with tf.Session() as sess:
27 convolution_output = sess.run(convolution, feed_dict={x:dataset})
28 max_pool_output = sess.run(max_pool, feed_dict={x:dataset})
29
30 plt.imshow(convolution_output[0, :, :, 0]) # 绘制特征图
31 plt.show()
32 plt.imshow(max_pool_output[0].astype(np.uint8)) # 绘制特征图
33 plt.show()

三.执行结果

卷积神经网络快速入门【基于TensorFlow】的更多相关文章

  1. keras搭建神经网络快速入门笔记

    之前学习了tensorflow2.0的小伙伴可能会遇到一些问题,就是在读论文中的代码和一些实战项目往往使用keras+tensorflow1.0搭建, 所以本次和大家一起分享keras如何搭建神经网络 ...

  2. 卷积神经网络详细讲解 及 Tensorflow实现

    [附上个人git完整代码地址:https://github.com/Liuyubao/Tensorflow-CNN] [如有疑问,更进一步交流请留言或联系微信:523331232] Reference ...

  3. 卷积神经网络CNN原理以及TensorFlow实现

    在知乎上看到一段介绍卷积神经网络的文章,感觉讲的特别直观明了,我整理了一下.首先介绍原理部分. [透析] 卷积神经网络CNN究竟是怎样一步一步工作的? 通过一个图像分类问题介绍卷积神经网络是如何工作的 ...

  4. 图卷积神经网络(GCN)入门

    图卷积网络Graph Convolutional Nueral Network,简称GCN,最近两年大热,取得不少进展.不得不专门为GCN开一个新篇章,表示其重要程度.本文结合大量参考文献,从理论到实 ...

  5. CNN(卷积神经网络)入门

    参考博文: 深度学习基础--卷积--1*1的卷积核与全连接的区别:https://blog.csdn.net/wydbyxr/article/details/84061410 如何理解卷积神经网络中的 ...

  6. axis1.4开发webservice客户端(快速入门)-基于jdk1.4

    写在前面: 对于客户端,服务端开发好了以后,客户端只需要调用就可以了.这里我们讲的是,根据服务的访问地址,来生成客户端所需要用到的代码(听说有几种调用方式,但是用到最常见的就是stub方式,貌似我说的 ...

  7. axis1.4开发webservice服务端(快速入门)-基于jdk1.4

    写在前面: 现在有很多开发webservice的方法以及框架,什么cxf等,但是这些在你编写服务类的时候都要用到注解这个功能.如果现在的jdk是1.4的,那么就不能使用注解这个功能了.所以这里可以用到 ...

  8. vuex 快速入门( 基于vue2.0,vue1.0未知可否)

    1.原理概述 2.用户登录例子解析: 由上图可以看到: 1.组件的数据是username,我们把它以name放在state中: 2.更改name发生在mutations的回调里,事件名字是showUs ...

  9. TensorFlow实战第八课(卷积神经网络CNN)

    首先我们来简单的了解一下什么是卷积神经网路(Convolutional Neural Network) 卷积神经网络是近些年逐步兴起的一种人工神经网络结构, 因为利用卷积神经网络在图像和语音识别方面能 ...

随机推荐

  1. PHP系列 | ThinkPHP5数据库迁移工具 migration

    了解更多,请关注微信公众号 ThinkPHP5数据库迁移工具 migration 什么是Migration? migration用谷歌翻译是移民的意思,在PHP中我们将它理解为迁移,将Migratio ...

  2. git - gitHub生成Markdown目录

    就是github-markdown-toc.go. github-markdown-toc.go Github地址 如果你有GO语言(又是你)的编译环境,可以尝试自己编译,如果没有,可以直接下载编译好 ...

  3. meta name="location" 标签的使用

    在进行一些操作的时候,我们可能会用到这个标签来什么,地理位置,不错的网站优化标签. <meta name="location" content="province= ...

  4. 案例:使用BeautifuSoup4的爬虫

    使用BeautifuSoup4解析器,将招聘网页上的招聘单位名称存储出来.其他信息可类似爬取即可 # -*- coding:utf-8 -*- from bs4 import BeautifulSou ...

  5. Docker 安装 MySQL 并实现远程连接

    获取 MySQL 镜像 docker pull mysql:5.6 查看镜像列表 docker images 启动 MySQL 镜像 docker run -itd -P mysql:5.6 bash ...

  6. [LeetCode] 293. Flip Game 翻转游戏

    You are playing the following Flip Game with your friend: Given a string that contains only these tw ...

  7. TortoiseGit,git 未能顺利结束 (退出码 1)

    其中一个原因是不能把Git下所有文件全部删除,一个都没有,就会报这个错误. 注:空文件夹git定义为空,不是文件.所以只有空文件夹也会报这个错误.

  8. mysql 的日期和时间函数

    执行函数方式 select 函数  函数名称 函   数 功   能 CURDATE() 获取当前日期 CURTIME() 获取当前时间 NOW() 获取当前的日期和时间 UNIX_TIMESTAMP ...

  9. Java开发笔记(一百二十八)Swing的图标

    前面提过,AWT没提供能够直接显示图像的控件,这无疑是个令人诟病的短板,因为一上来就得由程序员自己去定义新控件,对于初学者来讲很不友好.这个问题在Swing中也解决掉了,不过Swing并未提供单独的图 ...

  10. "CreateProcess error=206, 文件名或扩展名太长。",用gradle构建项目创建mapper文件时提示这个错误,是Windows Gradle长类路径问题,官方已经修复

    用gradle构建项目mapper文件时,提示这个错误,这个是Windows Gradle长类路径问题, gradle官方已经解决了这个问题. 官网给出的解决方法地址:https://plugins. ...