当前位置: 首页 > 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))
)

相关文章:

备忘-humanplus相关的代码解析

-1: numpy必须为1.20.0,否则会报错,版本冲突0.rlvalue-based: 如q-learning(走迷宫),对当前状态下作出的动作进行价值计算,通过贪婪策略穷尽所有可能选择最佳state-action,但是对于连续的动作空间&#x…...

青少年编程与数学 02-008 Pyhon语言编程基础 01课题、语言概要

青少年编程与数学 02-008 Pyhon语言编程基础 01课题、语言概要 一、榜一大哥起源与早期发展版本演进与社区壮大应用领域的拓展编程语言排行榜的常客结语 二、当前排行三、出色表现四、易学易用五、特色显著六、资源丰富初学者资源中高级学习资源在线编程学习平台 课题摘要:本文…...

XSS (XSS)分类

XSS (XSS) 概要 XSS全称为Cross Site Scripting,为了和CSS分开简写为XSS,中文名为跨站脚本。该漏洞发生在用户端,是指在渲染过程中发生了不在预期过程中的JavaScript代码执行。XSS通常被用于获取Cookie、以受攻击者的…...

[Linux]el8安全配置faillock:登录失败达阈值自动锁定账户配置

前言 本篇文章的配置仅使用于el8版本的Linux,目前已在centos8、BCLinux8上验证成功,其他版本系统是否可行还得考查。 el8中管理用户登录失败锁定账户所用的模块是faillock.so,如果想要将配置应用与其他版本的Linux,建议确认Linux…...

最新-CentOS 7安装1 Panel Linux 服务器运维管理面板

CentOS 7安装1 Panel Linux 服务器运维管理面板 一、前言二、环境要求三、在线安装四、离线安装1.点击下面1 Panel官网链接访问下载,如未登录或注册,请登录/注册后下载2.使用将离线安装包上传至目标终端/tem目录下3.进入到/tem目录下解压离线安装包4.执行…...

selenium定位网页元素

1、概述 在使用 Selenium 进行自动化测试时,定位网页元素是核心功能之一。Selenium 提供了多种定位方法,每种方法都有其适用场景和特点。以下是通过 id、linkText、partialLinkText、name、tagName、xpath、className 和 cssSelector 定位元素的…...

積分方程與簡單的泛函分析8.具連續對稱核的非齊次第II類弗雷德霍姆積分算子方程

1)def求解具連續對稱核的非齊次第II類弗雷德霍姆積分算子方程 设 是定义在上的连续对称核函数, 非齐次第二类弗雷德霍姆积分算子方程的形式为: , 其中是未知函数,是给定的连续函数,是参数。 2)def其特徵值是否一致…...

长理算法复习

选择排序 #include<iostream>using namespace std;const int N 1010; int a[N]; int n;void selectSort(){for (int i 0; i < n;i){int pos i;for (int j i 1; j < n;j){if(a[j]<a[pos])pos j;}swap(a[i], a[pos]);} }int main() {cin >> n;for (i…...

机器学习-K近邻算法

文章目录 一. 数据集介绍Iris plants dataset 二. 代码三. k值的选择 一. 数据集介绍 鸢尾花数据集 鸢尾花Iris Dataset数据集是机器学习领域经典数据集&#xff0c;鸢尾花数据集包含了150条鸢尾花信息&#xff0c;每50条取自三个鸢尾花中之一&#xff1a;Versicolour、Setosa…...

使用rsync+inotify简单实现文件实时双机双向同步

使用rsyncinotify简单实现文件实时双机双向同步 实现思路 使用inotify-tools的inotifywait工具监控文件变化&#xff0c;触发后使用rsync做同步。加入系统服务项&#xff0c;实现实时监听&#xff0c;方便管理。 以下配置操作&#xff0c;单向同步&#xff0c;只需在单边部…...

Ubuntu 24.04 LTS开机自启动脚本设置方法

