Keras(2):使用Keras构建神经网络进行Mnist手写字体分类,并定性分析各种超参数的影响

本实验利用Keras构建多种神经网络对Mnist手写数字进行分类,研究了节点数、激活函数、隐藏层数量、Dropout策略、预训练等超参数对性能的影响。结果显示,ReLU激活函数和适当增加训练轮数能提升性能,而Dropout策略的效果取决于网络结构。
摘要由CSDN通过智能技术生成



实 验 报 告

0BaseNet(三层、sigmoid784-386-10 1

1Hidden_Net784-112-10784-543-10 2

2reluActivation_Net 3

3DeepNet(四层、五层) 4

4DeepNet(四层、五层;训练轮数增加) 5

5DeepNet(五层;Dropout) 6

7DeepNet(五层;Dropout+relu) 8

8AutoEncoder_Net(五层AutoEncoder) 9

9、结论 10

 

 

摘要:本次试验的数据集为MNIST digits,使用keras构建了各式各样的网络,完成了手写数字识别,实验结果比较理想。除此之外,我们还比较了不同模型之间的差别,定性或定量的分析了各种超参数(结点个数、激活函数、隐含层个数、训练轮数等)、是否采用dropout策略、是否有预训练(使用AutoEncoder)等细节选择对实验结果的影响,通过这种定性或定量的深入分析,让我们对神经网络有了更清晰的认识,对不同情境下神经网络的选择也有了更深入的理解。

 

 

0BaseNet(三层、sigmoid784-386-10

三层结构、激活函数为常见的sigmoid,网络结构784-386-10,代码如下:

#*************build your model

model=Sequential()

model.add(   Dense( 386, input_dim=784, init='uniform' )   )

model.add(Activation('sigmoid'))

model.add(Dense(10, activation='softmax')) #'softmax' for multi-calss

 

#*************compile your model

sgd=SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)

model.compile(loss='categorical_crossentropy', optimizer=sgd, class_mode=None, sample_weight_mode=None)

 

#*************train your model

#Returns a history object.

#Its history attribute is a record of training loss values at successive epochs,

#as well as validation loss values (if applicable).

model.fit(X=Xtrain, y=ytrain,

nb_epoch=10, batch_size=200,

verbose=1, callbacks=[],

validation_split=0.0, validation_data=(XCV, yCV),

shuffle=True, show_accuracy=True,

class_weight=None, sample_weight=None)

 

#*********

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值