2016-12-28 120 views
0

我使用Yoon Kims CNNDenny 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

+0

你可以发表你的其他代码吗?另外,当您使用更大的数据集时,您是否更改批量大小? –

+0

当然,我创建了一个要点:https://gist.github.com/pexmar/7b3d074825eeaf5a336fce406d8e9bae – pexmar

+0

我没有更改更大的数据集的批量大小。但没有评估步骤,它工作正常。 – pexmar

回答

1

检查你传递到dev_step相比,你在train_step运行批次的大小批量的大小。您可能需要分批评估测试集(我想这与dev相同?)。

+0

谢谢!这是解决方案! – pexmar

相关问题