标签:于手 28 test add train CNN import model 写字
import numpy as np from keras.datasets import mnist from keras.utils import np_utils from keras.models import Sequential from keras.layers import Dense,Dropout,Convolution2D,MaxPooling2D,Flatten from keras.optimizers import Adam
# 载入数据 (x_train,y_train),(x_test,y_test) = mnist.load_data() # (60000,28,28)->(60000,28,28,1) x_train = x_train.reshape(-1,28,28,1)/255.0 x_test = x_test.reshape(-1,28,28,1)/255.0 # 换one hot格式 y_train = np_utils.to_categorical(y_train,num_classes=10) y_test = np_utils.to_categorical(y_test,num_classes=10) # 定义顺序模型 model = Sequential() # 第一个卷积层 # input_shape 输入平面 # filters 卷积核/滤波器个数 # kernel_size 卷积窗口大小 # strides 步长 # padding padding方式 same/valid # activation 激活函数 model.add(Convolution2D( input_shape = (28,28,1), filters = 32, kernel_size = 5, strides = 1, padding = 'same', activation = 'relu' )) # 第一个池化层 model.add(MaxPooling2D( pool_size = 2, strides = 2, padding = 'same', )) # 第二个卷积层 model.add(Convolution2D(64,5,strides=1,padding='same',activation = 'relu')) # 第二个池化层 model.add(MaxPooling2D(2,2,'same')) # 把第二个池化层的输出扁平化为1维 model.add(Flatten()) # 第一个全连接层 model.add(Dense(1024,activation = 'relu')) # Dropout model.add(Dropout(0.5)) # 第二个全连接层 model.add(Dense(10,activation='softmax')) # 定义优化器 adam = Adam(lr=1e-4) # 定义优化器,loss function,训练过程中计算准确率 model.compile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy']) # 训练模型 model.fit(x_train,y_train,batch_size=64,epochs=10) # 评估模型 loss,accuracy = model.evaluate(x_test,y_test) print('test loss',loss) print('test accuracy',accuracy)
标签:于手,28,test,add,train,CNN,import,model,写字
来源: https://www.cnblogs.com/liuwenhua/p/11567006.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。