У меня проблема классификации по нескольким меткам: вот несколько примеров 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)