自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 Potential Reward Shaping不改变智能体的原始最优策略

Potential Reward Shaping是一种理论上不改变智能体最优策略的奖励塑形方法。通过数学推导证明,potential shaping会导致价值函数产生状态相关的常数平移(V'^π(s)=V^π(s)+Φ(s)),而不影响动作间的相对优劣。核心在于shaping项γΦ(s')-Φ(s)形成了时间维度上的望远镜求和,使累计影响仅剩初始状态Φ(s)。这种精心设计的"可积项"确保了最优策略不变性,即argmax_a Q'(s,a)=argmax_a Q(s,a)。

2026-02-11 12:14:31 658

原创 【Rust GUI开发入门】编写一个本地音乐播放器(15. 记录运行日志)

本文介绍了真正的音乐播放器日志记录实现方案,通过env_logger实现同时输出日志到控制台和文件。主要包含:1)使用MultiWriter自定义多目标输出,同时输出到控制台和日志文件;2)设置日志格式和过滤级别;3)重定向Paniceme消息到日志文件,便于调试。代码已开源在Github的zeedle项目。该方案兼顾开发调试和发布后的日志记录需求,有效解决GUI程序异常诊断难题问题。

2025-10-02 22:58:45 304

原创 【Rust GUI开发入门】编写一个本地音乐播放器(14. 应用打包-制作安装程序)

本文介绍了如何使用cargo-packager打包Rust编写的音乐播放器程序。主要内容包括:1) 打包原因:Windows系统依赖C运行时DLL文件;2) 安装配置打包工具;3) 在Cargo.toml中设置打包参数,包括资源文件和安装包图标;4) 使用dumpbin查找依赖DLL;5) 执行打包命令并测试安装包。最终生成的可执行文件位于target/release目录,经测试安装后能正常运行。教程配套代码已开源在Github。

2025-10-01 00:43:08 329

原创 【Rust GUI开发入门】编写一个本地音乐播放器(13. 实现按键绑定)

摘要:本文介绍如何使用Slint UI为播放器添加按键绑定功能。通过FocusScope组件处理窗口聚焦时的按键输入,定义不同按键触发对应操作:空格键控制播放/暂停,方向键切换歌曲,F1-F4快速切换不同页面标签。代码示例展示了按键事件与回调函数的绑定实现方式。(98字)

2025-10-01 00:09:28 311

原创 【Rust GUI开发入门】编写一个本地音乐播放器(12. 国际化应用-多语言支持)

本文介绍了为Slint UI播放器页面添加多语言支持的完整流程:1) 使用@tr修饰待翻译文本;2) 通过命令行提取字符串生成.pot文件;3) 使用Poedit工具翻译并保存为.po文件;4) 在build.rs中配置语言目录进行静态编译;5) 通过Rust API动态切换语言。文章提供了详细的操作步骤和代码示例,帮助开发者实现应用国际化,支持中、西、德等多种语言。相关代码已开源在Github。

2025-09-30 23:54:24 420

原创 【Rust GUI开发入门】编写一个本地音乐播放器(11. 支持动态明暗主题切换)

本文介绍了Slint UI框架中实现明暗主题切换的方法。通过修改Palette.color-scheme属性(设为ColorScheme.light/dark)即可实现运行时主题动态切换,但需注意该功能需在UI层通过function/callback实现,无法在Rust代码中直接操作。教程配套代码已开源在Github项目zeedle中,并提供了明暗主题效果图示例。最新版本1.13.1存在ColorScheme无法导出到Rust的限制,相关讨论可参考Github社区帖子。

2025-09-30 23:16:08 275

原创 【Rust GUI开发入门】编写一个本地音乐播放器(10. 拼装UI组件)

