2016-04-24 10 views
5

Ho definito i seguenti parametri per fare un pool massimo sulla profondità dell'immagine (rgb) per la compressione prima del livello denso e della lettura ... e non riesco con un errore che non riesco a raggruppare in profondità e tutto il resto:Tensorflow: come fare il Pool Over Depth?

sunset_poolmax_1x1x3_div_2x2x3_params = \ 
    {'pool_function':tf.nn.max_pool, 
    'ksize':[1,1,1,3], 
    'strides':[1,1,1,3], 
    'padding': 'SAME'} 

ho cambiato il passi per [1,1,1,3] in modo che la profondità è l'unica dimensione ridotta in piscina ... ma ancora non funziona. Non riesco a ottenere buoni risultati con la minuscola immagine che ho di comprimere tutto al fine di mantenere i colori ...

errore effettivo:

ValueError: Current implementation does not support pooling in the batch and depth dimensions.

+0

Il messaggio di errore spiega più o meno cosa sta succedendo. – etarion

+0

@etarion Ah ... Stavo leggendolo come un 'AND' logico: dimensioni batch AND depth (invece di quelle che apparentemente si intendevano come dimensioni "batch o depth"). Quindi, logicamente, se non ne raccolgo uno, dovrei essere in grado di raggruppare l'altro. Comunque, se avessi spiegato cosa stavi dicendo, avrebbe avuto senso, perché il messaggio di errore sta praticamente dicendo qualcosa di diverso da quello che intendeva dire. – bordeo

risposta

6

tf.nn.max_pool non supporta il pool over la dimensione della profondità è il motivo per cui ottieni un errore.

È possibile utilizzare una riduzione massima, invece per ottenere quello che stai cercando:

tf.reduce_max(input_tensor, reduction_indices=[3], keep_dims=True)

Il parametro keep_dims sopra assicura che il rango del tensore è conservato. Ciò garantisce che il comportamento della riduzione massima sia coerente con ciò che l'operazione tf.nn.max_pool avrebbe eseguito se supportasse il pooling della dimensione di profondità.

+0

sfortunatamente non accade solo con max_pool, ma anche con conv2d. Questa è la mia funzione 'tf.nn.conv2d (img_input, w, strides = [1, 1, 1, 3], padding = 'SAME'), b)' e mi dà lo stesso errore di @bordeo. Ho bisogno di mantenere il colore. Penso che questa sia una inefficienza della funzione conv2d, non è vero? – Kyrol