如何修复Keras中的“分段错误(堆芯倾倒”错误)

2024-09-30 04:39:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我和Keras有问题。基本上,当我试图用conv2d层拟合模型时,会出现以下错误“Segmentation fault(core dumped)”。在

我的代码在CPU上工作。它也可以在没有任何conv2d层的情况下工作(即使对于我的用例来说它是无效的)。我已经安装了cuda、cudnn和tensorflow。我试过重新安装keras和tensorflow。在

代码:

def model_build():
    model = Sequential()
    model.add(Conv2D(input_shape = (env_size()[0], env_size()[1], 1), filters=4, kernel_size=(3,3), strides=1, activation=swisher))
    model.add(Conv2D(filters=4, kernel_size=(5,5), strides=1, activation=swisher))
    model.add(Conv2D(filters=4, kernel_size=(5,5), strides=1, activation=swisher))
    model.add(Conv2D(filters=4, kernel_size=(5,5), strides=1, activation=swisher))
    model.add(Flatten())
    model.add(Dense(128, activation='softmax'))
    model.add(Dense(4, activation='softmax'))
    return model

if __name__ == '__main__':
    y = model_build()
    y.compile(loss = "mean_squared_error", optimizer = 'adam')
    y.fit(x=env(), y = np.array([[0,0,0,0]])

错误:

^{pr2}$

编辑:

独立的例子。在

import numpy as np
import keras

model = keras.models.Sequential() #Sequential model type.
model.add(keras.layers.Conv2D(filters=1, kernel_size=(3,3), strides = 1, activation="sigmoid")) #Convolutional layer.
model.add(keras.layers.Flatten()) #Flatten layer.
model.add(keras.layers.Dense(4)) #Dense layer of 4 units.
model.compile(loss='mean_squared_error', optimizer='adam') #compile model.
y = np.random.rand(1,4) #Random expected output
x = np.random.rand(1, 38, 21, 1) # Random input.
model.fit(x, y) #And fit...

编辑2:

Keras版本:“v2.1.6-tf”

Tensorflow GPU版本:“v1.12”

Python版本:“v3.5.2”

CUDA版本:“v9.0.176”

CUDNN版本:'v7.2.1.38-1+cuda9.0

Ubuntu版本:“v16.04”


Tags: 版本envaddsizemodelnpactivationkernel
2条回答

你的GPU似乎没有足够的内存。你的型号似乎不太大,所以我猜问题出在这一行:

y.fit(x=env(), y = np.array([[0,0,0,0]])

env()的输出可能太大,无法由GPU内存处理。在

你的MWE对我来说很好(如果我将, input_shape=(38, 21, 1)添加到第一个卷积层):

import numpy as np
import keras

model = keras.models.Sequential() #Sequential model type.
model.add(keras.layers.Conv2D(filters=1, kernel_size=(3,3), strides = 1, activation="sigmoid", input_shape=(38, 21, 1))) #Convolutional layer.
model.add(keras.layers.Flatten()) #Flatten layer.
model.add(keras.layers.Dense(4)) #Dense layer of 4 units.
model.compile(loss='mean_squared_error', optimizer='adam') #compile model.
y = np.random.rand(2, 4) #Random expected output
x = np.random.rand(2, 38, 21, 1) # Random input.
model.fit(x, y)

这意味着您的问题必须来自您的系统或安装。在

查看compatibility chart of tensorflow可以看出python、tensorflow和CUDA版本应该是兼容的。在

对于您的配置,建议使用cuDNN版本7.0.x。 您使用的cuDNN版本7.2可能不兼容。 尝试安装/使用cudn7.0.x。在

相关问题 更多 >

    热门问题