Python 运行导入tensorflow后出现非法指令(内核转储)
我创建了一个全新的虚拟环境:Python 运行导入tensorflow后出现非法指令(内核转储),python,tensorflow,pip,virtualenv,Python,Tensorflow,Pip,Virtualenv,我创建了一个全新的虚拟环境:virtualenv-p python2测试\u venv/ 和已安装的tensorflow:pip安装--升级--无缓存目录tensorflow import tensorflow给我非法指令(内核转储) 请帮助我了解发生了什么,以及如何修复它。多谢各位 CPU信息: 使用gdb获得的Stacktrace: std::pair std::_哈希表::_M_位置(std::integral_常量,std::pair&)() 来自/media/gerry/hdd_1/w
virtualenv-p python2测试\u venv/
和已安装的tensorflow:pip安装--升级--无缓存目录tensorflow
import tensorflow
给我非法指令(内核转储)
请帮助我了解发生了什么,以及如何修复它。多谢各位
CPU信息:
使用gdb获得的Stacktrace:
std::pair std::_哈希表::_M_位置(std::integral_常量,std::pair&)()
来自/media/gerry/hdd_1/ws_hdd/test_venv/local/lib/python2.7/site packages/tensorflow/python/。/libtensorflow_framework.so
#1 0x00007fffe5795735位于/media/gerry/hdd\u 1/ws\u hdd/test\venv/local/lib/python2.7/site packages/tensorflow/python2.7/libtensorflow/framework.so
#tensorflow中的2 0x00007fffe5770a7c::variant\u op\u registry\u fn\u registration::UnaryVariantDecoreRegistration::UnaryVariantDecoreRegistration(std::string const&)()
来自/media/gerry/hdd_1/ws_hdd/test_venv/local/lib/python2.7/site packages/tensorflow/python/。/libtensorflow_framework.so
#3 0x00007fffe56ea165 in_GLOBAL_sub_I_tensor.cc()
来自/media/gerry/hdd_1/ws_hdd/test_venv/local/lib/python2.7/site packages/tensorflow/python/。/libtensorflow_framework.so
#调用_init(l=,argc)中的4 0x00007ffff7de76ba=argc@entry=2,argv=argv@entry=0x7FFFFFD5C8,环境=env@entry=0xa7b4d0)
在dl初始c时:72
#5 0x00007ffff7de77cb在dl init.c:30处的调用_init(env=0xa7b4d0,argv=0x7FFFFFD5C8,argc=2,l=)中
#6_dl_init(main_map=main_map@entry=0xa11920,argc=2,argv=0x7fffffd5c8,env=0xa7b4d0)在dl init.c:120处
#7 0X00007FF7DEC8E2在dl_open_worker(a)中=a@entry=0x7FFFFFB5C0)在dl打开时。c:575
#8 0x00007FF7DE7564输入数据捕获错误(对象名称=objname@entry=0x7FFFFFB5B0,错误字符串=errstring@entry=0x7FFFFFB5B8,
马洛西德=mallocedp@entry=0x7FFFFFB5AF,运行=operate@entry=0x7ffff7dec4d0,参数=args@entry=0x7FFFFFB5C0)
在dl错误处。c:187
#9 0x00007ffff7debda9处于打开状态(
file=0x7fffea7cbc34“/media/gerry/hdd_1/ws_hdd/test_venv/local/lib/python2.7/site packages/tensorflow/python/_pywrap_tensorflow_internal.so”,mode=-2147483646,调用者_dlopen=0x51ad19,nsid=-2,argc=,argv=,env=0xa7b4d0)
在dl开放时。c:660
#10 0x00007ffff75ecf09在dlopen_doit(a)中=a@entry=0x7FFFFFB7F0)在dlopen处。c:66
#11 0x00007ffff7de7564输入捕获错误(objname=0x9b1870,errstring=0x9b1878,mallocedp=0x9b1868,operate=0x7ffff75eceb0,
args=0x7fffffffb7f0)在dl错误处。c:187
#12 0x00007ffff75ed571处于错误运行状态(运行=operate@entry=0x7ffff75eceb0,参数=args@entry=0x7FFFFFB7F0)在D处错误c:163
#13 0x00007ffff75ecfa1位于dlopen的uu dlopen(文件=,模式=)中。c:87
#14 0x000000000051ad19,在_PyImport_GetDynLoadFunc()中
#加载动态模块()中的15 0x000000000051a8e4
#16 0x00000000005b7b1b英寸??()
#PyEval_EvalFrameEx()中的17 0x00000000004bc3fa
#PyEval_EvalFrameEx()中的18 0x00000000004c136f
#PyEval_evalcodex()中的19 0x00000000004b9ab6
#PyEval_EvalCode()中的20 0x00000000004b97a6
#PyImport_ExecCodeModuleEx()中的21 0x00000000004b96df
#22 0x00000000004b2b06英寸??()
#230x00000000004A4AE1英寸??()
我会使用旧版本。看起来您的CPU不支持AVX指令 引用他们的话 您至少有两种选择:
考虑到您对差异的关注,您将错过新功能,但大多数基本功能和文档并没有那么大的不同。不幸的是,1.6给了许多人同样的错误。在使用旧Core2 CPU的机器上安装1.7后,我收到了它。我已经决定使用1.5,因为我无法在配备最新处理器的机器中安装大图形卡 不幸的是,tensorflow团队对此似乎没有什么兴趣 根据您的情况,有一些围绕web的社区构建可能会起作用:
$ grep flags -m1 /proc/cpuinfo | cut -d ":" -f 2 | tr '[:upper:]' '[:lower:]' | { read FLAGS; OPT="-march=native"; for flag in $FLAGS; do case "$flag" in "sse4_1" | "sse4_2" | "ssse3" | "fma" | "cx16" | "popcnt" | "avx" | "avx2") OPT+=" -m$flag";; esac; done; MODOPT=${OPT//_/\.}; echo "$MODOPT"; }
如果通过执行命令,-mavx
和/或-mavx2
未显示,则可以确认AVX支持缺失,并且应使用输出中显示的其他优化标志完成源构建
在中,将更详细地讨论此问题的常见根本原因,作为附加参考提供。我有一个类似的问题,结果表明,这是由于我的CPU稍旧,并且在1.6+版本的TensorFlow中无法正常工作 注意:从TensorFlow 1.6开始,二进制文件使用AVX指令,这些指令可能不会在较旧的CPU上运行 因此,如前所述,您可以安装TensorFlow 1.5,或者如果您仍然需要TF的最新版本,则需要使用conda来安装它(这两种解决方案都与我一起使用) 对于conda安装:
conda create -n tensorflow
conda install tensorflow-gpu -n tensorflow
以下步骤对我很有效。 (拆下现有的张紧器流量) 内部康达虚拟环境 步骤1:使用pip安装keras应用程序
步骤2:安装tensorflow(无需降级)我会使用docker将tf降级到以前的版本。您可以在dockerhub上找到不同的标签 例如:
docker run --gpus all -it tensorflow/tensorflow:2.2.1-gpu bash
可能没有关系
$ grep flags -m1 /proc/cpuinfo | cut -d ":" -f 2 | tr '[:upper:]' '[:lower:]' | { read FLAGS; OPT="-march=native"; for flag in $FLAGS; do case "$flag" in "sse4_1" | "sse4_2" | "ssse3" | "fma" | "cx16" | "popcnt" | "avx" | "avx2") OPT+=" -m$flag";; esac; done; MODOPT=${OPT//_/\.}; echo "$MODOPT"; }
conda create -n tensorflow
conda install tensorflow-gpu -n tensorflow
docker run --gpus all -it tensorflow/tensorflow:2.2.1-gpu bash
pip3 uninstall numpy
pip3 uninstall pandas
pip3 uninstall protobuf
pip3 uninstall python-dateutil
pip3 install numpy==1.13.3
pip3 install pandas==0.22.0
pip3 install protobuf==3.0.0