有可能用CPU在1分钟内为MNIST训练CNN吗



我正在编写一个CNN示例,用于向大学生演示,它应该以80%以上的准确率对MNIST进行分类。我使用以下体系结构,即使我使用128的相对较大的批量,训练也需要大约10分钟才能达到精度。我在谷歌Colab上使用标准CPU,没有任何硬件加速器、AdaDelta成本函数、10个时期和分类交叉熵损失函数。

有可能提高训练时间吗?或者用给定的硬件不可能在1分钟内达到80%的准确率吗?

Model: "sequential"
_________________________________________________________________
Layer (type)                Output Shape              Param #   
=================================================================
conv2d (Conv2D)             (None, 26, 26, 32)        320       

max_pooling2d (MaxPooling2D  (None, 13, 13, 32)       0         
)                                                               

conv2d_1 (Conv2D)           (None, 11, 11, 64)        18496     

max_pooling2d_1 (MaxPooling  (None, 5, 5, 64)         0         
2D)                                                             

conv2d_2 (Conv2D)           (None, 3, 3, 64)          36928     

flatten (Flatten)           (None, 576)               0         

dense (Dense)               (None, 64)                36928     

dense_1 (Dense)             (None, 10)                650       

=================================================================
Total params: 93,322
Trainable params: 93,322
Non-trainable params: 0
_________________________________________________________________

我能够使用以下模型进行非常快速的训练:

model = Sequential()                                 
model.add(Conv2D(32, (3, 3), input_shape=(28,28,1))) 
convLayer01 = Activation('relu')                     
model.add(convLayer01)

model.add(Conv2D(32, (3, 3)))  
model.add(Activation('relu'))                       
convLayer02 = MaxPooling2D(pool_size=(2,2))          
model.add(convLayer02)
model.add(Conv2D(64,(3, 3)))    
convLayer03 = Activation('relu')                  
model.add(convLayer03)
model.add(Conv2D(64, (3, 3)))          
model.add(Activation('relu'))                   
convLayer04 = MaxPooling2D(pool_size=(2,2))      
model.add(convLayer04)
model.add(GlobalAveragePooling2D())

model.add(Dense(10))           
model.add(Activation('softmax'))

这种情况下的技巧是使用GlobalAveragePooling2D而不是密集层。我得到了>在1个历元中准确率为90%。

相关内容

  • 没有找到相关文章

最新更新