我有 keras 层的输出或特征图,但如何将其转换为我可以显示的图像(3D numpy 数组)。
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)
非常感谢任何意见或建议。谢谢。
最佳答案
您可以在遍历每个特征图时将每个特征图添加为子图:
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()
这会给你一些看起来像这样的东西(在我的例子中只是噪音):
关于python - 如何将 1D numpy 数组从 keras 层输出更改为图像(3D numpy 数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41969081/