Keras模型训练后的分割错误-Tensorflow

时间:2018-06-20 04:03:24

标签: python tensorflow keras

我想用Keras(TF作为后端)评估一个简单的自动编码器,在隐藏层中尝试不同数量的神经元。

因此,我有以下简单的循环,在其中尝试从10到200的不同值:

import gc

for latent_size in range(10, 210, 10):
    print(latent_size)

    model = build_ae(latent_size, x_train)
    latent_test = model.predict(x_test)

    # This is to free the GPU memory
    del model
    gc.collect()

其中build_ae是用于创建自动编码器的以下函数:

def build_ae(encoding_size, x):

    # Clear the Tensorflow session
    K.clear_session()

    input_data = Input(shape=(x.shape[-1],))

    encoded = Dense(encoding_size, activation='relu')(input_data)
    decoded = Dense(x.shape[-1], activation='relu')(encoded)
    autoencoder = Model(input_data, decoded)

    simple_ae_encoder = Model(input_data, encoded)
    encoded_input = Input(shape=(encoding_size,))
    decoder_layer = autoencoder.layers[-1]
    decoder = Model(encoded_input, decoder_layer(encoded_input))

    # Training
    OPTIMIZER = optimizers.Adagrad(lr=0.01, epsilon=None, decay=0.0)
    autoencoder.compile(optimizer=OPTIMIZER, loss='mean_squared_error')
    history = autoencoder.fit(x, x, epochs=2, batch_size=100, shuffle=True, verbose=1)

    # Free the memory
    del history

    return simple_ae_encoder

不幸的是,在第3次迭代之后(即,encoding_size = 30),在模型训练之后,我收到了分段错误(核心被丢弃)

我不知道如何解决这个问题。欢迎任何建议。

谢谢。

编辑:我不同意将这个问题标记为重复的决定。这是与Keras和Python有关的问题,因此建议不要使用gdb调试代码。

顺便说一句,可能我想出了解决问题的方法,该问题迫使垃圾回收器释放内存,而Tensorflow清除内存。我根据解决方案编辑了代码段。

0 个答案:

没有答案