ray.rllib-入门实践-12-2:在自定义policy中注册使用自定义model(给自定义model新增参数)

RLlib+CARLA自动驾驶仿真训练实战:中文生产级配置指南 强化学习(RL)在自动驾驶仿真中的核心挑战在于高效、稳定、可扩展的训练工程实现。其原理依赖于环境交互采样、策略梯度更新与分布式经验回放的协同;技术价值体现在突破单机性能瓶颈、支撑多智能体联合训练、保障工业级checkpoint兼容性与跨平台复现能力;典型应用场景包括端到端驾驶策略研发、智驾算法闭环验证及车队级仿真训练平台搭建。本文聚焦 RLlib 与 CARLA 的深度集成,覆盖同步模式配置、多智能体环境封装、传感器数据压缩传输、自定义预处理器设计等关键实践环节,特别针对中文开发者提供开箱即用的配置模板与6 阅读详情

建议先看博客 ray.rllib-入门实践-12-1:在自定义policy中注册使用自定义model , 本博客与之区别在于可以给自定义的 model 新增自定义的参数,并通过 config.model["custom_model_config"] 传入自定义的新增参数。

环境配置:

        torch==2.5.1

        ray==2.10.0

        ray[rllib]==2.10.0

        ray[tune]==2.10.0

        ray[serve]==2.10.0

        numpy==1.23.0

        python==3.9.18

示例代码:

import numpy as np 
import torch.nn as nn
from ray.rllib.models.torch.torch_modelv2 import TorchModelV2
import gymnasium as gym 
from gymnasium import spaces  
from ray.rllib.utils.typing import Dict, TensorType, List, ModelConfigDict
import ray 
from ray.rllib.models import ModelCatalog # ModelCatalog 类: 用于注册 models, 获取env的 preprocessors 和 action distributions。
from ray.rllib.algorithms.ppo import PPOConfig
from ray.tune.logger import pretty_print 
from ray.rllib.algorithms.ppo import PPO, PPOConfig, PPOTorchPolicy
from ray.rllib.utils.annotations import override
from ray.rllib.models.modelv2 import ModelV2
import torch 
from typing import Dict, List, Type, Union
from ray.rllib.utils.typing import Dict, TensorType, List, ModelConfigDict
from ray.rllib.models.action_dist import ActionDistribution
from ray.rllib.models.modelv2 import ModelV2
from ray.rllib.policy.sample_batch import SampleBatch

## 1. 自定义模型 model  
class CustomTorchModel(TorchModelV2, nn.Module):
    def __init__(self, obs_space:gym.spaces.Space, 
                 action_space:gym.spaces.Space, 
                 num_outputs:int, 
                 model_config:ModelConfigDict,  ## PPOConfig.training(model = ModelConfigDict), 调用的是config.model中的参数
                 name:str,
                 *,custom_arg1,custom_arg2):
        TorchModelV2.__init__(self, obs_space, action_space, num_outputs,model_config,name)
        nn.Module.__init__(self)
        ## 测试 custom_arg1 , custom_arg2 传递进来的是什么数值
        print(f"===========================  custom_arg1 = {custom_arg1}, custom_arg2 = {custom_arg2}")

        ## 定义网络层
        obs_dim = int(np.product(obs_space.shape))
        action_dim = int(np.product(action_space.shape))
        self.activation = nn.ReLU()
        ## shareNet
        self.shared_fc = nn.Linear(obs_dim,128)
        ## actorNet
        # self.actorNet = nn.Linear(128, action_dim)
        self.actorNet = nn.Linear(128, num_outputs) # 最后一层的输出要设置为 num_outputs,action_dim有时会报错。
        ## criticNet
        self.criticNet = nn.Linear(128,1)

        self._feature = None 

    def forward(self, input_dict, state, seq_lens):
        obs = input_dict["obs"].float()
        self._feature = self.shared_fc.forward(obs)
        action_logits = self.actorNet.forward(self._feature)
        action_logits = self.activation(action_logits)
        ## 测试是否使用了自己的 model 
        print(f"xxxxxxxxxxxxxxxxx 使用了自定义的 model: CustomTorchModel")
        return action_logits, state 
    
    def value_function(self):
        value = self.criticNet.forward(self._feature).squeeze(1)
        return value 

