fit_generation()出现StopIteration(代码中有WHILE TRUE)?

def generator(path, batch_size):

    images, masks = readImage(path)
    n = images.shape[0]
    index = np.arange(n)

    while True:
        np.random.shuffle(index)
        for i in range(0, n, batch_size):

            if i+batch_size >= n:
                break

            rImgs = []
            rMasks = []
            for j in range(i, i+batch_size):
                rImgs.append(images[index[j], :, :, :])
                rMasks.append(masks[index[j], :, :, :])
            rImgs = np.array(rImgs)
            rMasks = np.array(rMasks, dtype=np.float)
            # return rImgs, rMasks
            yield rImgs, rMasks
if __name__ == '__main__':

    trainingGenerator = generator('E:\\Create\\cat\\Data\\Training', batch_size=1)#生成器#
    valGenerator = generator('E:\\Create\\cat\\Data\\Validation', batch_size=1)
    optimizer = SGD(learning_rate=0.01, momentum=0.95)#定义优化器#
    model.compile(optimizer=optimizer,#将优化器送入模型#
                  loss=bce_dice_loss,
                  metrics=['binary_crossentropy', 'accuracy', dice_coef])
    tensorboard = TensorBoard(log_dir='./Data/record', histogram_freq=0)
    checkpoint = ModelCheckpoint(filepath='./Data/record/bestModel.hdf5', save_best_only=True,save_weights_only=True)
    model.fit_generator(
        generator=trainingGenerator,
        steps_per_epoch=100,
        epochs=1,
        validation_data=valGenerator,
        validation_steps=10,
        callbacks=[tensorboard, checkpoint]
    )

图片说明

虽然你有while true,但是你有break,调试下,迭代中止了。