GPU 在内存不足的开发步骤中运行

GPU runs during the dev step out of memory

我正在使用 Denny Britz implementation of Yoon Kims CNN 进行稍微修改形式的情感分析(我添加了 word2vec 方法,这样权重矩阵就不会从头开始计算)。

对于小数据集(如 10MB),它工作正常,但如果我尝试在大小 >50MB(仍然不是很大)的数据集上训练,我的 GPU 内存不足并抛出以下错误:http://pastebin.com/AMfYkpXZ

GPU 是 8 GB 的 GeForce GTX 1080。

我发现错误来自开发 step/evaluation 步骤:

def dev_step(x_batch, y_batch, writer=None):
    """
    Evaluates model on a dev set
    """
    feed_dict = {
        cnn.input_x: x_batch,
        cnn.input_y: y_batch,
        cnn.dropout_keep_prob: 1.0
    }
    step, summaries, loss, accuracy = sess.run(
        [global_step, dev_summary_op, cnn.loss, cnn.accuracy],
        feed_dict)
    time_str = datetime.datetime.now().isoformat()
    print("{}: step {}, loss {:g}, acc {:g}".format(time_str, step, loss, accuracy))
    if writer:
        writer.add_summary(summaries, step)

准确的说是来自sess.run([global_step, dev_summary_op, cnn.loss, cnn.accuracy], feed_dict)行。 如果我注释掉整个 dev_step,训练就会运行而不会抛出错误。

您知道为什么会出现此错误以及我该如何解决它吗?提前致谢!

编辑: 完整代码位于:https://gist.github.com/pexmar/7b3d074825eeaf5a336fce406d8e9bae

检查您传递给 dev_step 的批次大小与您在 train_step 中传递给 运行 的批次大小的比较。您可能还必须分批评估测试集(我猜这与 dev 相同?)。