Python 按行合并张量与keras中的向量

Python 按行合并张量与keras中的向量,python,machine-learning,tensorflow,keras,Python,Machine Learning,Tensorflow,Keras,我希望在keras中实现PointNet()的一个变体,但是我很难重复上下文向量(g)不同的次数,这样我就可以将它与缺少上下文(pre)的前一层按行连接起来。我尝试了Repeat()和keras.backend.Tile() 这就是我提出的lambda定义 def merge_on_single(v): #v[0] is variable length tensor, v[1] is the single vector return Concatenate()([K.repeat(v[1],K

我希望在keras中实现PointNet()的一个变体,但是我很难重复上下文向量(g)不同的次数,这样我就可以将它与缺少上下文(pre)的前一层按行连接起来。我尝试了Repeat()和keras.backend.Tile()

这就是我提出的lambda定义

def merge_on_single(v):
#v[0] is variable length tensor, v[1] is the single vector

return Concatenate()([K.repeat(v[1],K.get_variable_shape(v[0])),v[0]])
但是,出现以下错误:

TypeError:传递给“Pack”Op的“values”的列表中的张量的类型[int32,int32]并不完全匹配

更新:

因此,我能够通过执行以下操作使图层不出现错误:

input = Input(shape=(None,3))

num_point = K.placeholder(input.get_shape()[1].value, dtype=tf.int32)

#first global feature layer
x = TimeDistributed(Dense(512, activation = 'relu'))(input)
x = TimeDistributed(Dense(256, activation = 'relu'))(x)
g = GlobalMaxPooling1D()(x)
g = K.reshape(g,(-1,1,256))
g = K.tile(x, [1,num_point,1])
concat_feat = K.concatenate([x, g])
但现在,我得到了以下错误:

AttributeError: 'Tensor' object has no attribute '_keras_history'

我怀疑罪魁祸首是
K.get\u variable\u shape(v[0])
。由于
v[0]
的类型为
int32
(由您的错误指定),因此当您获得形状时,它将返回None。Concatenate希望所有输入的类型相同

AttributeError: 'Tensor' object has no attribute '_keras_history'