首页 > 解决方案 > keras Sequential() 使内核崩溃

问题描述

只需使用 keras Sequential() 运行几行代码就会使 jupyter notebook 内核崩溃。首先是 GPU 内存达到了所有容量(无论是 3090 和 24 Gb)。然后我采取了一些预防措施,例如

config = tf.compat.v1.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.compat.v1.Session(config=config)

并且 VRAM 停止推动极限。但是内核仍然崩溃。这里的代码:

import numpy as np  
import pandas as pd  
from keras.models import Sequential
from keras.layers import LSTM,Dense
cl=np.random.rand(200).reshape(-1, 1)
def processData(data,lb):
    X,Y = [],[]
    for i in range(len(data)-lb-1):
        X.append(data[i:(i+lb),0])
        Y.append(data[(i+lb),0])
    return np.array(X),np.array(Y)
X,y = processData(cl,7)
X_train,X_test = X[:int(X.shape[0]*0.80)],X[int(X.shape[0]*0.80):]
y_train,y_test = y[:int(y.shape[0]*0.80)],y[int(y.shape[0]*0.80):]
model = Sequential()
model.add(LSTM(64,input_shape=(7,1)))

最后一行内核死了。我不知道是什么问题。我的 keras 和 tenserflow 版本:分别为 2.4.3 和 '2.5.0-dev20210312'。库达规格:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:32:27_Pacific_Daylight_Time_2019
Cuda compilation tools, release 10.2, V10.2.89

我猜是 3000x 卡以及它们与 Cuda 和 nn 库的兼容性问题。尽管如此,我对 yolov5 库没有任何问题。

标签: pythonkerassequential

解决方案


我尝试在 anaconda 提示符下运行具有相同代码的 .py 文件并得到“无法加载动态库 'cudart64_110.dll'; dlerror: cudart64_110.dll not found' 所以我卸载了 CUDA 10.2(这是使用 3080 卡的唯一方法)并安装 11.3(确实建议在某些地方作为 3000x 系列的唯一选择),这令人惊讶地适用于 3090。而且.py 和 JN 现在都运行没有错误或 VRAM 超出限制。所以对我来说解决方法是将CUDA更新到11.3版本


推荐阅读