Python Keras训练批处理上的训练批()不训练模型与拟合()

Python Keras训练批处理上的训练批()不训练模型与拟合(),python,keras,Python,Keras,我有一个太大的数据集,不能放在RAM上,所以我选择使用批量训练来增量训练我的模型。 为了测试这种方法是否有效,我从大量数据中提取一个子集来运行一些初步测试 但是,我在训练模型时遇到了一些问题,即在批处理()上使用train_进行训练时,模型的准确度停留在10%。使用fit(),我在40个纪元时获得了95%的准确率。我还尝试了fit_generator(),遇到了类似的问题 使用fit() 在批处理()上使用序列 您使用的洗牌不正确,因为洗牌后y_序列与x_序列不匹配。当你像那样洗牌时,每个数组都

我有一个太大的数据集,不能放在RAM上,所以我选择使用批量训练来增量训练我的模型。 为了测试这种方法是否有效,我从大量数据中提取一个子集来运行一些初步测试

但是,我在训练模型时遇到了一些问题,即在批处理()上使用train_进行训练时,模型的准确度停留在10%。使用fit(),我在40个纪元时获得了95%的准确率。我还尝试了fit_generator(),遇到了类似的问题

使用fit()

在批处理()上使用序列


您使用的洗牌不正确,因为洗牌后y_序列与x_序列不匹配。当你像那样洗牌时,每个数组都会以不同的顺序洗牌。 您可以使用:

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

x_train = x_train[idxs]
y_train = y_train[idxs]
#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))
length = x_train.shape[0]
idxs = np.arange(0, length)
np.random.shuffle(idxs)

x_train = x_train[idxs]
y_train = y_train[idxs]