我使用Denny Britz implementation的Yoon Kims CNN进行略微修改的情感分析(我添加了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
答案 0 :(得分:1)
与您在dev_step
中运行的批次大小相比,检查您传入train_step
的批次的大小。您可能必须批量评估测试集(我猜这与dev
相同?)。