备忘-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数据集是机器学习领域经典数据集,鸢尾花数据集包含了150条鸢尾花信息,每50条取自三个鸢尾花中之一:Versicolour、Setosa…...
使用rsync+inotify简单实现文件实时双机双向同步
使用rsyncinotify简单实现文件实时双机双向同步 实现思路 使用inotify-tools的inotifywait工具监控文件变化,触发后使用rsync做同步。加入系统服务项,实现实时监听,方便管理。 以下配置操作,单向同步,只需在单边部…...
Ubuntu 24.04 LTS开机自启动脚本设置方法
目录 Ubuntu中设置开机自启动脚本步骤1:修改 rc-local.service文件步骤2:创建/etc/rc.local文件步骤3:修改/etc/rc.local的权限步骤4:启动rc-local.service步骤5:查看rc-local.service的服务状态 Ubuntu中设置开机自启…...
谈谈对JavaScript 中的事件冒泡(Event Bubbling)和事件捕获(Event Capturing)的理解
JavaScript 中的事件冒泡(Event Bubbling)和事件捕获(Event Capturing),是浏览器在处理事件时采用的两种机制,它们在事件的传播顺序上有显著区别。这两种机制帮助开发者在事件触发时,能够以不同…...
解读2025年生物医药创新技术:展览会与论坛的重要性
2025生物医药创新技术与应用发展展览会暨论坛,由天津市生物医药行业协会、BIO CHINA生物发酵展组委会携手主办,山东信世会展服务有限公司承办,定于2025年3月3日至5日在济南黄河国际会展中心盛大开幕。展会规模60000平方米、800参展商、35场会…...
【第七天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-一种常见的分治算法(持续更新)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Python数据结构与算法的详细介绍1.Python中的常用的分治算法2. 分治算法3.详细的分治代码1)一种常见的分治算法 总结 前言 提示:这…...
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实现视频的任意角度旋转,关于视频180度实时旋转、90/270度视频无裁剪旋转,请见本专栏前面的文章,旋转效果示意图如下: 为了实时对比旋转效果,采用分屏显示进行处理,左边代表旋转…...
CPU 缓存基础知识
并发编程首先需要简单了解下现代CPU相关知识。通过一些简单的图,简单的代码,来认识CPU以及一些常见的问题。 目录 CPU存储与缓存的引入常见的三级缓存结构缓存一致性协议MESI协议缓存行 cache line 通过代码实例认识缓存行的重要性 CPU指令的乱序执行通过…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
