中国b2b有哪些电商平台/谷歌seo教程

中国b2b有哪些电商平台,谷歌seo教程,门户网站建设管理工作的意见,国家备案网代码原理分析 1. 核心思想 该代码实现了一个基于扩散模型(Diffusion Model)的强化学习策略网络。扩散模型通过逐步去噪过程生成动作,核心思想是: • 前向过程:通过T步逐渐将专家动作添加高斯噪声,最终变成…

代码原理分析

1. 核心思想

该代码实现了一个基于扩散模型(Diffusion Model)的强化学习策略网络。扩散模型通过逐步去噪过程生成动作,核心思想是:
前向过程:通过T步逐渐将专家动作添加高斯噪声,最终变成纯噪声
逆向过程:训练神经网络预测噪声,通过T步逐步去噪生成动作
数学基础:基于DDPM(Denoising Diffusion Probabilistic Models)框架

算法步骤
1.1 前向加噪:在动作空间逐步添加高斯噪声,将真实动作分布转化为高斯分布
q ( a t ∣ a t − 1 ) = N ( a t ; 1 − β t a t − 1 , β t I ) q(\mathbf{a}_t|\mathbf{a}_{t-1}) = \mathcal{N}(\mathbf{a}_t; \sqrt{1-\beta_t}\mathbf{a}_{t-1}, \beta_t\mathbf{I}) q(atat1)=N(at;1βt at1,βtI)
其中 β t \beta_t βt 为噪声调度参数(网页4][网页5][网页8])。

1.2 逆向去噪:基于观测 o t \mathbf{o}_t ot 条件去噪生成动作
p θ ( a t − 1 ∣ a t , o t ) = N ( a t − 1 ; μ θ ( a t , o t , t ) , Σ t ) p_\theta(\mathbf{a}_{t-1}|\mathbf{a}_t, \mathbf{o}_t) = \mathcal{N}(\mathbf{a}_{t-1}; \mu_\theta(\mathbf{a}_t, \mathbf{o}_t, t), \Sigma_t) pθ(at1at,ot)=N(at1;μθ(at,ot,t),Σt)
去噪网络 μ θ \mu_\theta μθ 预测噪声残差(网页5][网页6][网页8])。

1.3 训练目标:最小化噪声预测误差
L = E t , a 0 , ϵ [ ∥ ϵ − ϵ θ ( α t a 0 + 1 − α t ϵ , o t , t ) ∥ 2 ] \mathcal{L} = \mathbb{E}_{t,\mathbf{a}_0,\epsilon}\left[ \|\epsilon - \epsilon_\theta(\sqrt{\alpha_t}\mathbf{a}_0 + \sqrt{1-\alpha_t}\epsilon, \mathbf{o}_t, t)\|^2 \right] L=Et,a0,ϵ[ϵϵθ(αt a0+1αt ϵ,ot,t)2]
其中 α t = ∏ s = 1 t ( 1 − β s ) \alpha_t = \prod_{s=1}^t (1-\beta_s) αt=s=1t(1βs)(网页4][网页8][网页11])。

2. 关键数学公式

前向过程(扩散过程):

q(a_t|a_{t-1}) = N(a_t; √(α_t)a_{t-1}, (1-α_t)I)
α_t = 1 - β_t,ᾱ_t = ∏_{i=1}^t α_i
a_t = √ᾱ_t a_0 + √(1-ᾱ_t)ε,其中ε ~ N(0,I)

训练目标(噪声预测):

L = ||ε - ε_θ(a_t, s, t)||^2

逆向过程(采样过程):

p_θ(a_{t-1}|a_t) = N(a_{t-1}; μ_θ(a_t, s, t), Σ_t)
μ_θ = 1/√α_t (a_t - β_t/√(1-ᾱ_t) ε_θ)

逐行代码注释

