我正在尝试连接两层。根据文档,以下应该是正确的。
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)
答案 0 :(得分:0)
张量a
和b
包含图层外部的操作。所有操作都必须在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]