Generator with memory leak

Viewed 404

I have following batch generator:

def batch_generator(X, Y, array_size, batch_size = 96):
    while True:
            p = np.random.permutation(X.shape[0])
            X = X[p]
            Y = Y[p]
            for i in range(array_size):
                start = i*batch_size
                end = start + batch_size + 1
                yield X[start:end], Y[start:end]

And this section each while cycle use more and more memory.

            p = np.random.permutation(X.shape[0])
            X = X[p]
            Y = Y[p]

How to solve this leak?

Function is called by:

batch_gen = batch_generator(
    L[:(size_of_dataset*BATCH_SIZE + 1)],
    ab[:(size_of_dataset*BATCH_SIZE + 1)],
    size_of_dataset,
    BATCH_SIZE
)

And then keras fit

model.fit(batch_gen ,epochs=500...)

From this output, we can see, how memory usage growing:

MEM USED: 34028564480
Epoch 1/500
MEM USED: 68172357632
MEM USED: 68327460864
MEM USED: 94857654272
597/597 - 111s - accuracy: 0.6081 - loss: 0.0767 - val_accuracy: 0.6318 - val_loss: 0.0744
Epoch 2/500
MEM USED: 101374386176
MEM USED: 112654151680
597/597 - 103s - accuracy: 0.6365 - loss: 0.0721 - val_accuracy: 0.6416 - val_loss: 0.0716
Epoch 3/500
MEM USED: 102938615808
MEM USED: 112201596928
597/597 - 105s - accuracy: 0.6443 - loss: 0.0698 - val_accuracy: 0.6280 - val_loss: 0.0700
Epoch 4/500
MEM USED: 104500965376
MEM USED: 112002859008
597/597 - 104s - accuracy: 0.6502 - loss: 0.0683 - val_accuracy: 0.6612 - val_loss: 0.0680
Epoch 5/500
MEM USED: 106063552512
MEM USED: 111480320000
597/597 - 107s - accuracy: 0.6558 - loss: 0.0666 - val_accuracy: 0.6469 - val_loss: 0.0673
Epoch 6/500
MEM USED: 107625590784
MEM USED: 110876241920
597/597 - 105s - accuracy: 0.6626 - loss: 0.0651 - val_accuracy: 0.6636 - val_loss: 0.0661
Epoch 7/500
0 Answers
Related