import torch
import gymnasium as gym
import numpy as npclass DiffusionPolicy(torch.nn.Module):def __init__(self, state_dim=4, action_dim=2, T=20):super().__init__()self.T = T  # 扩散过程总步数self.betas = torch.linspace(1e-4, 0.02, T)  # 噪声方差调度self.alphas = 1 - self.betas  # 前向过程参数self.alpha_bars = torch.cumprod(self.alphas, dim=0)  # 累积乘积ᾱ# 去噪网络(输入维度:state(4) + action(2) + timestep(1) = 7)self.denoiser = torch.nn.Sequential(torch.nn.Linear(7, 64),  # 输入层torch.nn.ReLU(),          # 激活函数torch.nn.Linear(64, 2)    # 输出预测的噪声)self.optimizer = torch.optim.Adam(self.denoiser.parameters(), lr=1e-3)def train_step(self, states, expert_actions):batch_size = states.size(0)t = torch.randint(0, self.T, (batch_size,))  # 随机采样时间步alpha_bar_t = self.alpha_bars[t].unsqueeze(1)  # 获取对应ᾱ_t# 前向加噪(公式实现)noise = torch.randn_like(expert_actions)  # 生成高斯噪声noisy_actions = torch.sqrt(alpha_bar_t) * expert_actions + \torch.sqrt(1 - alpha_bar_t) * noise  # 公式(2)# 输入拼接(状态、加噪动作、归一化时间步)inputs = torch.cat([states, noisy_actions,(t.float() / self.T).unsqueeze(1)  # 时间步归一化到[0,1]], dim=1)  # 最终维度:batch_size x 7pred_noise = self.denoiser(inputs)  # 预测噪声loss = torch.mean((noise - pred_noise)**2)  # MSE损失return lossdef sample_action(self, state):state_tensor = torch.FloatTensor(state).unsqueeze(0)a_t = torch.randn(1, 2)  # 初始化为随机噪声(动作维度2)# 逆向去噪过程(需要补全)for t in reversed(range(self.T)):# 应实现的步骤:# 1. 获取当前时间步参数# 2. 拼接输入(状态,当前动作,时间步)# 3. 预测噪声ε_θ# 4. 根据公式计算均值μ# 5. 采样新动作(最后一步不添加噪声)passreturn a_t.detach().numpy()[0]  # 返回最终动作

执行过程详解

训练流程
  1. 随机采样时间步:为每个样本随机选择扩散步t ∈ [0, T-1]
  2. 前向加噪:根据公式将专家动作添加对应程度的噪声
  3. 输入构造:拼接状态、加噪动作和归一化时间步
  4. 噪声预测:神经网络预测添加的噪声
  5. 损失计算:最小化预测噪声与真实噪声的MSE
采样流程(需补全)
  1. 初始化:从高斯噪声开始
  2. 迭代去噪:从t=T到t=1逐步去噪
    • 根据当前动作和状态预测噪声
    • 计算前一步的均值
    • 添加随机噪声(最后一步除外)
  3. 输出:得到最终去噪后的动作

关键改进建议

  1. 实现逆向过程:需要补充时间步循环和去噪公式
  2. 添加方差调度:在采样时使用更复杂的方差计算
  3. 时间步嵌入:可以使用正弦位置编码代替简单归一化
  4. 网络结构优化:考虑使用Transformer或条件批归一化

该实现展示了扩散策略的核心思想,但完整的扩散策略还需要实现完整的逆向采样过程,并可能需要调整噪声调度参数以获得更好的性能。

最终可执行代码:

