"Could not compute output" 在 Tensorflow 2 中使用 tf.keras 合并层时出错
"Could not compute output" error using tf.keras merge layers in Tensorflow 2
我正在尝试在 tf.keras 中使用合并层,但得到 AssertionError: Could not compute output Tensor("concatenate_3/Identity:0", shape=(None, 10, 8), dtype=float32)
。最小(不)工作示例:
import tensorflow as tf
import numpy as np
context_length = 10
input_a = tf.keras.layers.Input((context_length, 4))
input_b = tf.keras.layers.Input((context_length, 4))
#output = tf.keras.layers.concatenate([input_a, input_b]) # same error
output = tf.keras.layers.Concatenate()([input_a, input_b])
model = tf.keras.Model(inputs = (input_a, input_b), outputs = output)
a = np.random.rand(3, context_length, 4).astype(np.float32)
b = np.random.rand(3, context_length, 4).astype(np.float32)
pred = model(a, b)
我在其他合并层(例如 add
)中遇到了同样的错误。我在 TF2.0.0-alpha0 上,但在 colab 上获得与 2.0.0-beta1 相同的结果。
由于 tf.keras.layers.Input
而失败。 Tensorflow 无法验证图层的形状,因此失败。这将起作用:
class MyModel(tf.keras.Model):
def __init__(self):
super(MyModel, self).__init__()
self.concat = tf.keras.layers.Concatenate()
# You can also add the other layers
self.dense_1 = tf.keras.layers.Dense(10)
def call(self, a, b):
out_concat = self.concat([a, b])
out_dense = self.dense_1(out_concat)
model = MyModel()
a = np.random.rand(3, 5, 4).astype(np.float32)
b = np.random.rand(3, 5, 4).astype(np.float32)
output = model(a, b)
好吧,错误消息没有帮助,但我最终偶然发现了解决方案:model
的输入需要是可迭代的张量,即
pred = model((a, b))
工作正常。
我正在尝试在 tf.keras 中使用合并层,但得到 AssertionError: Could not compute output Tensor("concatenate_3/Identity:0", shape=(None, 10, 8), dtype=float32)
。最小(不)工作示例:
import tensorflow as tf
import numpy as np
context_length = 10
input_a = tf.keras.layers.Input((context_length, 4))
input_b = tf.keras.layers.Input((context_length, 4))
#output = tf.keras.layers.concatenate([input_a, input_b]) # same error
output = tf.keras.layers.Concatenate()([input_a, input_b])
model = tf.keras.Model(inputs = (input_a, input_b), outputs = output)
a = np.random.rand(3, context_length, 4).astype(np.float32)
b = np.random.rand(3, context_length, 4).astype(np.float32)
pred = model(a, b)
我在其他合并层(例如 add
)中遇到了同样的错误。我在 TF2.0.0-alpha0 上,但在 colab 上获得与 2.0.0-beta1 相同的结果。
由于 tf.keras.layers.Input
而失败。 Tensorflow 无法验证图层的形状,因此失败。这将起作用:
class MyModel(tf.keras.Model):
def __init__(self):
super(MyModel, self).__init__()
self.concat = tf.keras.layers.Concatenate()
# You can also add the other layers
self.dense_1 = tf.keras.layers.Dense(10)
def call(self, a, b):
out_concat = self.concat([a, b])
out_dense = self.dense_1(out_concat)
model = MyModel()
a = np.random.rand(3, 5, 4).astype(np.float32)
b = np.random.rand(3, 5, 4).astype(np.float32)
output = model(a, b)
好吧,错误消息没有帮助,但我最终偶然发现了解决方案:model
的输入需要是可迭代的张量,即
pred = model((a, b))
工作正常。