运行 Google的Deep Q Network代码遇到Bug
Bug encountered When running Google's Deep Q Network Code
Google 用于 Atari 游戏的深度 Q 网络就在这里。
https://github.com/rahular/deepmind-dqn
当我 运行 使用 GPU 设置时
./run_gpu <game name>
我有这个错误
../torch/bin/luajit: ./convnet.lua:22: attempt to call local 'convLayer' (a nil value)
stack traceback:
./convnet.lua:22: in function 'network'
./NeuralQLearner.lua:89: in function '__init'
...einforcement_Learning/torch/share/lua/5.1/torch/init.lua:51: in function <...einforcement_Learning/torch/share/lua/5.1/torch/init.lua:47>
[C]: at 0x7f419423d380
./initenv.lua:133: in function 'setup'
train_agent.lua:52: in main chunk
[C]: at 0x00406230
导致此问题的代码在此文件中 https://github.com/rahular/deepmind-dqn/blob/master/dqn/convnet.lua
并且在这个函数中
function create_network(args)
local net = nn.Sequential()
net:add(nn.Reshape(unpack(args.input_dims)))
--- first convolutional layer
local convLayer = nn.SpatialConvolution
if args.gpu >= 0 then
net:add(nn.Transpose({1,2},{2,3},{3,4}))
convLayer = nn.SpatialConvolutionCUDA
end
net:add(convLayer(args.hist_len*args.ncols, args.n_units[1],
args.filter_size[1], args.filter_size[1],
args.filter_stride[1], args.filter_stride[1],1))
net:add(args.nl())
net:add(convLayer( 是第 22 行。
我使用了 gpu 设置所以看起来
convLayer = nn.SpatialConvolutionCUDA
导致 convLayer 为零。
有谁知道为什么 nn.SpatialConvolutionCUDA returns 为零?
代码最初是带有 GPU 支持的,还是您自己添加的?
您应该替换已弃用的图层,即替换:
net:add(nn.Transpose({1,2},{2,3},{3,4}))
convLayer = nn.SpatialConvolutionCUDA
与
convLayer = nn.SpatialConvolution
检查层的文档。
编辑:使用 this branch,我修复了它以支持 GPU。
找到解决方案。
使用这个 github 分支
https://github.com/soumith/deepmind-atari
克隆此分支后,然后使用 luarocks 安装 cutorch 和 cunn。
现在您可以运行代码了。
Google 用于 Atari 游戏的深度 Q 网络就在这里。
https://github.com/rahular/deepmind-dqn
当我 运行 使用 GPU 设置时
./run_gpu <game name>
我有这个错误
../torch/bin/luajit: ./convnet.lua:22: attempt to call local 'convLayer' (a nil value)
stack traceback:
./convnet.lua:22: in function 'network'
./NeuralQLearner.lua:89: in function '__init'
...einforcement_Learning/torch/share/lua/5.1/torch/init.lua:51: in function <...einforcement_Learning/torch/share/lua/5.1/torch/init.lua:47>
[C]: at 0x7f419423d380
./initenv.lua:133: in function 'setup'
train_agent.lua:52: in main chunk
[C]: at 0x00406230
导致此问题的代码在此文件中 https://github.com/rahular/deepmind-dqn/blob/master/dqn/convnet.lua
并且在这个函数中
function create_network(args)
local net = nn.Sequential()
net:add(nn.Reshape(unpack(args.input_dims)))
--- first convolutional layer
local convLayer = nn.SpatialConvolution
if args.gpu >= 0 then
net:add(nn.Transpose({1,2},{2,3},{3,4}))
convLayer = nn.SpatialConvolutionCUDA
end
net:add(convLayer(args.hist_len*args.ncols, args.n_units[1],
args.filter_size[1], args.filter_size[1],
args.filter_stride[1], args.filter_stride[1],1))
net:add(args.nl())
net:add(convLayer( 是第 22 行。
我使用了 gpu 设置所以看起来
convLayer = nn.SpatialConvolutionCUDA
导致 convLayer 为零。
有谁知道为什么 nn.SpatialConvolutionCUDA returns 为零?
代码最初是带有 GPU 支持的,还是您自己添加的?
您应该替换已弃用的图层,即替换:
net:add(nn.Transpose({1,2},{2,3},{3,4}))
convLayer = nn.SpatialConvolutionCUDA
与
convLayer = nn.SpatialConvolution
检查层的文档。
编辑:使用 this branch,我修复了它以支持 GPU。
找到解决方案。
使用这个 github 分支
https://github.com/soumith/deepmind-atari
克隆此分支后,然后使用 luarocks 安装 cutorch 和 cunn。
现在您可以运行代码了。