Обучение этой модели приводит к утечке памяти - PullRequest
0 голосов
/ 09 ноября 2019

Я обучал модель, и с помощью htop я вижу, что память увеличивается с каждой итерацией. Большинство людей говорят, что график должен продолжать расти либо потому, что я загружаю новую модель с каждой итерацией илипотому что я добавляю новые операции, но я не делаю ничего из вышеперечисленного. Это самый маленький воспроизводимый пример.

from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
import tensorflow as tf
import numpy as np

#%% Params
OBSERVATION_SPACE_VALUES = 4
ACTION_SPACE_SIZE = 2
LEARNING_RATE = 0.00025/4
DENSE_PARAMS = [256]

class Network():
    def __init__(self, state_size=OBSERVATION_SPACE_VALUES, action_size=ACTION_SPACE_SIZE, learning_rate=LEARNING_RATE,    
                 dense_params=DENSE_PARAMS):

        self.state_size = state_size
        self.action_size = action_size
        self.learning_rate= learning_rate        
        self.model = self.create_model(dense_params)

    def create_model(self, dense_params=[256]):

        model = Sequential()
        for params in dense_params:
            units = params
            model.add(Dense(units, activation='relu',input_shape=[self.state_size]))

        model.add(Dense(self.action_size, activation="linear"))
        model.compile(loss="mse", optimizer=Adam(lr=self.learning_rate))
        return model

Agent = Network()

for i in range(10_000):
    state = np.random.rand(Agent.state_size)
    state = np.expand_dims(state, axis=0)
    output = np.random.rand(Agent.action_size)
    output = np.expand_dims(output, axis=0)
    Agent.model.fit(state,output,verbose=True)

А также:

tf.__version__
2.0.0
tf.keras.__version__
2.2.4-tf

1 Ответ

0 голосов
/ 09 ноября 2019

Проблема заключается в использовании нескольких вызовов .fit. Чтобы решить эту проблему, вы можете:

  • создать data_generator ваших данных и позвонить .fit(epochs=10000)

или

  • сохранить дляцикл, но вызовите `train_on_batch (doc) вместо
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...