У меня есть вопрос о точности из генератора оценки keras
Я хотел бы предоставить свой код, и вопрос будет следующий:
от части модели, в конце модели:
o = (Reshape(( outputHeight*outputWidth, n_classes)))(o)
o = (Activation('softmax'))(o)
#create model
model = Model( img_input , o )
И часть оценки:
K.set_learning_phase(0)
m = load_model(join(save_weights_path,"model.h5"))
batch_size = 1
test_path = "data/validation"
G =Generator(test_path,test_path,batch_size)
images = glob(join(test_path,"*.jpg"))
steps =len(images)
evaluator= m.evaluate_generator(G,steps = steps ,verbose = 1)
print("Accuracy :",evaluator[1])
И я получаю результат:
256/256 [==============================] - 10s 41ms/step
Accuracy : 0.7758417576551437
И тогда я прогнозирую: # подача данных 256 изображений
X =Generator () #predict pr = m.predict (np.array ([X])) [0] #reshape pr = pr.reshape ((output_height, output_width, n_classes)) .argmax (axis = -1)
Результат выглядит хорошо для меня, но некоторые из них не очень хороши ...
Размер изображения 512 * 512
Интересно, действительно ли это означает, что точность возвращений отvalu_generator действительно означает?
моя модель предсказывает 512 * 512 * 0,77 пикселей правильно?
Спасибо!
edit:
Я просто делаю один эксперимент:
Я оставляю только одно изображение в папке, а затем
Запустите функциюrate_generator, точность возвращается:
1/1 [==============================] - 1s 1s/step
Accuracy : 0.5572433471679688
, а я сам проверяю:
img_name = glob("*.jpg")
gt_name = glob("*.png")
img = cv.imread(img_name[0])
gt = cv.imread(gt_name[0])
c = (img==gt).all(axis=-1)
total = img.shape[0]*img.shape[1]
print(np.sum(c)/total)
Угадайте, что:
0.41905975341796875