我已经使用TensorFlow 2.0中的Keras函数API创建了一个RNN,以下代码段可用:
sum_input = keras.Input(shape=(UNIT_SIZE, 256,), name='sum')
x = tf.unstack(sum_input,axis=2, num=256)
t_sum = x[0]
for i in range(len(x) - 1):
t_sum = keras.layers.Add()([t_sum, x[i+1]])
sum_m = keras.Model(inputs=sum_input, outputs=t_sum, name='sum_model')
我后来不得不改用Tensorflow 1.13,但是遇到了以下错误:
ValueError: Output tensors to a Model must be the output of a TensorFlow `Layer` (thus holding past layer metadata). Found: Tensor("add_254/add:0", shape=(?, 40), dtype=float32)
我不明白为什么输出张量不是来自TensorFlow层,因为t_sum是从keras.layers.Add中输出的。
我已经尝试将代码的部分包装到keras.layers.Lambda中,如 ValueError: Output tensors to a Model must be the output of a TensorFlow Layer所建议的那样,但似乎对我没有用。
Lambda
层来包装tf.unstack()
吗? - CKMx = tf.keras.layers.Lambda(lambda t: tf.unstack(t, axis=2, num=256))(inputs)
- Vlad