如何将Keras层输出的1维numpy数组转换为图像(3维numpy数组)

3

我有一个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)

任何评论或建议都非常感谢。谢谢。
1个回答

3
您可以在迭代每个特征图时将其添加为子图:
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()

这将给您一个类似于以下内容的东西(在我的情况下只是噪音):

输入图像描述


这是完美的解决方案!无法感谢你们足够 :) - matchifang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接