Я использую 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.
"""
Что может быть причиной этой ошибки? И как мне это исправить? Любая помощь / предложения будут действительно полезны.