卷积神经网络快速入门【基于TensorFlow】
一.概述
卷积神经网络【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】的更多相关文章
- keras搭建神经网络快速入门笔记
之前学习了tensorflow2.0的小伙伴可能会遇到一些问题,就是在读论文中的代码和一些实战项目往往使用keras+tensorflow1.0搭建, 所以本次和大家一起分享keras如何搭建神经网络 ...
- 卷积神经网络详细讲解 及 Tensorflow实现
[附上个人git完整代码地址:https://github.com/Liuyubao/Tensorflow-CNN] [如有疑问,更进一步交流请留言或联系微信:523331232] Reference ...
- 卷积神经网络CNN原理以及TensorFlow实现
在知乎上看到一段介绍卷积神经网络的文章,感觉讲的特别直观明了,我整理了一下.首先介绍原理部分. [透析] 卷积神经网络CNN究竟是怎样一步一步工作的? 通过一个图像分类问题介绍卷积神经网络是如何工作的 ...
- 图卷积神经网络(GCN)入门
图卷积网络Graph Convolutional Nueral Network,简称GCN,最近两年大热,取得不少进展.不得不专门为GCN开一个新篇章,表示其重要程度.本文结合大量参考文献,从理论到实 ...
- CNN(卷积神经网络)入门
参考博文: 深度学习基础--卷积--1*1的卷积核与全连接的区别:https://blog.csdn.net/wydbyxr/article/details/84061410 如何理解卷积神经网络中的 ...
- axis1.4开发webservice客户端(快速入门)-基于jdk1.4
写在前面: 对于客户端,服务端开发好了以后,客户端只需要调用就可以了.这里我们讲的是,根据服务的访问地址,来生成客户端所需要用到的代码(听说有几种调用方式,但是用到最常见的就是stub方式,貌似我说的 ...
- axis1.4开发webservice服务端(快速入门)-基于jdk1.4
写在前面: 现在有很多开发webservice的方法以及框架,什么cxf等,但是这些在你编写服务类的时候都要用到注解这个功能.如果现在的jdk是1.4的,那么就不能使用注解这个功能了.所以这里可以用到 ...
- vuex 快速入门( 基于vue2.0,vue1.0未知可否)
1.原理概述 2.用户登录例子解析: 由上图可以看到: 1.组件的数据是username,我们把它以name放在state中: 2.更改name发生在mutations的回调里,事件名字是showUs ...
- TensorFlow实战第八课(卷积神经网络CNN)
首先我们来简单的了解一下什么是卷积神经网路(Convolutional Neural Network) 卷积神经网络是近些年逐步兴起的一种人工神经网络结构, 因为利用卷积神经网络在图像和语音识别方面能 ...
随机推荐
- vue elementUi tree 懒加载使用详情
背景:vue下使用elementUI 文档:http://element-cn.eleme.io/#/zh-CN/component/tree#tree-shu-xing-kong-jian 需求:只 ...
- 【转】Python访问oracle数据库,DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified module could not be found"
使用python连接Oracle,出现如下错误: DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified ...
- Coder 健康 知识
- [LeetCode] 441. Arranging Coins 排列硬币
You have a total of n coins that you want to form in a staircase shape, where every k-th row must ha ...
- (一)Python的特点(优点和缺点)
Python 是一种面向对象.解释型的脚本语言,同时也是一种功能强大而完善的通用型语言.相比其他编程语言(比如 Java),Python 代码非常简单,上手非常容易. Python优点: (1)简单易 ...
- jmeter3.1连接数据库报错,ORA-00923: 未找到要求的 FROM 关键字
Jmeter不仅仅可以测试接口,还可以对数据库进行压力测试.或者造数据. 准备工作:待测试数据库地址.用户名及其密码.Oracle驱动ojdbc14.jar 一.将ojdbc14.jar放至Jmete ...
- [Python]MySQLdb for Python使用指南/Python的数据库操作
网站就是要和数据库进行交互,否则什么都不用做了...今天我们来看一个叫MySQLdb的库,这个用来和MySQL数据库进行交互.可以从这里获得这个库http://sourceforge.net/proj ...
- # Java类链接模型
动态链接和解析 每一个class都有一个常量池, 保存它自己的所有的符号引用. 每一个已经被加载的class, interface都另外有一个内部版本的常量池, 叫做runtime constant ...
- [转帖]DCEP:中国自己的数字货币
DCEP:中国自己的数字货币 https://cloud.tencent.com/developer/news/435883 前面我们讨论了Libra的革命性和局限性,接下来我想跟你聊一件重要的事,那 ...
- int main(int argc, char *argv[])解释
int main(int argc, char *argv[]) 详解: #include <stdio.h> int main(int argc, char *argv[]) { int ...