相关疑难解决方法(0)

Keras:完成训练后释放记忆

我使用Keras构建了一个基于CNN结构的自动编码器模型,在完成训练过程后,我的笔记本电脑有64GB内存,但我注意到至少1/3的内存仍然被占用,而GPU内存也是如此.我没有找到一个释放内存的好方法,我只能通过关闭Anaconda Prompt命令窗口和jupyter笔记本来释放内存.我不确定是否有人有好的建议.谢谢!

python keras

7
推荐指数
1
解决办法
3631
查看次数

Tensorflow2.0:GPU 在超参数调整循环期间内存不足

我正在尝试对使用 GPU 扩展的 Tensorflow 2.0 编写的卷积神经网络进行一些超参数调整。

我的系统设置是:

  • Windows 10 64 位
  • GeForce RTX2070,8GB
  • 张量流 2.0-测试版
  • CUDA 10.0正确安装(我希望deviceQuery.exe和bandwidthTest.exe顺利通过)

我的神经网络有 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)

python out-of-memory keras tensorflow2.0

3
推荐指数
1
解决办法
4722
查看次数

标签 统计

keras ×2

python ×2

out-of-memory ×1

tensorflow2.0 ×1