【发布时间】:2020-09-20 11:29:59
【问题描述】:
我有以下代码需要 3GB 物理 RAM 和 144GB 虚拟 RAM:
model = Sequential()
model.add(Input(shape=(input_shape,)))
model.add(Dense(50, activation='relu', kernel_initializer='he_normal'))
model.add(Dropout(0.1))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=[AUC(curve='PR',
name='auc')])
es = EarlyStopping(monitor='val_auc', patience=10, mode='max', verbose=1)
history = model.fit(X_train, y_train, batch_size=50, verbose=0,
validation_split=0.2, callbacks=[es], epochs=500)
eval_auc = max(history.history['val_auc'])
ix=np.argmax(history.history['val_auc'])
print("Number of interations: ", ix)
print(eval_auc)
X_train 的形状为 (44,000, 1,233),其数据类型为 np.int8。它需要 52MB 的内存空间。我正在使用张量流 V2.2。为什么要占用这么多空间?我应该怎么做才能减少内存使用?
【问题讨论】:
-
嗨!您能否给我们一个最小的可重现示例,以便我们可以复制粘贴此代码并查看它的工作情况。如果你把它放在我们可以直接使用的共享 google colab 中,那就更好了。
-
是的,您可以在此链接的“Overfit MLP With Early Stopping”部分运行程序:machinelearningmastery.com/…
-
在 AWS EC2 上,它显示使用了 140+GB 的虚拟内存。在我的 MacPro 上,它显示已使用超过 100GB 的虚拟内存。我使用'htop'来监控执行。您可能需要将 n_samples 增加到一个较大的数字来观察它;例如,从 100 到 1000。使用的物理 RAM 只有 200MB。
-
我不确定我是否理解。在您发布的链接中,当您提到 1233 个维度时,他们谈论的是 2D 数据。
-
最简单的方法是,如果您我可以复制粘贴您拥有的一些代码,这些代码会给出您注意到的错误。
标签: python tensorflow2.0 tensorflow2.x