本文介绍了如何将多个UI组件整合成一个完整的音乐播放器界面。通过TabWidget将功能划分为四个标签页:歌曲列表库(展示并管理歌曲)、歌词面板(显示当前播放歌词)、设置面板(配置语言和主题等)和关于页面(显示应用信息)。核心组件包括歌曲列表视图、播放控制面板和歌词面板,通过数据绑定实现交互功能如播放控制、进度调整和主题切换等。该播放器支持多语言、明暗主题切换,并提供了完整的音乐播放管理功能。

2025-09-30 22:47:43 243

原创 【Rust GUI开发入门】编写一个本地音乐播放器(9. 制作设置面板)

本教程介绍了如何使用Slint语言创建一个简单的设置面板界面。该面板包含三个设置项:音乐目录(带输入框)、语言选择(下拉框)和主题切换(开关),所有元素都居中显示。每个设置项采用水平布局,包含左侧标签和右侧控件,整体采用垂直布局排列。代码已开源在Github的zeedle项目中,展示了如何通过Slint实现界面布局和交互逻辑,包括属性绑定和回调处理。

2025-09-30 22:14:38 230

原创 【Rust GUI开发入门】编写一个本地音乐播放器(8. 从文件中提取歌曲元信息)

本文介绍了如何使用Rust的lofty库解析音频文件元数据。教程包含三部分功能实现:1)解析歌曲基础信息(歌名、歌手、时长),2)提取歌词并按时间戳处理,3)获取专辑封面图片数据。所有代码已开源,通过PathBuf路径参数处理不同格式音频文件,返回结构化的歌曲信息对象。解析过程针对不同场景进行了优化:基础信息在启动时加载,而歌词和封面仅在播放时解析。

2025-09-30 18:16:11 333

原创 【Rust GUI开发入门】编写一个本地音乐播放器(7. 制作歌词显示面板)

摘要:本文介绍了一个歌词面板的实现方案,采用水平布局(左30%显示专辑封面,右70%显示歌词)。代码使用Slint语言构建,左侧包含专辑图像、歌手和歌曲名信息,右侧通过ListView组件展示歌词。关键特性包括:支持歌词进度高亮显示(根据当前播放时间匹配歌词时间戳)、视图滚动控制,以及后续将介绍的歌词文件解析功能。该布局实现了音乐播放时图文并茂的歌词展示效果。

2025-09-30 17:33:14 151

原创 【Rust GUI开发入门】编写一个本地音乐播放器(6. 制作播放控制面板)

摘要:该代码实现了一个水平布局的音乐播放控制面板,包含专辑封面、歌曲信息、播放控制按钮和进度条。主要功能包括:显示专辑图片和歌曲信息;提供顺序/随机播放模式切换按钮;上一曲/播放暂停/下一曲控制按钮;支持拖动进度条调整播放进度;通过回调函数处理各种播放控制事件。组件采用Slint语言编写,使用HorizontalLayout和VerticalLayout进行布局,通过双向绑定实现播放状态同步。

2025-09-30 17:05:11 345

原创 【Rust GUI开发入门】编写一个本地音乐播放器(5. 制作音乐列表组件)

本文介绍了一个音乐列表组件的实现方案,包含标题栏和列表项两部分。标题栏支持按歌曲名、歌手和时长排序,通过自定义排序图标和枚举类型实现交互功能。列表项展示歌曲信息(歌名、歌手、时长),支持双击触发播放回调。组件采用Slint语言开发,包含完整的UI布局和交互逻辑,结构清晰,可扩展性强。 (150字)

2025-09-30 16:22:51 225

原创 【Rust GUI开发入门】编写一个本地音乐播放器(4. 绘制按钮组件)

本文介绍了如何使用Slint UI框架构建音乐播放器界面控件,重点展示了通过Path指令绘制矢量图标的方法。文章提供了四个播放器按钮的实现代码:下一曲按钮(NextSongButton)、上一曲按钮(PrevSongButton)、播放/暂停切换按钮(PlayPauseButton)和顺序播放模式按钮(InOrderButton)。每个按钮都采用Path指令绘制,并包含交互逻辑,如点击事件和状态切换功能。代码示例展示了如何通过MoveTo、LineTo、ArcTo等SVG指令创建自定义图标,同时保持UI风格

