我已经提到了这个问题,但我不太明白 Mr.mrry提供的第二种方法。
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)
答案 0 :(得分:2)
这不是TF的使用方式。
您当前的代码在循环中执行这两项操作,从而导致速度缓慢和内存问题。问题在于TF不是命令式语言,所以
new_img =tf.image.adjust_brightness(image, .4) #image transformation
不是在图像上应用函数。这会在图形中创建一个操作,并在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