Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 运行导入tensorflow后出现非法指令(内核转储)_Python_Tensorflow_Pip_Virtualenv - Fatal编程技术网

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指令

引用他们的话

您至少有两种选择:

  • 使用tensorflow 1.5或更高版本

  • 源代码构建


  • 考虑到您对差异的关注,您将错过新功能,但大多数基本功能和文档并没有那么大的不同。

    不幸的是,1.6给了许多人同样的错误。在使用旧Core2 CPU的机器上安装1.7后,我收到了它。我已经决定使用1.5,因为我无法在配备最新处理器的机器中安装大图形卡

    不幸的是,tensorflow团队对此似乎没有什么兴趣

    根据您的情况,有一些围绕web的社区构建可能会起作用:


    如公认答案中所述,可以通过安装旧版本的TensorFlow(v1.5)或从源代码处构建来修复此问题。在两者之间,尽管付出了额外的努力,但从源头开始建设可以说是首选路线。假设二进制文件包含TensorFlow的最新组件

    解释如何从源代码构建TensorFlow,并针对较旧的CPU进行优化。关键在于检测CPU标志,并在配置构建时启用所有CPU标志进行优化

    以下命令用于检测常见的CPU优化标志:

    $ 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