import torch
import gymnasium as gym
import numpy as npclass DiffusionPolicy(torch.nn.Module):def __init__(self, state_dim=4, action_dim=2, T=20):super().__init__()self.T = Tself.betas = torch.linspace(1e-4, 0.02, T)self.alphas = 1 - self.betasself.alpha_bars = torch.cumprod(self.alphas, dim=0)# 去噪网络(输入维度:4+2+1=7)self.denoiser = torch.nn.Sequential(torch.nn.Linear(7, 64),torch.nn.ReLU(),torch.nn.Linear(64, 2))self.optimizer = torch.optim.Adam(self.denoiser.parameters(), lr=1e-3)def train_step(self, states, expert_actions):batch_size = states.size(0)t = torch.randint(0, self.T, (batch_size,))alpha_bar_t = self.alpha_bars[t].unsqueeze(1)# 前向加噪公式[2](@ref)noise = torch.randn_like(expert_actions)noisy_actions = torch.sqrt(alpha_bar_t) * expert_actions + torch.sqrt(1 - alpha_bar_t) * noise# 输入拼接(维度对齐)[1](@ref)inputs = torch.cat([states, noisy_actions,(t.float() / self.T).unsqueeze(1)], dim=1)  # 最终维度:batch_size x 7pred_noise = self.denoiser(inputs)loss = torch.mean((noise - pred_noise)**2)return lossdef sample_action(self, state):state_tensor = torch.FloatTensor(state).unsqueeze(0)a_t = torch.randn(1, 2)  # 二维动作空间[2](@ref)# 逆向去噪过程[2](@ref)for t in reversed(range(self.T)):alpha_t = self.alphas[t]alpha_bar_t = self.alpha_bars[t]inputs = torch.cat([state_tensor,a_t,torch.tensor([[t / self.T]], dtype=torch.float32)], dim=1)pred_noise = self.denoiser(inputs)a_t = (a_t - (1 - alpha_t)/torch.sqrt(1 - alpha_bar_t) * pred_noise) / torch.sqrt(alpha_t)if t > 0:a_t += torch.sqrt(self.betas[t]) * torch.randn_like(a_t)return torch.argmax(a_t).item()  # 离散动作选择[1](@ref)if __name__ == "__main__":env = gym.make('CartPole-v1')policy = DiffusionPolicy()# 关键修复:确保状态数据维度统一[1,2](@ref)states, actions = [], []state, _ = env.reset()for _ in range(1000):action = env.action_space.sample()next_state, _, terminated, truncated, _ = env.step(action)done = terminated or truncated# 强制转换状态为numpy数组并检查维度[2](@ref)state = np.array(state, dtype=np.float32).flatten()if len(state) != 4:raise ValueError(f"Invalid state shape: {state.shape}")states.append(state)  # 确保每个状态是(4,)的数组actions.append(action)if done:state, _ = env.reset()else:state = next_state# 维度验证与转换[1](@ref)states_array = np.stack(states)  # 强制转换为(1000,4)if states_array.shape != (1000,4):raise ValueError(f"States shape error: {states_array.shape}")actions_onehot = np.eye(2)[np.array(actions)]  # 转换为one-hot编码[2](@ref)states_tensor = torch.FloatTensor(states_array)actions_tensor = torch.FloatTensor(actions_onehot)# 训练循环for epoch in range(100):loss = policy.train_step(states_tensor, actions_tensor)policy.optimizer.zero_grad()loss.backward()policy.optimizer.step()print(f"Epoch {epoch}, Loss: {loss.item():.4f}")# 测试state, _ = env.reset()for _ in range(200):action = policy.sample_action(state)state, _, done, _, _ = env.step(action)if done: break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek 本地化部署教程

1 概述 1.1 配置参考图 科普: B,Billion(十亿),是 “参数量” 的单位。 模型量超过 一亿,可称之为 “大模型”。 2 软件安装 2.1 下载 Ollama 官方主页:https://ollama.com/download主页截图…

matlab打开两个工程

1、问题描述 写代码时,需要实时参考别人的代码,需要同时打开2个模型,当模型在同一个工程内时,这是可以直接打开的,如图所示 2、解决方案 再打开一个MATLAB主窗口 这个时候就可以同时打开多个模型了 3、正确的打开方…

mac 下配置flutter 总是失败,请参考文章重新配置flutter 环境MacOS Flutter环境配置和安装

一、安装和运行Flutter的系统环境要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS磁盘空间:2.8 GB(不包括IDE/tools的磁盘空间)。工具:Flutter使用git进行安装和升级。我们建议安装Xcode,其中包括git&#x…

Flutter快速搭建聊天

之前项目中使用的环信聊天,我们的App使用的Flutter开发的 。 所以,就使用的 em_chat_uikit ,这个是环信开发的Flutter版本的聊天。 一开始,我们也用的环信的聊天,是收费的,但是,后面就发现&…

Sa-Token

简介 Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。 官方文档 常见功能 登录认证 本框架 用户提交 name password 参数,调用登…

基于javaweb的SSM航班机票预订平台系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

JAVA实现动态IP黑名单过滤

一些恶意用户(可能是黑客、爬虫、DDoS 攻击者)可能频繁请求服务器资源,导致资源占用过高。因此需要一定的手段实时阻止可疑或恶意的用户,减少攻击风险。 通过 IP 封禁,可以有效拉黑攻击者,防止资源被滥用,保障合法用户…

开源的CMS建站系统可以随便用吗?有什么需要注意的?