目录 Ubuntu中设置开机自启动脚本步骤1&#xff1a;修改 rc-local.service文件步骤2&#xff1a;创建/etc/rc.local文件步骤3&#xff1a;修改/etc/rc.local的权限步骤4&#xff1a;启动rc-local.service步骤5&#xff1a;查看rc-local.service的服务状态 Ubuntu中设置开机自启…...

谈谈对JavaScript 中的事件冒泡(Event Bubbling)和事件捕获(Event Capturing)的理解

JavaScript 中的事件冒泡&#xff08;Event Bubbling&#xff09;和事件捕获&#xff08;Event Capturing&#xff09;&#xff0c;是浏览器在处理事件时采用的两种机制&#xff0c;它们在事件的传播顺序上有显著区别。这两种机制帮助开发者在事件触发时&#xff0c;能够以不同…...

解读2025年生物医药创新技术:展览会与论坛的重要性

2025生物医药创新技术与应用发展展览会暨论坛&#xff0c;由天津市生物医药行业协会、BIO CHINA生物发酵展组委会携手主办&#xff0c;山东信世会展服务有限公司承办&#xff0c;定于2025年3月3日至5日在济南黄河国际会展中心盛大开幕。展会规模60000平方米、800参展商、35场会…...

【第七天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-一种常见的分治算法(持续更新)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Python数据结构与算法的详细介绍1.Python中的常用的分治算法2. 分治算法3.详细的分治代码1&#xff09;一种常见的分治算法 总结 前言 提示&#xff1a;这…...

Spring Data JPA 实战:构建高性能数据访问层

1 简介 1.1 Spring Data JPA 概述 1.1.1 什么是 Spring Data JPA? Spring Data JPA 是 Spring Data 项目的一部分,旨在简化对基于 JPA 的数据库访问操作。它通过提供一致的编程模型和接口,使得开发者可以更轻松地与关系型数据库进行交互,同时减少了样板代码的编写。Spri…...

Python JSON:深入解析与高效应用

Python JSON:深入解析与高效应用 引言 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python 作为一种广泛使用的编程语言,对 JSON 的支持非常友好。本文将深入探讨 Python 中 JSON 的处理方法,包括基本操…...

【C语言进阶(四)】指针进阶详解(上)

指针进阶 1. 前言 2. 字符指针 2.1 常量字符串</br>2.2 常量字符串存储的位置</br> 3. 数组指针3.1 数组指针的使用</br> 4. 指针数组 4.1 拓展</br> 5. 数组传参与指针作为参数 5.1 一维数组传参</br> 5.2 二维数组传参</br> 5.3 一级指…...

DDD架构实战第五讲总结:将领域模型转化为代码

云架构师系列课程之DDD架构实战第五讲总结:将领域模型转化为代码 一、引言 在前几讲中,我们讨论了领域模型的重要性及其在业务分析中的渐进获得方法。本讲将聚焦于如何将领域模型转化为代码,使得开发人员能够更轻松地实现用户的领域模型。 二、从模型到代码:领域驱动设计…...

FPGA实现任意角度视频旋转(完结)视频任意角度旋转实现

本文主要介绍如何基于FPGA实现视频的任意角度旋转&#xff0c;关于视频180度实时旋转、90/270度视频无裁剪旋转&#xff0c;请见本专栏前面的文章&#xff0c;旋转效果示意图如下&#xff1a; 为了实时对比旋转效果&#xff0c;采用分屏显示进行处理&#xff0c;左边代表旋转…...

CPU 缓存基础知识

并发编程首先需要简单了解下现代CPU相关知识。通过一些简单的图&#xff0c;简单的代码&#xff0c;来认识CPU以及一些常见的问题。 目录 CPU存储与缓存的引入常见的三级缓存结构缓存一致性协议MESI协议缓存行 cache line 通过代码实例认识缓存行的重要性 CPU指令的乱序执行通过…...

Chandra OCR多平台部署指南:Windows WSL2/Mac Metal/Linux Docker全搞定

