尝试训练 SeGAN 模型时尝试调用本地 'callback'(零值)错误

Attempt to call local 'callback' (a nil value) error while trying to train SeGAN model

我正在尝试使用 Geforce RTX 2060 在 ubuntu 18.04 上实现“SeGAN:分割和生成不可见”论文。我已经安装了驱动程序、CUDA、cuDNN、Torch7 和依赖项,并下载并解压了数据集和权重文件夹,并为它们制作了 link。 我尝试用这行代码训练模型:

th main.lua -baseLR 1e-3 -end2end -istrain "train"

但是我得到了这个错误:

define model netG...    
/home/darya/distro/install/bin/luajit: /home/darya/distro/install/share/lua/5.1/nn/Module.lua:352: attempt to call local 'callback' (a nil value)
stack traceback:
    /home/darya/distro/install/share/lua/5.1/nn/Module.lua:352: in function 'apply'
    /home/darya/SeGAN/networks/End2EndNetwork.lua:81: in function 'defineG'
    /home/darya/SeGAN/networks/End2EndNetwork.lua:130: in function 'init_networks'
    /home/darya/SeGAN/networks/End2EndNetwork.lua:343: in main chunk
    [C]: in function 'dofile'
    main.lua:265: in main chunk
    [C]: in function 'dofile'
    ...rya/distro/install/lib/luarocks/rocks/trepl/scm-1/bin/th:150: in main chunk
    [C]: at 0x55e8fde0f570

我不知道我做错了什么,而且因为我没有太多经验,所以我很困惑。 有人可以帮我解决这个问题吗?非常感谢。

github repository for SeGAN segmenting and generating the invisible

来自链接的 GitHub 存储库:

End2EndNetwork.lua line 81

netG:apply(weights_init)

weights_init 应该是一个函数值但为零。

Module:apply 中导致 Torch nn 的 Module.lua Line352 中的 callback(self) 失败。

看来必须有人实现该功能。

喜欢在https://github.com/phillipi/pix2pix/blob/89ff2a81ce441fbe1f1b13eca463b87f1e539df8/train.lua, which https://github.com/ehsanik/SeGAN/blob/d29e0a5ac08f093b87dc82af3707d50107900d04/networks/End2EndNetwork.lua#L73指的是。

哪里

local function weights_init(m)
   local name = torch.type(m)
   if name:find('Convolution') then
      m.weight:normal(0.0, 0.02)
      m.bias:fill(0)
   elseif name:find('BatchNormalization') then
      if m.weight then m.weight:normal(1.0, 0.02) end
      if m.bias then m.bias:fill(0) end
   end
end