2016-03-03 3 views
1

Я создаю простую сеть FeedForward для задачи классификации. Я использую keras на вершине theano на AWS g2.2xбольшой экземпляр. Моя сеть конфигурации выглядит следующим образом:Ошибка памяти с использованием Theano на AWS GPU

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 это видеопамяти 4 Гб, 16 Гб оперативной памяти машины. Если я половину значения «dimof_middle» до 8196. все работает нормально.

1073741824 байт ~ 1 Гб, который хорошо в памяти GPU

Что не так я делаю? Любая помощь приветствуется!

ответ

1

Сообщение об ошибке не относится к общему количеству выделенной памяти. Речь идет о сумме, которую она пыталась выделить при неудачной попытке. Theano выделяет и освобождает память во время вычисления.

Вы можете отключить CNMeM и использовать nvidia-smi для определения реального распределения.

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

Смежные вопросы