1

我正在为分类任务构建一个简单的前馈网络。我在 AWS g2.2xlarge 实例上的 theano 上使用 keras。我的网络配置如下:

batch_size = 32
nb_epoch = 50
dimof_input = 8100
dimof_middle = 16384
dimof_end = 16384
dropout = 0.2
dimof_output = 3

print('Build model...')

model = Sequential()
model.add(Dense(dimof_middle, input_shape=(dimof_input,)))
model.add(Activation('relu'))
model.add(Dropout(0.2))

model.add(Dense(dimof_end))
model.add(Activation('relu'))
model.add(Dropout(0.2))

#model.add(Dense(dimof_output))
#model.add(Activation('sigmoid'))
#model.add(Dense(dimof_output, activation='softmax'))

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

model.compile(loss='categorical_crossentropy', optimizer='adam')

当我编译模型时,我得到 MemoryError

MemoryError: ('Error allocating 1073741824 bytes of device memory (CNMEM_STATUS_OUT_OF_MEMORY).', "you might consider using 'theano.shared(..., borrow=True)'")

在 AWS 中,这是一台 4GB 显存、16GB 内存的机器。 如果我将 'dimof_middle' 的值减半到 8196。一切运行良好。

1073741824 字节 ~ 1 GB,完全在 GPU 内存中

我在做什么错?任何帮助将非常感激!

4

1 回答 1

1

错误消息与分配的内存总量无关。它与失败时尝试分配的数量有关。Theano 在计算过程中分配和释放内存。

您可以禁用 CNMeM 并使用 nvidia-smi 找出实际分配情况。

http://deeplearning.net/software/theano/library/config.html#envvar-THEANORC

于 2016-03-04T09:42:59.037 回答