强化学习的一些概念
目录
强化学习
打个比方
核心要素
State
Action
Reward
几个代码demo
学习目标
强化学习
强化学习(Reinforcement Learning, RL)是机器学习的一个分支,旨在让智能体(Agent)通过与环境的交互学习最优策略,以最大化长期累积奖励。其核心思想是 “试错 - 反馈”,智能体在环境中通过不断尝试动作,根据环境反馈的奖励调整行为,最终学会在不同状态下选择最优动作。
打个比方
强化学习的「自主生存法则」:像玩游戏一样学本领
想象你养了个智能体(比如扫地机器人),把它扔进环境(你家客厅),然后告诉它:「自己想办法把地扫干净,扫得好有奖励,撞桌子就扣钱!」 这就是强化学习的核心 ——让智能体在「试错 - 反馈」中自己摸出一套生存策略。
对比人类小孩学走路:
没人教婴儿「先迈左脚还是右脚」(无监督)
摔疼了自己哭(负面反馈),站稳了家人笑(正面反馈)
最终形成「平衡感 + 迈步节奏」的肌肉记忆(策略)
强化学习的智能体,就是这样一个「会哭会笑的电子小孩」。
智能体的「三件套」:眼睛(状态)、手脚(动作)、奖惩(反馈)
以扫地机器人为例拆解:
状态(眼睛看到的世界)
实时感知:前方有没有桌子(激光雷达数据)、哪里灰尘多(摄像头识别)、电量剩多少(传感器)
大白话:「现在在客厅茶几旁,左边有灰尘,右边是沙发,电量 80%」
动作(手脚的选择)
可选操作:前进、左转、右转、吸尘、回充
大白话:「是先吸茶几底下,还是绕到沙发后面?」
奖励(好坏的裁判)
正向:每吸 1㎡灰尘 + 1 分,按时回充 + 5 分
负向:撞桌子 - 3 分,没电关机 - 10 分
大白话:「吸尘是赚钱,撞桌是罚款,没电最亏!」
自主学习的「闭环逻辑」:从乱撞到老司机
智能体的学习过程像玩「无限循环的闯关游戏」:
第一阶段:乱撞期(探索)
机器人:「反正没电就关机,先乱开试试!」(随机选动作)
结果:撞墙 3 次,偶然吸到灰尘(获得零星奖励)
第二阶段:摸规律(试错中总结)
发现:「电量低于 20% 回充,能避免关机扣分」
记住:「看到灰尘多的区域,先吸尘再移动更划算」
第三阶段:老司机(策略成型)
最优策略:「优先清扫高灰尘区→电量 30% 时规划回充路径→避开家具密集区」
结果:从「乱撞扣分」变成「稳定高分」,甚至比人类指挥的效率还高
为什么说「自动驾驶是强化学习的终极考场」?
对比扫地机器人,自动驾驶的「环境复杂度」暴增:
状态:不仅是车身传感器,还要预测其他车辆、行人的行为(比如外卖电动车突然变道)
动作:刹车力度、转向角度、变道时机,精度要求到厘米级
奖励:安全到达 + 100 分,急刹乘客难受 - 20 分,违章 - 50 分,碰撞 - 1000 分(直接「Game Over」)
难点:需要在 0.1 秒内完成「感知状态→计算最优动作→执行」的循环,还要适应雨天、夜间等极端场景
这就是为什么特斯拉、Waymo 等公司疯狂投入强化学习 ——只有让汽车自己在虚拟世界「撞坏」100 万次,才能在现实中「零事故」。
一句话总结强化学习:
「给智能体一个‘好坏’的标准(奖励),让它在环境里自己‘摸爬滚打’,最终学会「既能占便宜,又能避坑」的生存之道。」
(就像父母教孩子:「自己出去玩,别碰火(负反馈),帮妈妈拿东西有糖吃(正反馈)」,孩子最终学会独立生存。)
核心要素
智能体与环境:智能体是决策主体(如机器人、游戏角色),环境是智能体行动的空间。两者通过 “状态 - 动作 - 奖励” 循环交互
State
状态(State):环境当前的观测信息,如机器人的位置、游戏画面等
Action
动作(Action):智能体在当前状态下的选择,如移动、跳跃
1. 动作的本质与分类
动作是智能体与环境交互的直接载体,其设计决定了智能体的行为能力。根据动作的特性,可分为以下两类:
离散动作空间:动作数量有限且可数,如机器人的移动方向(上 / 下 / 左 / 右)、游戏中的按键操作等。
连续动作空间:动作取值为连续区间,如自动驾驶中的油门深度(0-100%)、机械臂的关节角度等。
关键挑战:
离散动作空间需枚举所有可能动作,适合规则明确的场景;
连续动作空间需通过策略网络输出概率分布或直接生成动作(如 DDPG 中的正态分布采样)。
2. 动作空间的设计原则
完整性:动作集合需覆盖所有可能的有效行为,避免遗漏关键操作。
正交性:动作间应相互独立,减少冗余(如同时存在 “加速” 和 “前进” 可能导致策略混淆)。
可扩展性:允许动态调整动作空间(如在训练中逐步解锁新动作)。
3. 数学表达
离散动作:用独热编码(One-Hot Encoding)表示,如 4 个方向的动作可表示为 [0,0,0,1](右)。
连续动作:常用均值 - 方差模型(如正态分布)或直接通过神经网络输出动作值,如:a∼N(μ(s∣θ),σ2(s∣θ))
其中,μ和σ由策略网络参数θ生成。
4. 典型应用场景
离散动作:Atari 游戏(跳跃、开火)、围棋落子(19x19 位置)。
连续动作:机器人控制(关节扭矩)、飞行器姿态调整(俯仰角、滚转角)。
Reward
奖励(Reward):环境对动作的反馈,正数表示鼓励,负数表示惩罚
1. 奖励的核心作用
奖励是环境对智能体行为的即时反馈信号,是驱动学习的核心动力。其作用包括:
行为引导:通过正负反馈塑造智能体策略(如奖励 “直行”,惩罚 “碰撞”)。
目标对齐:将抽象目标转化为可量化的数值(如 “到达终点” 对应 + 100 奖励)。
2. 奖励设计的关键原则
明确性:奖励需直接反映动作对目标的贡献(如 “进球” 奖励远大于 “传球”)。
稀疏性与密度平衡:稀疏奖励(如仅在成功时给予奖励)可能导致学习缓慢;
密集奖励(如每步给予小奖励)可能引入噪声,需谨慎设计。
延迟奖励处理:通过折扣因子\(\gamma\)(0≤γ≤1)将未来奖励折算为现值:\(G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \dots\)
3. 奖励塑形(Reward Shaping)
通过人工设计辅助奖励加速学习:
中间目标奖励:在路径规划中,每接近目标点一步给予小额奖励。
内在动机奖励:探索未知区域时给予奖励,解决 “探索 - 利用” 困境。
惩罚设计:对危险行为(如车辆闯红灯)施加大额负奖励。
4. 数学公式与算法关联
Q-learning:目标 Q 值为\(r + \gamma \max_a Q(s', a)\),奖励直接影响更新方向。
策略梯度:用累积奖励\(R(\tau)\)作为权重更新策略网络:\(\nabla \theta \propto \sum_{t=1}^T R(\tau) \nabla \log \pi(a_t|s_t; \theta)\)
5. 典型应用场景
游戏:击败敌人 + 5 分,死亡 - 10 分。
机器人:保持平衡每帧 + 1 分,摔倒 - 50 分。
金融:盈利 + 1% 奖励,亏损 - 0.5% 惩罚。
几个代码demo
离散动作空间示例:简单的网格世界
import numpy as np# 定义网格世界的大小
GRID_SIZE = 4
# 定义动作:上、下、左、右
ACTIONS = [(-1, 0), (1, 0), (0, -1), (0, 1)]
# 定义折扣因子
GAMMA = 0.9
# 定义学习率
ALPHA = 0.1
# 定义迭代次数
EPISODES = 1000# 初始化 Q 表
q_table = np.zeros((GRID_SIZE * GRID_SIZE, len(ACTIONS)))# 定义状态转换函数
def get_state(x, y):return x * GRID_SIZE + y# 定义奖励函数
def get_reward(x, y):if x == GRID_SIZE - 1 and y == GRID_SIZE - 1:return 100 # 到达目标点给予奖励elif x < 0 or x >= GRID_SIZE or y < 0 or y >= GRID_SIZE:return -10 # 越界给予惩罚else:return -1 # 每走一步给予小惩罚# Q - learning 算法
for episode in range(EPISODES):# 初始化状态
x, y = 0, 0
done = Falsewhile not done:
state = get_state(x, y)# 选择动作(epsilon - greedy 策略)
epsilon = 0.1if np.random.uniform(0, 1) < epsilon:
action_idx = np.random.choice(len(ACTIONS))else:
action_idx = np.argmax(q_table[state])
action = ACTIONS[action_idx]# 执行动作
new_x = x + action[0]
new_y = y + action[1]
new_state = get_state(new_x, new_y)# 获取奖励
reward = get_reward(new_x, new_y)# 更新 Q 表
q_table[state, action_idx] = (1 - ALPHA) * q_table[state, action_idx] + ALPHA * (
reward + GAMMA * np.max(q_table[new_state]))# 判断是否到达目标if reward == 100:
done = True
x, y = new_x, new_y# 打印最终的 Q 表
print("Final Q - table:")
print(q_table)
实现了一个简单的网格世界,智能体需要从左上角走到右下角。动作空间是离散的(上、下、左、右),通过 Q - learning 算法学习最优策略,有点类似于动态规划的策略要求引导
连续动作空间示例:简单的一维移动问题(使用 DDPG 简化版)
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np# 定义状态维度和动作维度
STATE_DIM = 1
ACTION_DIM = 1
# 定义折扣因子
GAMMA = 0.9
# 定义迭代次数
EPISODES = 1000# 定义策略网络
class PolicyNetwork(nn.Module):def __init__(self):super(PolicyNetwork, self).__init__()
self.fc1 = nn.Linear(STATE_DIM, 16)
self.fc2 = nn.Linear(16, ACTION_DIM)def forward(self, state):
x = torch.relu(self.fc1(state))
action = torch.tanh(self.fc2(x)) # 动作范围在 [-1, 1]return action# 初始化策略网络
policy_network = PolicyNetwork()
optimizer = optim.Adam(policy_network.parameters(), lr=0.001)# 定义奖励函数
def get_reward(state, action):
target_state = 5.0
new_state = state + action.item()
reward = -np.abs(new_state - target_state)return reward# 训练过程
for episode in range(EPISODES):
state = torch.tensor([0.0], dtype=torch.float32)
done = Falsewhile not done:
action = policy_network(state)
reward = get_reward(state, action)# 简单的策略梯度更新
loss = -reward * action
optimizer.zero_grad()
loss.backward()
optimizer.step()# 更新状态
state = torch.tensor([state.item() + action.item()], dtype=torch.float32)if np.abs(state.item() - 5.0) < 0.1:
done = True# 打印最终的策略网络参数
print("Final policy network parameters:")
for name, param in policy_network.named_parameters():print(name, param.data)
实现了一个简单的一维移动问题,智能体需要从位置 0 移动到位置 5。动作空间是连续的,通过一个简单的策略网络学习最优动作。
奖励塑形示例:在网格世界中添加中间目标奖励
import numpy as np# 定义网格世界的大小
GRID_SIZE = 4
# 定义动作:上、下、左、右
ACTIONS = [(-1, 0), (1, 0), (0, -1), (0, 1)]
# 定义折扣因子
GAMMA = 0.9
# 定义学习率
ALPHA = 0.1
# 定义迭代次数
EPISODES = 1000# 初始化 Q 表
q_table = np.zeros((GRID_SIZE * GRID_SIZE, len(ACTIONS)))# 定义状态转换函数
def get_state(x, y):return x * GRID_SIZE + y# 定义奖励函数(包含中间目标奖励)
def get_reward(x, y):if x == GRID_SIZE - 1 and y == GRID_SIZE - 1:return 100 # 到达目标点给予奖励elif x < 0 or x >= GRID_SIZE or y < 0 or y >= GRID_SIZE:return -10 # 越界给予惩罚elif x > 0 and y > 0:return 1 # 中间目标奖励else:return -1 # 每走一步给予小惩罚# Q - learning 算法
for episode in range(EPISODES):# 初始化状态
x, y = 0, 0
done = Falsewhile not done:
state = get_state(x, y)# 选择动作(epsilon - greedy 策略)
epsilon = 0.1if np.random.uniform(0, 1) < epsilon:
action_idx = np.random.choice(len(ACTIONS))else:
action_idx = np.argmax(q_table[state])
action = ACTIONS[action_idx]# 执行动作
new_x = x + action[0]
new_y = y + action[1]
new_state = get_state(new_x, new_y)# 获取奖励
reward = get_reward(new_x, new_y)# 更新 Q 表
q_table[state, action_idx] = (1 - ALPHA) * q_table[state, action_idx] + ALPHA * (
reward + GAMMA * np.max(q_table[new_state]))# 判断是否到达目标if reward == 100:
done = True
x, y = new_x, new_y# 打印最终的 Q 表
print("Final Q - table with reward shaping:")
print(q_table)
在之前的网格世界基础上添加了中间目标奖励,当智能体到达网格的右上角区域时会给予小额奖励,以此加速学习过程。ps:像蓝桥里面的有条件的DFS、BFS+动态规划的算法题目。
学习目标
智能体的目标是找到最优策略(Policy),即从状态到动作的映射,使得长期累积奖励最大化。例如,自动驾驶汽车需学会在不同路况下选择加速、刹车或转向,以安全高效到达目的地。
关键方法
基于价值(Value-Based)Q-learning:通过 Q 表或 Q 网络评估动作价值,选择当前状态下 Q 值最大的动作。
DQN:结合深度神经网络处理连续状态,如 Atari 游戏中直接输入像素画面
基于策略(Policy-Based)策略梯度(Policy Gradient):直接学习策略函数,通过梯度上升优化动作概率,如 REINFORCE 算法
PPO(近端策略优化):通过重要性采样和约束机制,平衡策略更新幅度,提高稳定性
结合价值与策略(Actor-Critic)A3C:异步优势 Actor-Critic,利用多线程并行探索环境,加速学习
DDPG:处理连续动作空间,结合确定性策略和目标网络技术
核心挑战
探索与利用(Exploration vs Exploitation):智能体需在已知高奖励动作和未知动作间权衡,常用 ε-greedy 或噪声策略。
延迟奖励:当前动作的影响可能在未来才显现,需通过折扣因子(γ)将未来奖励折算为现值
样本效率:强化学习依赖与环境的实时交互,数据生成成本高,经验回放(Replay Buffer)等技术可重复利用历史数据
应用领域
游戏与博弈:AlphaGo 击败人类棋手、OpenAI Five 在 DOTA 2 中夺冠
机器人控制:四足机器人行走、机械臂操作
自动驾驶:决策规划模块
资源管理:数据中心调度、能源分配
相关文章:
强化学习的一些概念
目录 强化学习 打个比方 核心要素 State Action Reward 几个代码demo 学习目标 强化学习 强化学习(Reinforcement Learning, RL)是机器学习的一个分支,旨在让智能体(Agent)通过与环境的交互学习最优策略,以…...
花生好车:重构汽车新零售生态的破局者
在传统汽车零售行业面临消费升级与渠道变革的双重压力下,花生好车以颠覆性的商业模式在短短九年内崛起为行业独角兽。这家成立于2015年的汽车新零售平台,通过重构供应链体系、创新融资租赁模式、深耕下沉市场三大战略维度,正在重塑中国汽车消…...
K8S下nodelocaldns crash问题导致域名请求响应缓慢
前言 最近做项目,有业务出现偶发的部署导致响应很慢的情况,据了解,业务使用域名访问,相同的nginx代理,唯一的区别就是K8S重新部署了。那么问题大概率出现在容器平台,毕竟业务是重启几次正常,偶…...
实现悬浮按钮拖动,兼容h5和微信小程序
h5用js写,微信小程序用 代码里面没有完全实现吸附边缘的功能,需要吸附边缘的话还得自己再完善下(h5的吸附边缘是可以的,小程序的还有点问题) 主要功能是:图片上写文字的悬浮按钮,文字使用的是…...
SLC跨头协作机制
SLC跨头协作机制 SLC(Self-attention with Local Communication,或类似跨头协作机制)在Transformer架构中通过以下逻辑帮助注意力头优化分布: 1. 多头注意力的「独立-协作」平衡 传统多头注意力中,每个头独立计算注意力(如Query/Key/Value的线性变换),捕捉不同语义模…...
全国医院数据可视化分析系统
【大数据】全国医院数据可视化分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 🏥 项目名:医疗导航神器!——《基于大数据的微医挂号网医院数据可视…...
Flash Attention原理讲解
目录 前言0. 简述1. self-attention2. roofline model3. 矩阵分块4. softmax分块5. FlashAttention结语参考 前言 看了几个视频和几篇文章学习了下 Flash Attention,记录下个人学习笔记,仅供自己参考😄 refer1:Flash Attention 为…...
python二级复习(1)
临近计算机二级考试了,开始python的复习 python语言基础: 1.用缩进表示代码块:一般用四个空格或者一个tab 2.代码的注释方法: 单行注释用“#”表示注释开始;多行注释是用三个英文的单引号“‘’”或双引号““”"”作为注释的开始和结束符号。 03. 标识符命…...
基于cat1的贵重物品的状态和位置小型监控系统特色解析
一 项目需求 团队研发出来一款搭载多传感器的无线cat1定位和状态监控的设备。该设备主要面对的贵重物品运输过程中的状态监控,比如,是否被打开过,有没有激烈碰撞,位置信息等。主要应用场景是医疗,安防等贵重物品的状态…...
Python 魔法方法介绍
在 Python 中,魔法方法(Magic Methods)是一类特殊的内置方法,它们通常以双下划线开头和结尾(例如 __init__、__str__、__add__ 等)。这些方法通常用于实现特定的语法或操作符行为,或者用于定义对象的行为。它们是 Python 面向对象编程中的一个重要特性,可以让类的行为更…...
golang time包和日期函数
1.简介 在程序中日期和时间是我们经常会用到的,在go中time包提供了时间的显示和测量函数。 2.获取当前时间 通过time.Now()函数获取当前时间对象,然后获取时间对象的年月日时分秒等值。 now : time.Now()fmt.Printf("now%v type%T\n", now…...
第7章 站在对象模型的尖端2: 异常处理
1.异常处理(Exception Handling) C的异常处理由三个主要组成部分构成:throw表达式、catch子句和try块。当异常被抛出时,程序控制权会转移,并且会沿着调用堆栈回溯,直到找到匹配的catch子句。在此过程中,局部对象的析构…...
不同路径——2
给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。 网格中的障碍物和空位置分别用 1 和 0 来表示。机器人的…...
电子招采软件系统,如何实现10年可追溯审计
一、在当前经济环境下,中小企业面临着巨大的生存压力,传统产业的数字化转型迫在眉睫。AI技术为企业的低成本高效发展提供了新机会,混合办公成为新常态,数据安全法的深入落实则进一步推动企业重视数据安全。区块链存证技术凭借独特…...
TS常见内置映射类型的实现及应用场景
以下是 TypeScript 在前端项目中 常用的映射类型(Mapped Types),结合具体场景和代码示例,帮助开发者高效处理复杂类型: 一、基础映射类型 1. Partial<T> 作用:将对象类型 T 的所有属性变为可选。 实…...
本地部署Deep Seek-R1,搭建个人知识库——笔记
目录 一、本地部署 DeepSeek - R1 1:安装Ollama 2:部署DeepSeek - R1模型 3:安装Cherry Studio 二、构建私有知识库 一、本地部署 DeepSeek - R1 1:安装Ollama 1.打开Ollama下载安装 未科学上网,I 先打开迅雷再下…...
东芝2323AMW复印机安装纸盒单元后如何添加配件选项
如何添加请看下面图示: 找到设备和打印机里找到打印机图标,右键打印机属性,找到配置,添加相应配置功能;打印机属性,加上双面或者2纸盒配件选项; Word打印时,打印机名称,后…...
EasyExcel动态拆分非固定列Excel表格
使用EasyExcel动态拆分非固定列Excel表格 在Excel数据解析场景中,动态列结构拆分是典型挑战(如供应链系统中不同品类的属性字段差异较大)。传统基于POJO映射的方案无法应对列数量不固定的场景。本方案采用EasyExcel的动态模型解析和Map数据…...
开源WAF雷池本地化部署与远程查看网站安全防护的详细操作指南
文章目录 前言1.关于SafeLine2.安装Docker3.本地部署SafeLine4.使用SafeLine5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 各位建站小能手们,无论是想搭建个人博客、企业官网还是各种应用平台来推广自己的内容或产品,…...
由一个话题进入DFMEA(设计失效模式及影响分析)
前言 最近看到了知乎的一个话题“为啥撞车后总是看到雨刮器在摆动?”,联想到产品设计中的一些功能安全设计,也借此机会学习DFMEA,讨论一下我个人对于DFMEA的理解。 有纰漏请指出,转载请说明。 学习交流请发邮件 128…...
Redisson 实现分布式锁源码浅析
大家好,我是此林。 今天来分享Redisson分布式锁源码。还是一样,我们用 问题驱动 的方式展开讲述。 1. redis 中如何使用 lua 脚本? Redis内置了lua解释器,lua脚本有两个好处: 1. 减少多次Redis命令的网络传输开销。…...
机试准备第17天
今天进入图论的学习。图论只考察初试学过的算法,一般都是模版题。常见考点有图相关的数据结构——邻接表法,图的遍历 BFS DFS 并查集,单源最短路径迪杰斯特拉。图由顶点和边构成,度用来说明该顶点邻接边的数量情况。权值说明了边的…...
ABAP语言的动态编程(4) - 综合案例:管理费用明细表
本篇来实现一个综合案例:管理费用明细表。报表在实际项目中,也有一定的参考意义,一方面展示类似的报表,比如管理费用、研发费用等费用的明细,使用业务比较习惯的展示格式;另一方面正好综合运用前面学习的动…...
不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析
题目A:日期统计 思路分析: 本题的题目比较繁琐,我们采用暴力加DFS剪枝的方式去做,我们在DFS中按照8位日期的每一个位的要求进行初步剪枝找出所有的八位子串,但是还是会存在19月的情况,为此还需要在CHECK函数…...
R语言零基础系列教程-01-R语言初识与学习路线
代码、讲义、软件回复【R语言01】获取。 R语言初识 R是一个开放的统计编程环境,是一门用于统计计算和作图的语言。“一切皆是对象”,数据、函数、运算符、环境等等都是对象。易学,代码像伪代码一样简洁,可读性高强大的统计和可视…...
即时通讯平台测试报告
1.项目概述 项目名称:即时通讯平台 版本号:V1.0.0 测试周期:2025年2月25日--2025年3月15日 测试目标:验证核心功能(登录、注册、消息收发、用户管理、群组功能等)的稳定性和性能指标。 2. 测试范围 功…...
蓝桥杯单片机内存爆了怎么办
蓝桥杯单片机内存爆了怎么办 文章目录 蓝桥杯单片机内存爆了怎么办一、参考文章二、内存区3、keil中的体现4、分配原则5、使用示例 一、参考文章 文章1 文章2 文章3 文章4 二、内存区 1 KB(千字节) 1024 B(字节) B代表Byte,1Byte8bit,一个字节8位 …...
一周热点:微软攻克语音输入、文本输出难题-Phi-4-multimodal
微软Phi-4-multimodal模型是人工智能领域的一个重要进展,它标志着微软在多模态人工智能技术上的突破。以下是对该模型的详细解释: 模型概述 微软Phi-4-multimodal是一个能够同时处理文本、图像和语音的多模态大型语言模型。它通过创新的架构和训练方法,实现了在不同模态之间…...
量化交易学习笔记02:双均线策略
双均线策略示例 个股:中国平安 回测日期:2022-5-1至2023-5-1 短均线:5天 长无线:10天 代码: def initialize(context):# 初始化此策略# 设置我们要操作的股票池, 这里我们只操作一支股票# """标的&qu…...
【WRF-Urban】使用 CGLC-MODIS-LCZ_100m 数据集运行 WRF 时的城市参数化问题
在 WRF 中,LCZ 通过 URBPARM_LCZ.TBL 进行配置,但如果 FRC_URB2D 变量缺失,WRF 会回退到默认的 URBPARM.TBL。 主要问题概述 WRF-Model-cglc-modis-lcz_100m dataset " WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL USING DEFAULT URBAN MORPHOLOGY&q…...
Selenium 自动化测试学习总结
大概了解一下即可,现在主要用的自动化工具是 playWright,它可以录制操作。 selenium是老款自动化测试工具,仍有很多可取之处。 安装: pip install selenium即可。然后下载浏览器的驱动包,注意不是浏览器!…...
开源通义万相本地部署方案,文生视频、图生视频、视频生成大模型,支持消费级显卡!
开源通义万相本地部署方案,文生视频、图生视频、视频生成大模型,支持消费级显卡! 万相2.1开源 近日,大模型万相2.1(Wan)重磅开源,此次开源采用Apache2.0协议,14B和1.3B两个参数规格…...
Suno的对手Luno:AI音乐开发「上传参考音频 - 方式一:通过二进制流的方式」 —— 「Luno Api系列|AI音乐API」第11篇
导读 今天来看下Luno Api的上传参考音频 - 方式一:通过二进制流的方式。 参考文件,主要是用于在创作的过程中,希望AI参考这个音乐的曲风和声音来进行创作,那么可以通过上传参考音乐来进行实现。 申请和使用 「已经有API的&…...
微信小程序刷题逻辑实现:技术揭秘与实践分享
页面展示: 概述 在当今数字化学习的浪潮中,微信小程序以其便捷性和实用性,成为了众多学习者刷题备考的得力工具。今天,我们就来深入剖析一个微信小程序刷题功能的实现逻辑,从代码层面揭开其神秘面纱。 小程序界面布局…...
巴耶赫利专业俄语外贸网站建设
巴耶赫利是专业俄语外贸网站建设与俄语搜索引擎Yandex SEO优化服务商。巴耶赫利致力于帮助中国品牌出海俄罗斯,打开俄罗斯市场,提升品牌在俄罗斯的知名度和美誉度。 以下是对巴耶赫利相关服务的详细介绍: 一、巴耶赫利专业俄语外贸网站建设…...
每日Attention学习25——Multi-Scale Attention Fusion
模块出处 [TCSVT 24] [link] [code] DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation 模块名称 Multi-Scale Attention Fusion (MSAF) 模块作用 双级特征融合 模块结构 模块思想 MSAF的主要思想是让网络根据损失学习特征权重,允许模型…...
前端学习记录:解决路由缓存问题
问题描述:响应路由参数的变化,使用带有参数的路由时需要注意的是,当用户从 /users/johnoy 导航到 /users/jolyne 时,相同的组件实例将会被重复使用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得…...
VSTO(C#)Excel开发10:启动和卸载顺序 事件处理 监视变化
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
代码随想录Day16
Day16 二叉树part06 LeetCode 530.二叉搜索树的最小绝对差 题目描述 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 输入:root [4,2,6,1,3] 输出&…...
第15章:ConvNeXt图像分类实战:遥感场景分类【包含本地网页部署、迁移学习】
目录 1. ConvNeXt 模型 2. 遥感场景建筑识别 2.1 数据集 2.2 训练参数 2.3 训练结果 2.4 本地部署推理 3. 下载 1. ConvNeXt 模型 ConvNeXt是一种基于卷积神经网络(CNN)的现代架构,由Facebook AI Research (FAIR) 团队在2022年提出。…...
LinuX---Shell脚本创建和执行
概述: 它是一个命令行解释器,接收应用程序/用户命令,然后调用操作系统内核。 Shell还是一个功能强大的编程语言,易编写、易调试、灵活性强。 Linux提供的Shell解析器有 atguiguubuntu:~$ cat /etc/shells # /etc/shells: valid …...
django+vue3实现前后端大文件分片下载
效果: 大文件分片下载支持的功能: 展示目标文件信息提高下载速度:通过并发请求多个块,可以更有效地利用网络带宽断点续传:支持暂停后从已下载部分继续,无需重新开始错误恢复:单个块下载失败只…...
KY-038 声音传感器如何工作以及如何将其与 ESP32 连接
想为您的项目赋予声音感!然后跟着做,因为在这个项目中,我们将连接一个声音传感器,用它构建一些有趣的项目。我们使用的 KY-038 声音传感器使用电容式麦克风来检测声波,这为我们提供了稳定性和可靠性的完美平衡。因此,在本文中,我们决定将 KY-038 传感器与 ESP32 连接,并…...
深入剖析二分查找的延伸:在排序数组中查找元素的第一个和最后一个位置
深入剖析二分查找的延伸:在排序数组中查找元素的第一个和最后一个位置 引言 二分查找,作为算法界的“常青树”,以其高效性和简洁性备受青睐。然而,许多初学者仅限于使用它查找单个元素,而对其进阶应用知之甚少。今天…...
UE5中 Character、PlayerController、PlayerState、GameMode和GameState核心类之间的联动和分工·
1. GameMode 与 GameState 关系描述 GameMode:定义游戏规则和逻辑,控制游戏的开始、进行和结束。GameState:存储和同步全局游戏状态,如得分、时间、胜利条件等。 联动方式 GameMode初始化GameState:GameMode在游戏…...
使用Python获取并操作1688自定义API接口
在电子商务领域,1688作为国内领先的B2B平台,提供了丰富的API接口,允许开发者获取商品信息、店铺信息等。其中,custom接口允许开发者进行自定义操作,获取特定的数据。本文将详细介绍如何使用Python调用1688的custom接口…...
【AI】现代人工智能技术的应用与发展
引言 人工智能(AI)已经深入到我们生活的各个方面,涉及医疗、教育、交通、金融等众多领域。随着技术的不断发展,AI的应用和潜力也变得愈加广泛。本文将详细介绍人工智能的应用领域,探讨未来的发展趋势,并通…...
小程序渲染之谜:如何解决“加载中...”不消失的 Bug(glass-easel)
🎉 小程序渲染之谜:如何解决“加载中…”不消失的 Bug 🎉 引言 在小程序开发中,渲染问题总能让人抓狂。😫 这次,我遇到了一个奇怪的 bug:产品详情页的内容已经正常显示,但页面却一…...
C语言结构体全面解析 | 从入门到精通
📚 C语言结构体全面解析 | 从入门到精通 整理:算法练习生| 转载请注明出处 📑 目录 结构体的定义与使用结构体变量的参数传递结构体数组结构体指针typedef关键字结构体初始化 1️⃣ 结构体的定义与使用 为什么需要结构体? 当…...
Trae与Builder模式初体验
说明 下载的国际版:https://www.trae.ai/ 建议 要选新模型 效果 还是挺不错的,遇到问题反馈一下,AI就帮忙解决了,真是动动嘴(打打字就行了),做些小的原型效果或演示Demo很方便呀ÿ…...