2017-01-31 4 views
3

Ich habe die Ausgabe oder Feature-Maps einer Keras-Schicht, aber wie kann ich das in Bilder (3D numpy array) konvertieren, die ich anzeigen kann.Wie man 1D numpy Array von keras Schichtausgabe zu Bild (3D numpy array) ändert

model = VGG16(weights='imagenet', include_top=True) 
layer_outputs = [layer.output for layer in model.layers[1:]] 
print layer_outputs 
viz_model = Model(input=model.input, 
        output=layer_outputs) 
features = viz_model.predict(x) 

output = features[0] #has shape (1,224,224,64) 

Jeder Kommentar oder Vorschlag wird sehr geschätzt. Vielen Dank.

Antwort

3

Sie können die einzelnen Funktionen der Karte als subplot hinzufügen, während über jede Iteration ein:

import numpy as np 
import matplotlib.pyplot as plt 
from pylab import cm 

m = np.random.rand(1,224,224,64) 

fig = plt.figure() 
fig.suptitle("Feature Maps") 

for j in range(m.shape[3]): 
    ax = fig.add_subplot(8, 8, j+1) 
    ax.matshow(m[0,:,:,j], cmap=cm.gray) 
    plt.xticks(np.array([])) 
    plt.yticks(np.array([])) 

plt.show() 

Welche Ihnen etwas geben, das (nur Lärm in meinem Fall) wie folgt aussieht:

enter image description here

+0

Dies ist die perfekte Lösung! Kann dir nicht genug danken :) – matchifang