Керас оценивать на Генератор данных - PullRequest
0 голосов
/ 28 января 2020

Я использую функцию оценки в керасе для оценки производительности моих моделей. Я обучил регрессионную модель, используя MSE как метрику / целевую функцию.

Когда я сейчас загружаю свои данные проверки и оцениваю MSE, значение остается постоянным, но когда я перетасовываю свой набор проверки ранее, оценка MSE меняется довольно хорошо.

Кто-нибудь знает, почему перетасовывание набора проверки приводит к различным модельным оценкам. Я бы ожидал, что оценка будет примерно такой же (с некоторой числовой нестабильностью).

Заранее спасибо,

ура,

M

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Если вы используете генератор для функции оценки (с тензорным потоком 2), вполне вероятно, что полученная вами оценка оценки относится только к последнему этапу (пакету), а не ко всему набору данных оценки. Вы можете проверить это дважды с помощью функции предикторов.

0 голосов
/ 28 января 2020

Привет и спасибо за ваш комментарий:

Вот код:

params_val = {'dim': (IMG_PX_SIZE,IMG_PX_SIZE),
                    'batch_size' : 1,
                        'n_channels': inChannel,
                    'shuffle': False,
                    'augment': False}  

X_val, y_val = shuffle(X_val, y_val)

dataGen_validation = DataGenerator2D(X_val, y_val, data_dir_val, **params_val)

model = keras.models.load_model(model_path)
model = model.layers[-2]

model.compile(optimizer=Adam(lr=0.0001), loss='mse')
score = model.evaluate(dataGen_validation)
print(score)

Моя теория:

В моем наборе данных есть много простых примеров и некоторые сложные примеры. Насколько я понял, оценка - это среднее значение MSE для всех партий. В зависимости от того, как данные перетасовываются (например, одна партия только с очень простыми примерами), общий балл может быть очень большим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...