微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

keras Sequential() 使内核崩溃

如何解决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' 分别。 Cuda 规范:

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 库没有任何问题。

解决方法

我尝试在 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版本

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。