Сборка Tensorflow из источника, не может включать в себя
Я строю TF из исходного кода и не имею проблем, включая contrib в python. При попытке получить доступ к этому модулю возникает следующая ошибка:
error: _single_image_random_dot_stereograms.so debug map object file '/private/var/tmp/_bazel_mattmurphy/7ec540cd2482edb7e06749c20652a791/execroot/org_tensorflow/bazel-out/darwin-dbg/bin/tensorflow/contrib/image/_objs/python/ops/_single_image_random_dot_stereograms.so/tensorflow/contrib/image/kernels/single_image_random_dot_stereograms_ops.o' has changed (actual time is 2018-04-23 12:26:04.000000000, debug map time is 2018-04-21 20:47:03.000000000) since this executable was linked, file will be ignored
error: _single_image_random_dot_stereograms.so debug map object file '/private/var/tmp/_bazel_mattmurphy/7ec540cd2482edb7e06749c20652a791/execroot/org_tensorflow/bazel-out/darwin-dbg/bin/tensorflow/contrib/image/_objs/python/ops/_single_image_random_dot_stereograms.so/tensorflow/contrib/image/ops/single_image_random_dot_stereograms_ops.o' has changed (actual time is 2018-04-23 12:26:05.000000000, debug map time is 2018-04-21 20:47:02.000000000) since this executable was linked, file will be ignored
Process 58138 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x48)
frame #0: 0x0000000131682290 _single_image_random_dot_stereograms.so`google::protobuf::internal::Mutex::Lock(this=0x0000000000000048) at common.cc:376
373 }
374
375 void Mutex::Lock() {
-> 376 int result = pthread_mutex_lock(&mInternal->mutex);
377 if (result != 0) {
378 GOOGLE_LOG(FATAL) << "pthread_mutex_lock: " << strerror(result);
379 }
Target 0: (python) stopped.
Похоже, что проблема связана с протоколом, но это было трудно диагностировать.
1 ответ
Я наблюдаю ту же проблему при компиляции на MacOS 10.13.4 с Xcode 9.3.
Проблема в том, что protobuf
статически связан в libtensorflow_framework.so
но и в _single_image_random_dot_stereograms.so
а также libforestprotos.so
, которые загружаются при contrib
импортируется.
Здесь актуальный protobuf
выпускать
В комментарии к этой проблеме говорится, что проблема возникает при компиляции с Xcode 8.3 или новее, поэтому я предполагаю, что официальный двоичный файл тензорного потока работает, потому что он построен с использованием более старой версии.
Как обходной путь, я локально удалил два случая "@protobuf_archive//:protobuf
" в /tensorflow/tensorflow/tensorflow/contrib/image/BUILD
а также /tensorflow/tensorflow/tensorflow/contrib/tensor_forest/BUILD
,
Похоже, это ничего не нарушает в моем случае использования локальных экспериментов на python.