## 2. 自定义策略 policy # 重构 model 和 loss 函数
class MY_PPOTorchPolicy(PPOTorchPolicy):
    """PyTorch policy class used with PPO."""
    def __init__(self, observation_space:gym.spaces.Box, action_space:gym.spaces.Box, config:PPOConfig): 
        PPOTorchPolicy.__init__(self,observation_space,action_space,config)
        ## PPOTorchPolicy 内部对 PPOConfig 格式的config 执行了to_dict()操作,后面可以以 dict 的形式使用 config
    # 通过修改自定义policy的默认model的方式,使用自定义的model.
    # 当rllib在使用这个自定义的policy时, 可以默认该 policy 向 ray 注册了这个自定义的 model. 
    def make_model_and_action_dist(self):
        dist_class,logit_dim = ModelCatalog.get_action_dist(self.action_space,self.config['model'],framework=self.framework)
        model = CustomTorchModel(obs_space=self.observation_space,
                                 action_space=self.action_space,
                                 num_outputs=logit_dim,
                                 model_config=self.config['model'],
                                 name='My_CustomTorchModel',
                                 custom_arg1=self.config['model']["custom_model_config"]["custom_arg1"],
                                 custom_arg2=self.config['model']["custom_model_config"]["custom_arg2"]
                                 )
        return model, dist_class

    @override(PPOTorchPolicy) 
    def loss(self,model: ModelV2,dist_class: Type[ActionDistribution],train_batch: SampleBatch):
        ## 原始损失
        original_loss = super().loss(model, dist_class, train_batch) # PPO原来的损失函数, 也可以完全自定义新的loss函数, 但是非常不建议。
        ## 新增自定义损失,这里以正则化损失作为示例
        addiontial_loss = torch.tensor(0.0) ## 自己定义的loss
        addiontial_loss = torch.tensor(0.)
        for param in model.parameters():
            addiontial_loss += torch.norm(param)
        ## 得到更新后的损失
        new_loss = original_loss + 0.01 * addiontial_loss
        ## 测试是否使用了自己的policy 
        print(f"xxxxxxxxxxxxxxxxx 使用了自定义的policy: MY_PPOTorchPolicy")
        return new_loss
    
## 3. 把自定义的policy封装为算法. 训练和配置的都是算法。
class MY_PPO(PPO):
    ## 重写 PPO.get_default_policy_class 函数, 使其返回自定义的policy 
    def get_default_policy_class(self, config):
        return MY_PPOTorchPolicy

if __name__ == "__main__":
    ## 测试执行自定义的 model and policy 
    ray.init()
    config = PPOConfig(algo_class = MY_PPO) ## 配置使用自己的算法
    config = config.environment("CartPole-v1")
    config = config.rollouts(num_rollout_workers=2)
    config = config.framework(framework="torch")
    config.model["custom_model_config"] = {"custom_arg1": 1, "custom_arg2": 2,}

    algo = config.build()
    for i in range(3):
        result = algo.train()
        print(f"itear_{i}")
    print("==训练完毕==")

以下方式与以上方式等价:

import numpy as np 
import torch.nn as nn
from ray.rllib.models.torch.torch_modelv2 import TorchModelV2
import gymnasium as gym 
from gymnasium import spaces  
from ray.rllib.utils.typing import Dict, TensorType, List, ModelConfigDict
import ray 
from ray.rllib.models import ModelCatalog # ModelCatalog 类: 用于注册 models, 获取env的 preprocessors 和 action distributions。
from ray.rllib.algorithms.ppo import PPOConfig
from ray.tune.logger import pretty_print 
from ray.rllib.algorithms.ppo import PPO, PPOConfig, PPOTorchPolicy
from ray.rllib.utils.annotations import override
from ray.rllib.models.modelv2 import ModelV2
import torch 
from typing import Dict, List, Type, Union
from ray.rllib.utils.typing import Dict, TensorType, List, ModelConfigDict
from ray.rllib.models.action_dist import ActionDistribution
from ray.rllib.models.modelv2 import ModelV2
from ray.rllib.policy.sample_batch import SampleBatch

