Максимальная ошибка глубины рекурсии при использовании ModelCheckpoint в Keras - PullRequest
0 голосов
/ 21 апреля 2019

Я тренирую модель с ~ 30 000 параметров, и я хотел бы использовать обратный вызов ModelCheckpoint, чтобы сохранять состояние модели после каждой эпохи.

В настоящее время я не могу сохранить модель. Я получаю следующую ошибку:

RuntimeError: maximum recursion depth exceeded while calling a Python object

Я попытался найти решение, которое нашел в другом месте (например, здесь ), но оно не помогло.

import sys
sys.setrecursionlimit(10000)

Как мне обойти эту проблему?

1 Ответ

0 голосов
/ 21 апреля 2019

Aha! Я нашел подсказку здесь ...

... и изменил его. У меня есть лямбда-слой, который изначально был написан так:

    def sampling(args):
        z_mean, z_log_sigma = args
        epsilon = K.random_normal(shape=((self.batch_size - self.n_lags), self.hid_dim_2), mean=0., stddev=1.) 
        return z_mean + z_log_sigma * epsilon

    zlambda = Lambda(sampling, output_shape=(self.hid_dim_2,))([z_mean, z_log_sigma]) 

Я переместил shape в глобальную переменную, и вуаля!

    shape_val = ((self.batch_size - self.n_lags), self.hid_dim_2) #Need this to be a global variable, otherwise Recursion Depth Error of death.

    def sampling(args):
        z_mean, z_log_sigma = args
        epsilon = K.random_normal(shape=shape_val, mean=0., stddev=1.)
        return z_mean + z_log_sigma * epsilon

    zlambda = Lambda(sampling, output_shape=(self.hid_dim_2,))([z_mean, z_log_sigma]) #Saving and loading Lambda layers is weird.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...