Fate_7 2020-03-17 15:55 采纳率: 0%
浏览 461

Torch7: cannot open <...> in mode w at /home/ethereal/torch/pkg/torch/lib/TH/THDiskFile.c:673

报错内容:

saving checkpoint to /fs/clip-scratch/hhe/opponent/cv/SoccerNeuralQLearner_lr0.000500_disc0.90_epochinf.t7
/home/ethereal/torch/install/bin/luajit: cannot open </fs/clip-scratch/hhe/opponent/cv/SoccerNeuralQLearner_lr0.000500_disc0.90_epochinf.t7> in mode  w at /home/ethereal/torch/pkg/torch/lib/TH/THDiskFile.c:673
stack traceback:
        [C]: at 0x7f3b753ac200
        [C]: in function 'DiskFile'
        /home/ethereal/torch/install/share/lua/5.1/torch/File.lua:385: in function 'save'
        train_soccer_agent.lua:252: in main chunk
        [C]: in function 'dofile'
        ...real/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:150: in main chunk
        [C]: at 0x55ce087fe570
Makefile:108: recipe for target 'run_soccer' failed
make: *** [run_soccer] Error 1

报错处代码:

local filename = string.format('%s/%s_lr%.6f_disc%.2f_epoch%.2f.t7', opt.checkpoint_dir, opt.savefile, agent.lr, agent.discount, epoch)
print('saving checkpoint to ' .. filename)
torch.save(filename, {agent = agent, model = agent.network,...})
  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-25 17:47
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析:根据报错内容提示,错误出现在尝试以写入模式"w"打开文件"/fs/clip-scratch/hhe/opponent/cv/SoccerNeuralQLearner_lr0.000500_disc0.90_epochinf.t7"时。代码中使用了torch.save()方法保存agent和model信息到指定文件中。 解决方法:由于报错信息显示LuaJIT无法以写入模式打开文件,可能是由于文件路径不存在或者没有写入权限导致的。确保路径存在且有写入权限后,可以尝试以下解决方法:
    1. 检查文件路径是否存在:首先确保"/fs/clip-scratch/hhe/opponent/cv/"目录存在,如果不存在则创建该目录。
    2. 检查文件权限:确保当前用户对该目录及文件有写入权限,可以使用chmod命令修改权限。
    3. 修改文件保存方式:尝试修改文件保存方式,使用其他模式如"wb"(二进制写入)。
    4. 调试文件保存代码:检查agent和model是否正确生成,确保保存的内容是正确的。 如果以上方法无法解决问题,可以进一步调试代码,打印出filename的值,查看实际保存的文件路径是否正确。 示例代码:
    -- 检查文件路径是否存在,不存在则创建
    if not paths.dirp(opt.checkpoint_dir) then
        paths.mkdir(opt.checkpoint_dir)
    end
    -- 检查文件权限
    os.execute('chmod 777 ' .. opt.checkpoint_dir)
    -- 修改保存文件方式为"wb"(二进制写入)
    torch.save(filename, {agent = agent, model = agent.network, ...}, 'binary')
    -- 调试打印filename的值
    print('saving checkpoint to ' .. filename)
    

    通过以上方法,我们可以排除文件路径问题和权限问题,以及尝试修改保存方式,最终解决无法打开文件的问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