## 1. 自定义模型 model  
class CustomTorchModel(TorchModelV2, nn.Module):
    def __init__(self, obs_space:gym.spaces.Space, 
                 action_space:gym.spaces.Space, 
                 num_outputs:int, 
                 model_config:ModelConfigDict,  ## PPOConfig.training(model = ModelConfigDict), 调用的是config.model中的参数
                 name:str,
                 *,custom_arg1,custom_arg2):
        TorchModelV2.__init__(self, obs_space, action_space, num_outputs,model_config,name)
        nn.Module.__init__(self)
        ## 测试 custom_arg1 , custom_arg2 传递进来的是什么数值
        print(f"===========================  custom_arg1 = {custom_arg1}, custom_arg2 = {custom_arg2}")

        ## 定义网络层
        obs_dim = int(np.product(obs_space.shape))
        action_dim = int(np.product(action_space.shape))
        self.activation = nn.ReLU()
        ## shareNet
        self.shared_fc = nn.Linear(obs_dim,128)
        ## actorNet
        # self.actorNet = nn.Linear(128, action_dim)
        self.actorNet = nn.Linear(128, num_outputs) # 最后一层的输出要设置为 num_outputs,action_dim有时会报错。
        ## criticNet
        self.criticNet = nn.Linear(128,1)

        self._feature = None 

    def forward(self, input_dict, state, seq_lens):
        obs = input_dict["obs"].float()
        self._feature = self.shared_fc.forward(obs)
        action_logits = self.actorNet.forward(self._feature)
        action_logits = self.activation(action_logits)
        ## 测试是否使用了自己的 model 
        print(f"xxxxxxxxxxxxxxxxx 使用了自定义的 model: CustomTorchModel")
        return action_logits, state 
    
    def value_function(self):
        value = self.criticNet.forward(self._feature).squeeze(1)
        return value 

## 2. 自定义策略 policy # 重构 model 和 loss 函数
class MY_PPOTorchPolicy(PPOTorchPolicy):
    """PyTorch policy class used with PPO."""
    def __init__(self, observation_space:gym.spaces.Box, action_space:gym.spaces.Box, config:PPOConfig): 
        PPOTorchPolicy.__init__(self,observation_space,action_space,config)
        ## PPOTorchPolicy 内部对 PPOConfig 格式的config 执行了to_dict()操作,后面可以以 dict 的形式使用 config
    # 通过修改自定义policy的默认model的方式,使用自定义的model.
    # 当rllib在使用这个自定义的policy时, 可以默认该 policy 向 ray 注册了这个自定义的 model. 
    def make_model_and_action_dist(self):
        dist_class,logit_dim = ModelCatalog.get_action_dist(self.action_space,self.config['model'],framework=self.framework)
        model = CustomTorchModel(obs_space=self.observation_space,
                                 action_space=self.action_space,
                                 num_outputs=logit_dim,
                                 model_config=self.config['model'],
                                 name='My_CustomTorchModel',
                                 custom_arg1=self.config['model']["custom_model_config"]["custom_arg1"],
                                 custom_arg2=self.config['model']["custom_model_config"]["custom_arg2"]
                                 )
        return model, dist_class

    @override(PPOTorchPolicy) 
    def loss(self,model: ModelV2,dist_class: Type[ActionDistribution],train_batch: SampleBatch):
        ## 原始损失
        original_loss = super().loss(model, dist_class, train_batch) # PPO原来的损失函数, 也可以完全自定义新的loss函数, 但是非常不建议。
        ## 新增自定义损失,这里以正则化损失作为示例
        addiontial_loss = torch.tensor(0.0) ## 自己定义的loss
        addiontial_loss = torch.tensor(0.)
        for param in model.parameters():
            addiontial_loss += torch.norm(param)
        ## 得到更新后的损失
        new_loss = original_loss + 0.01 * addiontial_loss
        ## 测试是否使用了自己的policy 
        print(f"xxxxxxxxxxxxxxxxx 使用了自定义的policy: MY_PPOTorchPolicy")
        return new_loss
    
## 3. 把自定义的policy封装为算法. 训练和配置的都是算法。
class MY_PPO(PPO):
    ## 重写 PPO.get_default_policy_class 函数, 使其返回自定义的policy 
    def get_default_policy_class(self, config):
        return MY_PPOTorchPolicy

