【发布时间】:2021-03-30 06:01:54
【问题描述】:
我正在做关于机器学习的项目,我需要合并(连接)两个具有不同形状的张量。
更多详情:
我们正在尝试将令牌矩阵与一个热矩阵连接起来。令牌通过嵌入层,因此我们得到一个形状类似于 (100, 10, 300) 的权重矩阵。
最后我们需要像这样合并一个热矩阵和权重矩阵:
(100, 300) 和 (100, 10, 300) 为 (100, >11, 300)
这是,将矩阵中的 300 个热向量中的每一个附加到每个权重矩阵的第一个位置,例如 (1,300) + (1,10,300) 到获取形状为 (1,>11,300)
的合并值样本我实际上是通过循环以手动形式实现的,但这需要太多时间,所以我想知道这是否可以通过 keras 或任何其他类似方法实现。
这是我写的函数,所以在这里我达到了我想要的,但是如果可以以一种不需要太多时间的更好方式来做是理想的。
def join_demo_sentence(X, Demo, embedding, max_length):
X = pad_sequences(X, maxlen=max_length, padding='post')
Demo = pad_sequences(Demo, maxlen=300, padding='post')
joined = []
for i, sequence in tqdm(enumerate(X), desc='Joining'):
demo = Demo[i]
sequence = embedding.get_weights()[0][sequence]
join = np.insert(sequence.T, 0, demo, axis=1)
joined.append(join.T)
X = np.asarray(joined)
return X
该函数循环遍历矩阵以加入演示一个热门值和句子标记,因此对于最终结果,我得到了第一个位置的人口统计热门句子。
我正在学习 keras,所以我认为keras.layers.Concatenate 有一种方法
【问题讨论】:
标签: python tensorflow keras tensor