深度学习 段错误(Segment Core/ Exit code 139)情况记录

在进行深度学习时,作者经常遇到神秘的段错误。通过对环境和代码的分析,发现这可能与库之间的兼容性问题有关,特别是tensorflow、numpy和scikit-learn。通过显式导入numpy解决了这个问题,揭示了库依赖可能导致的隐性冲突。这为理解深度学习中遇到的类似错误提供了思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

使用python搞深度学习经常会遇到抽风的段错误,但一直未找到原因在哪,都是玄学发生,玄学修复,现在终于发现了一些“线索”,发布此文用于记录积累导致段错误的原因及解决方法。

线索发现

>>> import tensorflow as tf
>>> tf.ones([3,4]).numpy()  # 测试tensorflow是否正确安装,成功执行并得到正确结果
>>> exit()  # 距离上一行之间无任何执行代码,按理说应该正常退出,但Segment Core(即段错误exit code 139)

注:个人的环境中几个主要的库是tensorflow-gpu 2.3.0 numpy scikit-learn

分析

深度学习往往涉及相关库(numpy、scikit-learn、tensorflow等)较多,并且每个库又有各种版本,我在很早前就了解到这些库有时看上去是顺利安装了,但实际上仍存在一定的“兼容”问题,比如曾遇到sklearn的import必须在tensorflow之前,否则就会报错退出-_-||。

通过短短3行代码分析,想到这样一点:虽然没有显式import numpy,但是tensorflow一定依赖numpy吧?(毕竟.numpy()都出来了= =)。那么是不是跟上面提到的情况类似?难道也是因为库之间的依赖兼容性的问题?于是我做了如下尝试:

>>> import numpy as np
>>> import tensorflow as tf
>>> tf.ones([3,4]).numpy()
>>> exit()  # exit with code 0,成功结束了!

果不其然,在显式import numpy之后段错误就消失了。似乎是这个原因,然

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值