2025-09-29 23:43:37 422

原创 【Rust GUI开发入门】编写一个本地音乐播放器(3. UI与后台线程通信)

本文介绍了在Slint UI框架中实现线程间通信的两种方法:1)通过管道(channel)从UI线程向后台线程发送消息;2)通过slint::invoke_from_event_loop()从后台线程向UI主线程发送任务。重点展示了如何定义消息类型、使用全局状态变量更新UI,以及在不同线程间安全地传递数据和指令。这种模式充分利用了Rust的类型安全和Slint的全局状态管理特性,实现了高效可靠的跨线程UI更新。

2025-09-29 17:09:53 426

原创 【Rust GUI开发入门】编写一个本地音乐播放器(2. Rodio播放库的使用)

本文介绍了使用Rust音频库rodio播放音频的基本方法。主要内容包括:添加rodio依赖、创建音频流和sink对象、解码音频文件、控制播放流程(播放/暂停/恢复)。重点解析了关键API功能,并指出stream_handle硬件资源管理机制和生命周期注意事项,强调必须保持stream_handle生命周期长于sink才能正常播放音频。代码示例演示了20秒播放-20秒暂停-20秒播放的完整流程。

2025-09-27 23:38:39 576

原创 【Rust GUI开发入门】编写一个本地音乐播放器(1. 主要技术选型&架构设计)

本文介绍了音乐播放器应用的技术选型和架构设计。UI框架选用Slint,因其声明式设计、样式逻辑分离和高性能。音频播放采用Rodio库,支持多种格式。元数据解析使用Lofty库。架构采用经典的双线程模型,UI主线程负责渲染和事件处理,后台线程执行任务并更新UI状态,以避免阻塞卡顿。这种设计兼顾了性能与开发便利性。

2025-09-27 22:12:35 533

原创 【从0开始】使用Flax NNX API 构建简单神经网络并训练

与 Linen API 不同,NNX 使用起来对初学者更加简单,跟 PyTorch 的体验更加接近。

2025-02-06 18:30:14 892

原创 Rust调用Windows API制作进程挂起工具

一个 sysinternals/pssuspend 替代工具,用于在Windows上挂起/恢复指定PID的进程。目前只能使用未公开的系统API来实现,底层使用了ntdll.dll。

2025-01-13 21:03:08 706

转载 静态优化问题与动态优化问题

静态优化问题:一次性决策,不考虑时间变化,目标函数和约束是固定的。动态优化问题:决策随时间演化,未来的决策影响当前决策,目标函数和约束可能随时间变化。

2024-08-14 21:30:29 1061

原创 资本回收率(Captial Recovery Factor, CRF)

工程经济学中的一个概念,用于计算在一定期间内逐年回收投资本金和利息的年金值。它用于将初始投资金额(即现值)等效为一系列等额的年金付款,帮助分析投资的可行性或确定贷款的还款额。CRF1ry−1r1ry​其中,r是年利率,y是年数。

2024-08-12 19:47:20 2251

原创 Rust中的特殊类型(引用、智能指针等)所占的内存大小

综上所述,智能指针/引用所占内存大小是固定的,但是其指向的数据大小未必固定。对于所占内存固定已知的数据类型,运行时会把它们放在栈上,对于所占内存不固定的数据类型,运行时会把它们放在堆上,然后可以通过存放在栈上的指针来操作堆上的数据。Rust中,一个普通指针的大小为usize,与计算机CPU字长相等,对64位计算机来说usize=64/8=8字节。的本质都是智能指针,它们的大小都是固定的(大小不固定也没法通过编译啊),它们的本质是通过存放在栈上的指针访问堆内存,来操作堆上包裹的数据。

2024-08-03 01:54:37 729

原创 Rust的运行时多态

