【发布时间】:2016-05-17 14:07:10
【问题描述】:
我正在尝试在 Keras 中构建一个非常大的模型,其中包含 3 个 LSTM 层,每个层有 4096 个隐藏单元。以前我每层有 1024 个隐藏单元。该网络的编译时间是合理的。每层将在大约 1 到 2 秒内添加。现在该模型每层有 4096 个隐藏单元,每层的添加时间约为 5 分钟。我认为奇怪的是,性能缓慢发生在对model.add(LSTM...) 的三个调用期间,而不是在model.compile(...) 期间。我需要使用更大的网络,但是这个等待时间有点难以忍受。这对培训来说并不是那么糟糕,因为这将花费更长的时间,但我不想每次我想生成测试输出时都坐下来。为什么添加需要这么长时间? add 不只是定义层,所有时间都应该花在编译功能上吗?还有什么我可以做的吗?
print('Building Model')
model = Sequential()
model.add(LSTM(lstm_size, batch_input_shape = (batch_size, 1, len(bytes_set)), stateful = True, return_sequences = True, consume_less = consume_less))
model.add(Dropout(0.5))
print('Added LSTM_1')
model.add(LSTM(lstm_size, stateful = True, return_sequences = True, consume_less = consume_less))
model.add(Dropout(0.5))
print('Added LSTM_2')
model.add(LSTM(lstm_size, stateful = True, return_sequences = False, consume_less = consume_less))
model.add(Dropout(0.5))
print('Added LSTM_3')
model.add(Dense(len(bytes_set), activation = 'softmax'))
print('Compiling Model')
model.compile(optimizer = SGD(lr = 0.3, momentum = 0.9, decay = 1e-5, nesterov = True),
loss = 'categorical_crossentropy',
metrics = ['accuracy'])
这是我的 .theanorc
[global]
floatX = float32
mode = FAST_RUN
device = gpu
exception_verbosity = high
[nvcc]
fastmath = 1
这是我要求的模型摘要。不幸的是,过去几个小时我一直在运行这个新版本,所以我不想做任何新的改变。该模型有 4 个 LSTM 层,每个层大小为 1500。
Layer (type) Output Shape Param # Connected to
====================================================================================================
lstm_1 (LSTM) (64, 1, 1500) 9774000 lstm_input_1[0][0]
____________________________________________________________________________________________________
dropout_1 (Dropout) (64, 1, 1500) 0 lstm_1[0][0]
____________________________________________________________________________________________________
lstm_2 (LSTM) (64, 1, 1500) 18006000 dropout_1[0][0]
____________________________________________________________________________________________________
dropout_2 (Dropout) (64, 1, 1500) 0 lstm_2[0][0]
____________________________________________________________________________________________________
lstm_3 (LSTM) (64, 1, 1500) 18006000 dropout_2[0][0]
____________________________________________________________________________________________________
dropout_3 (Dropout) (64, 1, 1500) 0 lstm_3[0][0]
____________________________________________________________________________________________________
lstm_4 (LSTM) (64, 1500) 18006000 dropout_3[0][0]
____________________________________________________________________________________________________
dropout_4 (Dropout) (64, 1500) 0 lstm_4[0][0]
____________________________________________________________________________________________________
dense_1 (Dense) (64, 128) 192128 dropout_4[0][0]
====================================================================================================
Total params: 63984128
____________________________________________________________________________________________________
【问题讨论】:
标签: python neural-network theano keras