Keras分段故障(核心转储)

时间:2017-03-16 05:22:21

标签: python python-2.7 theano keras

我正在尝试在Theano 0.8.2(python 2.7)上训练Keras 1.2.2上的卷积神经网络。我能够导入keras和theano而不会出错。

错误仅在运行以下代码后大约2-5分钟后发生。

#Prepare images etc.

model = Sequential()

model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1],
                        border_mode='valid',
                        input_shape=input_shape))
model.add(Activation('relu'))
model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1]))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=pool_size))
model.add(Dropout(0.25))

model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1]))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=pool_size))
model.add(Dropout(0.25))

model.add(Convolution2D(nb_filters * 2, kernel_size[0], kernel_size[1]))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=pool_size))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(128))
model.add(Dense(64))
model.add(Dense(nb_classes))
model.add(Activation('softmax'))

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

model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
          verbose=1, validation_data=(X_test, Y_test))

score = model.evaluate(X_test, Y_test, verbose=0)
print('Test score:', score[0])
print('Test accuracy:', score[1])

创建以下输出:

X_train shape: (984, 1, 1000, 1000)
984 train samples
246 test samples
Train on 984 samples, validate on 246 samples
Epoch 1/4
[1]+  Segmentation fault      (core dumped)

所以似乎模型已经编译并且培训已经开始。我之前能够用较小的图像训练模型(形状:(400,1,500,500)。可以改变训练图像的数量及其大小导致错误吗?我也尝试将Keras更新为2.0,将Theano更新为目前的开发版本,但它没有帮助。

有什么建议吗?

1 个答案:

答案 0 :(得分:-1)

如果错误地运行K.clearsession(),则可能会遇到分段错误。这是因为每个神经网络图都保存在默认会话中,当您清除会话时,该图将从内存中删除。将K.clearsession()放在代码的顶部很容易(如果使用jupyter,尤其是在代码顶部),因为它将清除内存中保存的所有图形。

如果您的代码中包含此代码,请尝试将其删除!祝你好运!