当我试图在keras功能模型的定义中使用tf.map_fn时,我得到了错误:
TypeError: Could not build a TypeSpec for <KerasTensor: ...
例如,该简单模型将在tf nightly 2.5.0中触发该错误:
import tensorflow as tf
from tensorflow.keras.layers import Input
from tensorflow.keras.models import Model
x = Input(shape=(10,))
y = tf.map_fn(lambda x : x * 2, x, fn_output_signature=tf.float32)
model = Model(inputs=x, outputs=y)
然而,将对tf.map_fn的调用替换为对其他tensorflow操作的调用效果良好
为什么不改用
tf.keras.layers.Lambda
层呢这似乎是由于tf.map_fn无法确定输入张量的类型规范(当输入为keras辛同态输入时)
现在我已经有好几次遇到tensorflow ops和Keras符号输入张量的问题。在自定义层中包装有问题的代码似乎可以解决问题
例如,将上面的代码替换为该代码将成功执行:
相关问题 更多 >
编程相关推荐