我使用Keras构建了一个基于CNN结构的自动编码器模型,在完成训练过程后,我的笔记本电脑有64GB内存,但我注意到至少1/3的内存仍然被占用,而GPU内存也是如此.我没有找到一个释放内存的好方法,我只能通过关闭Anaconda Prompt命令窗口和jupyter笔记本来释放内存.我不确定是否有人有好的建议.谢谢!
我正在尝试对使用 GPU 扩展的 Tensorflow 2.0 编写的卷积神经网络进行一些超参数调整。
我的系统设置是:
我的神经网络有 75.572.574 个参数,我正在 3777 个样本上对其进行训练。在一次运行中,我训练 CNN 没有任何问题。
下一步,我想调整 CNN 的两个超参数。为此,我创建了一个 for 循环(迭代 20 个步骤),在其中每次创建新模型时都会构建和编译,并在每次循环迭代时更改超参数。代码要点(这不是MWE)如下
import tensorflow as tf
from tensorflow import keras
def build_model(input_shape, output_shape, lr=0.01, dropout=0, summary=True):
model = keras.models.Sequential(name="CNN")
model.add(keras.layers.Conv2D(32, (7, 7), activation='relu', input_shape=input_shape, padding="same"))
model.add(keras.layers.BatchNormalization())
model.add(keras.layers.MaxPooling2D((2, 2)))
model.add(keras.layers.Dropout(dropout))
model.add(keras.layers.Conv2D(128, (3, 3), activation='relu', padding="same"))
model.add(keras.layers.BatchNormalization())
model.add(keras.layers.MaxPooling2D((2, 2)))
model.add(keras.layers.Dropout(dropout))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(1024, activation='relu'))
model.add(keras.layers.BatchNormalization())
model.add(keras.layers.Dense(output_shape, activation='linear'))
model.build()
model.compile(optimizer=keras.optimizers.Adam(learning_rate=lr),
loss="mse",
metrics=[RMSE])
if …Run Code Online (Sandbox Code Playgroud)