最后一次实训了,做完就是成功,嘿嘿嘿
1、全连接网络包含输入层、隐藏层和输出层
A、对
B、错
A
2、层数较多的神经网络为深层神经网络
A、对
B、错
A
3、ReLU(11)=11
A、对
B、错
A
4、下列说法错误的是
A、用深层神经网络实现想要的功能就是深度学习
B、神经网络的灵感来自于人类大脑的神经系统的构成
C、含有1层隐藏层的神经网络称之为深层神经网络
C
1、反向传播主要是为了计算参数对损失函数的梯度?
A、对
B、错
A
2、梯度下降是一种迭代更新的算法?
A、对
B、错
A
3、神经网络的训练过程只有前向传播过程?
A、对
B、错
B
本关任务:编写 Python 代码动手搭建 CNN 模型实现手写数字识别。
填写 python 代码,在 Begin-End 段中构建出如下结构的卷积神经网络:
·64 个 55 的卷积核组成的卷积层,激活函数为 relu;
·最大池化层,池化核大小为 22;
·扁平;
·128 个神经元的全连接层,激活函数为 relu;
·10 个神经元的全连接层,激活函数为 softmax。
只需按要求构建模型即可,程序内部会使用你所构建的模型进行训练与预测,当预测准确率高于 95% 时,视为过关。
from keras.models import Sequential
from keras.layers import Conv2D, MaxPool2D, Flatten, Dense
import numpy as np
# 设置随机种子
np.random.seed(1447)
def build_model():
'''
在Begin-End段中构建出如下结构的卷积神经网络
1.64个5*5的卷积核组成的卷积层,激活函数为relu
2.最大池化层,池化核大小为2*2
3.扁平
4.128个神经元的全连接层,激活函数为relu
5.10个神经元的全连接层,激活函数为softmax
:return: 构建好的模型
'''
model = Sequential()
model.add(Conv2D(32, (5, 5), activation='relu', input_shape=[28, 28, 1]))
#********* Begin *********#
model.add(Conv2D(64, (5, 5), activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))
#********* End *********#
return model
本关任务:编写 Python 代码动手搭建 RNN 模型实现影评情感分析。
填写 python 代码,在 Begin-End 段中构建出如下结构的循环神经网络:
·有 30 个神经元的 SimpleRNN 层;
·有 16 个神经元的全连接层,激活函数为 relu;
·有 1 个神经元的全连接层,激活函数为 sigmoid。
只需按要求构建模型即可,程序内部会使用你所构建的模型进行训练与预测,当预测准确率高于 70% 时,视为过关。
PS:由于数据较大,执行时间可能比较长,请耐心等待。
from keras.models import Sequential
from keras.layers import Embedding, SimpleRNN, Dense
def build_model():
'''
在Begin-End段中构建如下结构的循环神经网络
1.有30个神经元的SimpleRNN层
2.有16个神经元的全连接层,激活函数为relu
3.有1个神经元的全连接层,激活函数为sigmoid
:return: 构建好的模型
'''
model = Sequential()
model.add(Embedding(1000, 64))
#********* Begin *********#
model.add(SimpleRNN(40))
model.add(Dense(1, activation='sigmoid'))
#********* End *********#
return model
老师说不需要输出70%,所以在平台上跑不出来是正常的
本关任务:编写 Python 代码实现猫狗识别。
在 Begin-End 段中填写 Python 代码,实现猫狗分类。
补全代码即可,程序内部会使用你所构建的模型进行训练与预测,当预测准确率高于 70% 时,视为过关。
from keras.layers import Dense, Activation, Flatten, Dropout, Conv2D, MaxPooling2D
import keras
import os
import numpy as np
import cv2
# 设置随机种子
np.random.seed(1447)
IMAGE_HEIGHT = 128
IMAGE_WIDTH = 128
def get_train_data(data_path):
'''
读取并处理数据
:return:处理好的图像和对应的one-hot编码
'''
images = []
onehot = np.zeros((500, 2))
#********* Begin *********#
for i, img_name in enumerate(os.listdir(data_path)):
if 'cat' in img_name:
onehot[i, 0] = 1
else:
onehot[i, 1] = 1
img = cv2.imread(os.path.join(data_path, img_name))
img = cv2.resize(img, (IMAGE_HEIGHT, IMAGE_WIDTH))
img = img / 255.0
images.append(img)
#********* End *********#
return np.array(images), onehot
def build_model():
'''
构建模型
:return:构建好的模型
'''
model = keras.Sequential()
#********* Begin *********#
model.add(Conv2D(32, kernel_size=3, activation='relu', input_shape=[IMAGE_HEIGHT, IMAGE_WIDTH, 3]))
model.add(MaxPooling2D(pool_size=2))
model.add(Conv2D(32, kernel_size=3, activation='relu'))
model.add(MaxPooling2D(pool_size=2))
model.add(Flatten())
model.add(Dense(96, activation='relu'))
model.add(Dense(2, activation='softmax'))
#********* End *********#
return model
def fit_and_predict(model, train_images, onehot, test_images):
'''
训练模型,并对测试图像进行预测
:param model: 训练好的模型
:param train_images: 训练集图像
:param onehot: 训练集的one-hot编码
:param test_images: 测试集图像
:return: 预测结果
'''
#********* Begin *********#
# 编译模型
model.compile(loss='categorical_crossentropy', optimizer=keras.optimizers.Adam(lr=0.0001), metrics=['accuracy'])
#********* End *********#
model.fit(train_images, onehot, epochs=20, batch_size=32, verbose=0)
result = model.predict(test_images, batch_size=10)
predict_idx = np.argmax(result, axis=1)
return predict_idx