У меня такая ситуация, когда я хочу, чтобы модель тензорного потока (родительская модель) имела в качестве свойства другую модель тензорного потока (дочернюю модель).
В прямом проходе я хочу, чтобы родительская модель выполняла прямой передать дочернюю модель с подмножеством входных данных, а затем выполнить некоторые другие действия с остальными входными данными (для всех, кому интересно, я хочу сделать это ).
Однако, когда использование родительской модели для прогнозирования набора данных тензорного потока (model.predict(ds)
) не выполняется с помощью
TypeError: in user code:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1147 predict_function *
outputs = self.distribute_strategy.run(
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:951 run **
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2290 call_for_each_replica
return self._call_for_each_replica(fn, args, kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2649 _call_for_each_replica
return fn(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1122 predict_step **
return self(x, training=False)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py:934 __call__
str(e) + '\n"""')
TypeError: You are attempting to use Python control flow in a layer that was not declared to be dynamic. Pass `dynamic=True` to the class constructor.
Encountered error:
"""
in user code:
<ipython-input-6-faa2eaf00084>:10 call *
actual_inputs, filename = inputs
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py:561 __iter__
self._disallow_iteration()
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py:554 _disallow_iteration
self._disallow_when_autograph_enabled("iterating over `tf.Tensor`")
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py:532 _disallow_when_autograph_enabled
" decorating it directly with @tf.function.".format(task))
OperatorNotAllowedInGraphError: iterating over `tf.Tensor` is not allowed: AutoGraph did not convert this function. Try decorating it directly with @tf.function.
"""
Эта проблема не возникает со следующим кодом:
inp = next(iter(ds))
model.predict(inp)
Я не Я не понимаю, почему это происходит.
Вы можете найти минимальный воспроизводимый пример на colab .