Keras - Получить режим 2 горячих массивов - PullRequest
0 голосов
/ 12 сентября 2018

Я строю простую модель, которая принимает 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])

Как мне получить режим векторов?

EDIT:

Я могу сделать что-то вроде этого:

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'.

1 Ответ

0 голосов
/ 12 сентября 2018

Вот решение:

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