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
相同?)。
我正在使用 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
相同?)。