我使用Yoon Kims CNN的Denny Britz implementation进行稍微修改的形式(我添加了word2vec方法,以便从头开始计算权重矩阵)进行情感分析。在开发步骤内GPU运行时出现内存不足
随着小型数据集(例如10MB),它工作正常,但如果我尝试在大小> 50MB(仍然不是非常大)的数据集训练我的GPU运行的内存,并抛出以下错误:http://pastebin.com/AMfYkpXZ
GPU是8 gb的GeForce GTX 1080。
我摸索出了错误来自dev的步/评估步骤:
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
你可以发表你的其他代码吗?另外,当您使用更大的数据集时,您是否更改批量大小? –
当然,我创建了一个要点:https://gist.github.com/pexmar/7b3d074825eeaf5a336fce406d8e9bae – pexmar
我没有更改更大的数据集的批量大小。但没有评估步骤,它工作正常。 – pexmar