if __name__ == "__main__":
    ## 测试执行自定义的 model and policy 
    ray.init()
    model_config_dict = {}
    model_config_dict["custom_model_config"] = {"custom_arg1": 1, "custom_arg2": 2,} ## 给 model 传递额外的参数, model 内部通过字符串匹配识别
    
    config = PPOConfig(algo_class = MY_PPO) ## 配置使用自己的算法
    config = config.environment("CartPole-v1")
    config = config.rollouts(num_rollout_workers=2)
    config = config.framework(framework="torch")
    config = config.training(model=model_config_dict) ## wzg note

    algo = config.build()
    for i in range(3):
        result = algo.train()
        print(f"itear_{i}")
    print("==训练完毕==")

深度强化学习入门:从PPO、DQN到A3C的算法对比与实践指南 这次我们来看一个面向新手的深度强化学习入门教程。这个教程的核心目标不是让你立刻成为算法专家,而是帮你快速理解强化学习到底在解决什么问题,以及那些听起来高大上的算法(比如PPO、DQN、A3C)在实际中是如何运作的。对于想入门AI决策领域,或者想在游戏AI、机器人控制、自动化交易等场景应用强化学习的开发者来说,一个清晰、可实践的入门路径至关重要。 本文会带你系统梳理深度强化学习的核心脉络。我们将从最基础的“智能体-环境”交互模型讲起,逐步深入到价值函数、策略梯度等核心概念,并重点拆解PPO、DQN、A3C这几 阅读详情

相关推荐

MIRACLE框架:基于多智能体强化学习的协作学习智能调控实践

多智能体系统通过多个自主智能体的交互与协作,解决单个智能体难以处理的复杂问题,其核心原理在于分布式决策与协同优化。在强化学习范式下,智能体通过与环境互动、依据奖励信号学习策略,以实现长期目标。这一技术在教育科技领域具有重要价值,能够构建高度自适应和个性化的学习环境。具体到协作学习场景,关键在于设计智能调控机制,协调多个扮演不同角色(如导师、同伴)的AI智能体,使其行动和谐、高效,共同提升学习效果。本文介绍的MIRACLE框架,正是运用多智能体强化学习与注意力机制,实现对此类系统的动态、自适应调控,解决了传统

weixin_34290631的博客 444

ray.rllib 入门实践-2:配置算法

ray.rllib的算法配置方式有多种,网上的不同教程各不相同,有的互不兼容,本文汇总罗列了多种算法配置方式,给出推荐,并在最后给出可运行代码。

wzg2016的博客 1083

2026强化学习入门:从Q-learning到PPO的保姆级学习路径

这次我们来看一个面向2026年的强化学习入门教程。这个教程的核心目标很明确:用最通俗易懂的方式,帮你系统性地打通强化学习(Reinforcement Learning, RL)的核心脉络。它不满足于零散的知识点,而是试图构建一个从经典算法到前沿方法的完整认知框架,涵盖从Q-learning、DQN到A3C、PPO等关键算法。 对于刚接触这个领域的学习者、希望快速补足RL知识的开发者,或者需要将RL思想应用于AI、具身智能(Embodied AI)等项目的工程师来说,这篇文章的价值在于提供一条清晰的“学习路径

weixin_33802505的博客 441

强化学习框架选型指南:RLlib、Stable-Baselines3与PyTorch对比

强化学习作为机器学习的重要分支,通过智能体与环境的交互学习最优策略。其核心原理包括马尔可夫决策过程、价值函数和策略优化算法。在实际工程中,选择合适的开源框架能大幅提升开发效率,特别是在机器人控制、游戏AI和多智能体系统等场景。本文聚焦三大主流强化学习框架:支持分布式计算的Ray RLlib、轻量易用的Stable-Baselines3和灵活可控的PyTorch实现,从自定义网络结构、多智能体支持到分布式训练等关键维度进行深度对比。针对PPO等常用算法,分析各框架在梯度处理、值函数优化等方面的实现差异,并给出

weixin_33691817的博客 382

强化学习环境配置实战:Gymnasium+SB3一站式conda-mamba搭建指南

强化学习(RL)环境配置是初学者最易卡壳的关键环节,其本质是多层技术栈(Python解释器、NumPy ABI、PyTorch CUDA、物理引擎如MuJoCo)的严丝合缝对齐。传统pip安装常因ABI不兼容、渲染依赖冲突或二进制编译失败导致gym.make()崩溃、ModuleNotFoundError频发。Gymnasium作为OpenAI官方推荐的现代标准接口,通过render_mode安全机制、entry_points注册体系和标准化info字段,显著提升可复现性;而Stable-Baselines

