人工智能是一个大的发展中的概念,其中包括包括专家系统、机器学习、进化计算、模糊逻辑、计算机视觉、自然语言处理、推荐系统等。即机器学习是实现人工智能的其中一个方法,而深度学习是机器学习所使用的一种算法。
总结:人工智能 > 机器学习 > 深度学习
在全连接神经网络中,每两层之间的节点都有边相连。
卷积神经网络也是通过一层一层的节点组织起来的,对于卷积神经网络,相邻两层之间只有部分节点相连。在卷积神经网络的前几层中,每一层的节点都被组织成一个三维矩阵。前几层中每一个节点只和上一层中部分节点相连。
卷积神经网络结构:
以digit0为例,进行手工演算。
from sklearn.datasets import load_digits #小数据集8*8
digits = load_digits()
0 |
0 |
5 |
13 |
9 |
1 |
0 |
0 |
0 |
0 |
13 |
15 |
10 |
15 |
5 |
0 |
0 |
3 |
15 |
2 |
0 |
11 |
8 |
0 |
0 |
4 |
12 |
0 |
0 |
8 |
8 |
0 |
0 |
5 |
8 |
0 |
0 |
9 |
8 |
0 |
0 |
4 |
11 |
0 |
1 |
12 |
7 |
0 |
0 |
2 |
14 |
5 |
10 |
12 |
0 |
0 |
0 |
0 |
6 |
13 |
10 |
0 |
0 |
0 |
读取一个图像;
1 from PIL import Image 2 import matplotlib.pyplot as plt 3 # %matplotlib inline 4 import numpy as np 5 from scipy.signal import convolve2d 6 import tf.keras.layers.Conv2D 7 8 9 I = Image.open(r‘./img/see.jpg‘) 10 L = I.convert(‘L‘) 11 12 cat = np.array(I) # 原图 13 catg = np.array(L) # 灰度图
以下矩阵为卷积核进行卷积操作;
1 k1 = np.array([[1, 0, -1], [1, 0, -1], [1, 0, -1]]) # 垂直边缘检测 2 k2 = np.array([[1, 1, 1], [0, 0, 0], [-1, -1, -1]]) # 水平边缘检测(转置) 3 k3 = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]]) 4 5 cat1 = convolve2d(catg, k1, boundary=‘symm‘, mode=‘same‘) 6 cat2 = convolve2d(catg, k2, boundary=‘symm‘, mode=‘same‘) 7 cat3 = convolve2d(catg, k3, boundary=‘symm‘, mode=‘same‘)
显示卷积之后的图像,观察提取到什么特征。
原图
纵向卷积
1 |
0 |
-1 |
1 |
0 |
-1 |
1 |
0 |
-1 |
横向卷积
1 |
1 |
1 |
0 |
0 |
0 |
-1 |
-1 |
-1 |
卷积效果模糊
-1 |
-1 |
-1 |
-1 |
8 |
-1 |
-1 |
-1 |
-1 |
卷积API
scipy.signal.convolve2d
tf.keras.layers.Conv2D
参考:https://blog.csdn.net/u011119817/article/details/88309256
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPool2D
model = tf.keras.Sequential()
model.add(Conv2D(…))
model.add(MaxPool2D(…))
...
#可以上传手动演算的每层数据结构的变化过程。model.summary()
参考:
https://www.jianshu.com/p/afe485aa08ce
https://blog.csdn.net/junjun150013652/article/details/82217571
原文:https://www.cnblogs.com/lxml/p/13042338.html