Ошибка типа: Вы пытаетесь использовать поток управления Python в слое, который не был объявлен как динамический c. Передайте `dynamic = True` в конструктор класса - PullRequest
2 голосов
/ 07 января 2020

Я использую TensorFlow 2.0.0 и tf.keras для создания модели сети, которая принимает n входных данных, [x1,x2,x3,x4,x5,...xn] и вычисляет f(x1,x2,x3,x4,x5,...xn).

Я определил мою модель ниже как:

def custom_func(vec):   # Test function specifically for a 2-D input
        [x,y] = vec
        x1 = tf.math.atanh(x)
        y1 = tf.math.atanh(y)
        return tf.math.exp(-x1**2 + -y1**2)*(x1**2 + y1**2)

ndim = 2     #Input is 2-D for a sample case
model2 = Sequential()
model2.add(Dense(1, kernel_initializer='ones',bias_initializer='zeros',
                    activation=custom_func, input_shape=(ndim,)))

print(model2.predict(np.array([[1,2],[3,4]])))

При запуске следующего кодового блока я получаю сообщение об ошибке:

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:
"""
iterating over `tf.Tensor` is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.
"""

Что может быть причиной этой ошибки? И как мне это исправить? Любая помощь / предложения будут действительно полезны.

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