Tensorflow Keras:如何将向量附加到张量

Tensorflow Keras:如何将向量附加到张量,tensorflow,keras,dimensions,Tensorflow,Keras,Dimensions,我与keras/tf建立了一个网络,其中建立了两个分支机构: -一种将一个短的单词序列转换成300个小嵌入的方法 -另一种是将相同的单词序列转换成ngrams 然后,我得到了两个数据结构: termwords.shape = (?, 42, 300) termngrams.shape = (?, 42) (我确保两个分支具有相同的“长度”42,即最多42个单词,最多42个ngrams,必要时进行填充/切割)。然后我需要将它们合并到一个分支中,以到达预测层 但是 告诉我等级不匹配。我希望conc

我与keras/tf建立了一个网络,其中建立了两个分支机构: -一种将一个短的单词序列转换成300个小嵌入的方法 -另一种是将相同的单词序列转换成ngrams

然后,我得到了两个数据结构:

termwords.shape = (?, 42, 300)
termngrams.shape = (?, 42)
(我确保两个分支具有相同的“长度”42,即最多42个单词,最多42个ngrams,必要时进行填充/切割)。然后我需要将它们合并到一个分支中,以到达预测层

但是

告诉我等级不匹配。我希望concat会允许我在“术语词”后面附加“术语图”,这样我就得到了一个形状为(?,42301)的数据结构。但我找不到合适的方式来表达

“秩”错误告诉你张量的维数不一样。一个是2D,另一个是3D

使用带有
expand_dims
Lambda
层向二维维度添加额外维度

import keras.backend as K
from keras.layers import Lambda

termngrams = Lambda(lambda x: K.expand_dims(x))(termngrams) #outputs (?,42,1)
然后使用一个层(默认情况下,它使用最后一个轴,如您所需)


(假设您使用的是函数API
Model
而不是顺序模型,那么顺序模型不适合分支)

就是这样,非常感谢!我花了相当长的时间搜索,假设一定有一个简单的方法来解决这个问题,但我没有遇到任何问题。网络未编译和运行。。。将需要继续查看如何调整结果。再次:谢谢!太好了)---如果你认为这回答了你的问题,请注明答案如下:
import keras.backend as K
from keras.layers import Lambda

termngrams = Lambda(lambda x: K.expand_dims(x))(termngrams) #outputs (?,42,1)
merged = Concatenate()([termwords,termngrams])