tutorial - python import tensorflow




Istruzione non valida(core dumped) dopo aver eseguito l'importazione di tensorflow (3)

C'è un problema su github a riguardo, sfortunatamente non sembra aver avuto molto interesse dal team di tensorflow.

Esistono alcune build di community sul Web che potrebbero funzionare a seconda della situazione:

Ho creato un nuovo ambiente virtualenv -p python2 test_venv/ : virtualenv -p python2 test_venv/ E installato tensorflow: pip install --upgrade --no-cache-dir tensorflow

import tensorflow mi dà Illegal instruction (core dumped)

Per favore aiutami a capire cosa sta succedendo e come posso risolverlo. Grazie.

Informazioni sulla CPU:

-cpu
          description: CPU
          product: Intel(R) Core(TM) i3 CPU       M 330  @ 2.13GHz
          bus info: [email protected]
          version: CPU Version
          capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm tpr_shadow vnmi flexpriority ept vpid dtherm arat cpufreq

Stacktrace ottenuto con gdb:

#0  0x00007fffe5793880 in std::pair<std::__detail::_Node_iterator<std::pair<tensorflow::StringPiece const, std::function<bool (tensorflow::Variant*)> >, false, true>, bool> std::_Hashtable<tensorflow::StringPiece, std::pair<tensorflow::StringPiece const, std::function<bool (tensorflow::Variant*)> >, std::allocator<std::pair<tensorflow::StringPiece const, std::function<bool (tensorflow::Variant*)> > >, std::__detail::_Select1st, std::equal_to<tensorflow::StringPiece>, tensorflow::StringPieceHasher, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_emplace<std::pair<tensorflow::StringPiece, std::function<bool (tensorflow::Variant*)> > >(std::integral_constant<bool, true>, std::pair<tensorflow::StringPiece, std::function<bool (tensorflow::Variant*)> >&&) ()
   from /media/gerry/hdd_1/ws_hdd/test_venv/local/lib/python2.7/site-packages/tensorflow/python/../libtensorflow_framework.so
#1  0x00007fffe5795735 in tensorflow::UnaryVariantOpRegistry::RegisterDecodeFn(std::string const&, std::function<bool (tensorflow::Variant*)> const&) () from /media/gerry/hdd_1/ws_hdd/test_venv/local/lib/python2.7/site-packages/tensorflow/python/../libtensorflow_framework.so
#2  0x00007fffe5770a7c in tensorflow::variant_op_registry_fn_registration::UnaryVariantDecodeRegistration<tensorflow::Tensor>::UnaryVariantDecodeRegistration(std::string const&) ()
   from /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 ()
   from /media/gerry/hdd_1/ws_hdd/test_venv/local/lib/python2.7/site-packages/tensorflow/python/../libtensorflow_framework.so
#4  0x00007ffff7de76ba in call_init (l=<optimized out>, [email protected]=2, [email protected]=0x7fffffffd5c8, [email protected]=0xa7b4d0)
    at dl-init.c:72
#5  0x00007ffff7de77cb in call_init (env=0xa7b4d0, argv=0x7fffffffd5c8, argc=2, l=<optimized out>) at dl-init.c:30
#6  _dl_init ([email protected]=0xa11920, argc=2, argv=0x7fffffffd5c8, env=0xa7b4d0) at dl-init.c:120
#7  0x00007ffff7dec8e2 in dl_open_worker ([email protected]=0x7fffffffb5c0) at dl-open.c:575
#8  0x00007ffff7de7564 in _dl_catch_error ([email protected]=0x7fffffffb5b0, [email protected]=0x7fffffffb5b8, 
    mallocedp=[email protected]=0x7fffffffb5af, operate=[email protected]=0x7ffff7dec4d0 <dl_open_worker>, args=[email protected]=0x7fffffffb5c0)
    at dl-error.c:187
#9  0x00007ffff7debda9 in _dl_open (
    file=0x7fffea7cbc34 "/media/gerry/hdd_1/ws_hdd/test_venv/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so", mode=-2147483646, caller_dlopen=0x51ad19 <_PyImport_GetDynLoadFunc+233>, nsid=-2, argc=<optimized out>, argv=<optimized out>, env=0xa7b4d0)
    at dl-open.c:660
#10 0x00007ffff75ecf09 in dlopen_doit ([email protected]=0x7fffffffb7f0) at dlopen.c:66
#11 0x00007ffff7de7564 in _dl_catch_error (objname=0x9b1870, errstring=0x9b1878, mallocedp=0x9b1868, operate=0x7ffff75eceb0 <dlopen_doit>, 
    args=0x7fffffffb7f0) at dl-error.c:187
#12 0x00007ffff75ed571 in _dlerror_run ([email protected]=0x7ffff75eceb0 <dlopen_doit>, [email protected]=0x7fffffffb7f0) at dlerror.c:163
#13 0x00007ffff75ecfa1 in __dlopen (file=<optimized out>, mode=<optimized out>) at dlopen.c:87
#14 0x000000000051ad19 in _PyImport_GetDynLoadFunc ()
#15 0x000000000051a8e4 in _PyImport_LoadDynamicModule ()
#16 0x00000000005b7b1b in ?? ()
#17 0x00000000004bc3fa in PyEval_EvalFrameEx ()
#18 0x00000000004c136f in PyEval_EvalFrameEx ()
#19 0x00000000004b9ab6 in PyEval_EvalCodeEx ()
#20 0x00000000004b97a6 in PyEval_EvalCode ()
#21 0x00000000004b96df in PyImport_ExecCodeModuleEx ()
#22 0x00000000004b2b06 in ?? ()
#23 0x00000000004a4ae1 in ?? ()

Come spiegato nella risposta accettata, questo problema può essere risolto installando una versione precedente di TensorFlow (v1.5) o costruendo dal sorgente. Tra i due, costruire dalla fonte è probabilmente una via preferenziale nonostante lo sforzo supplementare. Concesso che il file binario contenga i componenti più aggiornati di TensorFlow.

Questo articolo spiega come creare TensorFlow dai sorgenti e ottimizzare per la CPU precedente. La chiave è nel rilevare i flag della CPU e abilitare tutti i flag della CPU per l'ottimizzazione durante la configurazione della build.

Il seguente comando viene utilizzato per rilevare i flag di ottimizzazione della CPU comuni:

$ 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"; }

Se eseguendo il comando, -mavx e / o -mavx2 non vengono visualizzati, è possibile confermare che il supporto AVX è mancante e che la compilazione dell'origine deve essere eseguita con altri flag di ottimizzazione visualizzati nell'output.

In un articolo correlato , la causa principale comune di questo problema è discussa in maggiori dettagli, che viene fornita come riferimento aggiuntivo.


Vorrei usare la versione precedente. Sembra che la tua CPU non supporti le istruzioni AVX.

Citando dalla loro pagina di rilascio

Breaking Changes
Prebuilt binaries are now built against CUDA 9.0 and cuDNN 7.
Prebuilt binaries will use AVX instructions. This may break TF on older CPUs.

Hai almeno due opzioni:

  1. Utilizzare tensorflow 1.5 o precedente

  2. Costruisci dalla fonte

Per quanto riguarda la tua preoccupazione per le differenze, perderai le nuove funzionalità, ma la maggior parte delle funzioni e delle documentazioni di base non sono così diverse.





virtualenv