【DL】在MNIST数据集上用keras实现全连接网络

1 环境设置

使用anaconda、spyder、win10实现。

打开conda prompt用conda创建一个名为py3mnist的环境:安了两个基础包,指定了python版本。

conda create -n py3mnist python=3.6 numpy pandas
  • 切换到指定环境:conda activate env_name
  • 退出环境:conda deactivate

切换到创建好的环境里,看一下环境里的包:conda list

需要什么包就安装什么: conda install keras

装好包就可以装编辑器了,注意事项:这个时候的spyder还是老环境的。

可以在当前环境命令行输入:conda install spyder,或者觉得spyder麻烦,直接用jupyter notebook,安装也是同理。

直接在当前虚拟环境里输入spyder启动,可能链接的编译器仍然是老环境的,需要在顶部tools》preferences》pythoninterpretter》手动把解释器改成虚拟环境路径下的python。如我的路径:D:\PYrelated\anaconda\ envs\py3mnist\python.exe就可以了。

2 学点keras

有些常用的数据内置在keras中,通过from keras.datasets import mnist,mnist.load_data(path)调用。

在keras中模型是通过多个层的线性堆叠实现:可以加激活,卷积等等

from keras.models import Sequential
from keras.layers import Dense, Activation

#直接定义整个网络
model = Sequential([
Dense(32, input_shape=(784,)),
Activation('relu'),
Dense(10),
Activation('softmax'),
])

# 逐层定义
model = Sequential()
model.add(Dense(32, input_dim=784)) #输入数据
model.add(Activation('relu'))
。。。。。。

模型编译:compile()参数有很多,常见:

  • 损失函数(loss= )
  • 优化器(optimizer=)
  • 评估方法( metrics=)
# 二分类问题
model.compile(optimizer='rmsprop',
				loss='binary_crossentropy',
				metrics=['accuracy'])
# 均方误差回归问题
model.compile(optimizer='rmsprop',
				loss='mse')

模型训练:fit()参数很多:

testmodel = model.fit(X_train,
                    Y_train,
                    batch_size=128,
                    epochs=5,
                    verbose=2,
                    validation_data=(X_test, Y_test))

模型保存:save()

model.save(model_path)

模型复用评估()

from keras.models import load_model
mnist_model = load_model(model_path)
loss_and_metrics = mnist_model.evaluate(X_test, Y_test)

更多详细的介绍可以看官方手册: 链接

3 网络实现

使用mnist手写体数字作为数据集:GitHub链接

  • kerasModel 模型结构文件
  • kerasdatapre 数据预处理

数据内容:

【DL】在MNIST数据集上用keras实现全连接网络_第1张图片

测试训练数据分布:
【DL】在MNIST数据集上用keras实现全连接网络_第2张图片

测试情况:

【DL】在MNIST数据集上用keras实现全连接网络_第3张图片

你可能感兴趣的:(python学习,DL)