【报错】UnboundLocalError: local variable ‘xxx‘ referenced before assignment

  • 在做transformer剪枝的时候,实验了deit_base和deit_small的model都没有问题,当对small_tiny的model进行剪枝时,报错:UnboundLocalError: local variable ‘flops_mode’ referenced before assignment,追溯源码,显示我这边没有 “tiny”的选项
  • 追溯到这个参数传入的原始位置,发现只有small和base的网络模型的参数定义,于是加入图二的第104~105行(即search tiny模型时候所需的网络参数) 和 图一的第421和422行(选择使用哪个模型)
    问题即可解决。
  • 根本原因分析:是没有tiny这个变量名字。在平时很可能遇到变量为全局global或者local的,但是使用过程中应该为local或global。
  • 如果需要的是global变量,那么需要指定变量为global,使用global关键字:global x;
  • 如果需要的是local变量,那么变量只能在函数内使用,只要在函数内把这个变量定义一下就行了(即对变量进行初始化)。
    【报错】UnboundLocalError: local variable ‘xxx‘ referenced before assignment_第1张图片
    【报错】UnboundLocalError: local variable ‘xxx‘ referenced before assignment_第2张图片

你可能感兴趣的:(代码报错【python】,python,深度学习,神经网络)