14 深度学习-卷积
1.简述人工智能、机器学习和深度学习三者的联系与区别。
答:就范围而言:人工智能>机器学习>深度学习,并且它们三者也属于包含关系。
人工智能:
人工智能英文缩写为AI,它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学研究领域的一个重要分支,又是众多学科的一个交叉学科,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括语音识别、图像识别、机器人、自然语言处理、智能搜索和专家系统等等。
机器学习:
机器学习是人工智能领域的一个小分支,机器学习最基本的做法是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。类似人类在接触过很多事物、经历后获得的“经验”一样。例如有经验的老师在教书多年以后知道如何因材施教(经验)
深度学习:
深度学习就是一种实现机器学习的优秀技术。深度学习使得机器学习能够实现众多的应用,并拓展了人工智能的领域范围。最初的深度学习是利用深度神经网络来解决特征表达的一种学习过程。可大致理解为包含多个隐含层的神经网络结构。
2. 全连接神经网络与卷积神经网络的联系与区别。
答:从广义上说深度学习的网络结构也是多层神经网络的一种。深度学习中最著名的卷积神经网络是由Lecun等人提出的,是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。在原来多层神经网络的基础上,加入了特征学习部分,这部分是模仿人脑对信号处理上的分级的。具体操作就是在原来的全连接的层前面加入了部分连接的卷积层与降维层,而且加入的是一个层级:输入层-卷积层-降维层-卷积层-降维层- ....-隐藏层-输出层。深度学习做的步骤是:信号->特征->值,特征是由网络自己选择。
3.理解卷积计算。
以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 | 0 | -1 |
1 | 0 | -1 |
1 | 0 | -1 |
演算结果:
4.理解卷积如何提取图像特征。
读取一个图像;
以下矩阵为卷积核进行卷积操作;
显示卷积之后的图像,观察提取到什么特征。
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
from PIL import Image import matplotlib.pyplot as plt import numpy as np from scipy.signal import convolve2d I = Image.open(r‘E:\公园薰.jpg‘) L = I.convert(‘L‘) cat = np.array(I) # 原图 plt.matshow(cat) plt.show() catg = np.array(L) # 灰质图 plt.matshow(catg) plt.show() k1 = np.array([[1, 0, -1], [1, 0, -1], [1, 0, -1]]) # 垂直边缘检测 k2 = np.array([[1, 1, 1], [0, 0, 0], [-1, -1, -1]]) # 水平边缘检测 k3 = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]]) # 中间检测 # boundary:边界填充方式,mode卷积类型 cat1 = convolve2d(catg, k1, boundary=‘symm‘, mode=‘same‘) cat2 = convolve2d(catg, k2, boundary=‘symm‘, mode=‘same‘) cat3 = convolve2d(catg, k3, boundary=‘symm‘, mode=‘same‘) plt.matshow(cat1) plt.show() plt.matshow(cat2) plt.show() plt.matshow(cat3) plt.show()
原图:
灰制图:
垂直边缘检测:
水平边缘检测:
中间检测:
5. 安装Tensorflow,keras
参考:https://blog.csdn.net/u011119817/article/details/88309256
6. 设计手写数字识别模型结构,注意数据维度的变化。
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()
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D # 建立模型 model = Sequential() model.add(Conv2D(filters=16, kernel_size=(5, 5), padding=‘same‘,input_shape=(28, 28, 1), activation=‘relu‘)) # 一层卷积 model.add(MaxPool2D(pool_size=(2, 2))) # 池化层1 model.add(Dropout(0.25)) model.add(Conv2D(filters=32, kernel_size=(5, 5), padding=‘same‘, activation=‘relu‘)) # 二层卷积 model.add(MaxPool2D(pool_size=(2, 2))) # 池化层2 model.add(Dropout(0.25)) model.add(Conv2D(filters=64, kernel_size=(5, 5), padding=‘same‘, activation=‘relu‘)) # 三层卷积 model.add(Flatten()) # 平坦层 model.add(Dense(128, activation=‘relu‘)) # 全连接层 model.add(Dropout(0.25)) model.add(Dense(10, activation=‘softmax‘)) # 激活函数 model.summary()自动判断中文中文(简体)中文(香港)中文(繁体)英语日语朝鲜语德语法语俄语泰语南非语阿拉伯语阿塞拜疆语比利时语保加利亚语加泰隆语捷克语威尔士语丹麦语第维埃语希腊语世界语西班牙语爱沙尼亚语巴士克语法斯语芬兰语法罗语加里西亚语古吉拉特语希伯来语印地语克罗地亚语匈牙利语亚美尼亚语印度尼西亚语冰岛语意大利语格鲁吉亚语哈萨克语卡纳拉语孔卡尼语吉尔吉斯语立陶宛语拉脱维亚语毛利语马其顿语蒙古语马拉地语马来语马耳他语挪威语(伯克梅尔)荷兰语北梭托语旁遮普语波兰语葡萄牙语克丘亚语罗马尼亚语梵文北萨摩斯语斯洛伐克语斯洛文尼亚语阿尔巴尼亚语瑞典语斯瓦希里语叙利亚语泰米尔语泰卢固语塔加路语茨瓦纳语土耳其语宗加语鞑靼语乌克兰语乌都语乌兹别克语越南语班图语祖鲁语自动选择中文中文(简体)中文(香港)中文(繁体)英语日语朝鲜语德语法语俄语泰语南非语阿拉伯语阿塞拜疆语比利时语保加利亚语加泰隆语捷克语威尔士语丹麦语第维埃语希腊语世界语西班牙语爱沙尼亚语巴士克语法斯语芬兰语法罗语加里西亚语古吉拉特语希伯来语印地语克罗地亚语匈牙利语亚美尼亚语印度尼西亚语冰岛语意大利语格鲁吉亚语哈萨克语卡纳拉语孔卡尼语吉尔吉斯语立陶宛语拉脱维亚语毛利语马其顿语蒙古语马拉地语马来语马耳他语挪威语(伯克梅尔)荷兰语北梭托语旁遮普语波兰语葡萄牙语克丘亚语罗马尼亚语梵文北萨摩斯语斯洛伐克语斯洛文尼亚语阿尔巴尼亚语瑞典语斯瓦希里语叙利亚语泰米尔语泰卢固语塔加路语茨瓦纳语土耳其语宗加语鞑靼语乌克兰语乌都语乌兹别克语越南语班图语祖鲁语有道翻译百度翻译谷歌翻译谷歌翻译(国内)
翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 译