weixin_30522095的博客 399

深度学习【46】pix2pixHD

英伟达的pix2pixHD,能够合成高清的2048*1024图片,简直振奋人心。pix2pixHD是我之前介绍过的pix2pix的改进版本,使用多由粗到精的G网络和多尺度D网络(每个D网络都是用了pix2pix中同样的patch技术)。论文一开始用pix2pix尝试合成更高分辨率的图片,但发现效果不好,训练也很不稳定。所以就对pix2pix进行了一顿魔改。我们来看看他们是怎么改进的。由粗到精的G网络

DCD_LIN的博客 1万+

PaddleOCR训练自己的数据集踩坑记录

本文记录了使用PaddleOCR进行自定义模型训练和测试过程中的关键踩坑经验。主要包括:1) PPOCRLabel安装问题建议直接使用exe;2) 标签格式转换代码实现;3) 批量测试图片的Python脚本编写;4) 模型导出时版本兼容性问题需升级PaddlePaddle;5) 模型加载时名称匹配问题需要手动修改源码。这些实践经验对于使用PaddleOCR进行OCR项目开发具有重要参考价值,能有效避免类似问题。

2301_79524826的博客 2707

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

ray.rllib-入门实践-12:自定义policy

# 1. 自定义 policy, 主要是改变 policy 的 loss 的计算 # 神经网络的损失函数## PPOTorchPolicy 内部对 PPOConfig 格式的config 执行了to_dict()操作,后面可以以 dict 的形式使用 config## 原始损失original_loss = super().loss(model, dist_class, train_batch) # PPO原来的损失函数, 也可以完全自定义新的loss函数, 但是非常不建议。

wzg2016的博客 931

nmap、X-Scan漏洞扫描和Metasploit中用永恒之蓝漏洞入侵靶机并上传冰河

利用nmap、X-Scan扫描靶机的漏洞,在Metasploit中用扫描出的永恒之蓝漏洞入侵靶机,建立连接后上传冰河木马控制靶机,最后用冰河陷阱清除靶机的冰河木马,记一次完整的入侵控制实验。

m0_59302403的博客 4408

MuJoCo 机械臂关节空间阻抗控制Impedance实现(附代码)

阻抗控制通过调整关节的刚度和阻尼,让机器人在接触时产生顺应性,减少冲击力,其核心目标是在接触外部载荷时能够自适应调整输出力矩,实现力与位置的协同控制。阻抗控制可以很快的到达设定位置,在此基础上,使用mujoco交互中的施加外力操作,可以看到当外力松开后,机械臂也可以很快的回弹回设定位置。其中self.Kp和self.Kd为固定刚度和阻尼系数,通过修改刚度和阻尼参数,可以变得更柔顺来应对各种场景。注释掉该行后,直接simulate仿真可以看到机械臂控制位置震荡等情况,接下来引入关节空间阻抗控制的代码。

darcsdn 1274

机器学习框架Ray -- 1.4 Ray RLlib的基本使用

RLlib是一种建立在Ray之上的行业级别的强化学习(RL)库。RLlib提供了高度可扩展性和统一的API,适用于各种行业和研究应用。定义了一个名为SimpleCorridor的gym环境,使用PPO算法进行并行强化学习。

wenquantongxin的博客 3873

对称加密中GCM和CBC俩种加密模式的区别

**CBC(Cipher Block Chaining)** 和 **GCM(Galois/Counter Mode)** 是两种常见的对称加密模式。它们的主要区别体现在加密方式、性能和安全性上。

闲人 1107

深度强化学习框架Ray|RLLib|Tune学习笔记

文章目录0 Ray深度强化学习框架概述1 Ray使用场景—多进程2 Ray使用场景—进程间通信3 Tune使用场景—调参4 RLLib使用场景—RL算法5 Ray、Tune和RLLib关系6 Ray系统架构(实现多进程和跨节点通信)6.1 Ray系统架构—概述6.2 Ray系统架构—内存管理7 Tune系统架构(实验资源分配+调参)8 RLLib系统架构(Trainer、Policy和Agent)8.1 Policy实现功能8.2 Trainer实现功能参考文献 0 Ray深度强化学习框架概述 Ray—

