def find_lr(): """Поиск максимального lr.""" train_set = (load_data.train_x(), load_data.train_y()) model = make_model() model.compile( optimizer=optimizers.Nadam(), loss="mae", metrics=[iou.intersection_over_union], ) model.fit_generator(yield_batch(train_set), steps_per_epoch=30, epochs=1) model.compile(optimizer=optimizers.Nadam(), loss=iou.intersection_over_union) lr.get_max_lr(model, yield_batch(train_set))
def train(): """Тренировка модели.""" train_set = (load_data.train_x(), load_data.train_y()) test_set = load_data.test_x() train_oof(train_set, test_set)
data_train = (x_train.loc[ids_train], y_train.loc[ids_train]) data_val = (x_train.loc[ids_valid], y_train.loc[ids_valid]) rez, model = train_model(data_train, data_val) scores.append(min(rez.history["val_loss"])) feat = yield_batch_test(data_val[0]) df = model.predict_generator(feat, steps=len(data_val[0].index.unique())) oof.loc[ids_valid] = df feat = yield_batch_test(x_test) df = model.predict_generator(feat, steps=len(x_test.index.unique())) prediction += df / FOLDS mean = np.mean(scores) err = np.std(scores) / len(scores)**0.5 print(f"IOU на кроссвалидации: " + str(-np.round(sorted(scores), 5))) print(f"IOU среднее: {-mean:0.5f} +/- {2 * err:0.5f}") oof.to_csv(DATA_PATH / f"oof-{-mean - 2 * err:0.5f}.csv", header=False) prediction.to_csv(DATA_PATH / f"sub-{-mean - 2 * err:0.5f}.csv", header=False) if __name__ == '__main__': train_set = (load_data.train_x(), load_data.train_y()) test_set = load_data.test_x() train_oof(train_set, test_set)