2017-08-19 2 views
1

Ich möchte Batch verwenden, um Bild aus Dateiordner zu lesen Aber nach dem Decodieren könnte das ein paar Probleme sein, wenn ich tf.train.batch verwende. Hier ist der Code.Tensorflow ValueError: Alle Formen müssen vollständig definiert sein: [TensorShape ([Dimension (keine), Dimension (keine), Dimension (3)], TensorShape ([])

def get_batch(image, label, batch_size, capacity): 

image = tf.cast(image, tf.string) 
label = tf.cast(label, tf.int32) 

input_queue = tf.train.slice_input_producer([image, label]) 

label = input_queue[1] 
image_contents = tf.read_file(input_queue[0]) 
image = tf.image.decode_jpeg(image_contents, channels=3) 
image = tf.image.per_image_whitening(image) 

image_batch, label_batch = tf.train.batch([image, label], 
              batch_size = batch_size, 
              num_threads = 8, 
              capacity = capacity) 

label_batch = tf.reshape(label_batch, [batch_size]) 
image_batch = tf.cast(image_batch, tf.float32) 

return image_batch, label_batch 

Und der Fehler besagt, dass ich einige Tensorshapes nicht definiert habe. Ich weiß nicht, wie es geht. Vielleicht habe ich Dekodieren nicht richtig benutzt. Hier ist der Fehler.

Traceback (most recent call last): 
    File "input_data.py", line 118, in <module> 
    image_batch, label_batch = get_batch(image_list, label_list, BATCH_SIZE, CAPACITY) 
    File "input_data.py", line 90, in get_batch 
    capacity = capacity) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/input.py", line 538, in batch 
    capacity=capacity, dtypes=types, shapes=shapes, shared_name=shared_name) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/data_flow_ops.py", line 453, in __init__ 
    shapes = _as_shape_list(shapes, dtypes) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/data_flow_ops.py", line 71, in _as_shape_list 
    raise ValueError("All shapes must be fully defined: %s" % shapes) 
ValueError: All shapes must be fully defined: [TensorShape([Dimension(None), Dimension(None), Dimension(3)]), TensorShape([])] 

Antwort

1

die Daten, die Sie Batch wollen haben müssen vordefinierte Form, in Ihnen Fall Tensor image nicht, müssen Sie die Form mit image.set_shape oder tf.image.resize_images

+0

Sie angeben, Vielen Dank. – Abraham

Verwandte Themen