训练模型时如何修复内存错误?

How to fix Memory Error while training model?

我最近一直在研究神经网络,但每次我尝试编译模型时,我都会收到一个 SIGKILL,通过查看 Activity 监视器,它来自内存错误。我的数据非常大,但这不是问题的一部分,因为我尝试使用其中的一小部分,但我仍然遇到同样的错误。这是我正在使用的代码:

f = gzip.GzipFile('Data_x.npy.gz', "r")
datax = np.load(f)[:5, :, :]
f.close()
f = gzip.GzipFile('Data_y.npy.gz', "r")
datay = np.load(f)[:5, :, :]

f.close()
f = None
model = Sequential(
    [
        #Conv1D(32, 3, input_shape=datax.shape, activation="relu"),
        Flatten(input_shape=datax.shape),
        Dense(750, activation='relu'),
        Dense(750, activation='relu'),
        Dense(2, activation='sigmoid')
    ]
)
model.compile(optimizer=Adam(learning_rate=0.1), loss="binary_crossentropy", metrics=['accuracy'])
model1 = model.fit(x=datax, y=datay, batch_size=5, epochs=5, shuffle=True, verbose=2)

我已经为模型和不同的批次尝试了许多不同的结构 sizes/epochs 但我仍然遇到此错误。如果您对此有任何帮助,我们将不胜感激。

您在模型中添加了 dropout 层。

Dropout 是一种在训练过程中忽略随机选择的神经元的技术。他们是随机“辍学”的。这意味着它们对下游神经元激活的贡献在前向传递中被暂时移除,并且任何权重更新都不会应用于反向传递中的神经元。

model = Sequential(
    [
        #Conv1D(32, 3, input_shape=datax.shape, activation="relu"),
        Flatten(input_shape=datax.shape),
        Dense(750, activation='relu'),
        Dropout(0.2),
        Dense(750, activation='relu'),
        Dropout(0.2),
        Dense(2, activation='sigmoid')
    ]