私はTensorFlow
とkeras.preprocessing.image.ImageDataGenerator()
を使用してトレーニング前にすべてのクラスのサンプルサイズをバランスさせる合成データを生成します。ここで Tensorflow:raise ValueError( "GraphDefは2GBを超えることはできません")tf.imageとkerasを使用してデータを拡大する
Traceback (most recent call last):
File "data_augmentation.py", line 100, in <module>
run(fish_class_aug_fold[i])
File "data_augmentation.py", line 93, in run
data_augmentation(img_handle, fish_class, aug_fold)
File "data_augmentation.py", line 52, in data_augmentation
img = session.run(img)
File "/Users/local/anaconda2/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 778, in run
run_metadata_ptr)
File "/Users/local/anaconda2/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 982, in _run
feed_dict_string, options, run_metadata)
File "/Users/local/anaconda2/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1032, in _do_run
target_list, options, run_metadata)
File "/Users/local/anaconda2/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1039, in _do_call
return fn(*args)
File "/Users/local/anaconda2/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1017, in _run_fn
self._extend_graph()
File "/Users/local/anaconda2/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1061, in _extend_graph
add_shapes=self._add_shapes)
File "/Users/local/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2154, in _as_graph_def
raise ValueError("GraphDef cannot be larger than 2GB.")
ValueError: GraphDef cannot be larger than 2GB.
が私のコードです:私は以下のようにエラーメッセージが表示されました
def data_augmentation(img_handle, fish_class, nb_fold):
"""
This function is to generate synthetic pics for each class
parameters:
img_handle: a path for each input img
class: name of each class in this problem
nb_fold: an integer which indicates the number of folds that should run for each class
for generating the same number of images for each class.
"""
img = cv2.imread(img_handle)
# randomly adjust the hue of the img
img = tf.image.random_hue(img, max_delta=0.3)
# randomly adjust the contrust
img = tf.image.random_contrast(img,lower=0.3, upper=1.0)
# randomly adjust the brightness
img = tf.image.random_brightness(img, max_delta=0.2)
# randomly adjust the saturation
img = tf.image.random_saturation(img, lower=0.0, upper=2.0)
with tf.Session() as session:
# this output is np.ndarray
img = session.run(img)
datagen = ImageDataGenerator(
rotation_range=45,
width_shift_range=0.2,
height_shift_range=0.2,
rescale = 1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
x = img.reshape((1,) + img.shape) # this is a Numpy array with shape (1, 3, height, width)
i = 0
for batch in datagen.flow(x, batch_size=1, save_to_dir = data_dir+class, \
save_prefix=class, save_format='jpg'):
i += 1
if i > nb_fold-1:
break
私の考えでは、ランダムに「tf.image」関数を用いて入力画像を変更し、tf.image
の出力を使用することですトレーニングの前に合成画像を生成するためにkeras.preprocessing.image.ImageDataGenerator()
の入力として使用します。
私は問題がsession.run(img)
から来たと思います。 なぜそれが起こり、どのように解決するのか分かりません。
ありがとうございました!
画像の寸法は?彼らが大きすぎる可能性があります。 –
@RobertValencia 2D画像、その大部分は1280 x 720です。tf.imageを使用するには大きすぎますか? – Jundong
エラーは、指定されたコードではなく、ロードされているGraphDefに関連していることを示しています。どのようにしてプログラムに取り込むのですか?https://www.tensorflow.org/extend/tool_developers/#graphdef –