我正在运行here中的教程示例cifar10_cnn.py。
以下是测试的环境/配置:
该计划花了大约一天半的时间来完成200个时代。下图显示了标题和最后三个时期。
使用Theano后端
X_train形状:(50000L,32L,32L,3L)......
大纪元198/200 50000/50000 [==============================] - 639s - 损失:1.7894 - acc:0.3497 - val_loss:1.5930 - val_acc:0.3968
时代199/200 50000/50000 [==============================] - 617s - 损失:1.8111 - acc:0.3446 - val_loss:1.6960 - val_acc:0.3824
Epoch 200/200 50000/50000 [==============================] - 612s - 损失:1.8005 - acc:0.3497 - val_loss:1.6164 - val_acc:0.4041
我在这里有两个问题:
感谢您提出任何意见。
答案 0 :(得分:1)
这可能不是整个主题的答案,但为了获得正确的图像形状,您应该只验证图像通道是形状的第一个还是最后一个项目。考虑到Keras 2,你可以通过以下方式完成:
from keras import backend as K
def image_input_shape(img_width, img_height):
if K.image_data_format() == 'channels_first':
input_shape = (3, img_width, img_height)
else:
input_shape = (img_width, img_height, 3)
return input_shape
只需传递图像的宽度和高度,它就会返回正确的形状排序。
从那里你可以丢弃或验证你对“奇怪”形状的假设。
答案 1 :(得分:0)
我发布的问题可能只与Keras 1.2.0有关。由于Keras升级到2.x并且官方文件cifar10_cnn.py也发生了变化,我发布的问题可能不会发生在新的Keras中。因此,我想结束这个问题。另外,还有一个信息是set_image_dim_ordering将创建一个不同的网络架构。以下输出显示与此功能的区别,并且没有此功能。
Using Theano backend.
with K.set_image_dim_ordering('th')
X_train shape: (50000L, 3L, 32L, 32L)
50000 train samples
10000 test samples
InputLayer (None, 3L, 32L, 32L)
Convolution2D (None, 32, 32L, 32L)
Relu (None, 32, 32L, 32L)
Convolution2D (None, 32, 30L, 30L)
Relu (None, 32, 30L, 30L)
MaxPooling2D (None, 32, 15L, 15L)
Dropout (None, 32, 15L, 15L)
Convolution2D (None, 64, 15L, 15L)
Relu (None, 64, 15L, 15L)
Convolution2D (None, 64, 13L, 13L)
Relu (None, 64, 13L, 13L)
MaxPooling2D (None, 64, 6L, 6L)
Dropout (None, 64, 6L, 6L)
Flatten (None, 2304)
Dense (None, 512)
Relu (None, 512)
Dropout (None, 512)
Dense (None, 10)
Softmax (None, 10)

Using Theano backend.
without K.set_image_dim_ordering('th')
X_train shape: (50000L, 32L, 32L, 3L)
50000 train samples
10000 test samples
InputLayer (None, 32L, 32L, 3L)
Convolution2D (None, 32L, 32L, 32)
Relu (None, 32L, 32L, 32)
Convolution2D (None, 30L, 30L, 32)
Relu (None, 30L, 30L, 32)
MaxPooling2D (None, 15L, 15L, 32)
Dropout (None, 15L, 15L, 32)
Convolution2D (None, 15L, 15L, 64)
Relu (None, 15L, 15L, 64)
Convolution2D (None, 13L, 13L, 64)
Relu (None, 13L, 13L, 64)
MaxPooling2D (None, 6L, 6L, 64)
Dropout (None, 6L, 6L, 64)
Flatten (None, 2304)
Dense (None, 512)
Relu (None, 512)
Dropout (None, 512)
Dense (None, 10)
Softmax (None, 10)