卷积神经网络快速入门【基于TensorFlow】
2024-09-22 19:10:30
一.概述
卷积神经网络【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()
三.执行结果
最新文章
- ubuntu下配置vpn
- Multiload-ng
- C语言 值传递和地址传递
- [Android Pro] Gradle Tips#2-语法
- django base.html
- windows7添�windows2008R2域配置
- Servlet原理
- zookeeper系列(一)安装
- Traveller数据访问路径
- 156 Useful Run Commands
- linux下各种文件格式的压缩以及解压缩命令
- jquery密码强度检测
- [转] Building xnu for OS X 10.10 Yosemite
- 怎么一次性获取form所有的值?rerialize() 、 serializeArray()方法的使用
- TypeScript--变量及类型的那些事儿
- 怎样用PS对照片进行美白?
- 回归算法比较(线性回归,Ridge回归,Lasso回归)
- 搭建 Jest+ Enzyme 测试环境
- 为什么移动构造要使用noexcept
- React基础知识备忘
热门文章
- Linux_CentOS 内存、cpu、进程、端口、硬盘管理
- linux系统(centos6)的目录结构
- LayaIDE 报typescript编译版本不一致的错
- Bladex-Boot使用Postman调用服务说明
- Spring MVC -- MVC设计模式(演示4个基于MVC框架的案例)
- [LeetCode] 261. Graph Valid Tree 图是否是树
- [LeetCode] 516. Longest Palindromic Subsequence 最长回文子序列
- MySQL之SQL语句的使用
- testNG的安装
- 【转帖】两种IO模式:Proactor与Reactor模式