基于Keras实现CNN

1.前言

自己定义的CNN结构,基于Keras实现,处理MNIST数据集。

2.Python代码

加载相应库:
import numpy as np 
np.random.seed(1337)
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense,Activation,Convolution2D,MaxPooling2D,Flatten
from keras.optimizers import Adam
定义训练、测试集:
(X_train,y_train),(X_test,y_test)=mnist.load_data()
X_train = X_train.reshape(-1,1,28,28)
X_test = X_test.reshape(-1,1,28,28)
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
定义网络结构:
model=Sequential()

# Conv layer 1 output shape (32,28,28)
model.add(Convolution2D(
	nb_filter=32,
	nb_row=5,
	nb_col=5,
	border_mode='same',    # padding method
	input_shape=(1,28,28),
	))
model.add(Activation('relu'))

# Pooling layer 1 (max pooling) output shape (32,14,14)
model.add(MaxPooling2D(
	pool_size=(2,2),
	strides=(2,2),
	border_mode='same',
	))

# Conv layer 2 output shape (64,14,14)
model.add(Convolution2D(64,5,5,border_mode='same'))
model.add(Activation('relu'))

# Pooling layer 2 (max pooling) output shape (64,7,7)
model.add(MaxPooling2D(pool_size=(2,2),border_mode='same'))


# Fully connected layer 1 input shape (64*7*7)=(3136)
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))

# Fully connected layer 2 to shape (10) for 10 classes
model.add(Dense(10))
model.add(Activation('softmax'))

adam = Adam(lr=1e-4)

model.compile(optimizer=adam,
			loss='categorical_crossentropy',
			metrics=['accuracy'])

输出结果:
print('Training----------')
model.fit(X_train,y_train,nb_epoch=1,batch_size=32,)

print('Testing----------')
loss,accuracy = model.evaluate(X_test,y_test)

print('\ntest loss:',loss)
print('\naccyracy:',accuracy)

3.结果







  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值