# 让一个单元格输出多行内容
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

一、概念题(共40分)

1. 请说明人工智能、机器学习和深度学习的关系。(5分)

答:机器学习是人工智能的途径
深度学习是机器学习的分支

2.请列举三个机器学习中分类问题中常见的性能评价指标。(6分)

请在此处列举指标:1.准确率 2.精确率 3.F1分数

3.请说明欠拟合现象。(6分)

答:
模型学习的太过粗糙,连训练集的样本数据特征关系都没有学出来

4. 请列举三种神经网络训练优化器。(6分)

答:1.Adam 2.Adagrad 3.Adadelta

5. 请列出池化层的两个作用。(6分)

答:1.进一步抽象信息
2.提高了泛化性,防止过拟合

6. 请列出智能体与环境互动过程中的两种不确定性。(6分)

答:1.智能体的行动选择
2.环境的不确定性

7. 请说明强化学习和监督学习训练数据的不同之处。(6分)

答:监督学习的数据是已存在的
强化学习的数据是和环境互动实时产生的


二、操作题(共60分)

CIFAR-2是CIFAR-10分类数据的子集,共有3个分类:猫、狗。数据集中有12000个32×32的彩色图像,分别划分为10000个训练图像和2000个测试图像。

label分别是0、1的两个数字分别对应着各个分类如下:

标签01
分类

请搭建一个卷积神经网络包含以下要求:

  • 神经网络实现对CIFAR-2图片数据的分类。(10分)
  • 神经网络至少包含5层,包括卷积层、池化层和全连接层。(10分)
  • 请解释你模型中各层参数值是如何得到。(10分)
  • 选择合适的参数,使模型在测试集上的准确率达到70%以上。(10分)
  • 保存训练完成的模型为exam.h5。(10分)
  • 请解释过拟合现象,并提供2种常用的处理方法。(10分)

1. 导入数据集

# 导入包
import numpy as np
from keras.utils import np_utils
data = np.load('cifar2.npz')
X_train_image,y_train_label, X_test_image,y_test_label = \
    data['train_images'], data['train_labels'], data['test_images'], data['test_labels']

# 将数据集进行数字标准化
X_train_normalize = X_train_image.astype('float32') / 255.0
X_test_normalize = X_test_image.astype('float32') / 255.0
# 使用One-HotEncoding编码来处理label数据
y_trainOneHot = np_utils.to_categorical(y_train_label)
y_testOneHot = np_utils.to_categorical(y_test_label)

#### 2. 搭建模型

import keras
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
 
model = Sequential()
# 第一层卷积层,使用32个3x3的滤波器,输入大小为32x32x3,padding为same,激活函数为relu
model.add(Conv2D(filters=32,kernel_size=(3,3),input_shape=(32, 32, 3),
                 activation='relu',padding='same'))
# 第二层池化层,使用2x2的窗口进行最大值池化操作
model.add(MaxPooling2D(pool_size=(2,2)))
# 防止过拟合,随机断开一些连接
model.add(Dropout(0.25))
 
# 第三层卷积层,使用64个3x3的滤波器,激活函数为relu
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu', padding='same'))
# 第四层池化层,使用2x2的窗口进行最大值池化操作
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
 
# 第五层平坦层
model.add(Flatten())
# 第六层全连接层,128个神经元,激活函数为relu
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
# 第七层输出层,2个神经元,激活函数为softmax
model.add(Dense(2, activation='softmax'))

#训练模型
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
train_history = model.fit(X_train_normalize, y_trainOneHot, validation_split=0.2, epochs=50, batch_size=128)

#保存模型
model.save('exam.h5')

请解释你模型中各层参数值是如何得到。

请在此处解释模型参数:

第一层卷积层:filters设置为32,kernel_size设置为(3,3),表示使用32个33的卷积核对输入图像进行卷积操作。padding设置为'same',表示使用0填充,保持输出和输入的形状一致。input_shape设置为(32, 32, 3),表示输入图片的大小是3232像素,有3个颜色通道(RGB)。激活函数使用ReLU函数。

第二层池化层:pool_size设置为(2,2),表示对于每个2*2个像素块,在其中取最大值作为该块的输出,从而将图像大小缩小为原来的一半。

Dropout层:dropout rate设置为0.25,表示随机断开25%的神经元。

第三层卷积层:filters设置为64,kernel_size设置为(3,3),表示使用64个3*3的卷积核对第二层的输出进行卷积操作。padding设置为'same',表示使用0填充,保持输出和输入的形状一致。激活函数使用ReLU函数。

第四层池化层:同第二层池化层。

再次添加Dropout层:dropout rate设置为0.25,表示随机断开25%的神经元。

第五层平坦层:将每个样本展开成一个一维向量。该层没有任何参数需要设置。

第六层全连接层:units设置为128,表示该层有128个神经元。激活函数使用ReLU函数。

再次添加Dropout层:dropout rate设置为0.5,表示随机断开50%的神经元。

第七层全连接层:units设置为2,因为这是一个二分类问题。激活函数使用softmax函数,将输出转换为概率值。

请解释过拟合现象,并提供2种常用的处理方法。

请在此处解释过拟合:
过拟合:所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在测试数据中表现不佳。
处理方法:1.数据扩充 2.正则化


附件:
cifar2.rar

标签: none

添加新评论