【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 数据预处理

数据内容:

在这里插入图片描述

测试训练数据分布:
在这里插入图片描述

测试情况:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值