fit_generator()输出的结果与fit()不同

时间:2019-03-28 11:49:35

标签: numpy keras generator

我对fit_generator()输出有问题,它输出的结果与fit()方法不同。我有一个存储患者数据的目录。 Patient_x具有所有特征,而Patient_y具有试图预测的相应因变量Im。问题是当Im尝试加载每个患者并在每次迭代中产生批次的数据时(显然是下一个迭代,接下来的患者),我会得到不同的结果,好像我会做同样的事情,但是不是每次迭代都加载1个患者,而是加载全部患者立即将其串联起来。总结一下:如果我将所有患者加载到内存中然后进行批量处理->它输出正确的结果,但是如果我每次迭代加载仅1位患者(因为我没有足够的RAM来加载所有数据)并从该患者获得批量处理- ->它输出不好的结果。我已经检查过发生器是否输出相同批次的数据了。如果可以的话,请帮助我。

此生成器输出正确的结果。我正在传递整个数据集

def new_gen_shuffle(batch_size, X_train, y_train):
    while True:
        indices = np.arange(X_train.shape[0])
        np.random.shuffle(indices)
        for patient_batch in range(X_train.shape[0]):
                inds = indices[patient_batch * batch_size:(patient_batch + 1) * batch_size]
                batch_x = X_train[inds]
                batch_y = y_train[inds]
                if batch_x.shape[0] > 0 and batch_y.shape[0] > 0:
                    yield batch_x, batch_y

,但是这不能正常工作。我为每个患者(每个迭代与下一个患者重复)产生批次。但是他们两个都输出相同的批次

def batch_generator(batch_size, patients_x, patinets_y):
    while True:
        for patient in range(len(patients_x)):  
            X_train = np.load(path + "/" + patients_x[patient])
            y_train = np.load(path + "/" + patients_y[patient])
            indices = np.arange(X_train.shape[0])
            np.random.shuffle(indices)
            for patient_batch in range(X_train.shape[0]):
                inds = indices[patient_batch * batch_size:(patient_batch + 1) * batch_size]
                batch_x = X_train[inds]
                batch_y = y_train[inds]
                if batch_x.shape[0] > 0 and batch_y.shape[0] > 0:
                    yield batch_x, batch_y

0 个答案:

没有答案