【发布时间】:2017-08-07 03:27:47
【问题描述】:
我正在尝试在 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 更新到当前的开发版本,但没有帮助。
有什么建议吗?
【问题讨论】:
-
尝试使用
train_on_batch(),让我知道您是否可以完成单个批次的训练。其次,减少批量大小(必要时减少到 1)并查看分段错误是否消失(虽然不太可能)。 -
您可以更新您的 keras 并重试吗? blog.keras.io/introducing-keras-2.html 使用 pip install keras --upgrade。你能检查你的内存使用情况吗?它是否超出了您的总可用内存?尝试运行 gdb python yourprogram.py 然后写
backtrace. -
就像我说的,我之前更新了 Keras 和 Theano,但没有帮助。不幸的是,我无法安装/运行 gpd,因为我不是 root,让我们的管理员安装东西需要很长时间。 :D
-
另外,当我通过top命令检查内存消耗时,该过程大约需要20%,所以应该不是内存问题。
-
我将图像的大小从 1000x1000 更改为 500x500。它现在开始训练第一批。虽然我是在 200GB RAM 的机器上运行它,但目前看来是内存问题。
标签: python python-2.7 theano keras