码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Anomaly-Transformer (ICLR 2022 Spotlight)复现过程及问题


    官方代码:GitHub - thuml/Anomaly-Transformer: About Code release for "Anomaly Transformer: Time Series Anomaly Detection with Association Discrepancy" (ICLR 2022 Spotlight), https://openreview.net/forum?id=LzQQ89U1qm_

    作者推荐的是 python3.6,pytorch 1.4 

    1. 环境修改

    尝试安装 pytorch 1.4 运行,但是代码会卡住,并且没有报错。定位错误在:Anomaly-Transformer/model/attn.py

    self.distances = torch.zeros((window_size, window_size)).cuda()

    .cuda() 卡住:原因是 安装的 pytorch 1.4 对应的CUDA 版本为 10.x,算力是 sm_86,CUDA 10.x 最高支持到 sm_75,因此需要CUDA 11.x来支持sm_8.x。


    因此升级 我的环境 python3.7,  pytorch 1.12  , 显卡3080Ti, CUDA 版本:11.3

    conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

    再次运行训练脚本,又报错:

    RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [512, 25]], which is output 0 of AsStridedBackward0, is at version 2; expected version 1 instead. Hint: enable anomaly detection to find the operation that failed to compute its gradient, with torch.autograd.set_detect_anomaly(True).

    解决:注释掉Anomaly-Transformer/solver.py 的第一个 .step():

    1. # Minimax strategy
    2. loss1.backward(retain_graph=True)
    3. # self.optimizer.step()
    4. loss2.backward()
    5. self.optimizer.step()

    参考:Why the optimizer.step() write twice? · Issue #8 · thuml/Anomaly-Transformer · GitHub


    2.  恭喜!  成功运行!

    python main.py --anormly_ratio 1 --num_epochs 3    --batch_size 128  --mode train --dataset PSM  --data_path dataset/PSM --input_c 25    --output_c 25

    ------------ Options -------------
    anormly_ratio: 1.0
    batch_size: 128
    data_path: dataset/PSM
    dataset: PSM
    input_c: 25
    k: 3
    lr: 0.0001
    mode: train
    model_save_path: checkpoints
    num_epochs: 3
    output_c: 25
    pretrained_model: None
    win_size: 100 

    ======================TEST MODE======================
    /opt/conda/lib/python3.7/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='none' instead.
      warnings.warn(warning.format(ret))
    Threshold : 0.002150955616962149
    pred:    (87800,)
    gt:      (87800,)
    pred:  (87800,)
    gt:    (87800,)
    Accuracy : 0.9848, Precision : 0.9713, Recall : 0.9739, F-score : 0.9726 

    论文中的结果:对于PSM数据集

    P: 96.91,R: 98.9,  F1: 97.89

    复现的 Recall 略低。但是 Precision 略高。二者本就是需要权衡。可以通过调整上面的 Threshold : 0.002150955616962149 平衡二者。

  • 相关阅读:
    linux主程序链接多个动态库时,若多个动态库之间存在相同的函数,则也正常调用
    【牛客刷题-算法】NC7 买卖股票的最好时机(一)
    如何将音频与视频分离
    汇编语言——王爽版 总结
    axios封装使用
    用了这么久SpringBoot却还不知道的一个小技巧
    通俗解释EMA
    Java的IO框架
    【iMessage苹果相册推】 内部网关协议(InternetwayProtocol)常用的是RIP和OSPE
    (完全解决)如何输入一个图的邻接矩阵(每两个点的亲密度矩阵affinity),然后使用sklearn进行谱聚类
  • 原文地址:https://blog.csdn.net/hymn1993/article/details/125558623
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号