2016-05-08 56 views
9

Bellow, Keras dokümantasyonundan örnek kodun bir parçasıdır. İlk evrişim, 3 renk kanallı 256x256 görüntüyü kabul ediyor gibi görünüyor. 64 tane çıkış filtresi var (bence bunlar başkaları hakkında okuduğum özellik haritaları ile aynıdır, birisi bunu benim için onaylayabilir). Beni şaşırtan şey, çıktı büyüklüğünün (Yok, 64, 256, 256) olmasıdır. Renk kanallarının her biri için konvolüsyonlar yapması gerekeceğinden (Yok, 64 * 3, 256, 256) olmasını beklerdim. Merak ettiğim şey, Keras'ın renk kanallarını nasıl ele geçirdiğidir. Konvolüsyondan geçmeden önce değerler ortalaması alınır mı (gri skala dönüştürülür)?Keras konvolüsyon katmanları renk kanalları ile ne yapar?

# apply a 3x3 convolution with 64 output filters on a 256x256 image: 
model = Sequential() 
model.add(Convolution2D(64, 3, 3, border_mode='same', input_shape=(3, 256, 256))) 
# now model.output_shape == (None, 64, 256, 256) 

# add a 3x3 convolution on top, with 32 output filters: 
model.add(Convolution2D(32, 3, 3, border_mode='same')) 
# now model.output_shape == (None, 32, 256, 256) 

cevap

5

3 giriş kanallı boyutu 3 * 3 bir filtre 3 * 3 * 3 parametrelerden oluşur, böylece her bir kanal için konvolüsyon çekirdeklerin ağırlıklarının farklıdır. Çıktı almak için her kanalın (muhtemelen bir önyargı ile birlikte) konvolüsyon sonuçlarını özetlemektedir. böylece çıktı şekli, giriş kanallarının sayısından bağımsızdır, örneğin, (Yok, 64 * 3, 256, 256) yerine (Yok, 64, 256, 256).

% 100 emin fakat bir özelliği, harita girişi (örneğin, bir 256 x 256 matris) için böyle bir filtre uygulamadan çıkışına değinmektedir düşünüyorum.