SL_World的博客 9323

MATLAB基础应用精讲-【图像处理】GNN图神经网络(附python代码实现)

图神经网络由于其在处理非欧空间数据和复杂特征方面的优势,受到广泛关注并应用于推荐系统、知识图谱、交通道路分析等场景。图结构可描述复杂关系,如基因结构、通信网络、交通路线、社交网络等。图计算挖掘结构信息,但无法学习节点特征。神经网络在欧氏空间数据上表现优越,但无法直接应用于非欧氏空间的图数据。图神经网络结合图计算和神经网络优势,处理非欧氏空间数据及其复杂特征,应用于网络链接预测、推荐系统和交通道路分析等场景。实际应用中,图数据规模庞大,如百亿级节点、千亿级边,存储开销超过10TB。

qq_36130719的博客 1139

华为OD机试 - 文件存储系统的排序 - 深度优先搜索dfs(Java 双机位C卷 200分)

华为OD机试 双机位C卷题库疯狂收录中,刷题。

学Java,找哪吒 719

ray.rllib-入门实践-12-1:在自定义policy中注册使用自定义model

中介绍了如何自定义一个model并注册到ray中去使用。可以默认自定义的policy自动向ray注册了自定义的model。如何自定义policy并使用见。

wzg2016的博客 611

Python爬虫实战:逆向解析天猫商品详情API,精准捕获规格、SKU与促销活动

及浏览器开发者工具),绕过前端渲染的复杂性,直接逆向分析并调用其内部数据接口,从而高效、稳定地抓取商品的关键信息,包括商品规格、多维度SKU信息以及复杂的促销活动。print(f"SKU ID: {sku.sku_id}, 价格: ¥{sku.price}, 库存: {sku.stock}, 规格: {sku.props}")当你访问一个商品链接时,浏览器首先会加载一个几乎为空的HTML骨架,然后通过执行大量的JavaScript代码,向后台服务器发起多个异步请求,最终将获取到的数据填充到页面中。

2201_76125261的博客 1129

强化学习工业落地五篇核心论文实战指南

强化学习(RL)作为智能决策的核心范式,其理论与工程实践长期存在断层。从马尔可夫决策过程(MDP)建模到策略优化,关键在于理解算法如何解决样本效率、环境非平稳性与安全约束等工业瓶颈。深度Q网络(DQN)确立了函数逼近基础,A3C提升了分布式训练鲁棒性,PPO以clip机制保障更新稳定性,SAC通过熵正则化平衡探索与利用,Rainbow则集成多维改进形成高适配基线。这些工作共同构成现代工业RL系统80%的代码骨架,广泛应用于推荐系统、智能制造与物流调度等场景。本文聚焦五篇高迁移性、可模块化、易调试的奠基性论文

weixin_30357231的博客 441

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

RoboCasa大规模仿真框架:构建通用型机器人厨房任务训练平台

RoboCasa是由UT Austin研究团队开发的大规模仿真框架,专注于训练通用型机器人执行日常厨房任务。该框架通过提供多样化的厨房场景、丰富的3D资产库和高质量演示数据,为机器人学习研究构建了一个完整的训练与评估生态系统。RoboCasa365作为最新版本,进一步扩展了任务规模,支持365个不同任务,涵盖了从基础操作到复杂流程的完整厨房活动谱系。 ## 架构解析:模块化设计与系统集成 Ro

gitblog_01150的博客 926

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

零基础入门游戏AI开发:基于网易方锐技术的实践指南

游戏AI是人工智能在复杂决策环境中的重要应用,其核心原理是通过强化学习、模仿学习等算法,让智能体在与环境的交互中学习最优策略。这项技术的价值在于能够为游戏角色赋予自主决策能力,提升游戏的可玩性与挑战性,同时也可用于自动化测试与平衡性分析。在实际应用场景中,开发者常面临算法理论门槛高、工程实践复杂以及与游戏引擎集成困难等挑战。网易方锐技术通过提供一体化的低代码AI训练平台,有效降低了这些门槛。该平台将强化学习、模仿学习等技术封装为可视化操作,支持与Unity、Unreal等引擎深度集成,使开发者能快速构建和部

