【发布时间】:2016-12-28 10:55:28
【问题描述】:
我使用Yoon Kims CNN 的Denny Britz implementation 进行稍微修改的形式的情绪分析(我添加了word2vec 方法,因此权重矩阵不是从头开始计算的)。
对于小型数据集(如 10MB),它可以正常工作,但如果我尝试在大于 50MB(仍然不是很大)的数据集上进行训练,我的 GPU 内存不足并引发以下错误:http://pastebin.com/AMfYkpXZ
GPU 是 8 GB 的 GeForce GTX 1080。
我发现错误来自开发步骤/评估步骤:
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
【问题讨论】:
-
你能把剩下的代码贴出来吗?另外,当您使用更大的数据集时,您是否会更改批量大小?
-
我没有用更大的数据集改变批量大小。但如果没有评估步骤,它可以正常工作。
标签: python-3.x tensorflow gpu