L2_Loss потребляет всю оперативную память - PullRequest
0 голосов
/ 28 октября 2019

Я работаю над нейронной сетью в Tensorflow. Макет модели - 73x100x100x100x2, что означает, что у меня 73 входных объекта, 3 скрытых слоя по 100 нейронов каждый и два выходных класса. Я использую классификатор softmax, чтобы получить результат. Используемые гиперпараметры: learning_rate = 0,001, num_epochs = 501, minibatch_size = 64, L2_beta = 0,01

Когда я тренирую свою модель без регуляризации, я получаю

Train Accuracy: 0.7155 Test Accuracy: 0.5936

при регуляризации я получаю

Train Accuracy: 0.6553 Test Accuracy: 0.6195

При обучении без регуляризации python использует около 300 МБ ОЗУ. С регуляризацией использование памяти python постоянно растет. Он использует до 12 ГБ оперативной памяти в 500-ю эпоху моего обучения. Поскольку я не мог найти проблемы с памятью при регуляризации, я думаю, что в моем коде есть ошибка.

def compute_cost(ZX, Y, L2_beta, parameters, batchsize):
    logits = tf.transpose(ZX)
    labels = tf.transpose(Y)

    unreg_cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = logits, labels = labels))
    regularizers = tf.nn.l2_loss(parameters['W1']) + tf.nn.l2_loss(parameters['W2']) +tf.nn.l2_loss(parameters['W3']) + tf.nn.l2_loss(parameters['W4'])
    cost = tf.add(unreg_cost, L2_beta*(1/batchsize)*regularizers)

    return cost

Я вызываю свою функцию стоимости следующим образом:

cost = compute_cost(ZX,Y,L2_beta,parameters,minibatch_size)

My WПараметры инициализируются следующим образом:

   W1 = tf.get_variable("W1", [100,73], initializer = tf.contrib.layers.xavier_initializer())
   W2 = tf.get_variable("W2", [100,100], initializer = tf.contrib.layers.xavier_initializer())
   W3 = tf.get_variable("W3", [100,100], initializer = tf.contrib.layers.xavier_initializer())
   W4 = tf.get_variable("W4", [2,100], initializer = tf.contrib.layers.xavier_initializer())
   parameters = {"W1": W1,
                 "W2": W2,
                 "W3": W3,
                 "W4": W4
                 }

Как правильно реализовать регуляризацию L2 по отношению к размеру мини-партии?

Большое спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...