Rust的静态多态即编译时多态,通过**泛型+特征约束(Generic Type + Trait Constrait)**来实现;那么动态多态(运行时多态)呢?答案是。特征对象不是一个实例,而是一个结构体类型。语法是,编译时指示某个对象是实现TraitName的类型,其具体类型未知。

2024-08-02 16:51:22 613

原创 Windows下安装Mujoco1.50

最近看了很多在Windows上安装Mujoco1.50的教程,大多数过于繁杂,下面根据官方文档,写一个相对简化的安装方法,主要是其实很简单,总共就三句话,并没有说1.50版本要设置环境变量啥的,不知道其他博主在哪看的。

2024-07-17 01:17:48 1511

原创 两个高斯分布的KL散度&绘制动画

P、Q为随机变量X的两个概率分布;p、q为对应的概率密度函数。KL散度用于衡量两个变量分布之间的差异性。

2024-03-13 14:13:31 1221

原创 矢量图格式转换指南

矢量图格式之间的互相转换:SVG、EMF、PDF、EPS

2023-12-28 17:54:33 1571

原创 SAC算法

SAC全称Soft Actor-Critic算法,为优化目标引入了熵约束项,增大了动作的探索性,避免陷入局部最优解,

2023-09-07 22:12:07 812

原创 TD3算法

TD3全称Twin Delayed DDPG,是对DDPG算法的继承、发展和改进。

2023-09-06 18:54:50 906

原创 DDPG算法

确定性策略梯度理论,在DPG算法中被提出,原论文,推导过程相当复杂,我也不大能看懂,总之用就完事了😂训练流程:参考了DQN,因此属于Off Policy算法,使用了经验回放缓存,引入了actor target和critic target。

2023-09-06 13:45:17 407

原创 深度强化学习算法的参数更新时机

深度强化学习中往往涉及到多个神经网络来拟合策略函数、值函数等,什么时候更新参数因算法而异,与具体算法架构/算法思想紧密相关。

2023-09-05 22:41:52 622

原创 Powershell模拟实现Linux下的tree命令

【代码】Powershell模拟实现Linux下的tree命令。

2023-09-05 21:54:58 911

原创 PPO算法

全称Proximal Policy Optimization,是TRPO(Trust Region Policy Optimization)算法的继承与简化,大大降低了实现难度。

2023-09-05 21:29:32 284

原创 PyTorch中特殊函数梯度的计算

PyTorch中特殊函数梯度的计算

2023-09-05 13:18:26 710

原创 重要性采样

重要性采样个人笔记

2023-09-05 11:43:45 586

原创 A2C算法

A2C算法

2023-09-04 15:21:39 396

原创 VPG算法

VPG算法伪代码,对比REINFORCE算法

2023-09-03 19:06:02 514

原创 Windows系统下MMDeploy预编译包的使用

MMDeploy步入v1版本后安装/使用难度大幅下降,这里以部署MMDetection项目的Faster R-CNN模型为例,将PyTorch模型转换为ONNX进而转换为Engine模型,部署到TensorRT后端,实现高效推理,主要参考了。每调用一次就会加载一次模型,效率很低,只是用来测试模型可用性,不能用在生产环境。要高效使用模型,可以集成Detector到自己的应用程序里面,一次加载,多次推理。

2023-08-30 18:42:30 1267 1

原创 使用vars函数捕获对象属性值

内置vars函数用法,捕获对象属性值/作用域局部变量值

2023-08-29 00:13:58 189

原创 nonlocal关键字声明

nonlocal关键字声明与闭包的应用

2023-08-27 13:13:08 283

原创 策略梯度方法

西湖大学赵世钰老师强化学习数学原理简略笔记---策略梯度部分

2023-08-18 22:08:37 337

原创 LaTeX公式的文本堆叠

LATE​X公式文本上下堆叠,公式注释,在箭头上下添加说明文字

2023-07-22 00:14:49 649

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除