【问题标题】:Can I concatenate different shape tensors with keras?我可以用 keras 连接不同的形状张量吗?
【发布时间】: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


    【解决方案1】:

    是你需要的吗:

    a = tf.random.uniform((100, 10, 300))
    b = tf.random.uniform((100, 300))
    
    b = b[:, tf.newaxis, :] # add the second axis
    res = tf.concat((a, b), -2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      • 2019-01-07
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多