Numpy数组内存使用问题

2024-06-28 11:39:42 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我想说这是我第一次在这里发问,我希望我不会违反任何规则,如果是的话,请随时纠正我。我会尽量说清楚。在

我正在实现我自己版本的卷积神经网络(CNN),我正面临一个关于numpy数组的问题。我的实现一直在工作,而且还在工作,问题是我的CNN实例占用了比几个小时前更多的内存。故障排除后,我发现只有全连通层的参数才显示出这个问题(可能是因为它太重了,所以在卷积层就不会出现问题)。 我加载了一个旧的实例,我保存了它来演示。两者都是大小几乎相同的numpy阵列:

>>> n.FCLay[0].theta.values.shape
(27744, 800)
>>> m.FCLay[0].theta.values.shape
(23064, 800)

n是“大”CNN,m是“小”CNN(考虑内存使用)

此外,它们包含的数据类型与显示的screen capture相同

但是,当我查看它们与pympler's asizeof一起使用的内存时,我得到的是:

^{pr2}$

正如你所看到的,差别是相当大的。在

所以我一直在尝试不同的东西:

^{3}$

似乎这里的大小是可比的,我不明白为什么如果你参考一系列的结果

>>> n.FCLay[0].theta.values.itemsize
2
>>> n.FCLay[0].theta.values.itemsize
2

关于源代码,这些值是如何初始化的:

    self.values = np.random.randn
    self.values = np.random.randn(sizePrevLay, sizeNextLay)
    self.values *= sqrt(2.0/sizeInpt)
    self.values = self.values.astype(np.float16)

(上述测试在初始化后和进行一些计算后给出了相同的结果)

谢谢你的阅读。我希望这已经足够了,请随意要求任何精确性。在


Tags: 实例内存selfnumpy规则nprandom卷积