2017-11-02 348 views
5

Konvolüsyon adımları dinamik olarak nasıl seçilir?Konvolüsyon adımları dinamik olarak nasıl seçilir?

tutucuları kullanma çalışmak görünmüyor:

s = tf.placeholder(np.int32) 
image = tf.placeholder(np.float32, [None, 3, 32, 32]) 
tf.layers.conv2d(image, 
       filters=32, 
       kernel_size=[3, 3], 
       strides=[s, s], 
       padding='same', 
       data_format='channels_first') 

Bu TypeError verir. havuzu yaparken

Benzer zorluklar pool_size ve strides ile ortaya çıkmaktadır.

cevap

5

Ne yazık ki Tensorflow, Tensörlerin conv2d tanımına geçmesine izin vermez. Kullandığım yaklaşım temel olarak conv2d'u 1 adımlarla çalıştı ve ardından sonucu gereken adımlarla dilimlemek. Muhtemelen optimal yaklaşım değil, ama çalışıyor ve tf.strided_slice tensörleri kullanabilir.

s = tf.placeholder(np.int32,[4]) 
image = tf.placeholder(np.float32, [None, 3, 32, 32]) 
convoluted = tf.layers.conv2d(image, 
       filters=32, 
       kernel_size=[3, 3], 
       strides=[1,1], 
       padding='same', 
       data_format='channels_first') 
result = tf.strided_slice(convoluted, 
          [0,0,0,0], 
          tf.shape(convoluted), 
          s) 

Sonra her giriş dolambaçlı girişinin ilgili boyutunda adımlarla karşılık vadede sırasında s 4 adım boyutları geçirebilirsiniz: Yani sizin durumda o gibi bir şey olurdu.