Python 实例化新模型后,Keras模型的大小会增加

Python 实例化新模型后,Keras模型的大小会增加,python,python-3.x,tensorflow,keras,tensorflow2.0,Python,Python 3.x,Tensorflow,Keras,Tensorflow2.0,标题不言自明,玩具代码如下所示: from pympler import asizeof from keras.models import Sequential from keras.layers import Dense model_1 = Sequential([ Dense(1, activation='relu', input_shape=(10,)), ]) print('Model 1 size = ', asizeof.asizeof(model_1)) model_2

标题不言自明,玩具代码如下所示:

from pympler import asizeof 
from keras.models import Sequential
from keras.layers import Dense

model_1 = Sequential([
  Dense(1, activation='relu', input_shape=(10,)),
])

print('Model 1 size = ', asizeof.asizeof(model_1))

model_2 = Sequential([
  Dense(1, activation='relu', input_shape=(10,)),
])

print('Model 1 size = ', asizeof.asizeof(model_1))
print('Model 2 size = ', asizeof.asizeof(model_2))
Pympler是一个Python内存分析器。代码的输出为:

Model 1 size =  68624
Model 1 size =  92728
Model 2 size =  92728
所需输出为:

Model 1 size =  68624
Model 1 size =  68624
Model 2 size =  68624
Python版本:Python 3.6.8

Keras版本:2.3.1

Tensorflow版本:2.1.0

我怀疑这是一个bug,如果这确实是一个bug,我将在他们的Github中提交一个问题。

在文档中 上面说,

如果all为True且未提供位置参数。调整所有当前gc对象的大小,包括模块、全局和堆栈框架对象

也许你要找的是
basicsize

from pympler import asizeof 
import gc
from keras.models import Sequential
from keras.layers import Dense

model_1 = Sequential([
  Dense(1, activation='relu', input_shape=(10,)),
])

gc.collect()
print('Model 1 size = ', asizeof.basicsize(model_1))

gc.collect()
model_2 = Sequential([
  Dense(1, activation='relu', input_shape=(10,)),
])

print('Model 1 size = ', asizeof.basicsize(model_1))

print('Model 2 size = ', asizeof.basicsize(model_2))
它们的尺寸应该相同