lua - 运行Google Deep Q Network Code时遇到的Bug

标签 lua machine-learning deep-learning torch

Google 针对 Atari 游戏的 Deep 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 返回 nil 吗?

最佳答案

该代码最初是否带有 GPU 支持,还是您自己添加的?

您应该替换已弃用的层,即替换:

net:add(nn.Transpose({1,2},{2,3},{3,4}))
convLayer = nn.SpatialConvolutionCUDA

convLayer = nn.SpatialConvolution

检查层的文档。

编辑:使用this branch ,我修复了它以支持 GPU。

关于lua - 运行Google Deep Q Network Code时遇到的Bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29564360/

相关文章:

lua - 在 Lua 中使用 32 位按位运算比较带符号的 64 位数

java - 使用 Alchemy 实体提取检索 JSON 输出

deep-learning - 在对自定义数据集进行 yolo 训练期间重写框是什么意思?

tensorflow - 如何使用 C API 遍历 Tensorflow 图?

r - r 中的 Neuralnet 包结构简单,耗时很长,这里有什么问题吗?

python-3.x - 如何根据 Keras 中的输出概率区分其为 True 或 False?

python - 使用谷歌的对象检测API减少SSD模型中一层的过滤器数量

lua - Lua中打印字符串的地址

lua - 如何保存 bool 条件并稍后评估

分配时从 lua 调用'c 崩溃