簡體   English   中英

Keras train_on_batch()不訓練模型vs fit()

[英]Keras train_on_batch() does not train the model vs fit()

我的數據集太大而無法容納在RAM上,因此我選擇使用train_on_batch逐步訓練我的模型。 為了測試這種方法是否有效,我使用了一部分大數據來進行一些初步測試。

但是,我在訓練模型時遇到了一些問題,即在使用train_on_batch()進行訓練時,模型的准確性停留在10%。 使用fit()時,在40個歷元時我的准確度為95%。 我也嘗試過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))

您使用的隨機播放是不正確的,因為隨機播放之后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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM