Как исправить "Non-OK-статус: не найдено: тип операции не зарегистрирован" NoOp "в двоичном режиме" в тензорном потоке - PullRequest
0 голосов
/ 30 апреля 2019

Я использую tenorflow r1.9 в Windows 10 / VisualStudio с чистым C ++ API. Я пытаюсь сохранить и перезагрузить обученную модель. Я нашел в https://github.com/rockzhuang/tensorflow/commit/fb6a6f4e3dd6e663a14b672ab5c616d968d62bc5#diff-a46c94d7dc93c6f7a3b632dc14e46479 пример того, как сохранить модель, поэтому я добавил все функции и ссылки в свой выпуск (поскольку в Windows 10 я не могу установить более раннюю версию, чем r1.9) Мне удалось скомпилировать и запустить программу с моим приложением, но теперь я получаю эту ошибку времени выполнения:

2019-04-30 09:08:55.571067: F D:\src\tensorflow\tensorflow\core\graph\graph.cc:287] Non-OK-status: status status: Not found: Op type not registered 'NoOp' in binary running on TBK-SW19. Make sure the Op and Kernel are registered in the binary running in this process. Note that if you are loading a saved graph which used ops from tf.contrib, accessing (e.g.) 'tf.contrib.resampler' should be done before importing the graph, as contrib ops are lazily registered when the module is first accessed.

Ошибка в конструкторе (graph.cc:287, AddNode - функция):

Graph::Graph(const OpRegistryInterface* ops)
    : ops_(ops, FunctionDefLibrary()),
      versions_(new VersionDef),
      arena_(8 << 10 /* 8kB */) {
  versions_->set_producer(TF_GRAPH_DEF_VERSION);
  versions_->set_min_consumer(TF_GRAPH_DEF_VERSION_MIN_CONSUMER);

  // Initialize the name interning table for assigned_device_name.
  device_names_.push_back("");
  DCHECK_EQ(0, InternDeviceName(""));

  // Source and sink have no endpoints, just control edges.
  NodeDef def;
  def.set_name("_SOURCE");
  def.set_op("NoOp");
  Status status;
  Node* source = AddNode(def, &status);
  TF_CHECK_OK(status);
  CHECK_EQ(source->id(), kSourceId);

  def.set_name("_SINK");
  Node* sink = AddNode(def, &status);
  TF_CHECK_OK(status);
  CHECK_EQ(sink->id(), kSinkId);

  AddControlEdge(source, sink);
}

Я ожидал бы проблемы со связыванием (не зарегистрированные ядра), но сообщение об ошибке (по крайней мере для меня) немного вводит в заблуждение.

1 Ответ

0 голосов
/ 02 мая 2019

В этом случае я могу ответить на свой вопрос. Во время сборки / настройки моей системы я пробовал много разных вещей, и (конечно же) я не отменил ни одного из этих тестов, которые приводят к этому сообщению об ошибке.

Particulary, я связан с

  • \ tensorflow \ вно \ CMake \ построить \ Release \ pywrap_tensorflow_internal_static.lib
  • \ tensorflow \ вно \ CMake \ построить \ Release \ pywrap_tensorflow_internal.lib

Я удалил эти библиотеки -> после перестроения, программа запускается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...