2016-04-24 21 views
5

Yoğun katman ve okumadan önce sıkıştırma için görüntünün (rgb) derinliği üzerinde bir maksimum havuz yapmak için tanımlanan aşağıdaki parametreler var ... ve derinlik ve diğer her şeyden havuz yapamadığım bir hatayla başarısız oldum: Tensorflow: Derinlikte Havuz Nasıl Yapılır?

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

ederim o kadar derinlik havuz azaltılmış tek boyuttur [1,1,1,3] için atılımlar değişti ... ama yine de çalışmıyor. Ben ... Ben renkleri tutmak için her şeyi sıkıştırmak zorunda minik görüntü ile iyi sonuçlar alamayan

Gerçek Hata:

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

+0

Hata mesajı neler olup bittiğini açıklıyor. – etarion

+0

@etarion Ah ... Bunu mantıksal bir 'AND' olarak okudum: yığın VE derinlik boyutları (görünüşe göre "parti veya derinlik" boyutları olarak ifade edilenler yerine). Öyleyse, mantıklı olarak, eğer bir tanesini havuzda yapmazsam, diğerinin üzerinde durabilmem gerekir. Her neyse, eğer ne söylediğini açıklamış olsaydın, bu mantıklı olurdu, çünkü hata mesajı, ne demek istediğindekinden başka bir şey söylüyor. – bordeo

cevap

6

tf.nn.max_pool üzerinden toplanarak desteklemez derinlik boyutu, bu yüzden bir hata alırsınız.

Sen aradığınızı elde etmek yerine maksimum azalma kullanabilirsiniz:

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

keep_dims parametre yukarıdaki tensör sıralaması korunmuş olmasını sağlar. Bu, maksimum azaltmanın davranışının, tf.nn.max_pool işleminin, derinlik boyutunun üzerinde havuzlamayı destekliyorsa ne yapacağıyla tutarlı olmasını sağlar.

+0

maalesef sadece max_pool ile değil, aynı zamanda conv2d ile de gerçekleşir. Bu benim fonksiyonum tf.nn.conv2d (img_input, w, strides = [1, 1, 1, 3], padding = 'SAME'), b) 've bana aynı hatayı verdi. Rengi tutmam gerek. Bence bu, conv2d işlevinin verimsizliğidir, değil mi? – Kyrol