verano solsticio que por mas los largo invierno epoca diciembre dias cuanto corto año alargan python tensorflow optimization

python - solsticio - El tiempo de procesamiento se alarga cada vez más después de cada iteración(TensorFlow)



solsticio de verano (1)

Estoy entrenando una CNN con TensorFlow para la aplicación de imágenes médicas.

Como no tengo muchos datos, estoy tratando de aplicar modificaciones aleatorias a mi lote de entrenamiento durante el ciclo de entrenamiento para aumentar artificialmente mi conjunto de datos de entrenamiento. Hice la siguiente función en un script diferente y lo llamo en mi lote de entrenamiento:

def randomly_modify_training_batch(images_train_batch, batch_size): for i in range(batch_size): image = images_train_batch[i] image_tensor = tf.convert_to_tensor(image) distorted_image = tf.image.random_flip_left_right(image_tensor) distorted_image = tf.image.random_flip_up_down(distorted_image) distorted_image = tf.image.random_brightness(distorted_image, max_delta=60) distorted_image = tf.image.random_contrast(distorted_image, lower=0.2, upper=1.8) with tf.Session(): images_train_batch[i] = distorted_image.eval() # .eval() is used to reconvert the image from Tensor type to ndarray return images_train_batch

El código funciona bien para aplicar modificaciones a mis imágenes.

El problema es :

Después de cada iteración de mi ciclo de entrenamiento (feedfoward + backpropagation), aplicar esta misma función a mi próximo lote de entrenamiento toma 5 segundos más que la última vez.

El procesamiento demora alrededor de 1 segundo y alcanza más de un minuto de procesamiento después de un poco más de 10 iteraciones.

¿Qué causa esta desaceleración? ¿Cómo puedo prevenirlo?

(Sospecho que algo está distorted_image.eval() pero no estoy muy seguro. ¿Estoy abriendo una nueva sesión cada vez? No se supone que TensorFlow cierre automáticamente la sesión, ya que la uso en un bloque "con tf.Session ()" ?)


Llama a ese código en cada iteración, por lo que cada iteración agrega estas operaciones al gráfico. No quieres hacer eso. Desea construir el gráfico al inicio y en el ciclo de entrenamiento solo ejecutarlo. Además, ¿por qué necesita convertir a ndimage nuevamente después, en lugar de poner las cosas en su gráfico TF una vez y usar tensores por completo?