2017-10-18 11 views
0

J'ai fait référence à cette question, mais je ne comprends pas très bien la deuxième méthode fournie par M.mrry.surmonté Graphdef ne peut pas être plus grand que 2GB dans tensorflow - Transformations d'image avec tf

overcome Graphdef cannot be larger than 2GB in tensorflow

Fondamentalement, je suis en train d'utiliser tf est construit dans les méthodes de transformation d'image sur les images. Je cours dans l'erreur fournie dans le titre. De même, dois-je continuer à créer une nouvelle session pour chaque itération? Actuellement, ce processus est un peu lent et je ne sais pas comment l'accélérer.

import tensorflow as tf 
import os 
from scipy.ndimage import imread 
from scipy.misc import imresize, imshow 
import matplotlib.pyplot as plt 


for fish in Fishes: 
    fish_images = os.listdir(os.path.join('C:\\Users\\Moondra\\Desktop\\Fishes', fish)) # get the image files 
    os.makedirs(SAVE_DIR + fish, exist_ok = True) 
    for num, fish_image in enumerate(fish_images): 
     image =imread(os.path.join('C:\\Users\\Moondra\\Desktop\\Fishes', fish, fish_image)) 
     new_img =tf.image.adjust_brightness(image, .4) #image transformation 
     with tf.Session() as sess: 

      new_image =sess.run(new_img) 
      imsave(os.path.join(SAVE_DIR, fish, fish +str(num)+'.jpg'), new_image) 

Répondre

1

Ce n'est pas ainsi que TF doit être utilisé. Vous devez créer le graphique une fois.

  • Vous devez créer la session une fois. Votre code actuel fait les deux choses en boucle, causant ainsi des problèmes de lenteur et de mémoire. Le problème réside dans le fait que TF est pas un langage impératif, donc

    new_img =tf.image.adjust_brightness(image, .4) #image transformation 
    

    n'est pas l'application d'une fonction sur le image.This crée une opération dans un graphique, et stocke référence à cette opération new_img. Donc, chaque fois que vous appelez cette fonction, votre graphique se développe.

    donc dans le code pseudo, il devrait être:

    create placeholder for image name 
    create transformed image op - new_img 
    create session 
    for each image 
        call in a session new_img op, providing path to the placehodler using feed_dict