【问题标题】:Keras - Get mode of 2 one hot arraysKeras - 获取 2 个一热阵列的模式
【发布时间】:2018-09-11 21:00:38
【问题描述】:

我正在构建一个简单的模型,该模型接受 2 个热数组(预测)并获取预测的模式。

例如,如果我们有 2 个数组:[0,1] 和 [0,1],我们的模式应该是类 [0,1] 另一个例子:[1,0][1,0][0,1] 应该是类 [1,0]

到目前为止我有这个:

def mode(inputs):
    vals = [np.where(x==1)[0][0] for x in inputs]
    return max(set(vals), key=vals.count)


img_in = np.array([[0,1]])
txt_in = np.array([[1,0]])

img_input = Input((2,), name='image_input')
txt_input = Input((2,), name='text_input')
img_input = Reshape((2,))(img_input)
txt_input = Reshape((2,))(txt_input)

x = Lambda(mode)([img_input, txt_input])


model = Model(inputs=[img_input, txt_input], outputs=[x])

如何获取向量的众数?

编辑:

我可以这样做:

def mode(inputs):
    s = K.sum(inputs, axis=0)
    s = K.argmax(s)
    return s

但我得到一个错误

TypeError: Input 'y' of 'Mul' Op has type float32 that does not match type int64 of argument 'x'.

【问题讨论】:

    标签: python keras tensor


    【解决方案1】:

    解决办法如下:

    def mode(inputs):
        s = K.sum(inputs, axis=0)
        s = K.one_hot(K.argmax(s), K.shape(s)[0])
        return s
    

    【讨论】:

      猜你喜欢
      • 2021-07-28
      • 2019-10-20
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2019-02-25
      相关资源
      最近更新 更多