python 全局变量的使用

python 全局变量的使用最近在改写同事训练代码的不支持算子,结果在在改写的过程中发现,训练跟测试流程中不支持的算子竟然输入输出尺寸是不同的,所以开始针对测试改写的代码,训练的时候报错,修改为训练支持的算子后,跑完一个epoch训练数据的时候,验证测试会报错。定位了很久才发现这个问题。所以需要针对不同的阶段使用不同的算子。所以需要在forward阶段,添加不同的分支标志及处理流程。Python中global关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量,在另外一个py文件再次使用global

大家好,欢迎来到IT知识分享网。python

最近在改写同事训练代码的不支持算子,结果在在改写的过程中发现,训练跟测试流程中不支持的算子竟然输入输出尺寸是不同的,所以开始针对测试改写的代码,训练的时候报错,修改为训练支持的算子后,跑完一个epoch训练数据的时候,验证测试会报错。定位了很久才发现这个问题。所以需要针对不同的阶段使用不同的算子。所以需要在forward阶段,添加不同的分支标志及处理流程。
Python中global关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量,在另外一个py文件 再次使用global x 也是无法访问到的,因为在这个py模块中并没有一个叫做x的变量,于是就会报错:未定义变量。
再网上查了下,发现有人提供了一个比较好用的全局变量管理模块。

#!/usr/bin/python
# -*- coding: utf-8 -*-

def _init():
    global _global_dict
    _global_dict = {}

def set_value(name, value):
    _global_dict[name] = value

def get_value(name, defValue=None):
    try:
        return _global_dict[name]
    except KeyError:
        return defValue

设置全局变量

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import globalvar as gl

gl._init()

gl.set_value('train', True)

获取使用全局变量

#!/usr/bin/python
# -*- coding: utf-8 -*-

import globalvar as gl

trainflag = gl.get_value('train')


if trainflag:
    ...
else:
    ...

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/16222.html

(0)
上一篇 2024-02-09 20:45
下一篇 2024-02-10 07:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信