From a25af5b0a76ff246c83a657b53b12062f476a7f7 Mon Sep 17 00:00:00 2001 From: WangHeng <327910402@qq.com> Date: Mon, 15 May 2017 18:26:26 +0800 Subject: [PATCH] fix bug when using cuda in ubuntu The Class Variable's __init__() doesn't return a cuda Variable because the 'data' would be released later. This bug results in free(): invalid pointer error. --- intermediate_source/reinforcement_q_learning.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/intermediate_source/reinforcement_q_learning.py b/intermediate_source/reinforcement_q_learning.py index 736829fe05f..5bf7637ed0f 100644 --- a/intermediate_source/reinforcement_q_learning.py +++ b/intermediate_source/reinforcement_q_learning.py @@ -310,12 +310,12 @@ def get_screen(): model.cuda() -class Variable(autograd.Variable): +def Variable(data, volatile=False): + if USE_CUDA: + return autograd.Variable(data.cuda(),volatile=volatile) + else: + return autograd.Variable(data, volatile=volatile) - def __init__(self, data, *args, **kwargs): - if USE_CUDA: - data = data.cuda() - super(Variable, self).__init__(data, *args, **kwargs) steps_done = 0