มันจะเป็นไปได้ข้าวโพดไปส่วนหนึ่/ปรับขนาดภาพต่างๆต่อการประมวลผลกลุ่มภาพ?
ฉันกำลังใช้ Tensorflow วันที่รูปแบบ api ที่ด้านล่างนี้:
dataset = dataset.shuffle().repeat().batch(batch_size, drop_remainder=True)
ฉันต้องการในการประมวลผลกลุ่มภาพทั้งหมดภาพควรจะต้องไปในรูขนาดเดียวกัน. อย่างไรก็ข้าม batches มันจะต้องแตกต่างขนาด
สำหรับตัวอย่างให้หน่วยที่ 1 ระงับการประมวลผลกลุ่มภาพได้ทั้งหมดภาพต่างๆของรูปร่าง(batch_size,300,300,3). ต่อการประมวลผลกลุ่มภาพได้ภาพของรูปร่าง(batch_size,224,224,3). อีกการประมวลผลกลุ่มภาพได้ภาพของรูปร่าง(batch_size,400,400,3).
ง่ายๆเลยคือฉันต้องการที่จะมี dymanically รูปร่าง batches อย่างไรก็ตามทั้งหมดภาพต่างๆในการประมวลผลกลุ่มภาพมีคลื่นเสียงบอกความของรูปร่าง
ถ้าเราทำตามที่ติดตาม:
dataset = dataset.shuffle().repeat().batch(batch_size, drop_remainder=True).map(lambda x, y: map_fn(x, y))
ที่ด้านบนแผนที่()ใช้กับแต่ละการประมวลผลกลุ่มภาพต่างกันหรือทั้งหมดวันที่?
ถ้าทางด้านบนแผนที่()ไม่ต้องกันการประมวลผลกลุ่มภาพต่างกัน,แล้วพวกเราจะเป็นยังไงทำแบบนี้? เราสามารถกำหนดอะไร iterator หลังจากวันที่.การประมวลผลกลุ่มภาพ(),ปรับใช้ tf.ภาพได้ที่นี่crop_and_resize()กับภาพต่อการประมวลผลกลุ่มภาพแล้วหลังจากนั้นใช้วันที่.concatenate()จะรวมทุกเปลี่ยน batches?
ฉันกำลังสร้างควันที่เป็นด้านล่างนี้:
# Dataset creation (read image data from files of COCO dataset)
dataset = tf.data.Dataset.list_files(self._file_pattern, shuffle=False)
dataset = dataset.shard(dataset_num_shards, dataset_shard_index)
dataset = dataset.shuffle(tf.cast(256 / dataset_num_shards, tf.int64))
dataset = dataset.interleave(map_func=tf.data.TFRecordDataset(filename).prefetch(1), cycle_length=32, block_length=1, num_parallel_calls=tf.data.experimental.AUTOTUNE)
dataset = dataset.map(tf_example_decoder.TfExampleDecoder().decode, num_parallel_calls=64)
dataset = dataset.shuffle(64).repeat()
# Parse each image for preprocessing
dataset = dataset.map(lambda data, _: _parse_example(data), num_parallel_calls=64)
dataset = dataset.batch(batch_size=batch_size, drop_remainder=True)
# Below code suggested by you to resize images to fixed shape in each batch
def resize_data(images, labels):
tf.print('Original shape -->', tf.shape(images))
SIZE = (300, 300)
return tf.image.resize(images, SIZE), labels
dataset = dataset.map(resize_data)
dataset = dataset.prefetch(tf.data.experimental.AUTOTUNE)
tf.estimator.Estimator(...).train(
input_fn=dataset,
steps=steps,
hooks=train_hooks)
INVALID_ARGUMENT: Cannot add tensor to the batch: number of elements does not match. Shapes are: [tensor]: [640,426,3], [batch]: [480,640,3]
ถึงแม้ว่าฉันให้ของขนาด=(300,300)ใน tf.ภาพได้ที่นี่ปรับขนาด(ภาพ,ขนาด,การประมวลผลกลุ่มภาพมีขนาด=(480,640). และอย่างที่หน้าของภาพมีขนาดที่แตกต่างกัน=(640,426)มันล้มเหลวในการเพิ่มมันต้องการประมวลผลกลุ่มภาพ. นั่นหมายความว่ายังไงมันก็ไม่สามารถใช้ได้แผนที่ฟังก์ชัน()จะอยู่แต่ละบุคคลหนึ่งการประมวลผลกลุ่มภาพ. ช่วย/ความคิด?