训练模型后可以清除记忆吗?

时间:2020-07-22 07:23:22

标签: python tensorflow

我写了一个脚本来从一些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 (1000、4000)和数据类型float32

另一个错误,我是弹出式通知

DirectX函数“ device-> CreateBuffer(&dxDesc,&resourceData, &buffer-> m_buffer)“失败,出现E_OUTOFMEMORY(” Direct3D无法 分配足够的内存以完成通话。“)GPU:NVIDIA GeForce GTX 1050“,驱动程序45148

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

我有什么办法可以清除内存或在此崩溃附近进行任何工作?

1 个答案:

答案 0 :(得分:1)

减小批次大小。现在,您有一个二维数组1000x4000,每个数组4个字节,每个输入16兆字节。在GPU上拥有2GB RAM的情况下,您可以填充的最大批处理大小为128

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