2

Atari Games 向けの Google の Deep Q Network はこちらです。

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 が nil になりました。

nn.SpatialConvolutionCUDA が nil を返す理由を知っている人はいますか?

4

2 に答える 2

3

コードはもともと GPU サポート付きでしたか、それとも自分で追加しましたか?

非推奨のレイヤーを置き換える必要があります。つまり、次のように置き換えます。

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

convLayer = nn.SpatialConvolution

レイヤーのドキュメントを確認してください。

編集:このブランチを使用してください。GPU サポート用に修正しました。

于 2015-04-10T15:11:21.013 に答える
1

解決策を見つけました。

このgithubブランチを使用して

https://github.com/soumith/deepmind-atari

このブランチをクローンした後、luarocks を使用して cutorch と cunn をインストールします。

これで、コードを実行できます。

于 2015-04-14T08:14:59.757 に答える