2016-01-29 21 views
5

Convolutional Neural Networks tutorial okuyorum. Model eğitildikten sonra her katmanın çıktısını görselleştirmek istiyorum. Örneğin, "assessment_lenet5" işlevinde, ağa bir örneği (bir resim) iletmek ve her katmanın çıktısını görmek ve Neural Ağ için girdi için eğitilen sınıfı görmek istiyorum. Her katmanın bir görüntü ve Ağırlık vektöründe nokta ürünü yapmak kolay olabileceğini düşündüm, ama hiç işe yaramadı.Her katmanın çıktısını görselleştirin. Conquerent MLP

ben her katmanın nesneleri vardır:

# Reshape matrix of rasterized images of shape (batch_size, 28 * 28) 
# to a 4D tensor, compatible with our LeNetConvPoolLayer 
# (28, 28) is the size of MNIST images. 
layer0_input = x.reshape((batch_size, 1, 28, 28)) 

# Construct the first convolutional pooling layer: 
# filtering reduces the image size to (28-5+1 , 28-5+1) = (24, 24) 
# maxpooling reduces this further to (24/2, 24/2) = (12, 12) 
# 4D output tensor is thus of shape (batch_size, nkerns[0], 12, 12) 
layer0 = LeNetConvPoolLayer(
    rng, 
    input=layer0_input, 
    image_shape=(batch_size, 1, 28, 28), 
    filter_shape=(nkerns[0], 1, 5, 5), 
    poolsize=(2, 2) 
) 

# Construct the second convolutional pooling layer 
# filtering reduces the image size to (12-5+1, 12-5+1) = (8, 8) 
# maxpooling reduces this further to (8/2, 8/2) = (4, 4) 
# 4D output tensor is thus of shape (batch_size, nkerns[1], 4, 4) 
layer1 = LeNetConvPoolLayer(
    rng, 
    input=layer0.output, 
    image_shape=(batch_size, nkerns[0], 12, 12), 
    filter_shape=(nkerns[1], nkerns[0], 5, 5), 
    poolsize=(2, 2) 
) 

# the HiddenLayer being fully-connected, it operates on 2D matrices of 
# shape (batch_size, num_pixels) (i.e matrix of rasterized images). 
# This will generate a matrix of shape (batch_size, nkerns[1] * 4 * 4), 
# or (500, 50 * 4 * 4) = (500, 800) with the default values. 
layer2_input = layer1.output.flatten(2) 

# construct a fully-connected sigmoidal layer 
layer2 = HiddenLayer(
    rng, 
    input=layer2_input, 
    n_in=nkerns[1] * 4 * 4, 
    n_out=500, 
    activation=T.tanh 
) 

# classify the values of the fully-connected sigmoidal layer 
layer3 = LogisticRegression(input=layer2.output, n_in=500, n_out=10) 

Yani sinir ağı eğitimli sonra adım bir görüntü adımı işleme bir örnek görselleştirmek için bir yol önerebilir?

cevap

6

Bu çok zor değil. Eğer Theano derin öğrenme öğreticisindeki LeNetConvPoolLayeraynı sınıf tanımını kullanıyorsanız , o zaman sadece LayerObjectlayer0 gibi herhangi katman nesnesi olabilir çıkışı (aynı girdi olarak x ve [LayerObject].output sahip bir işlev derlemek gerekiyor, layer1 vb görselleştirmek istediğiniz başka tabaka.

vis_layer1 = fonksiyonu ([x] [layer1.output])

Bir (veya birçok) numuneyi (eğitim sırasında giriş tensörünü tam olarak nasıl beslediğiniz gibi) geçirin ve işlevinizin derlendiği bu belirli katmanın çıktısını alırsınız.

Not: Bu şekilde modeli hesaplamasında kullandığı aynı şekil yılında çıkışları alacak. Ancak, layer1.output.flatten(n) gibi çıktı değişkenini yeniden şekillendirerek şeklini yeniden oluşturabilirsiniz.