记录keras 一次 mnist例子

先代码:注释都有


#导入包

import numpy as np
from keras.datasets import mnist
from keras.models import Sequential,Model
from keras.layers.core import Dense,Activation,Dropout

import matplotlib.pyplot as plt
import matplotlib.image as processimage
from keras.utils import np_utils
from pickletools import optimize


#加载数据集 ,两个元组接受
(xTrain,yTrain),(xTest,yTest) = mnist.load_data();

#打印样本的数量
#print(xTrain.shape,yTrain.shape);
#print(xTest.shape,yTest.shape)

#准备数据
#reshape 格式  因为灰色图片 是28 *28   彩色的话 是28*28*3 RGB
#全连接层 做数据量不变,维度变成1
xTrain = xTrain.reshape(60000,784);
xTest = xTest.reshape(10000,784);

#设置成小数浮点型   astype -> set as type into 转换格式
xTrain = xTrain.astype("float32");
xTest = xTest.astype("float32")

#归一化
xTrain = xTrain/255;
xTest = xTest/255;

#超参数
batchSize = 1024  #一次训练多少个数据 
nbClass = 10  # 这里是分多少类
epochs = 30 # 训练的次数

#把分类变成vectors [0000000100]
yTest =np_utils.to_categorical(yTest, nbClass);  #LABLE
yTrain = np_utils.to_categorical(yTrain, nbClass);


#开始
model = Sequential();

#第一个网络 Dense 全连接
model.add(Dense(512,input_shape=(784,)));   #512 给下一层的个数, 第一层接受 784 必须要有,
model.add(Activation('relu')) #激活函数
model.add(Dropout(0.2)); #丢掉百分之20

#第二层
model.add(Dense(256));
model.add(Activation('relu'));
model.add(Dropout(0.2));

#第三层
model.add(Dense(128));
model.add(Activation('relu'));
model.add(Dropout(0.2));

#第四层
model.add(Dense(10));
model.add(Activation('softmax'));   #用于分类的 激活函数


#编译
model.compile(
    #损失函数
    loss = 'categorical_crossentropy',
    #优化函数
    optimizer='rmsprop',
    #矩阵要求
    metrics=['accuracy'],
    );
#启动网络训练  参数1:训练的数据,2:训练的标签.3一次读取多少数据,4训练多少次,5,可以检测测试数据#validation_data=(xTest,yTest)
training = model.fit(
    xTrain,
    yTrain,
    batch_size=batchSize,
    epochs =epochs,
    validation_data=(xTest,yTest)
    );

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值