手写cnn(class)

from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Convolution2D,Activation,MaxPool2D,Flatten,Dense
#下载数据,数据归一化
(x_train,y_train),(x_test,y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape[0],1,28,28) / 255#1是通道,黑白照片,28*28维度
x_test = x_test.reshape(x_test.shape[0],1,28,28) / 255
y_train = np_utils.to_categorical(y_train,num_classes=10)#ones-hot
y_test = np_utils.to_categorical(y_test,num_classes=10)
#构建模型
model = Sequential()
#往模型中添加层
model.add(Convolution2D(
    batch_input_shape=(None,1,28,28),#第一层需要定义输入维度
    filters = 32,#输出的维度,即滤波器的个数
    kernel_size= 5,#滤波器的大小
    strides= 1,#步长
    padding= 'same',padding method
    #data_format='channels_first',
))
model.add(Activation('relu'))
model.add(MaxPool2D(
    pool_size=2,
    strides=2,
    padding='same',

))
#(32,1,14,14)
model.add(Convolution2D(
    filters=64,
    kernel_size=5,
    strides=1,
    padding = 'same'
))
model.add(Activation('relu'))
model.add(MaxPool2D(
    pool_size=2,
    strides=2,
    padding='same'

))
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))
model.add(Dense(10))
model.add(Activation('softmax'))

#激活模型
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
#训练
model.fit(x_train,y_train,batch_size=32,epochs=2)
#测试
loss, accuracy = model.evaluate(x_test,y_test)
print('\nloss:',loss,'\naccuracy:',accuracy)

result:
 9984/10000 [============================>.] - ETA: 0s
loss: 0.07367892188186524 
accuracy: 0.98

Process finished with exit code 0

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值