weixin_30325971的博客 361

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Gym-UnrealCV:在虚幻引擎高保真环境中训练视觉强化学习智能体

强化学习是人工智能领域的关键技术,它通过智能体与环境的交互试错来学习最优策略。其核心原理在于利用奖励信号引导智能体行为,在游戏AI、机器人控制等场景具有重要价值。视觉强化学习进一步引入高维图像作为输入,对仿真环境的真实性和可控性提出了更高要求。Gym-UnrealCV这一工具包,正是为解决此需求而生。它无缝桥接了OpenAI Gym标准接口与虚幻引擎强大的视觉仿真能力,使研究者能够利用Python脚本,在拥有照片级真实感光照与复杂物理的虚拟世界中,便捷地训练智能体完成目标跟踪、物体搜索等任务。通过集成深度学

注重长远 天天积累 cqujsjcyj 588

veRL强化学习框架:从模块化设计到生产级应用实战

强化学习(RL)作为机器学习的重要分支,其核心原理是智能体通过与环境的交互试错,学习最大化累积奖励的策略。这一技术价值在于能够解决序列决策问题,广泛应用于游戏AI、机器人控制、自动驾驶和推荐系统等领域。然而,从理论算法到工程落地,常面临环境集成复杂、训练流程繁琐、分布式扩展困难等挑战。本文聚焦于字节跳动开源的veRL框架,它通过模块化架构统一了环境接口、模型定义和训练循环,并原生支持PPO、SAC等现代深度强化学习算法。该框架特别强调工程鲁棒性,提供了对Isaac Gym等GPU加速仿真器的适配,以及完善的

weixin_34318272的博客 411

SPADE框架解析:自适应环境与自对弈驱动的智能体进化平台

强化学习通过智能体与环境的交互,基于奖励信号优化策略,是实现通用人工智能的关键路径之一。其核心原理在于利用马尔可夫决策过程建模,通过价值函数或策略梯度方法进行学习。该技术的核心价值在于能够解决复杂序列决策问题,尤其在动态、高维状态空间中展现出强大潜力。应用场景广泛覆盖游戏AI、机器人控制、自动驾驶及资源调度等领域。本文聚焦的SPADE框架,正是强化学习研究的前沿工具,它通过构建自适应合成环境与自对弈机制,为探索智能体在动态挑战中的自主进化提供了平台。该框架特别适用于研究课程学习和多智能体协作等热点方向,帮助

weixin_34344403的博客 319

强化学习驱动持久图空间随机动力学:方法与实践

拓扑数据分析(TDA)为高维数据提供了一种多尺度的形状描述,其中持久图(Persistence Diagram)记录了拓扑特征随尺度演化的轨迹。然而,持久图属于非欧几里得空间,无法直接执行平均或插值运算,这给基于深度学习的生成与优化任务带来了挑战。强化学习(Reinforcement Learning)擅长序贯决策,能够学习将持久图作为状态空间的随机动力学过程,从而在拓扑层面实现可控的生成与采样。该技术可应用于点云生成、分子构象采样、材料微观结构设计等场景,能够显式约束输出样本的拓扑特征,如连通分量或环洞数

weixin_33801856的博客 308

大模型与持续学习赋能人形机器人:30分钟收纳叠衣任务技术实现

在机器人技术领域,如何让机器人在非结构化环境中完成复杂灵巧操作是核心挑战。其原理在于构建一个“感知-思考-行动”的闭环系统,通过传感器获取环境信息,经过决策模块处理后,驱动执行器完成动作。这一技术价值在于推动机器人从预编程的固定任务,向能够适应动态场景、学习新技能的通用智能体演进。其应用场景广泛,从工业分拣到家庭服务机器人均需此类能力。本文聚焦于结合大模型与持续学习两大关键技术,大模型作为高级“认知引擎”负责场景理解与任务规划,而持续学习机制则使机器人能在执行如“30分钟收纳叠衣”等任务过程中,利用新数据在

weixin_30876945的博客 326
上一篇: ray.rllib-入门实践-12-1:在自定义policy中注册使用自定义model
下一篇: pyqt5 简易入门教程
wzg2016
博客等级 码龄10年 539粉丝 493原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值