Chandra OCR多平台部署指南&#xff1a;Windows WSL2/Mac Metal/Linux Docker全搞定 1. Chandra OCR核心能力解析 Chandra是Datalab.to在2025年10月开源的布局感知OCR模型&#xff0c;与传统OCR工具最大的区别在于它能完整保留文档的排版结构信息。想象一下&#xff1a;当你扫…...

Pixel Language Portal效果展示:多轮对话上下文跨语种一致性保持

Pixel Language Portal效果展示&#xff1a;多轮对话上下文跨语种一致性保持 1. 产品概览 **像素语言跨维传送门(Pixel Language Portal)**是一款突破性的多语言交互工具&#xff0c;基于腾讯Hunyuan-MT-7B核心引擎构建。不同于传统翻译工具的机械感&#xff0c;它将语言转换…...

SmallThinker-3B-Preview赋能Java后端:智能客服系统数据库设计

SmallThinker-3B-Preview赋能Java后端&#xff1a;智能客服系统数据库设计 最近在做一个Java后端的智能客服项目&#xff0c;核心是要接入一个轻量级的AI模型——SmallThinker-3B-Preview。模型选好了&#xff0c;代码逻辑也搭得差不多了&#xff0c;但一到数据库设计这块&…...

【JDK21虚拟线程生产就绪 checklist】:8类典型场景配置模板(WebFlux/Quarkus/Vert.x/RSocket全覆盖)

第一章&#xff1a;JDK21虚拟线程核心机制与生产就绪定义虚拟线程&#xff08;Virtual Threads&#xff09;是 JDK 21 中正式引入的里程碑特性&#xff08;JEP 444&#xff09;&#xff0c;其本质是轻量级、用户态调度的 Java 线程抽象&#xff0c;由 JVM 在平台线程&#xff0…...

避坑指南:Matplotlib调用LaTeX渲染公式时,你可能会遇到的5个报错及解决方法

Matplotlib与LaTeX公式渲染&#xff1a;5个典型报错排查手册 当你第一次在Matplotlib中启用usetexTrue时&#xff0c;屏幕上突然弹出的红色LaTeX错误信息往往让人手足无措。这不是你代码逻辑的问题&#xff0c;而是两个强大工具在握手时产生的"语言障碍"。本文将带你…...

抖音批量下载神器:免费一键收藏创作者全部作品

抖音批量下载神器&#xff1a;免费一键收藏创作者全部作品 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音…...

RK3568上Qt5.12.8编译eglfs报错?手把手教你解决fbdev_window.h缺失问题

RK3568 Qt5.12.8编译eglfs报错全解析&#xff1a;从fbdev_window.h缺失到完整解决方案 在嵌入式开发领域&#xff0c;RK3568作为Rockchip推出的高性能处理器&#xff0c;结合Qt框架的图形界面开发能力&#xff0c;为工业控制、智能终端等场景提供了强大的解决方案。然而&#…...

有线/无线(空口)抓包过程及其分析

一、如何判断该抓有线包&#xff0c;还是无线包层级问题类型抓包位置L1/L2&#xff08;无线&#xff09;连不上、掉线、弱信号无线抓包L2&#xff08;有线&#xff09;VLAN错误有线抓包L3&#xff08;IP&#xff09;DHCP失败有线抓包L4&#xff08;传输&#xff09;丢包、重传有…...

springboot+vue基于web的在线投稿系统的设计与开发

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析审稿流程模块系统管理模块技术实现要点项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 用户管理模块 注册与登录…...

MemMA:多智能体驱动的记忆自进化框架

&#x1f4cc; 一句话总结&#xff1a; 本工作提出 MemMA&#xff0c;一个通过多智能体协同与自进化机制统一优化“记忆构建-检索-利用”循环的框架&#xff0c;显著提升长程记忆推理能力。 &#x1f50d; 背景问题&#xff1a; 当前 memory-augmented LLM agent 存在两个核…...