CNN学习停滞不前

时间:2017-06-14 00:18:44

标签: machine-learning tensorflow computer-vision keras

我创建了一个我试图在视频数据集上使用的CNN模拟。 我将测试数据设置为所有帧上的所有单个图像,用于正例,0表示负例。我以为这会很快学会。但它根本不动。 使用当前版本的Keras& Windows 10 64bit上的Tensorflow。

第一个问题,我的逻辑错了吗?我是否希望这些测试数据的学习能够快速达到高精度?

我的模型或参数有问题吗?我一直在尝试一些变化,但仍然遇到同样的问题。

样本量(56)是否太小?

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv1a (Conv3D)              (None, 19, 160, 214, 32)  2624      
_________________________________________________________________
conv1b (Conv3D)              (None, 19, 160, 214, 32)  27680     
_________________________________________________________________
pool1 (MaxPooling3D)         (None, 10, 78, 105, 32)   0         
_________________________________________________________________
conv2a (Conv3D)              (None, 10, 78, 105, 128)  110720    
_________________________________________________________________
conv2b (Conv3D)              (None, 10, 78, 105, 128)  442496    
_________________________________________________________________
pool2 (MaxPooling3D)         (None, 5, 37, 51, 128)    0         
_________________________________________________________________
conv3a (Conv3D)              (None, 5, 37, 51, 256)    884992    
_________________________________________________________________
conv3b (Conv3D)              (None, 5, 37, 51, 256)    1769728   
_________________________________________________________________
pool3 (MaxPooling3D)         (None, 3, 17, 24, 256)    0         
_________________________________________________________________
conv4a (Conv3D)              (None, 3, 17, 24, 512)    3539456   
_________________________________________________________________
conv4b (Conv3D)              (None, 3, 17, 24, 512)    7078400   
_________________________________________________________________
pool4 (MaxPooling3D)         (None, 2, 7, 10, 512)     0         
_________________________________________________________________
flatten (Flatten)            (None, 71680)             0         
_________________________________________________________________
den0 (Dense)                 (None, 512)               36700672  
_________________________________________________________________
den1 (Dense)                 (None, 1)                 513       
=================================================================
Total params: 50,557,281
Trainable params: 36,701,185
Non-trainable params: 13,856,096
_________________________________________________________________
None
compiled
Train on 50 samples, validate on 6 samples
Epoch 1/50
50/50 [==============================] - 20s - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 2/50
50/50 [==============================] - 16s - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 3/50
50/50 [==============================] - 16s - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 4/50
45/50 [==========================>...] - ETA: 1s - loss: 0.5111 - acc: 0.4889
Epoch 00003: reducing learning rate to 0.00020000000949949026.
50/50 [==============================] - 16s - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 5/50
50/50 [==============================] - 16s - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 6/50
45/50 [==========================>...] - ETA: 1s - loss: 0.5111 - acc: 0.4889
Epoch 00005: reducing learning rate to 4.0000001899898055e-05.
50/50 [==============================] - 16s - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 7/50
50/50 [==============================] - 16s - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 8/50
45/50 [==========================>...] - ETA: 1s - loss: 0.4889 - acc: 0.5111
Epoch 00007: reducing learning rate to 8.000000525498762e-06.
50/50 [==============================] - 16s - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 9/50
50/50 [==============================] - 16s - loss: 0.5000 - acc: 0.5000 - val_loss: 0.5000 - val_acc: 0.5000
Epoch 00008: early stopping
56/56 [==============================] - 12s    
['loss', 'acc']: [0.50000001516725334, 0.5000000127724239]

像往常一样,感谢任何帮助。

添加了输出......

https://

1 个答案:

答案 0 :(得分:0)

您的图层设置为trainable=False(除了最后一个密集图层)。因此你的CNN无法学习。此外,您无法仅对单个样本进行训练。

如果您在GPU切换到CPU或AWS时遇到性能问题或缩小图像大小。