私はこれで一日中働いていますが、私は別のものが違いをもたらすとは思わない!はtf.train.shuffle_batch()が正常に動作しません
私はここに、私はラベル付きテンソルとして画像にホッピング使用したコード> 400のコピー[ I got to use images with different shapes, but for now I just want to get this starting ]
を作った、そこから.png
ファイル、持っている:私は「何に基づいて
import tensorflow as tf
import os
import numpy
batch_Size =20
num_epochs = 100
files = os.listdir("Test_PNG")
files = ["Test_PNG/" + s for s in files]
files = [os.path.abspath(s) for s in files ]
def read_my_png_files(filename_queue):
reader = tf.WholeFileReader()
imgName,imgTensor = reader.read(filename_queue)
img = tf.image.decode_png(imgTensor,channels=0)
# Processing should be add
return img,imgName
def inputPipeline(filenames, batch_Size, num_epochs= None):
filename_queue = tf.train.string_input_producer(filenames, num_epochs=num_epochs,shuffle =True)
img_file, label = read_my_png_files(filename_queue)
min_after_dequeue = 100
capacity = min_after_dequeue+3*batch_Size
img_batch,label_batch = tf.train.shuffle_batch([img_file,label],batch_size=batch_Size,enqueue_many=True,
allow_smaller_final_batch=True, capacity=capacity,
min_after_dequeue =min_after_dequeue, shapes=[w,h,d])
return img_batch,label_batch
images, Labels = inputPipeline(files,batch_Size,num_epochs)
をテンソルとそのラベルとして20
倍の画像を取得する必要があることを理解しています。 私は怒鳴るここにコードを実行し、私が取得した内容です:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-3-08857195e465> in <module>()
34 return img_batch,label_batch
35
---> 36 images, Labels = inputPipeline(files,batch_Size,num_epochs)
<ipython-input-3-08857195e465> in inputPipeline(filenames, batch_Size, num_epochs)
31 img_batch,label_batch = tf.train.shuffle_batch([img_file,label],batch_size=batch_Size,enqueue_many=True,
32 allow_smaller_final_batch=True, capacity=capacity,
---> 33 min_after_dequeue =min_after_dequeue, shapes=[w,h,d])
34 return img_batch,label_batch
35
c:\users\engine\appdata\local\programs\python\python35\lib\site-packages\tensorflow\python\training\input.py in shuffle_batch(tensors, batch_size, capacity, min_after_dequeue, num_threads, seed, enqueue_many, shapes, allow_smaller_final_batch, shared_name, name)
1212 allow_smaller_final_batch=allow_smaller_final_batch,
1213 shared_name=shared_name,
-> 1214 name=name)
1215
1216
c:\users\engine\appdata\local\programs\python\python35\lib\site-packages\tensorflow\python\training\input.py in _shuffle_batch(tensors, batch_size, capacity, min_after_dequeue, keep_input, num_threads, seed, enqueue_many, shapes, allow_smaller_final_batch, shared_name, name)
767 queue = data_flow_ops.RandomShuffleQueue(
768 capacity=capacity, min_after_dequeue=min_after_dequeue, seed=seed,
--> 769 dtypes=types, shapes=shapes, shared_name=shared_name)
770 _enqueue(queue, tensor_list, num_threads, enqueue_many, keep_input)
771 full = (math_ops.cast(math_ops.maximum(0, queue.size() - min_after_dequeue),
c:\users\engine\appdata\local\programs\python\python35\lib\site-packages\tensorflow\python\ops\data_flow_ops.py in __init__(self, capacity, min_after_dequeue, dtypes, shapes, names, seed, shared_name, name)
626 shared_name=shared_name, name=name)
627
--> 628 super(RandomShuffleQueue, self).__init__(dtypes, shapes, names, queue_ref)
629
630
c:\users\engine\appdata\local\programs\python\python35\lib\site-packages\tensorflow\python\ops\data_flow_ops.py in __init__(self, dtypes, shapes, names, queue_ref)
151 if shapes is not None:
152 if len(shapes) != len(dtypes):
--> 153 raise ValueError("Queue shapes must have the same length as dtypes")
154 self._shapes = [tensor_shape.TensorShape(s) for s in shapes]
155 else:
ValueError: Queue shapes must have the same length as dtypes
を私はtf.train.shuffle_batch
機能で使用するには以下の形状を宣言したが、私はまだ形状誤差を持っています!
どうすればこの問題を解決できますか?
enqueue_manyのデフォルト値に返信してくれてありがとうございます。バッチはbatchSize時間pngシェイプのシェイプを持つため、Trueを設定しましたか?とにかくそれはどちらの方法でも動作しませんでした! – Engine
あなたはそれを試しましたか?私はあなたが持っている任意のpngファイルを使用することができます! – Engine
あなたの助けてくれてありがとう、それは今働いていますが、私はそれの背後にある仕組みを理解している問題を設定しました。 tf.train.shuffle_batch([img_file、label] ..)は、ファイルとそのラベルを取得するためにどのキューを使用すべきかをバッチ関数に伝え、パラメータbatchSizeはデキューする要素の数を関数に指示します。 – Engine