2017-05-10 4 views
1

Ich mag würde meine großen 1024x1024x3 Bilder in 32x32x3 Patches spalten und somit dachte ich, dass extract_image_patches() die richtige Idee ist:Mit extract_image_patches mit mehreren Kanälen in Tensorflow

... 

patch_size = [1, 32, 32, 3] 
patch_batch = tf.extract_image_patches(
    image_batch, patch_size, patch_size, [1, 1, 1, 1], 'VALID') 
patch_batch = tf.reshape(patch_batch, [-1, 32, 32, 3]) 

wo image_batch mit tf.train.shuffle_batch() erstellt wird. Dies scheint jedoch von dieser Fehlermeldung wie erklärt ‚nicht umgesetzt‘ werden:

UnimplementedError (see above for traceback): Only support ksizes across space. 
[[Node: ExtractImagePatches = ExtractImagePatches[T=DT_FLOAT, ksizes=[1, 32, 32, 3], padding="VALID", rates=[1, 1, 1, 1], strides=[1, 32, 32, 3], _device="/job:localhost/replica:0/task:0/cpu:0"](shuffle_batch)]] 

Es gibt keine Frage ist, wenn ich meine Bilder als Graustufen lesen und verwenden 1-Kanal, aber ich möchte meine Ausbildung in Vollfarbe zu tun. Muss ich nur etwas umbauen, oder fehlt mir etwas?

Python 3.4, TensorFlow 1.1.0

+0

Hat meine Antwort Ihnen geholfen? – hars

+0

Ja, das scheint mein Problem zu lösen :) – CJxD

+0

gut zu wissen :) – hars

Antwort

2

Ich denke, sollten Sie dies versuchen:

imgs = np.random.rand(1,1024,1024,3) 
patches = tf.extract_image_patches(images=imgs, ksizes=[1, 32, 32, 1], strides=[1, 32, 32, 1], rates=[1, 1, 1, 1], padding='VALID') 
patches = tf.reshape(patches,[-1,32,32,3]) 
val = sess.run(patches) 
print val.shape 

(1024, 32, 32, 3)

Sie müssen nicht angeben # Kanäle in ksizes. Es wird Patches von jedem Kanal extrahieren und Sie können es später umformen. Hilft dir das?

Das Umformverhalten muss analysiert werden, um zu prüfen, wie Patches aussehen.

Verwandte Themen