Keras train_on_batch () не тренирует модель против соответствия () - PullRequest
0 голосов
/ 03 марта 2019

У меня слишком большой набор данных, чтобы поместиться в ОЗУ, поэтому я решил использовать train_on_batch для постепенного обучения моей модели.Чтобы проверить, работает ли этот подход, я взял подмножество своих больших данных, чтобы выполнить предварительное тестирование.

Однако у меня возникли некоторые проблемы при обучении модели, а именно точность модели застряла на 10%когда тренируешься с train_on_batch ().С помощью fit () я получаю точность 95% в 40 эпох.Я также попробовал fit_generator () и столкнулся с похожими проблемами.

с использованием fit ()

results = model.fit(x_train,y_train,batch_size=128,nb_epoch=40)

с помощью train_on_batch ()

#386 has been chosen so that each batch size is 128
splitSize = len(y_train) // 386

for j in range(20):
    print('epoch: '+str(j)+' ----------------------------')
    np.random.shuffle(x_train)
    np.random.shuffle(y_train)
    xb = np.array_split(x_train,386)
    yb = np.array_split(y_train,386)
    sumAcc = 0
    index = list(range(386))
    random.shuffle(index)
    for i in index:
        results = model.train_on_batch(xb[i],yb[i])
        sumAcc += results[1]
    print(sumAcc/(386))

1 Ответ

0 голосов
/ 03 марта 2019

Используемый вами случайный порядок неверен, потому что y_train не соответствует x_train после случайного воспроизведения.Когда вы так перемешиваете, каждый массив перемешивается в другом порядке.Вы можете использовать:

length = x_train.shape[0]
idxs = np.arange(0, length)
np.random.shuffle(idxs)

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