概述
文章目录
- 深度学习 实验四 Keras基础与简单应用
- 一、问题描述
- 二、设计简要描述
- 三、程序清单
深度学习 实验四 Keras基础与简单应用
一、问题描述
搭建Keras开发环境,掌握基于TensorFlow的高级API框架Keras的基本用法,通过MNIST手写数字体数据集,搭建基于Keras API的神经网络,并用来识别手写数字体。
二、设计简要描述
1. 导入模块
导入实验所需的相关模块——datasets模块中导入数据集mnist模块、layer.core模块导入Dense和Activation模块、optimizers 模块导入SGD模块、utils模块导入np_utils模块、models模块导入Sequential和Model。
2. 数据预处理
2.1 通过mnist模块的load_data方法加载训练集和测试集。
2.2 利用numpy模块的reshape方法重塑训练集和测试集的形状,适用实验训练。
2.3 为了方便神经网络的计算,对X_train和X_test的数据进行归一化,从0255的取值压缩到01之间。
2.4 通过utils模块的to_categorical方法对y_train和y_test的one-hot编码。
3. 搭建神经网络
3.1 添加层
使用序列模型(即Sequential模型)搭建最简单的神经网络——感知机训练模型。
3.2 编译神经网络
通过model对象的compile方法来对模型进行编译。
3.3 训练神经网络
用model对象的fit方法进行模型的训练。
3.4 评估神经网络
使用model对象的evaluate方法来评估模型,并将evaluate的返回值保存到变量score中,然后打印score的第一项和第二项值,查看总的损失值和准确率。
4. 优化神经网络
调整神经网络中的模型构建——适当增加隐藏层、更改隐藏层的节点数、更换激活函数和对训练时参数调整进一步优化神经网络,提高测试的准确率。
三、程序清单
# coding: utf-8
# 导包
from keras.datasets import mnist
from keras.layers.core import Dense,Activation,Dropout
from keras.optimizers import SGD
from keras.utils import np_utils
from keras.models import Sequential, Model
# 1.数据预处理
# 1.1 加载训练集和测试集
(X_train,y_train),(X_test,y_test) = mnist.load_data()
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)
print(y_test.shape)
# 1.2 重塑训练集和测试集的形状
X_train = X_train.reshape(60000, 784)
X_test = X_test.reshape(10000, 784)
X_train = X_train.astype(dtype='float32')
X_test = X_test.astype(dtype='float32')
print(X_train.shape)
print(X_test.shape)
print(X_train.dtype)
print(X_test.dtype)
# 1.3 归一化,从0~255的取值压缩到0~1之间
X_train /= 255
X_test /= 255
# 1.4 one-hot编码
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
# 2. 搭建神经网络
# 2.1 添加层
model = Sequential()
model.add(Dense(10, input_shape=(784,)))
model.add(Activation('softmax'))
model.summary()
# 2.2 编译神经网络
model.compile(loss = 'categorical_crossentropy',
optimizer = 'SGD',
metrics=['accuracy'])
# 2.3 训练神经网络
history = model.fit(X_train, y_train, batch_size=128, epochs=200, verbose=1, validation_split=0.2)
# 2.4 评估神经网络
score = model.evaluate(X_test, y_test, verbose=1)
print('Test score:', score[0])
print('Test accuracy:', score[1])
# 3. 优化神经网络
# 3.1 模型改进
model2 = Sequential()
model2.add(Dense(128, input_shape=(784,)))
model2.add(Activation('softmax'))
model2.add(Dense(128))
model2.add(Activation('relu'))
model2.add(Dense(10))
model2.add(Activation('softmax'))
model2.summary()
# 3.2 编译神经网络
model2.compile(loss = 'categorical_crossentropy',
optimizer = 'SGD',
metrics=['accuracy'])
# 3.3 训练神经网络
history = model2.fit(X_train, y_train, batch_size=128, epochs=20, verbose=1, validation_split=0.2)
# 3.4 评估神经网络
score = model2.evaluate(X_test, y_test, verbose=1)
print('Test score:', score[0])
print('Test accuracy:', score[1])
# 4. 模型优化2
# 4.1 模型改进
model3 = Sequential()
model3.add(Dense(512, input_shape=(784,)))
model3.add(Activation('relu'))
model3.add(Dropout(0.2))
model3.add(Dense(512))
model3.add(Activation('relu'))
model3.add(Dropout(0.2))
model3.add(Dense(10))
model3.add(Activation('softmax'))
model3.summary()
# 4.2 编译神经网络
model3.compile(loss = 'categorical_crossentropy',
optimizer = 'rmsprop',
metrics=['accuracy'])
# 4.3 训练神经网络
history = model3.fit(X_train, y_train, epochs=10, batch_size=128,
verbose = 1, validation_data=[X_test, y_test])
# 4.4 评估神经网络
score = model3.evaluate(X_test, y_test, verbose = 0)
print('Test score:', score[0])
print('Test accuracy:', score[1])
最后
以上就是狂野母鸡为你收集整理的深度学习 实验四 Keras基础与简单应用深度学习 实验四 Keras基础与简单应用的全部内容,希望文章能够帮你解决深度学习 实验四 Keras基础与简单应用深度学习 实验四 Keras基础与简单应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复