开源CMS建站系统虽然具有许多优点,但并非完全“随便用”。无论选哪个CMS系统,大家在使用的时候,可以尽可能地多注意以下几点: 1、版权问题 了解开源许可证:不同的开源CMS系统采用不同的开源许可证,如GPL、…

故障识别 | 基于改进螂优化算法(MSADBO)优化变分模态提取(VME)结合稀疏最大谐波噪声比解卷积(SMHD)进行故障诊断识别,matlab代码

基于改进螂优化算法(MSADBO)优化变分模态提取(VME)结合稀疏最大谐波噪声比解卷积(SMHD)进行故障诊断识别 一、引言 1.1 机械故障诊断的背景和意义 在工业生产的宏大画卷中,机械设备的稳定运行…

探究 CSS 如何在HTML中工作

2025/3/28 向全栈工程师迈进&#xff01; 一、CSS的作用 简单一句话——美化网页 <p>Lets use:<span>Cascading</span><span>Style</span><span>Sheets</span> </p> 对于如上代码来说&#xff0c;其显示效果如下&#xff1…

硬件老化测试方案的设计误区

硬件老化测试方案设计中的常见误区主要包括测试周期不足、测试条件过于单一、样品选择不当等方面。其中&#xff0c;测试周期不足尤为突出&#xff0c;容易导致潜在缺陷未被完全暴露。老化测试本质上是通过加速产品老化来模拟长期使用状况&#xff0c;因此测试周期不足会严重削…

无锡零碳园区“三年突围”安科瑞源网荷储充系统如何破解“绿电难、储能贵、调度乱”困局?

零碳园区建设如火如荼&#xff0c;为何企业“不敢投、不会用”&#xff1f; 无锡市政府3月27日发布《零碳园区建设三年行动方案》&#xff0c;目标到2027年建成10家以上零碳园区、20家零碳工厂、10个源网荷储一体化项目。但企业仍存疑虑&#xff1a; 绿电消纳难&#xff1a;光…

docker torcherve打包mar包并部署模型

使用Docker打包深度网络模型mar包到服务端 参考链接&#xff1a;Docker torchserve 部署模型流程——以WSL部署YOLO-FaceV2为例_class myhandler(basehandler): def initialize(self,-CSDN博客 1、docker拉取环境镜像命令 docker images出现此提示为没有权限取执行命令&…

kubernetes》》k8s》》 kubeadm、kubectl、kubelet

kubeadm 、kubectl 、kubelet kubeadm、kubectl和kubelet是Kubernetes中不可或缺的三个组件。kubeadm负责集群的快速构建和初始化&#xff0c;为后续的容器部署和管理提供基础&#xff1b;kubectl作为命令行工具&#xff0c;提供了与Kubernetes集群交互的便捷方式&#xff1b;而…

linux 硬盘扩展

场景&#xff1a; [rootlocalhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 1G 0 part /boot └─sda3 …

Docker Desktop 界面功能介绍

Docker Desktop 界面功能介绍 左侧导航栏 Containers(容器): 用于管理容器,包括查看运行中或已停止的容器,检查容器状态、日志,执行容器内命令,启动、停止、删除容器等操作。Images(镜像): 管理本地 Docker 镜像,可查看镜像列表、从 Docker Hub 拉取新镜像、删除镜…

数据设计(范式、步骤)

文章目录 数据设计1.数据库设计的三大范式2、数据库设计的具体步骤 数据设计 1.数据库设计的三大范式 关系型数据库的三大范式&#xff0c;指导如何设计一个关系型数据库。 1NF&#xff1a; 关系表的每个字段&#xff0c;都应该是不可再分的&#xff0c;——保证原子性。 字…

PhotoShop学习03

1.更改图像大小 通常情况下&#xff0c;如果我们想在某些上传图片&#xff0c;会发现我们的图片可能会过大或者过小&#xff0c;为此&#xff0c;我们需要调整图像的大小&#xff0c;使之符合网站的规则。 首先打开photoshop&#xff0c;打开一张图片。首先我们需要了解这张图…

【区块链安全 | 第二篇】区块链概念详解

文章目录 概述1. 区块链类型2 区块链五层架构3 账本模型4. 节点&#xff08;Node&#xff09;5. 区块&#xff08;Block&#xff09;6. 区块链&#xff08;Blockchain&#xff09;7. 区块链工作流程 核心技术1. 共识机制2. 智能合约 主要组件1. 交易&#xff08;Transaction&am…