在功能模式下连接图层时出现Keras错误

时间:2019-01-02 15:58:26

标签: tensorflow keras

我正在尝试连接两层。根据文档,以下应该是正确的。

import tensorflow.keras as K

input = K.Input(shape=(self.state_dimensions(),))
shared_features = K.layers.Dense(10,activation='tanh')
x = K.layers.Dense(10, activation='tanh')(input)
a = shared_features(x[0:10])
b = shared_features(x[10:20])
output = K.layers.Concatenate()([a,b])
actor_model = K.Model(inputs=input, outputs=output)

但是,在最后一行中,出现此错误:

ValueError: Output tensors to a Model must be the output of a TensorFlow `Layer` (thus holding past layer metadata). Found: Tensor("concatenate/concat:0", shape=(?, 6), dtype=float32)

1 个答案:

答案 0 :(得分:0)

张量ab包含图层外部的操作。所有操作都必须在keras层内部。

a = K.layers.Lambda(lambda x: x[:10])(x)
b = K.layers.Lambda(lambda x: x[10:20])(x)

a = shared_features(a)
b = shared_features(b)

在批量大小维度中分割张量时,您会遇到问题。 K.layers.Concatenate()在批次维度上不起作用。最后,您将获得不同数量的样本。

您可能想要x[:,0:10]x[:,10:20]