gpt4 book ai didi

tensorflow - 如何在 Keras 中按组对输入样本进行平均?

转载 作者:行者123 更新时间:2023-12-02 03:27:34 26 4
gpt4 key购买 nike

我想在这种架构的 Keras 中实现一个神经网络:假设我有一些输入并且它们属于某些组。那么神经网络是这样的:

input -> some layers -> separate inputs by groups -> average inputs by groups -> output

简而言之,我想按组分离输入,然后按组取输入的平均值。

例如,如果我有一些输入张量 [1, 2, 3, 4, 5, 6],它们属于两个组 [0, 1, 1, 0, 0, 1]。然后我想要输出张量是这样的:[3.333, 3.666, 3.666, 3.333, 3.333, 3.666]。这里 3.333 是组 0 [1, 4, 5] 的平均值,3.666 是组 1 [2, 3, 6] 的平均值。

最佳答案

我不确定您是否可以按照上面所述直接在 Keras 或 Tensorflow 中分离输入。这是我能想到的:

  1. 创建与每个类相对应的掩码,其中 1 表示该类中索引处的元素,0 表示另一个类的任何元素。所以在你的例子中,你会做 [0,1,1,0,0,1]一个类和 [1,0,0,1,1,0]对于另一个。 (类(class)越多,相应的面具也会越多)
  2. 堆叠这些向量以获得 3-D 张量并以 0 步长进行 1D 卷积。使用tf.nn.conv1d() 。将这些掩码视为卷积运算的过滤器,它分隔类别。请务必 reshape 您的张量以符合操作要求。
  3. 卷积后,您将得到一个 3-D 张量,其中每个向量将包含一个类元素。对于您的示例,您应该得到一个带有两个向量的张量 [0,2,3,0,0,6][1,0,0,4,5,0] 。使用tf.reduce_mean()在正确的轴上以获得每个类(class)的平均值。
  4. 乘以均值张量:[[3.333], [3.666]]与面具使用 tf.multiply()并使用 tf.reduce_sum() 添加向量在正确的轴上。它应该会产生您想要的向量。

关于tensorflow - 如何在 Keras 中按组对输入样本进行平均?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52773410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com