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))
它们的尺寸应该相同