计算图(Computation Graph)
在强化学习中,TensorFlow的计算图(Computation Graph)是用于描述模型结构和训练流程的核心机制。
1. 计算图的基本概念
- 定义:计算图是TensorFlow中表示数学运算和数据流动的有向图。图中的节点(Nodes)代表数学操作(如加法、矩阵乘法),边(Edges)代表在这些操作之间传递的张量(多维数组)。
- 特点:
- 静态图(TensorFlow 1.x):需先定义完整计算流程,再执行。
- 动态图(TensorFlow 2.x Eager Execution):即时执行,更灵活,但可通过
tf.function
转换为静态图以优化性能。
2. 强化学习中的计算图应用
在强化学习中,计算图主要用于构建和训练以下关键组件:
2.1 策略网络或价值网络
-
模型定义:通过计算图定义神经网络结构,例如:
- 策略网络(Policy Network):输入状态,输出动作概率分布。
- 价值网络(Value Network):输入状态(或状态-动作对),输出预期累积奖励(如Q值)。
import tensorflow as tf # 定义策略网络(示例) model = tf.keras.Sequential([tf.keras.layers.Dense(128, activation='relu', input_shape=(state_dim,)),tf.keras.layers.Dense(action_dim, activation='softmax') ])
2.2 前向传播
- 输入状态数据,通过计算图得到预测动作或价值:
state = tf.constant([observation]) # 输入状态 action_probs = model(state) # 前向计算动作概率
2.3 损失函数计算
- 根据强化学习算法(如DQN、PPO)设计损失函数:
- DQN的时序差分误差:
q_values = model(states) q_target = rewards + gamma * tf.reduce_max(target_model(next_states), axis=1) loss = tf.reduce_mean(tf.square(q_values - q_target))
- 策略梯度方法:损失函数通常与策略的预期回报相关。
- DQN的时序差分误差:
2.4 反向传播与优化
- 自动微分与参数更新:
optimizer = tf.keras.optimizers.Adam(learning_rate=1e-3) with tf.GradientTape() as tape:loss = compute_loss(states, actions, rewards) gradients = tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(gradients, model.trainable_variables))
3. 计算图的优势
- 高效并行计算:计算图允许TensorFlow优化操作顺序和资源分配。
- 自动微分:自动计算梯度,简化反向传播。
- 部署优化:支持导出为静态图,适用于移动端、嵌入式设备等。
- 分布式训练:计算图可拆分到多个设备(如GPU、TPU)并行执行。
4. 强化学习中的特殊场景
4.1 经验回放(Experience Replay)
- 使用
tf.data.Dataset
或缓冲区管理交互数据,计算图高效处理批量数据。dataset = tf.data.Dataset.from_tensor_slices((states, actions, rewards)) dataset = dataset.shuffle(buffer_size=10000).batch(32)
4.2 目标网络(Target Network)
- 在DQN中,通过计算图复制主网络参数到目标网络:
# 定义主网络和目标网络 main_model = build_model() target_model = build_model() target_model.set_weights(main_model.get_weights())# 定期更新目标网络(计算图内操作) tau = 0.01 for main_var, target_var in zip(main_model.variables, target_model.variables):target_var.assign(tau * main_var + (1 - tau) * target_var)
5. TensorFlow 1.x vs 2.x 的差异
-
TensorFlow 1.x:需显式创建
tf.Session
,使用placeholder
定义输入。# TensorFlow 1.x 风格 x = tf.placeholder(tf.float32, shape=[None, state_dim]) y = tf.layers.dense(x, 64, activation=tf.nn.relu) with tf.Session() as sess:sess.run(tf.global_variables_initializer())output = sess.run(y, feed_dict={x: states})
-
TensorFlow 2.x:默认动态图,代码更简洁,兼容Keras API:
model = tf.keras.Sequential([...]) model.compile(optimizer='adam', loss='mse') model.fit(states, targets, batch_size=32)
@tf.function
是 TensorFlow 2.x 中一个关键装饰器,用于将 Python 函数转换为高性能的 TensorFlow 计算图。它的核心目标是结合动态图(Eager Execution)的灵活性和静态图的计算效率。以下是详细解释:
1. 基本作用
- 动态图转静态图:将 Python 函数中的 TensorFlow 操作编译为静态计算图,避免逐行解释执行的开销。
- 性能优化:加速代码执行(尤其是循环、复杂控制流或批量计算),减少 Python 与底层 C++ 之间的交互成本。
- 跨平台部署:生成的计算图可导出为 SavedModel,方便部署到移动端、服务器或浏览器(如 TensorFlow.js)。
import tensorflow as tf# 使用 @tf.function 装饰器
@tf.function
def my_function(x):return tf.square(x) + 1x = tf.constant(3.0)
print(my_function(x)) # 输出: tf.Tensor(10.0, shape=(), dtype=float32)
2. 工作原理
2.1 追踪(Tracing)
- 首次调用:TensorFlow 会“追踪”函数内的操作,根据输入张量的形状和类型生成一个计算图(
ConcreteFunction
)。 - 后续调用:若输入张量的形状/类型与之前一致,直接复用计算图;若不一致,生成新的计算图(可能导致多图缓存)。
2.2 AutoGraph
- 自动转换控制流:将 Python 的
if
、for
、while
等语句转换为等效的 TensorFlow 图操作(如tf.cond
、tf.while_loop
)。@tf.function def my_loop(x):for i in tf.range(5): # 必须用 tf.range 而非 Python 的 rangex += ireturn x
3. 关键特性
3.1 输入签名控制
- 通过
input_signature
参数指定输入类型和形状,限制函数接受的输入格式,避免因输入变化生成过多计算图。@tf.function(input_signature=[tf.TensorSpec(shape=[None], dtype=tf.float32)]) def process_vector(v):return tf.reduce_sum(v)
3.2 控制依赖
- 在图模式下,需显式使用
tf.control_dependencies
确保操作顺序:@tf.function def my_func():counter = tf.Variable(0)with tf.control_dependencies([counter.assign_add(1)]):return tf.constant(1)
3.3 变量管理
- 函数内创建的变量会被缓存,避免重复初始化:
@tf.function def create_variable():v = tf.Variable(1.0) # 仅在第一次调用时创建return v
4. 使用场景
4.1 训练循环加速
- 装饰训练步骤函数(如
train_step
),减少每次迭代的开销:@tf.function def train_step(inputs, labels):with tf.GradientTape() as tape:predictions = model(inputs)loss = loss_fn(labels, predictions)gradients = tape.gradient(loss, model.trainable_variables)optimizer.apply_gradients(zip(gradients, model.trainable_variables))return loss
4.2 复杂计算逻辑
- 包含大量 TensorFlow 操作或循环的函数(如自定义损失函数、环境模拟)。
4.3 模型导出
- 将函数转换为计算图后,可导出为
SavedModel
格式,便于部署。
5. 注意事项
5.1 避免 Python 原生操作
- 推荐使用 TensorFlow 操作:若函数中包含大量非 TensorFlow 的 Python 逻辑(如
print
、原生if
),可能导致:- 性能下降:触发 AutoGraph 的隐式追踪。
- 功能错误:某些操作无法转换为图模式(如动态修改列表长度)。
- 替代方案:用
tf.print
替代print
,用tf.cond
或tf.while_loop
替代原生控制流。
5.2 函数副作用(Side Effects)
- 图模式下,函数中的副作用(如修改全局变量)可能不会按预期执行多次:
counter = tf.Variable(0)@tf.function def increment_counter():counter.assign_add(1) # 每次调用会正确执行increment_counter() print(counter.numpy()) # 输出: 1
5.3 调试技巧
- 若出现错误,可暂时禁用
@tf.function
,使用tf.config.run_functions_eagerly(True)
在动态图模式下调试。
6. 性能对比
场景 | Eager Execution(无装饰器) | @tf.function (静态图) |
---|---|---|
简单操作(单次) | 快 | 稍慢(追踪开销) |
复杂操作或循环 | 慢 | 快(优化后的图执行) |
多次重复调用 | 慢 | 极快(复用计算图) |
理解动态图和静态图的区别,可以类比两种不同的「搭积木」方式。这是深度学习中两种构建计算流程的核心模式,我用一个对比表格帮你快速理解:
| 特征 | 静态计算图(Static Graph) | 动态计算图(Dynamic Graph) ||-------------------|--------------------------------------------------|-----------------------------------------|| 构建时机 | 先画图纸再施工:提前定义完整计算流程(如建大楼的蓝图) | 边搭积木边调整:运行时实时构建计算流程(像玩乐高随时修改) || 典型框架 | TensorFlow 1.x、Caffe、Theano | PyTorch、TensorFlow Eager模式、JAX || 代码特点 | 需要先声明placeholder
,用Session.run
执行固定流程 | 直接写数学运算代码,逐行执行(和普通Python代码一样) || 执行效率 | ✅ 高:可全局优化(如合并冗余计算、内存预分配) | ❗ 较低:运行时动态解析,难以预优化 || 调试难度 | ❗ 困难:需通过Session
调试,无法直接打印中间结果 | ✅ 简单:可随时插入print()
或断点检查数据 || 灵活性 | ❗ 受限:计算流程固定(如无法在循环中动态改变计算分支) | ✅ 极高:可结合Python控制流(如if/for动态调整结构) || 部署场景 | ✅ 适合生产环境:可导出为独立计算图(如TF SavedModel) | ❗ 需转换:通常需要转静态图(如PyTorch→TorchScript) || 自动微分 | 基于静态图结构反向求导 | 实时追踪计算路径反向传播(如PyTorch的Autograd) |—### 用「做菜流程」对比理解#### 静态图(传统厨房)1. 提前规划:先写好详细菜谱(切菜→炒A→煮B→混合) 2. 严格分工:厨师必须严格按照步骤执行,中途不能改顺序 3. 高效但死板:适合标准化流程(如工厂生产),但临时想加调料就得重写菜谱 #### 动态图(家庭烹饪) 1. 即兴发挥:边做边调整(先炒肉发现太咸,立刻加蔬菜补救) 2. 灵活自由:随时尝味道、改火候,甚至中途换菜谱 3. 适合实验:适合开发调试,但效率不如流水线作业 —### 实际代码对比 假设要实现一个简单条件判断:y = x+1 if x>0 else x-1
#### 静态图(TensorFlow 1.x风格) pythonimport tensorflow as tf# 先定义「占位符」和计算流程x = tf.placeholder(tf.float32)branch = tf.cond(x > 0, lambda: x+1, lambda: x-1)y = branch * 2# 启动会话执行(实际数据此时传入)with tf.Session() as sess: result = sess.run(y, feed_dict={x: 3.0}) # 输出8.0
#### 动态图(PyTorch风格) pythonimport torchx = torch.tensor(3.0)if x > 0: # 直接写Python条件判断 y = (x + 1) * 2else: y = (x - 1) * 2print(y) # 输出tensor(8.)
—### 如何选择?| 场景 | 推荐模式 ||----------------------|-------------------------------------|| 工业级部署、移动端推理 | ✅ 静态图(高效且易优化) || 研究新模型、快速实验 | ✅ 动态图(调试方便,代码直观) || 需要自定义复杂控制流 | ✅ 动态图(if/for与Python无缝结合) || 自动微分、二阶导数计算 | ✅ 动态图(PyTorch Autograd更易追踪) || 超大规模分布式训练 | ✅ 静态图(TensorFlow分布式优化更成熟) |—### 趋势演变- 静态图进化:现代框架(如TensorFlow 2.x)通过@tf.function
实现动态转静态,兼顾灵活性和性能 - 动态图优化:PyTorch通过JIT
编译提升动态图执行速度,并向静态图靠拢 - 核心差异仍在:实时交互性 vs 极致性能,选择取决于你的优先级### 7. 总结
@tf.function
是 TensorFlow 2.x 中平衡灵活性与性能的核心工具。通过将 Python 函数转换为静态计算图,它显著提升了模型训练和推理速度,同时保持代码的可读性。使用时需注意:
- 尽量使用 TensorFlow 操作,避免依赖 Python 原生逻辑。
- 控制输入签名以防止过多计算图生成。
- 合理处理副作用和变量。
掌握 @tf.function
的机制,可以大幅优化深度学习模型的效率,尤其在强化学习、大规模数据处理等计算密集型任务中效果显著。
6. 总结
在强化学习中,TensorFlow的计算图是构建和训练智能体模型的核心工具。它通过高效的数据流管理、自动微分和优化器支持,简化了策略网络和价值网络的实现。无论是简单的DQN还是复杂的Actor-Critic架构,计算图都能显著提升训练效率和可扩展性。理解其工作原理,有助于优化模型性能并解决实际应用中的挑战。
相关文章:
计算图(Computation Graph)
在强化学习中,TensorFlow的计算图(Computation Graph)是用于描述模型结构和训练流程的核心机制。 1. 计算图的基本概念 定义:计算图是TensorFlow中表示数学运算和数据流动的有向图。图中的节点(Nodes)代表…...
邮件营销:如何设置合适的发送频率
在邮件营销里,把握好发送频率特别关键,这直接关系到客户愿不愿意搭理你的邮件,以及邮件营销能不能达到预期效果。下面这几个步骤和建议,能帮你找到合适的邮件发送频率: 一、了解目标受众 分析客户行为:查…...
React项目中,递归写法获取tree的id集合
后端接口返回一个childrens的树,最后要拿到的是每个childrens下第一个对象的id集合,用于编辑页的回显 采用的是递归写法!!!!!!!! const categoryIds: Array&…...
深入解析Linux网络、安全与容器技术
1. Netfilter:Linux内核的包处理框架 Netfilter 是Linux内核中用于控制网络数据包的核心机制,负责处理数据包的过滤、修改和转发。其核心功能包括: 包过滤(Packet Filtering):根据规则允许或拒绝数据包通过…...
AF3 Rotation 类解读
Rotation 类(rigid_utils 模块)是 AlphaFold3 中用于 3D旋转 的核心组件,支持两种旋转表示: 1️⃣ 旋转矩阵 (3x3) 2️⃣ 四元数 (quaternion, 4元向量) 👉 设计目标: 允许灵活选择 旋转矩阵 或 四元数 封装了常用的 旋转操作(组合、逆旋转、应用到点上等) 像 torch.…...
数据预处理习题
简述常用的文本数据类型。 结构化文本:如数据库中的表格数据、JSON/XML格式数据,具有明确的字段和层级关系。非结构化文本:如自然语言文本(新闻、社交媒体内容)、长文档(书籍、论文)࿰…...
常见框架漏洞—中间件IIS
一.IIS6.x篇 1.在Windows server 2003中搭建网站 2.访问网站,并对该网站进行抓包 3.修改提交方式为PUT,然后写入木马 4.修改提交方式为MOVE,令将其更名为脚本⽂档后缀 5.我们在Windows server 2003中可以看到我们上传的shell.asp 6.我们在网…...
群体智能优化算法-蚁狮优化算法(Ant Lion Optimizer, ALO,含Matlab源代码)
一、文章摘要 蚁狮优化算法(Ant Lion Optimizer,ALO)是一种新颖的元启发式算法,由Mirjalili提出,其灵感来源于自然界中蚁狮幼虫构筑陷阱捕猎蚂蚁的行为。该算法通过模拟蚂蚁的随机游走、蚁狮的陷阱机制、陷阱缩小及精…...
【计算机视觉】数据增强
一、数据增强的意义 在深度学习中,数据集往往有限,而模型需要大量的样本来学习特征。数据增强技术通过对图像进行如下变换: 扩充样本数量:利用已有数据生成新的样本。提高模型鲁棒性:使模型适应不同的图像变换&#…...
BERT文本分类实战----美团外卖评论情绪分类
HuggingFace 提供了巨大的模型库,虽然其中的很多模型性能表现出色,但这些模型往往是在广义的数据集上训练的,缺乏针对特定数据集的优化,所以在获得一个合适的模型之后,往往还要针对具体任务的特定数据集进行二次训练&a…...
Chrome 133 版本开发者工具(DevTools)更新内容
Chrome 133 版本开发者工具(DevTools)更新内容 一、持久化的 AI 聊天记录 AI 助手面板会在本地持久化聊天记录,即使重新加载 DevTools 或 Chrome,也可以查看之前与 Gemini 的对话内容。 二、Performance 面板改进 此版本为 Per…...
大模型应用(Java)2025/3/24
大佬视频👉使用Java实现一个基础的大模型RAG问答对话系统_哔哩哔哩_bilibili 需求 让大模型来理解知识库内容,并根据知识库回答。 通过本次应用我学到了: RAG工程的基本处理框架流程(基于java)向量数据库的基础使用…...
基于Sentinel-1A GRD洪涝淹没范围提取(SDWI阈值法和OSTU自动阈值法)
0 前言 两幅灾前和灾后的遥感影像经过SARscape配准、滤波、辐射定标预处理之后,使用GDAL库分别使用SDWI阈值法和OSTU自动阈值法提取洪涝淹没范围 1 ENVI 5.6和SARscape5.6安装 通过网盘分享的文件:ENVI5(1).6 链接: https://pan.baidu.com/s/1mKcEkC3…...
PPT 转高精度图片 API 接口
PPT 转高精度图片 API 接口 文件处理 / 图片处理,将 PPT 文件转换为图片序列。 1. 产品功能 支持将 PPT 文件转换为高质量图片序列;支持 .ppt 和 .pptx 格式;保持原始 PPT 的布局和样式;转换后的图片支持永久访问;全…...
IOS接入微信方法
导入SDK 和配置 SDK 的不做介绍; 1 在IOS 开发者中心 Identifiers 打开‘Associated Domains’ 2 建立一个文件(不带后缀的)apple-app-site-association, teamid在 IOS 开发者中心的会员找,appid在 xcode里面找 {"applin…...
隐式与显式等待的区别及混合使用
隐式等待(Implicit Wait)和显式等待(Explicit Wait)是 Selenium WebDriver 中两种不同的等待机制,用于处理动态加载的页面元素或异步操作。以下是它们的区别、作用范围以及混合使用的注意事项: 1. 核心区别…...
Selenium基本使用(三)隐藏框、获取文本、断言、切换窗口
1、定位文本框,密码框,按钮 案例一: 网站:过期更新 from selenium import webdriver import time dxwebdriver.Chrome() dx.get("过期更新") time.sleep(2) dx.find_element_by_name("userAccount").send_keys("…...
蓝桥杯,利用 Vue.js 构建简易任务管理器
在日常开发中,我们经常需要处理各种任务和计划。一个简单且高效的任务管理器可以帮助我们更好地组织和安排时间。今天,我将向大家展示如何使用 Vue.js 构建一个简易的任务管理器。这个项目不仅能够帮助我们更好地理解 Vue.js 的基本语法和功能࿰…...
vmwaretools解压失败|vmware tools distrib cannot mkdir read only file system|bug汇总
最简单的一条路线:你的解压命令用sudo了吗? 这个方法不能解决的话就看下面内容。本文提供给你全过程思路。 如需转载,标记出处 背景: 之前虚拟机和主机的复制黏贴还能用,今天突然用不了,重新下载安装包&am…...
类与对象(中)(详解)
【本节目标】 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗&…...
2025-03-21 Unity 网络基础3——TCP网络通信准备知识
文章目录 1 IP/端口类1.1 IPAddress1.2 IPEndPoint 2 域名解析2.1 IPHostEntry2.2 Dns 3 序列化与反序列化3.1 序列化3.1.1 内置类型 -> 字节数组3.1.2 字符串 -> 字节数组3.1.3 类对象 -> 字节数组 3.2 反序列化3.2.1 字节数组 -> 内置类型3.2.2 字节数组 -> 字…...
练习8-8 移动字母
练习8-8 移动字母 day 8 void Shift( char s[] ){int lenstrlen(s);int a[3];for(int i0;i<3;i){a[i]s[i];}for(int i3;i<len;i){s[i-3]s[i];}s[len-3]a[0];s[len-2]a[1];s[len-1]a[2]; }...
BigEvent项目后端学习笔记(二)文章分类模块 | 文章分类增删改查全流程解析(含优化)
📖 模块概述 文章分类模块包括 新增文章分类、文章分类列表、获取文章分类详情、更新文章分类、删除文章分类 功能。本篇对于原项目进行了代码优化,将原先写在 Controller 层的业务逻辑代码迁移至了 Service 层。 🛠️ 技术实现要点 分组校…...
蓝桥杯,冬奥大抽奖
在日常的网页开发中,抽奖功能是一种常见的交互设计,它可以增加用户的参与感和趣味性。今天,我将分享一个简单的抽奖转盘实现,它使用了HTML、CSS和JavaScript,非常适合初学者学习和理解前端开发的基本概念。 一、项目背…...
scNET:整合scRNA-seq和PPI用于学习基因和细胞的embedding
scRNA-seq 技术的最新进展为深入了解各种组织的异质性提供了前所未有的视角。然而,仅靠基因表达数据往往无法捕捉和识别细胞通路和复合物的变化,因为这些变化在蛋白质水平上更容易被察觉。此外,由于scRNA-seq数据存在高噪声水平和零膨胀等固有…...
第四天 开始Unity Shader的学习之旅之Unity中的基础光照
Unity Shader的学习笔记 第四天 开始Unity Shader的学习之旅之Unity中的基础光照 文章目录 Unity Shader的学习笔记前言一、我们是如何看到这个世界的1. 光源2.吸收和散射3.着色 二、标准光照模型1. 自发光2. 高光反射① Phong模型② Blinn-Phong模型 3.漫反射4.环境光 总结 前…...
Lustre 语言的 Rust 生成相关的工作
目前 Lustre V6 编译器支持编译生成的语言为C语言。但也注意到,以 Rust 语言为生成目标语言,也存在若干相关工作。 rustre(elegaanz) 该项工作为 Lustre v6 语言的解析器,使用 Rust 语言实现。生成 Lustre AST。 项…...
std::endl为什么C++ 智能提示是函数?
在使用vscode 的C智能提示后,输入endl 后,提示的却是std::endl(basic_ostream<CharT, Traits> &os), 感觉比较奇怪,各种代码里都是直接用的std::endl 啊, 这里怎么变成函数了呢? 在 C 中,std::en…...
大模型在肺血栓栓塞症风险预测及临床方案制定中的应用研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、肺血栓栓塞症概述 2.1 定义与流行病学 2.2 发病机制与病理生理 2.3 临床表现与诊断方法 三、大模型技术原理与应用现状 3.1 大模型技术基础 3.2 在医疗领域的应用进展 3.3 选择大模型进行肺血栓栓塞症预…...
用一颗红黑树同时封装出map和set
目录 1. 红黑树源代码 2. 红黑树模版参数的控制 3. 红黑树节点当中存储的数据 4. 模板参数中仿函数的增加 5. 正向迭代器的实现 6. set模拟实现 7. map的模拟实现 8. 封装后的代码 8.1 红黑树的代码 8.2 正向迭代器的代码 8.3 set的代码 8.4 map的代码 1. 红黑树源…...
C Sharp上位机需要掌握哪些知识?
学历不高就不要有进大厂的想法了,你就在上位机这一条路上走到底。 .NET桌面程序开发有WPF和Winform。Winform比较简单,拖拖控件,难度不大,这种级别的开发,新人上手一个月就够了,但是不会有哪家公司专门招聘…...
【自学笔记】Spark基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Apache Spark基础知识点总览目录简介核心组件Spark SQLDataFrame与Dataset APIRDD(弹性分布式数据集)Spark StreamingMLlib(机器…...
基于Spring Boot的智能停车计费系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
数据不外传!通过内网穿透实现绿联NAS远程访问的安全配置方案
文章目录 前言1. 开启ssh服务2. ssh连接3. 安装cpolar内网穿透4. 配置绿联NAS公网地址 前言 大家好,今天要带给大家一个超级酷炫的技能——如何让绿联NAS秒变‘千里眼’,通过简单的几步操作就能轻松实现内网穿透。想象一下,无论你身处何地&a…...
地理信息可视化技术大全【WebGIS 教程一】
前言: 在当今数据驱动的时代,地理信息技术(GIS)和空间数据可视化已成为科学研究、商业决策和智慧城市建设的重要工具。随着Web技术的快速发展,基于浏览器端的地图渲染和地理信息处理能力显著增强,各类开源与…...
huggingface datasets库中的load_dataset方法-------deepseek问答记录
1. 基本介绍 Hugging Face 的 datasets 库中的 load_dataset 方法是用于加载数据集的核心工具,它支持从多种来源(如本地文件、Hugging Face Hub、内存数据等)加载数据集,并返回标准的 Dataset 或 DatasetDict 对象,方…...
网络故障排查
网络故障排查 导航 一、电脑端排查 引起网络故障的原因有很多,我按照实际处理遇到的问题的频率还有检测所需时间尽可能短开始进行排查,建议按下面的顺序来排查 电脑网口 首先,应该检查该网口是否正常闪烁黄灯 如果没有亮灯,抓…...
字符串匹配问题(strs)(信息学奥赛一本通-1355)
【题目描述】 字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式,从内到外必须是<>,(),[],{},例如。输入: [()] 输出:YES,而输入([]),([)]都应该输出NO。 【输入】 第一行为…...
MD2Card(markdown)
MD2Card 介绍: 1.小红书爆款神器,Markdown笔记秒转高颜值卡片 2.实时预览15种主题,自动拆长文,图片/SVG导出即用 3.零门槛不登录,免费无限生成,专治排版废和设计手残党 网站地址: https://md2…...
企业微信实现“关联外部选项“、“审批控件中的外部选项“
企业微信实现"关联外部选项"、"审批控件中的外部选项" 需求背景参考文档 需求背景 公司自定义了运营成本审批流程的模板,需要调用公司API获取小区列表(关联外部选项),将选中的值带入到审批里面来。开通配置权限请参考下面参考文档&…...
[实操]MySQL8 读写分离后,配合redis的方法与步骤
之前的文章已经提供相关MySQL8的主从与读写分离操作,为了在高并发场景中有更多的实际用处,于是编写该文章说明MySQL8在实现读写分离后结合Redis的方法与步骤。 以下是文中提到的中间件及其版本: 以下是更新后的表格,包含了中间件…...
深度学习技术与应用的未来展望:从基础理论到实际实现
深度学习作为人工智能领域的核心技术之一,近年来引起了极大的关注。它不仅在学术界带来了革命性的进展,也在工业界展现出了广泛的应用前景。从图像识别到自然语言处理,再到强化学习和生成对抗网络(GAN),深度…...
JavaScript中匿名函数与箭头函数之间的区别与联系
什么是匿名函数和箭头函数? 匿名函数:顾名思义,是没有名称的函数,通常在定义时立即使用或赋值给变量。它是JavaScript中传统的函数定义方式。 箭头函数:是ES6(ECMAScript 2015)引入的一种新语法…...
ARCGIS PRO SDK ProWindow自定义窗口DataGrid控件的应用
ProWindow 是ArcGIS Pro SDK中用于创建自定义窗口的关键类,帮助开发者扩展ArcGIS Pro的功能和用户界面。这些窗口可以嵌入到ArcGIS Pro的主界面中,提供与核心功能的无缝集成。 创建一个窗体xml: controls:ProWindowxmlns"http://schem…...
高效PDF翻译解决方案:多引擎支持+格式零丢失
软件介绍 在AI翻译工具大行其道的今天,传统翻译软件市场逐渐饱和,但专业领域的深度需求依然存在。本文推荐的PDF翻译工具凭借20余种专业翻译接口,为学术文献、技术文档等复杂内容提供更精准的翻译服务,在保留文档原始排版的同时…...
Spring Boot
一.SpringBoot配置文件 有三种种配置文件:application.yaml,application.yml,application.properties,但是我们一般使用yml结尾的配置文件其它一般不用。 1.properties 配置⽂件说明 ①基本语法和配置文件的读取 // 配置文件的…...
使用CSS3实现炫酷的3D翻转卡片效果
使用CSS3实现炫酷的3D翻转卡片效果 这里写目录标题 使用CSS3实现炫酷的3D翻转卡片效果项目介绍技术要点分析1. 3D空间设置2. 核心CSS属性3. 布局和定位 实现难点和解决方案1. 3D效果的流畅性2. 卡片内容布局3. 响应式设计 性能优化建议浏览器兼容性总结 项目介绍 在这个项目中…...
Excel 小黑第19套
对应大猫19 鼠标右键标签修改颜色 将文本文件导入工作表中:数据 -现有链接 -浏览更多 选择员工档案 (若预览是乱七八糟的文字,将文件格式改成简体中文)分隔符号看题目要求 注意:将身份证号设置为文本格式 将一列数…...
IDEA批量替换项目下所有文件中的特定内容
文章目录 1. 问题引入2. 批量替换项目下所有文件中的特定内容2.1 右键项目的根目录,点击在文件中替换2.2 输入要替换的内容 3. 解决替换一整行文本后出现空行的问题4. 增加筛选条件提高匹配的精确度 更多 IDEA 的使用技巧可以查看 IDEA 专栏: IDEA 1. 问…...
从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.1自注意力机制(Scaled Dot-Product Attention)的逐行代码实现
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.1 自注意力机制(Scaled Dot-Product Attention)的逐行代码实现1. 自注意力机制的核心原理与数学表达1.1 注意力计算的三元组:`Q, K, V`2. 逐行代码实现与解析2.1 输入嵌入与权重矩阵初始化2.2 完…...