Tensorflow / Keras: ошибка при расчете выходного промежуточного слоя - PullRequest
1 голос
/ 02 марта 2020

У меня есть сеть network, которая уже обучена и написана с tensorflow. На более позднем этапе моих вычислений я хочу predict выходные данные промежуточного уровня указанной сети. Для этого я следовал инструкциям Keras FAQ .

Мой код для создания промежуточного слоя выглядит следующим образом:

intermediate_layer = tf.keras.Model(inputs=network.input,
                                    outputs=network.layers[some_layer].output)
data = load_data()
y = intermediate_layer.predict(data)  # <-- The error occurs here

Для этого кода я получаю следующая ошибка:

File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/engine/training.py", line 1478, in predict
  self, x, batch_size=batch_size, verbose=verbose, steps=steps)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/engine/training_arrays.py", line 363, in predict_loop
  batch_outs = f(ins_batch)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/backend.py", line 2897, in __call__
  fetched = self._callable_fn(*array_vals)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1454, in __call__
  self._session._session, self._handle, args, status, None)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py", line 519, in __exit__
  c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource variable conv1/kernel from Container: localhost. This could mean that the variable was uninitialized. Not found: Container localhost does not exist. (Could not find resource: localhost/conv1/kernel)
     [[Node: conv1/Conv2D/ReadVariableOp = ReadVariableOp[dtype=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"](conv1/kernel)]]
     [[Node: max_pooling2d/MaxPool/_3 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_37_max_pooling2d/MaxPool", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]

Предыдущая сеть уже скомпилирована и работает отлично.

Кто-нибудь сталкивался с подобной проблемой и могу ли я предоставить решение? Большое спасибо заранее.

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