Обучение модели AI занимает так много времени - PullRequest
0 голосов
/ 01 мая 2020

Я решаю проблему классификации с несколькими классами. Набор данных выглядит следующим образом:

|---------------------|------------------|----------------------|------------------|
|      feature 1      |     feature 3    |   feature 4          |     feature 2    |
|---------------------|------------------|------------------------------------------
|          1.302      |       102.987    |      1.298           |     99.8         |
|---------------------|------------------|----------------------|------------------|
|---------------------|------------------|----------------------|------------------|
|          1.318      |       102.587    |      1.998           |     199.8        |
|---------------------|------------------|----------------------|------------------|

4 функции являются числами с плавающей запятой, а мои целевые классы переменных равны 1,2 или 3. Когда я Построить следующую модель и обучить, чтобы сходиться (24 часа и все еще бегать)

Я использовал модель keras, как показано ниже:

def create_model(optimizer='adam', init='uniform'):
    # create model
    if verbose: print("**Create model with optimizer: %s; init: %s" % (optimizer, init) )
    model = Sequential()
    model.add(Dense(16, input_dim=X.shape[1], kernel_initializer=init, activation='relu'))
    model.add(Dense(8, kernel_initializer=init, activation='relu'))
    model.add(Dense(4, kernel_initializer=init, activation='relu'))
    model.add(Dense(1, kernel_initializer=init, activation='sigmoid'))
    # Compile model
    model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])
    return model

подходящая модель

best_epochs = 200
best_batch_size = 5
best_init = 'glorot_uniform'
best_optimizer = 'rmsprop'
verbose=0
model_pred = KerasClassifier(build_fn=create_model, optimizer=best_optimizer, init=best_init, epochs=best_epochs, batch_size=best_batch_size, verbose=verbose)
model_pred.fit(X_train,y_train)

Я следовал этому уроку здесь: https://www.kaggle.com/stefanbergstein/keras-deep-learning-on-titanic-data

, а также быстрая модель ai, как показано ниже:

cont_names = [ 'feature1', 'feature2', 'feature3', 'feature4']
procs = [FillMissing, Categorify, Normalize]
test = TabularList.from_df(test,cont_names=cont_names, procs=procs)
data = (TabularList.from_df(train, path='.', cont_names=cont_names, procs=procs)
                        .random_split_by_pct(valid_pct=0.2, seed=43)
                        .label_from_df(cols = dep_var)
                        .add_test(test, label=0)
                        .databunch())

learn = tabular_learner(data, layers=[1000, 200, 15], metrics=accuracy, emb_drop=0.1, callback_fns=ShowGraph)

Я следовал уроку ниже

https://medium.com/@nikkisharma536 / применение проблем глубокого обучения по табличным данным для задач регрессии и классификации-1e5f80743259

print(X_train.shape,y_train.shape,X_test.shape,y_test.shape)
(138507, 4) (138507, 1) (34627, 4) (34627, 1)

Не уверен, почему оба модели работают так долго. Есть ли какая-либо ошибка в моих входах? Любая помощь приветствуется.

1 Ответ

1 голос
/ 01 мая 2020

Имея 200 эпох и более 138 тыс. Учебных примеров (и почти 35 тыс. Тестовых примеров), вы имеете дело с 34626800 (~ 35 млн.) Примерами, показанными в сети. Это большие цифры. Предполагая, что вы используете свой ЦП для обучения, это может занять несколько часов, даже дней, в зависимости от вашего оборудования. Одна вещь, которую вы можете сделать, это уменьшить количество эпох, чтобы увидеть, есть ли у вас и приемлемая модель ранее.

...