1.简述人工智能、机器学习和深度学习三者的联系与区别。
人工智能是最早出现的,也是最大、最外侧的同心圆;其次是机器学习,稍晚一点;最内侧,是深度学习,也是当今人工智能大爆炸的核心驱动。
2. 全连接神经网络与卷积神经网络的联系与区别。
卷积神经网络也是通过一层一层的节点组织起来的。和全连接神经网络一样,卷积神经网络中的每一个节点就是一个神经元。
除了结构相似,卷积神经网络的输入输出以及训练的流程和全连接神经网络也基本一致,以图像分类为列,卷积神经网络的输入层就是图像的原始图像,而输出层中的每一个节点代表了不同类别的可信度。这和全连接神经网络的输入输出是一致的。类似的,全连接神经网络的损失函数以及参数的优化过程也都适用于卷积神经网络。因此,全连接神经网络和卷积神经网络的唯一区别就是神经网络相邻两层的连接方式。
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 |
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
5. 安装Tensorflow,keras
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(…))
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 导入相关包 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D # 建立模型 model = Sequential() # 一层卷积 model.add( Conv2D( filters=32, #卷积核种类 kernel_size=(5, 5), #卷积大小 padding='same', input_shape=(30, 30, 1), activation='relu')) # 池化层1 model.add(MaxPool2D(pool_size=(2, 2))) model.add(Dropout(0.25)) # 二层卷积 model.add( Conv2D( filters=64, kernel_size=(3, 3), padding='same', activation='relu')) # 池化层2 model.add(MaxPool2D(pool_size=(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()
...
#可以上传手动演算的每层数据结构的变化过程。model.summary()