【问题标题】:How to change 1D numpy array from keras layer output to image (3D numpy array)如何将 1D numpy 数组从 keras 层输出更改为图像(3D numpy 数组)
【发布时间】:2017-06-17 13:38:41
【问题描述】:

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

非常感谢任何评论或建议。谢谢。

【问题讨论】:

    标签: python numpy neural-network keras conv-neural-network


    【解决方案1】:

    您可以在迭代每个特征图时将每个特征图添加为子图:

    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()
    

    这会给你一些看起来像这样的东西(在我的例子中只是噪音):

    【讨论】:

    • 这是完美的解决方案!非常感谢你:)
    猜你喜欢
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2013-01-08
    • 2021-10-28
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多