当前位置: 首页 > news >正文

备忘-humanplus相关的代码解析

-1: 
numpy必须为1.20.0,否则会报错,版本冲突0.rlvalue-based:  如q-learning(走迷宫),对当前状态下作出的动作进行价值计算,通过贪婪策略穷尽所有可能选择最佳state-action,但是对于连续的动作空间,动作的值是无穷的,把他们离散化,会维度爆炸,MSEpolicy-based: 比如移动机器人在一个室内环境中导航,策略网络以机器人当前的传感器信息(如激光雷达数据、摄像头图像)作为输入,输出动作的概率分布(对于连续动作)。通过策略梯度算法,根据机器人是否成功到达目标位置以及所花费的时间等奖励信号来更新策略网络的参数。训练过程可能会受到局部最优解的影响,并且策略梯度的估计可能存在较大方差,导致训练不稳定LOSS:负号是因为我们要使用梯度下降优化器,而策略梯度的目标是进行梯度上升。--PPO 是一种改进的策略梯度算法,旨在提高训练的稳定性和样本效率。它通过限制策略更新的步长,避免更新幅度过大导致性能下降。1.代码解析
1.0 on_policy_runner.py: class OnPolicyRunner.learntot_iter = self.current_learning_iteration + num_learning_iterationsfor it in range(self.current_learning_iteration, tot_iter):start = time.time()with torch.inference_mode():for i in range(self.num_steps_per_env):actions = self.alg.act(obs, critic_obs) # 2048,8,84(64+19)-->transformer 预测动作分布,再采样出2048*19个关节的动作, 84是观测值:观测值的计算综合了机器人的多种状态信息,如姿态、角速度、指令、关节位置和速度、动作等,并且可以根据配置添加感知输入和噪声。obs, privileged_obs, rewards, dones, infos = self.env.step(actions) #仿真环境中执行上面的动作,action--》compute_torques;compute observations,rewards, resetscritic_obs = privileged_obs if privileged_obs is not None else obsobs, critic_obs, rewards, dones = obs.to(self.device), critic_obs.to(self.device), rewards.to(self.device), dones.to(self.device)self.alg.process_env_step(rewards, dones, infos) # 对环境交互一个时间步结果的处理,包括奖励和终止信号的保存、超时情况的处理、转换信息的记录以及智能体的重置,为后续的学习和决策提供了基础。1.1 HST
--class H1(): legged_gym/env/h1/h1.py----init: self._super_init-->self.create_sim-->self._create_envs----step----post_physics_step----reset----compute_reward----compute_observations----create_sim----_compute_torques----_create_envs----render
--class H1RoughCfg( BaseConfig ): legged_gym/env/h1/h1_config.py----class human:----class env:----class terrain:----class commands:----class init_state:----class control:----class asset:----class domain_rand:----class rewards:----class noise:----class sim:
--class H1RoughCfgPPO(BaseConfig):----class policy:----class algorithm:----class runner:2.网络结构
1.ActorNET = Transformer + mlp
Actor MLP: Transformer((input_layer): Sequential((0): Linear(in_features=84, out_features=128, bias=True)(1): Dropout(p=0.1, inplace=False))(weight_pos_embed): Embedding(8, 128)(attention_blocks): Sequential((0): Transformer_Block((ln_1): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(attn): MultiheadAttention((out_proj): NonDynamicallyQuantizableLinear(in_features=128, out_features=128, bias=True))(ln_2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(mlp): Sequential((0): Linear(in_features=128, out_features=512, bias=True)(1): GELU()(2): Linear(in_features=512, out_features=128, bias=True)(3): Dropout(p=0.1, inplace=False)))(1): Transformer_Block((ln_1): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(attn): MultiheadAttention((out_proj): NonDynamicallyQuantizableLinear(in_features=128, out_features=128, bias=True))(ln_2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(mlp): Sequential((0): Linear(in_features=128, out_features=512, bias=True)(1): GELU()(2): Linear(in_features=512, out_features=128, bias=True)(3): Dropout(p=0.1, inplace=False)))(2): Transformer_Block((ln_1): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(attn): MultiheadAttention((out_proj): NonDynamicallyQuantizableLinear(in_features=128, out_features=128, bias=True))(ln_2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(mlp): Sequential((0): Linear(in_features=128, out_features=512, bias=True)(1): GELU()(2): Linear(in_features=512, out_features=128, bias=True)(3): Dropout(p=0.1, inplace=False)))(3): Transformer_Block((ln_1): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(attn): MultiheadAttention((out_proj): NonDynamicallyQuantizableLinear(in_features=128, out_features=128, bias=True))(ln_2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(mlp): Sequential((0): Linear(in_features=128, out_features=512, bias=True)(1): GELU()(2): Linear(in_features=512, out_features=128, bias=True)(3): Dropout(p=0.1, inplace=False))))(output_layer): Sequential((0): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(1): Linear(in_features=128, out_features=19, bias=True))
)==================================================================================================================
2.CriticNet = MLP + Transformer
Critic MLP: Transformer((input_layer): Sequential((0): Linear(in_features=84, out_features=128, bias=True)(1): Dropout(p=0.1, inplace=False))(weight_pos_embed): Embedding(8, 128)(attention_blocks): Sequential((0): Transformer_Block((ln_1): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(attn): MultiheadAttention((out_proj): NonDynamicallyQuantizableLinear(in_features=128, out_features=128, bias=True))(ln_2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(mlp): Sequential((0): Linear(in_features=128, out_features=512, bias=True)(1): GELU()(2): Linear(in_features=512, out_features=128, bias=True)(3): Dropout(p=0.1, inplace=False)))(1): Transformer_Block((ln_1): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(attn): MultiheadAttention((out_proj): NonDynamicallyQuantizableLinear(in_features=128, out_features=128, bias=True))(ln_2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(mlp): Sequential((0): Linear(in_features=128, out_features=512, bias=True)(1): GELU()(2): Linear(in_features=512, out_features=128, bias=True)(3): Dropout(p=0.1, inplace=False)))(2): Transformer_Block((ln_1): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(attn): MultiheadAttention((out_proj): NonDynamicallyQuantizableLinear(in_features=128, out_features=128, bias=True))(ln_2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(mlp): Sequential((0): Linear(in_features=128, out_features=512, bias=True)(1): GELU()(2): Linear(in_features=512, out_features=128, bias=True)(3): Dropout(p=0.1, inplace=False)))(3): Transformer_Block((ln_1): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(attn): MultiheadAttention((out_proj): NonDynamicallyQuantizableLinear(in_features=128, out_features=128, bias=True))(ln_2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(mlp): Sequential((0): Linear(in_features=128, out_features=512, bias=True)(1): GELU()(2): Linear(in_features=512, out_features=128, bias=True)(3): Dropout(p=0.1, inplace=False))))(output_layer): Sequential((0): LayerNorm((128,), eps=1e-05, elementwise_affine=True)(1): Linear(in_features=128, out_features=1, bias=True))
)

http://www.lryc.cn/news/526509.html

相关文章:

  • 青少年编程与数学 02-008 Pyhon语言编程基础 01课题、语言概要
  • XSS (XSS)分类
  • [Linux]el8安全配置faillock:登录失败达阈值自动锁定账户配置
  • 最新-CentOS 7安装1 Panel Linux 服务器运维管理面板
  • selenium定位网页元素
  • 積分方程與簡單的泛函分析8.具連續對稱核的非齊次第II類弗雷德霍姆積分算子方程
  • 长理算法复习
  • 机器学习-K近邻算法
  • 使用rsync+inotify简单实现文件实时双机双向同步
  • Ubuntu 24.04 LTS开机自启动脚本设置方法
  • 谈谈对JavaScript 中的事件冒泡(Event Bubbling)和事件捕获(Event Capturing)的理解
  • 解读2025年生物医药创新技术:展览会与论坛的重要性
  • 【第七天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-一种常见的分治算法(持续更新)
  • Spring Data JPA 实战:构建高性能数据访问层
  • Python JSON:深入解析与高效应用
  • 【C语言进阶(四)】指针进阶详解(上)
  • DDD架构实战第五讲总结:将领域模型转化为代码
  • FPGA实现任意角度视频旋转(完结)视频任意角度旋转实现
  • CPU 缓存基础知识
  • 微信小程序date picker的一些说明
  • Vue3 + TS 实现批量拖拽 文件夹和文件 组件封装
  • 【Kubernetes】Pod生命周期、初始化容器、主容器
  • 2025牛客寒假训练营1-M题
  • css3 svg制作404页面动画效果HTML源码
  • 序列标注:从传统到现代,NLP中的标签预测技术全解析
  • 软件测试 —— 性能测试(jmeter)
  • python介绍ransac算法拟合圆
  • WPS计算机二级•表格保护与打印
  • Vue组件开发-使用xlsx库导出Excel文件
  • 使用 Pipeline 提高 Redis 批量操作性能