一.概述

  卷积神经网络【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. mysql索引原理及优化(三)

    B+Tree原理详解 MyISAM中的 B+Tree (非聚簇索引) MYISAM中叶子节点的数据区域存储的是数据记录的地址 主键索引 辅助索引 MyISAM存储引擎在使用索引查询数据时,会先根据索引 ...

  2. Java与.net 关于URL Encode 的区别

    在c#中,HttpUtility.UrlEncode("www+mzwu+com")编码结果为www%2bmzwu%2bcom,在和Java开发的平台做对接的时候,对方用用url编 ...

  3. openresty开发系列37--nginx-lua-redis实现访问频率控制

    openresty开发系列37--nginx-lua-redis实现访问频率控制 一)需求背景 在高并发场景下为了防止某个访问ip访问的频率过高,有时候会需要控制用户的访问频次在openresty中, ...

  4. [LeetCode] 267. Palindrome Permutation II 回文全排列 II

    Given a string s, return all the palindromic permutations (without duplicates) of it. Return an empt ...

  5. [LeetCode] 678. Valid Parenthesis String 验证括号字符串

    Given a string containing only three types of characters: '(', ')' and '*', write a function to chec ...

  6. 【转帖】MIPS构架:曾经是英特尔的“眼中钉”

    MIPS构架:曾经是英特尔的“眼中钉” https://www.eefocus.com/mcu-dsp/363953 <处理器史话>之十一 2016-06-17 08:02 作者:付丽华预 ...

  7. JVM的内存分配垃圾回收策略

    之前看过<深入了解Java虚拟机>感觉容易忘,今天写一篇博客加深一下印象. JVM的内存分配和垃圾回收(GC)主要发生在Java堆中.而Java堆根据对象的存活时间可以分为新生代和老年代, ...

  8. 程序员生存之道,多写bug!

    1.代码写得好,bug少,看起来就像闲人. 2.注释多,代码清晰,任何人接手非常方便,看起来谁都都可以替代. 3.代码写得烂,每天风风火火改bug,各种救火,解决各种线上重大问题,于是顺理成章为公司亮 ...

  9. SpringBoot(1)

    SpringBoot 8/2 CRUD 发送put请求修改数据有三个步骤: SpringMVC中配置HiddenHttpMethodFilter 页面上创建一个post请求(form标签只能写get和 ...

  10. 解决Jupyter notebook安装后不自动跳转网页的方法

    在安装完Jupyter notebook后,有童鞋说出现了各种不友好的问题,鉴于此情况,个人先随手写出以下三种情况,并给出解决方法: 题外建议:请使用谷歌浏览器为默认浏览器 一.对于弹不出浏览器的解决 ...