Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在使用连续动作空间时,输出的动作取值无法设置上下限 #9

Open
xiaokang-99 opened this issue Jan 9, 2023 · 14 comments

Comments

@xiaokang-99
Copy link

师兄您好,我在调整env_continuous.py文件中第30行代码u_action_space = spaces.Box(low=0.0, high=90.0, shape=(self.signal_action_dim,), dtype=np.float32)后,action取值并没有限制在0和90之间,请问师兄这是为什么呢?谢谢师兄了。

@tinyzqh
Copy link
Owner

tinyzqh commented Jan 11, 2023

网络输出并未基于环境的限制做缩放

@xiaokang-99
Copy link
Author

谢谢师兄

@xiaokang-99
Copy link
Author

xiaokang-99 commented Jan 12, 2023 via email

@charleswangyanan
Copy link

师兄您好,我在调整env_continuous.py文件中第30行代码u_action_space = spaces.Box(low=0.0, high=90.0, shape=(self.signal_action_dim,), dtype=np.float32)后,action取值并没有限制在0和90之间,请问师兄这是为什么呢?谢谢师兄了。

你好,请问最后怎么设置的动作上下限范围呢

@DylanMingan
Copy link

网络输出并未基于环境的限制做缩放

请问该如何缩放吗?
我已经调整过env_continuous.py文件中第30行代码u_action_space = spaces.Box(low=-1.0, high=1.0, shape=(self.signal_action_dim,), dtype=np.float32)。
想让上下限输出[-1,1]之间,是在下图直接做截断(clip(-1,1))吗?
image
还是说要在algorithms/utils/act.py这里输出的第83行后面对输出的正态分布概率再做一个tanh的激活函数,让它映射到[-1,1]之间?
image
希望可以得到您的回复,谢谢!

@xiaokang-99
Copy link
Author

我是在algorithms/utils/act.py这里输出的第83行后面对输出的正态分布概率再做一个tanh的激活函数,让它映射到[-1,1]之间。

@xiaokang-99
Copy link
Author

xiaokang-99 commented Jun 19, 2023

师兄您好,我在调整env_continuous.py文件中第30行代码u_action_space = spaces.Box(low=0.0, high=90.0, shape=(self.signal_action_dim,), dtype=np.float32)后,action取值并没有限制在0和90之间,请问师兄这是为什么呢?谢谢师兄了。

你好,请问最后怎么设置的动作上下限范围呢

不好意思,最近忙着毕业,才来得及回复你的消息,我是在algorithms/utils/act.py这里输出的第83行后面对输出的正态分布概率再做一个tanh的激活函数,让它映射到[-1,1]之间,然后在放大到所需要的区间上。

@charleswangyanan
Copy link

网络输出并未基于环境的限制做缩放

请问该如何缩放吗? 我已经调整过env_continuous.py文件中第30行代码u_action_space = spaces.Box(low=-1.0, high=1.0, shape=(self.signal_action_dim,), dtype=np.float32)。 想让上下限输出[-1,1]之间,是在下图直接做截断(clip(-1,1))吗? image 还是说要在algorithms/utils/act.py这里输出的第83行后面对输出的正态分布概率再做一个tanh的激活函数,让它映射到[-1,1]之间? image 希望可以得到您的回复,谢谢!
你好,请问第83行后面对输出的正态分布概率再做一个tanh的激活函数具体是怎么改的呢?

@DylanMingan
Copy link

我是在act.py的初始化加了self.tanh = nn.Tanh()
image
然后再第83后面加了actions = self.tanh(actions)
image

@charleswangyanan
Copy link

我是在env_runner.py里你想做截断那个地方加了这种归一化actions_env =(actions - np.min(actions)) / (np.max(actions) - np.min(actions)),不知道对不对,是不是actions和actions_env 都需要归一化,比如actions=(actions - np.min(actions)) / (np.max(actions) - np.min(actions)),actions_env =actions

@DylanMingan
Copy link

不清楚是不是要做归一化?但是看你的归一化代码好像是归一化到[0-1]?不知道符不符合你对输出的要求,我是听从了建议使用了tanh激活函数来实现[-1,1]的输出。当然我也调整了env_continuous.py文件中第30行代码,使u_action_space = spaces.Box(low=-1.0, high=1.0, shape=(self.signal_action_dim,), dtype=np.float32)。
同时我也疑问一个问题,用tanh实现[-1,1]的输出时候,还是要继续把u_action_space = spaces.Box(low=-1.0, high=1.0, shape=(self.signal_action_dim,), dtype=np.float32)中的low和high分别设置为-1.0和1.0,还是说设置为默认的low=-inf和high=inf?

@Jin58857
Copy link

请问修改之后能训练出来吗?我在边在连续动作空间训练的时候,没有加tanh函数,能看出是在学习,但是到后面不收敛,曲线波动极大

@qiyunying
Copy link

师兄您好,我在调整env_continuous.py文件中第30行代码u_action_space = 空格.Box(low=0.0, high=90.0, shape=(self.signal_action_dim,), dtype=np.float32)后,action取值并没有限制在0和90之间,请问师兄这是为什么呢?谢谢师兄了。

你好,请问最后怎么设置的动作上下限范围呢

不好意思,最近忙着毕业,才来得及回复你的消息,我是在algorithms/utils/act.py 这里输出的第83行后面对输出的正态分布概率再做一个tanh的激活函数,让它映射到[-1,1]之间,然后在放大到所需要的区间上。

你好,我在这样映射之后,action在训练过程中出现了nan,想请教有没有解决的办法

@krendluck
Copy link

师兄您好,我在调整env_continuous.py文件中第30行代码u_action_space = 空格.Box(low=0.0, high=90.0, shape=(self.signal_action_dim,), dtype=np.float32)后,action取值并没有限制在0和90之间,请问师兄这是为什么呢?谢谢师兄了。

你好,请问最后怎么设置的动作上下限范围呢

不好意思,最近忙着毕业,才来得及回复你的消息,我是在algorithms/utils/act.py 这里输出的第83行后面对输出的正态分布概率再做一个tanh的激活函数,让它映射到[-1,1]之间,然后在放大到所需要的区间上。

你好,我在这样映射之后,action在训练过程中出现了nan,想请教有没有解决的办法

请问解决了吗,我也遇到同样的问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants