Keras减轻体重

时间:2018-12-02 23:04:47

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

我正在使用预先训练的Keras模型MobileNets。我正在尝试将一个图层的权重保存在文本文件中。权重矩阵的维如下:

      layerr = model.layers[2].get_weights()
      print(layerr.shape)

      (1, 3, 3, 3, 32)

对于哪个3对应于通道,哪个对应于高度和宽度,我感到困惑。我知道32对应于过滤器的数量。

如果您能帮助我将它们另存为线性矩阵,那也很棒!

1 个答案:

答案 0 :(得分:2)

有些奇怪,get_weights()应该返回一个列表,在此代码中情况并非如此。无论如何,假设您从列表中选择了正确的数组,并假设它是3D卷积...(否则有些事情不太正确,我想请您分享确切的图层定义)。

听起来像3D卷积滤波器,其编号依次为:

  • 1个空间维度1
  • 3空间维度2
  • 3空间维度3
  • 3个输入通道
  • 32个输出通道

有几种保存numpy数组的方法。我喜欢numpy.save()

np.save('filename.npy', layerr)

您还可以创建一个文本文件并将其另存为文本:

with open('filename.txt', 'w') as f:
    f.write(str(layerr))

不确定“线性矩阵”是什么,但是如果只需要一个维度,则可以重塑形状:

flatWeights = layerr.reshape((-1,))
#then save

但是,如果您要保留以后使用,最好使用model.save()model.save_weights()