изготовленные на заказ keras metri c для точности строк - PullRequest
0 голосов
/ 12 февраля 2020

У меня проблема классификации по нескольким меткам: вот несколько примеров y:

[0,0,0]
[0,0,1]
[1,0,1]
[1,1,0]
[1,0,0]

и так далее. Я хотел бы создать функцию, которая сообщает мне% строк в прогнозе, которые, основываясь на пороге 0,5, равны истинному вектору в y. поэтому, если у:

[[0,0,1]
[1,0,0]
[1,0,1]]

, а прогнозы:

[[0.2,0.4,0.9]
[0.6,0.3,0.4]
[0.3,0.3,0.4]]

, точность равна 2/3, поскольку две строки предсказывают одни и те же метки, а 1 - нет.

это то, что у меня сейчас есть:

def accuracy(y_true, y_pred):

    acc = K.all(K.equal(y_true, y_pred), axis=1)
    acc= K.cast(acc, 'float32')
    acc = K.sum(acc)
    acc = acc/K.cast(K.shape(y_true)[0], 'float32')
    return acc

, но оно показывает мне сообщение во время тренировки и показывает точность 0:

Allocation of 223027200 exceeds 10% of system memory.

формы y_train и y_test: (1285, 3) (551, 3)

форма X_train: (1285, 70, 70, 1)

1 Ответ

1 голос
/ 12 февраля 2020

решение для тех, кому это нужно:

 def accuracy(y_true, y_pred):

        y_pred = K.round(y_pred)
        acc = K.all(K.equal(y_true, y_pred), axis=1)
        acc= K.cast(acc, 'float32')
        acc = K.sum(acc)
        acc = acc/K.cast(K.shape(y_true)[0], 'float32')
        return acc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...