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 数据预处理
数据内容:
测试训练数据分布:
测试情况: