2017-10-18 80 views
0

我已经提到了这个问题,但我不太了解Mr.rrrr先生提供的第二种方法 。克服Graphdef在张量流中不能大于2GB - 图像转换与tf

overcome Graphdef cannot be larger than 2GB in tensorflow

基本上,我试图用TF内置的图像上的图像变换方法。我遇到了标题中提供的错误。 另外,我是否需要不断为每个迭代创建一个新的会话? 目前,这个过程有点慢,我不知道如何加快速度。

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) 

回答

1

这不是应该如何使用TF。

  1. 您应该创建一次图
  2. 您应该创建会话一次

您当前的代码在循环中执行这两个操作,从而导致缓慢和内存问题。问题在于这样一个事实:TF不是命令式语言,所以

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

不上image.This功能的应用程序在图形形成操作,并将参照本操作new_img。所以每次你调用这个函数,你的图形都会增长。

因此,在伪代码应该是:

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 
相关问题