我可以在训练完模型后清除记忆吗



我编写了一个脚本,从一些API获取数据,并对所获得的数据进行训练,模型训练完美,甚至可以很准确地预测最终值,但当我达到型号6或更高时,我的脚本崩溃,我必须重新打开IDE。我有一个勇敢的浏览器在youtube上播放音乐,它也会崩溃,每次我都会收到不同的错误,说内存不够,但我正在一个非常好的平台上训练模型(规格CPU:i5 7400 GPU:GTX 1050 2GB RAM:20GB(。

下面是我的型号

model = Sequential()
model.add(LSTM(units = 100, return_sequences = True, input_shape = (X_train.shape[1], 1)))
model.add(Dropout(0.2))
model.add(LSTM(units=1000 , return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=1000 , return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=100))
model.add(Dropout(0.2))
model.add(Dense(units=1 ))
model.compile(optimizer='adam', loss='mean_squared_error' , metrics=[tf.keras.metrics.RootMeanSquaredError()])

我在IDE控制台部分中出现过一次错误

MemoryError:无法为形状为的数组分配15.3 MiB(10004000(和数据类型float32

我收到的另一个弹出通知错误

DirectX功能"设备->CreateBuffer(&dxDesc、&resourceData,&缓冲区->m_buffer(";失败,E_OUTOFMEMORY(Direct3D无法分配足够的内存来完成调用"(GPU:NVIDIA GeForceGTX 1050〃;,驱动器45148

我让Nvidia检查器在没有超频的情况下运行,它也会崩溃并输出一个错误,基本上说明它也在没有任何其他有用信息的情况下崩溃。

我能做些什么来清除记忆或解决这次撞车事故吗?

减少批量大小。现在,您有一个每个4字节的2D数组1000x4000,导致每个输入16兆字节。GPU上有2GB RAM,您可以填充最大批量大小的128

编辑:我想我误解了你的问题。要清除GPU,您需要使用tf.keras.backend.clear_session

最新更新