Código de salida deficiente al administrar varias sesiones

Tengo un problema extraño al entrenar modelos contf.Graph ytf.Session. Y la implementación es algo extraña, así que tengan paciencia conmigo. Me gustaría explicar la estructura de la aplicación.

El problema ha sido finalmente (y algo embarazoso)resuelt actualizando todos los paquetes.

Solicitu

La aplicación es un servicio para manejar múltiples redes neuronales: entrenarlas y hacer predicciones sobre ellas. Por esta razón, un solo gráfico no era suficiente. Entonces, al crear un nuevo modelo, primero inicializo ambasGraph y unSession al igual que

def __init__(self):
    self.graph = tf.Graph()
    with self.graph.as_default():
        self.session = tf.Session()

uego, se utilizan tanto en el proceso de capacitación como al cargar un modelo desde el disco.

def fit(self, x_train, y_train, n=200, batch=256):
    with self.graph.as_default():
        with self.session.as_default():
            self.model.fit(x_train, y_train, epochs=n, batch_size=batch, verbose=0)

Aquí es donde ocurre el problema (he logrado comentar todo uno por uno, y el método de ajuste es donde está), pero para más contexto, aquí también está el método de creación (despojado). Utiliza Keras.

def create(self):
    with self.graph.as_default():
        with self.session.as_default():
            self.model = Sequential()
            self.model.add(Dense(64, input_dim=shape[0], activation='relu',
                                 kernel_regularizer=reg.l1_l2(0.1, 0.2)))
            self.model.add(Dropout(0.5))
            self.model.add(Dense(1, activation='sigmoid', kernel_regularizer=reg.l1_l2(0.1, 0.2)))
            self.model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
Problem

Al inicializar la red y ajustarla con datos, el proceso sale con un código incorrecto:0xC0000005. Esto no da mucha información sobre el problema en sí, y el código de salida incorrecto se da en ese momento, al salir. @ Incluso aprinta instrucción @ se ejecuta con éxito después de las rutinas. Esto me ha llevado a sospechar que no es un problema con la implementación, sino algo más.

Medio ambient

Estoy usando Python 3.6.5 en PyCharm, pero el problema ha ocurrido incluso cuando se ejecuta desde una línea de comandos. Como dije, hay varios modelos malabarizados, pero un entrenamiento es suficiente para chocar.

¿Qué podría ser la culpa aquí? Me doy cuenta de que no es un problema tan reproducible, pero agradecería mucho cualquier indicador que apuntara incluso a la depuración.

Aventuras

Intenté modificar elfit función de acuerdo conesta respuesta, pero sin suerte. Aquí está la versión modificada:

from keras import backend as K
import gc

def fit(self, x_train, y_train, n=20, batch=256):
    K.set_session(self.session)
    with self.graph.as_default():
        with self.session.as_default():
            self.model.fit(x_train, y_train, epochs=n*10, batch_size=batch, verbose=0)
    K.clear_session()
    gc.collect()

Next Traté de crear una nueva sesión para cada cálculo tf.Session(graph=self.graph)). Funcionó al usar elcg.collect(), pero después de entrenar al modelo, no pude hacer predicciones con una nueva sesión. @tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value dense_1/bias

Actualiza

Actualmente (8 de noviembre) Estoy liberando todos los recursos posibles antes de crear y al cargar un modelo. Esto ha tenido el efecto de que puedo crear el modelo una vez, pero la segunda vez (hago dos pases de entrenamiento para evaluar el modelo de forma independiente) el programa se bloquea como antes. Probemos una nueva pregunta, esto se está yendo de las manos. @Q v.2

Respuestas a la pregunta(0)

Su respuesta a la pregunta