Модель Tensorflow со свойством модели и двумя входными данными не может предсказать набор данных - PullRequest
0 голосов
/ 09 мая 2020

У меня такая ситуация, когда я хочу, чтобы модель тензорного потока (родительская модель) имела в качестве свойства другую модель тензорного потока (дочернюю модель).

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

Однако, когда использование родительской модели для прогнозирования набора данных тензорного потока (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 .

...