当前位置: 首页 > news >正文

深度学习框架---TensorFlow概览

一、TensorFlow 概述

1. 发展历程
  • 1.x 版本:基于静态图(Graph)和会话(Session),需预先定义计算图,调试较复杂。
  • 2.x 版本:默认启用动态图(Eager Execution),代码更直观,兼容 Keras API,简化了开发流程。
2. 核心优势
  • 跨平台支持:CPU/GPU/TPU 计算,支持本地、分布式、移动端(TensorFlow Lite)、浏览器(TensorFlow.js)。
  • 生态丰富:集成数据处理(TF Data)、模型部署(TF Serving)、可视化(TensorBoard)等工具。
  • 自动微分:原生支持梯度计算,无需手动推导,适合深度学习模型开发。

二、基础概念

1. 张量(Tensor)
  • 定义:多维数组,是 TensorFlow 数据的基本单位,类似 NumPy 的 ndarray,但支持 GPU/TPU 加速。
  • 核心属性
    • 阶(Rank):张量的维度数,如标量(0 阶)、向量(1 阶)、矩阵(2 阶)、图像(3 阶)等。
    • 形状(Shape):各维度的大小,如 (batch_size, height, width, channels)
    • 数据类型float32int32string 等,需与运算兼容。
  • 创建方式
    import tensorflow as tf# 从列表创建
    tf.constant([1, 2, 3])  # 1D 张量
    tf.constant([[1, 2], [3, 4]])  # 2D 张量# 特殊张量
    tf.zeros((3, 3))  # 全 0 张量
    tf.ones((2, 2))  # 全 1 张量
    tf.random.normal((2, 2), mean=0, stddev=1)  # 正态分布随机张量
    
  • 常用操作
    • 算术运算:tf.add()tf.subtract()tf.multiply()(对应 +-* 运算符)。
    • 矩阵运算:tf.matmul()(矩阵乘法)、tf.transpose()(转置)。
    • 索引与切片:类似 NumPy,支持 tensor[1:3, :]
    • 类型转换:tf.cast(tensor, tf.float32)
2. 计算图与自动微分
  • 动态图(Eager Execution)
    • 2.x 默认模式,操作立即执行,无需创建静态图,方便调试。
    • 可直接使用 Python 控制流(如 forif)。
  • 自动微分(AutoDiff)
    • 通过 tf.GradientTape 记录运算过程,自动计算梯度。
    with tf.GradientTape() as tape:y = tf.square(x)  # y = x²
    grad = tape.gradient(y, x)  # 梯度为 2x
    
    • 支持高阶导数(嵌套 GradientTape)。

三、核心模块

1. Keras API(tf.keras)

TensorFlow 2.x 深度集成 Keras,提供高层 API 简化模型开发。

(1)模型构建方式
  • Sequential 顺序模型:适用于简单堆叠结构。
    model = tf.keras.Sequential([tf.keras.layers.Dense(64, activation='relu', input_shape=(784,)),tf.keras.layers.Dense(10, activation='softmax')
    ])
    
  • 函数式 API(Functional API):支持复杂拓扑结构(多输入/输出、分支网络等)。
    inputs = tf.keras.Input(shape=(784,))
    x = tf.keras.layers.Dense(64, activation='relu')(inputs)
    outputs = tf.keras.layers.Dense(10, activation='softmax')(x)
    model = tf.keras.Model(inputs=inputs, outputs=outputs)
    
  • 子类化模型(Subclassing):通过继承 tf.keras.Model 自定义逻辑,灵活性最高。
    class MyModel(tf.keras.Model):def __init__(self):super().__init__()self.dense1 = tf.keras.layers.Dense(64, activation='relu')self.dense2 = tf.keras.layers.Dense(10, activation='softmax')def call(self, inputs):x = self.dense1(inputs)return self.dense2(x)
    
(2)核心层(Layers)
  • 常用层
    • Dense:全连接层,用于特征变换。
    • Conv2D/Conv3D:二维/三维卷积层,用于图像/视频处理。
    • MaxPooling2D/UpSampling2D:池化层/上采样层,用于特征降维/升维。
    • LSTM/GRU:循环层,用于序列数据(NLP、时间序列)。
    • Embedding:嵌入层,用于文本数据向量化。
  • 自定义层:继承 tf.keras.layers.Layer,实现 buildcall 方法。
(3)编译与训练
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),loss=tf.keras.losses.SparseCategoricalCrossentropy(),metrics=['accuracy']
)# 训练模型
history = model.fit(x_train, y_train,epochs=10,batch_size=32,validation_split=0.2
)
  • 优化器SGDAdamRMSprop 等,支持学习率衰减。
  • 损失函数MSE(回归)、CrossEntropy(分类)、自定义损失。
  • 评估指标accuracyprecisionrecall 等。
(4)回调函数(Callbacks)

用于在训练过程中执行自定义操作:

callbacks = [tf.keras.callbacks.EarlyStopping(patience=3, monitor='val_loss'),  # 早停tf.keras.callbacks.ModelCheckpoint('model.h5', save_best_only=True),  # 保存最优模型tf.keras.callbacks.TensorBoard(log_dir='./logs')  # 日志记录
]
2. 数据处理(tf.data)
  • 数据集构建
    # 从 NumPy 数组创建
    dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))# 从文件读取(如 CSV、TFRecord)
    dataset = tf.data.TextLineDataset('data.csv').map(parse_csv)
    
  • 数据预处理
    • map(func):对每个样本应用函数(如数据清洗、增强)。
    • shuffle(buffer_size):打乱数据,避免顺序偏差。
    • batch(batch_size):分组为批量数据。
    • prefetch(buffer_size=tf.data.AUTOTUNE):预取数据,重叠计算与传输,提升性能。
  • 数据增强示例(图像领域):
    def augment(image, label):image = tf.image.random_flip_left_right(image)image = tf.image.random_brightness(image, max_delta=0.1)return image, labeldataset = dataset.map(augment).shuffle(1000).batch(32).prefetch(tf.data.AUTOTUNE)
    
3. 模型保存与部署
  • 保存格式
    • HDF5 格式:保存权重与模型结构,文件后缀 .h5
      model.save('model.h5')
      
    • SavedModel 格式:TensorFlow 原生格式,支持生产环境部署,包含计算图、权重和签名。
      model.save('saved_model_dir', save_format='tf')
      
  • 加载模型
    loaded_model = tf.keras.models.load_model('model.h5')
    
  • 部署场景
    • 移动端/嵌入式:通过 tf.lite.TFLiteConverter 转换为 TensorFlow Lite 模型。
      converter = tf.lite.TFLiteConverter.from_keras_model(model)
      tflite_model = converter.convert()
      with open('model.tflite', 'wb') as f:f.write(tflite_model)
      
    • 浏览器:使用 TensorFlow.js,支持 JavaScript 推理。
    • 云端/服务器:通过 TensorFlow Serving 或 Kubernetes 部署 SavedModel。

四、高级主题

1. 自定义训练循环

model.fit() 无法满足需求时(如多损失函数、动态调整超参数),可手动编写训练循环:

optimizer = tf.keras.optimizers.Adam()
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy()for epoch in range(10):for images, labels in dataset:with tf.GradientTape() as tape:predictions = model(images, training=True)loss = loss_fn(labels, predictions)gradients = tape.gradient(loss, model.trainable_variables)optimizer.apply_gradients(zip(gradients, model.trainable_variables))print(f'Epoch {epoch}, Loss: {loss.numpy()}')
2. 分布式训练

利用多 GPU/TPU 加速训练,支持数据并行(不同设备处理不同批次):

strategy = tf.distribute.MirroredStrategy()  # 镜像策略,适用于单主机多 GPU
with strategy.scope():model = create_model()  # 在策略作用域内创建模型model.compile(optimizer=Adam(), loss=loss_fn)model.fit(dataset.batch(64 * strategy.num_replicas_in_sync), epochs=10)
3. 迁移学习

利用预训练模型加速新任务:

base_model = tf.keras.applications.ResNet50(weights='imagenet',include_top=False,input_shape=(224, 224, 3)
)
base_model.trainable = False  # 冻结底层权重inputs = tf.keras.Input(shape=(224, 224, 3))
x = tf.keras.applications.resnet50.preprocess_input(inputs)
x = base_model(x, training=False)
x = tf.keras.layers.GlobalAveragePooling2D()(x)
outputs = tf.keras.layers.Dense(10, activation='softmax')(x)
model = tf.keras.Model(inputs, outputs)
4. 模型优化与压缩
  • 量化(Quantization):将浮点数权重转换为定点数(如 int8),减小模型体积,加速推理。
    converter = tf.lite.TFLiteConverter.from_keras_model(model)
    converter.optimizations = [tf.lite.Optimize.DEFAULT]
    tflite_quantized_model = converter.convert()
    
  • 剪枝(Pruning):移除冗余连接,通过 tf.keras.layers.Pruning 层实现。
  • 蒸馏(Knowledge Distillation):用教师模型指导学生模型训练,压缩模型复杂度。

五、生态工具链

1. TensorFlow Extended (TFX)

端到端机器学习流水线,涵盖数据验证、特征工程、模型训练、部署和监控:

# 示例流程:数据读取 -> 预处理 -> 训练 -> 评估 -> 部署
import tfx.v1 as tfxpipeline = tfx.Pipeline(pipeline_name='my_pipeline',components=[tfx.components.CsvExampleGen(input_base='data/'),tfx.components.Transform(transform_fn='transform_fn'),tfx.components.Trainer(module_file='trainer.py'),tfx.components.Pusher()]
)
2. TensorBoard

可视化工具,用于监控训练过程、分析模型结构、调试张量分布:

# 启动命令:tensorboard --logdir=./logs
tf.keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=1)
3. TensorFlow Debugger (tfdbg)

调试张量值,定位训练中的问题(如梯度消失、NaN 值):

# 在命令行启动调试器
import tensorflow as tf
tf.debugging.experimental.enable_dump_debug_info('./debug_logs',tensor_debug_mode='FULL_HEALTH'
)

六、实战案例

案例 1:MNIST 手写识别(简单分类)
# 加载数据
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(-1, 784).astype('float32') / 255.0
x_test = x_test.reshape(-1, 784).astype('float32') / 255.0# 构建模型
model = tf.keras.Sequential([tf.keras.layers.Dense(128, activation='relu', input_shape=(784,)),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10, activation='softmax')
])# 训练与评估
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, validation_split=0.1)
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'Test accuracy: {test_acc}')
案例 2:CIFAR-10 图像分类(卷积神经网络)
# 加载数据
cifar10 = tf.keras.datasets.cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0# 构建模型
model = tf.keras.Sequential([tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),tf.keras.layers.MaxPooling2D((2, 2)),tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),tf.keras.layers.MaxPooling2D((2, 2)),tf.keras.layers.Flatten(),tf.keras.layers.Dense(64, activation='relu'),tf.keras.layers.Dense(10, activation='softmax')
])model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
案例 3:IMDB 情感分析(循环神经网络)
# 加载数据
imdb = tf.keras.datasets.imdb
vocab_size = 10000
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=vocab_size)# 数据预处理
train_data = tf.keras.preprocessing.sequence.pad_sequences(train_data, maxlen=256)
test_data = tf.keras.preprocessing.sequence.pad_sequences(test_data, maxlen=256)# 构建模型
model = tf.keras.Sequential([tf.keras.layers.Embedding(vocab_size, 16),tf.keras.layers.LSTM(32),tf.keras.layers.Dense(1, activation='sigmoid')
])model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(train_data, train_labels, epochs=10, validation_split=0.2)

七、常见问题与最佳实践

  1. 显存不足
    • 减小 batch_size,使用混合精度训练(tf.keras.mixed_precision)。
    • 启用内存增长:tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
  2. 模型性能优化
    • 使用 tf.data.AUTOTUNE 自动优化数据预处理。
    • 启用 XLA 编译:tf.config.optimizer.set_jit(True)
  3. 调试技巧
    • 使用 tf.print() 替代 Python print,在动态图中输出张量值。
    • 通过 tf.debugging.assert_equal() 断言张量是否符合预期。
  4. 版本兼容性
    • 避免混合使用 TensorFlow 1.x 和 2.x 接口,优先使用 tf.compat.v1 兼容旧代码。

八、学习资源

  • 官方文档:TensorFlow 官方文档(含 API 参考、教程)。
  • 书籍:《TensorFlow 实战》《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow》。
  • 社区与课程:Coursera《TensorFlow in Practice》、TensorFlow 官方 YouTube 频道。

相关文章:

深度学习框架---TensorFlow概览

一、TensorFlow 概述 1. 发展历程 1.x 版本:基于静态图(Graph)和会话(Session),需预先定义计算图,调试较复杂。2.x 版本:默认启用动态图(Eager Execution)&…...

鸿蒙OSUniApp制作自定义的下拉菜单组件(鸿蒙系统适配版)#三方框架 #Uniapp

UniApp制作自定义的下拉菜单组件(鸿蒙系统适配版) 前言 在移动应用开发中,下拉菜单是一个常见且实用的交互组件,它能在有限的屏幕空间内展示更多的选项。虽然各种UI框架都提供了下拉菜单组件,但在一些特定场景下&…...

扣子(Coze)案例:工作流生成小红书心理学卡片

大家好!我是 Robin。专注于 AI 技术探索与实践,持续分享 Coze 智能体、Coze 模板,以及 Coze 工作流搭建案例。 工作流智能体作用: 输入需要生成小红书心理学知识卡片的数量,工作流自动批量生成图文。 首先演示一下生…...

深度理解用于多智能体强化学习的单调价值函数分解QMIX算法:基于python从零实现

引言:合作式多智能体强化学习与功劳分配 在合作式多智能体强化学习(MARL)中,多个智能体携手合作,共同达成一个目标,通常会收到一个团队共享的奖励。在这种场景下,一个关键的挑战就是功劳分配&a…...

C语言经典笔试题目分析(持续更新)

1. 描述下面代码中两个static 各自的含义 static void func (void) {static unsigned int i; }static void func(void) 中的 static 作用对象:函数 func。 含义: 限制函数的作用域(链接属性),使其仅在当前源文件&…...

射击游戏demo11

完善地图,加载出装饰品,检测人员与地面的碰撞,检测子弹与岩壁的碰撞,检测手雷与地面的碰撞。 import pygame import sys import os import random import csv # 初始化Pygame pygame.init()# 屏幕宽度 SCREEN_WIDTH 1200 # 屏幕高…...

多智能体Multi-Agent应用实战与原理分析

一:Agent 与传统工具调用的对比 在当今的开发环境中,Agent 的出现极大地简化了工作流程。其底层主要基于提示词、模型和工具。用户只需向 Agent 输入需求,Agent 便会自动分析需求,并利用工具获取最终答案。而传统方式下,若没有 Agent,我们则需要手动编码来执行工具,还要…...

专项智能练习(定义判断)_DA_01

1. 单选题 热传导是介质内无宏观运动时的传热现象,其在固体、液体和气体中均可发生。但严格而言,只有在固体中才是纯粹的热传导,在流体(泛指液体和气体)中又是另外一种情况,流体即使处于静止状态&#xff0…...

关于NLP自然语言处理的简单总结

参考: 什么是自然语言处理?看这篇文章就够了! - 知乎 (zhihu.com) 所谓自然语言理解,就是研究如何让机器能够理解我们人类的语言并给出一些回应。 自然语言处理(Natural Language Processing,NLP&#xff0…...

SLAM定位与地图构建

SLAM介绍 SLAM全称Simultaneous Localization And Mapping,中文名称同时定位与地图构建。旨在让移动设备在未知环境中同时完成以下两个任务(定位需要地图,而建图又依赖定位信息,两者互为依赖): 定位&#…...

REST架构风格介绍

一.REST(表述性状态转移) 1.定义 REST(Representational State Transfer)是由 Roy Fielding 在 2000 年提出的一种软件架构风格,用于设计网络应用的通信模式。它基于 HTTP 协议,强调通过统一的接口&#…...

前端流行框架Vue3教程:16. 组件事件配合`v-model`使用

组件事件配合v-model使用 如果是用户输入,我们希望在获取数据的同时发送数据配合v-model 来使用,帮助理解组件间的通信和数据绑定。 🧩 第一步:创建子组件(SearchComponent.vue) 这个组件用于处理用户的搜…...

5月15日day26打卡

函数专题1 知识点回顾: 函数的定义变量作用域:局部变量和全局变量函数的参数类型:位置参数、默认参数、不定参数传递参数的手段:关键词参数传递参数的顺序:同时出现三种参数类型时 作业: 题目1:…...

Java中的深拷贝与浅拷贝

什么是拷贝 在Java中,拷贝是指创建一个对象的副本。拷贝主要分为两种类型:浅拷贝(Shallow Copy)和深拷贝(Deep Copy)。理解这两种拷贝的区别对于编写正确的Java程序非常重要,特别是在处理对象引用时。 浅拷贝(Shallow Copy) 浅拷贝是指创建…...

springboot AOP中,通过解析SpEL 表达式动态获取参数值

切面注解 import com.bn.document.constants.FmDeptCatalogueConstants;import java.lang.annotation.*;Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface FmDeptCatalogueAopAnnotation {/*** 权限类型*/FmDeptCatalogueConstants value();/…...

【论信息系统项目的合同管理】

论信息系统项目的合同管理 论文要求写作要点正文前言一、合同的签订管理二、合同履行管理三、合同变更管理四、合同档案管理五、合同违约索赔管理结语 论文要求 项目合同管理通过对项目合同的全生命周期进行管理,来回避和减轻可识别的项目风险。 请以“论信息系统项…...

redis持久化方式

一、RDB redis database:快照,某一时刻将内存中的数据,写入磁盘中生成1个dump.rdb文件RDB的触发方式: 手动触发:save(阻塞主进程,阻塞其它指令,保证数据一致性)、bgsave…...

free void* 指令

https://stackoverflow.com/questions/2182103/is-it-ok-to-free-void free(ptr) 仅释放指针指向的内存,不会修改指针变量本身的值。调用后,ptr 仍然指向原来的地址(称为 "悬空指针"),但该地址对应的内存已…...

ADS1220高精度ADC(TI)——应用 源码

文章目录 德州仪器ADS1220概述资料引脚&封装布线寄存器配置寄存器0(00h)配置寄存器1(01h)配置寄存器2(02h)配置寄存器3(03h) 连续转换流程驱动源码ads1220.cads1220.h 德州仪器A…...

mysql-Java手写分布式事物提交流程

准备 innodb存储引擎开启支持分布式事务 set global innodb_support_axon分布式的流程 详细流程: XA START ‘a’; 作用:开始一个新的XA事务,并分配一个唯一的事务ID ‘a’。 说明:在这个命令之后,所有后续的SQL操…...

红黑树:数据世界的平衡守护者

在 C 算法的神秘森林里,红黑树是一棵充满智慧的 “魔法树”。它既不像普通二叉搜索树那样容易失衡,也不像 AVL 树对平衡要求那么苛刻。作为 C 算法小白,今天就和大家一起深入探索红黑树的奥秘,看看它是如何成为数据世界的平衡守护…...

哈夫曼树完全解析:从原理到应用

目录 一、核心概念 二、构造全流程解析 三、编码生成机制 四、C语言实现关键代码 五、核心特性深度解读 六、现代应用场景 七、压缩实战演示 一、核心概念 哈夫曼树(最优二叉树)是带权路径长度(WPL)最短的树形结构&#x…...

如何在 Windows 命令提示符中创建多个文件夹和多个文件

如何在 Windows 命令提示符中创建多个文件夹和多个文件 虽然大多数用户习惯使用 Windows 图形界面来创建文件夹,但如果你需要一次性创建多个文件夹或文件,如同在类Unix系统中可以使用mkdir和touch命令一样,windows下也有创建目录和文件的对应…...

【Java】Spring的声明事务在多线程场景中失效问题。

大家都知道Spring的声明式事务在多线程当中会失效,来看一下如下案例。 按照如下方式,b()方法抛出异常,由于父子线程导致事务失效,a()会成功插入,但是b()不会。 因此成功插入一条数据,事务失效。 Component public class UserServ…...

多平台图标设计与管理的终极解决方案

IconWorkshop Pro 是一款由Axialis团队开发的专业图标设计与制作软件,专注于为设计师、开发者及企业用户提供高效且灵活的图标创作解决方案。该软件凭借其强大的功能与跨平台适配性,成为Windows、macOS、iOS、Android等多系统图标设计的首选工具之一。 …...

【搭建Node-RED + MQTT Broker实现AI大模型交互】

搭建Node-RED MQTT Broker实现AI大模型交互 搭建Node-RED MQTT Broker实现AI大模型交互一、系统架构二、环境准备与安装1. 安装Node.js2. 安装Mosquitto MQTT Broker3. 配置Mosquitto4. 安装Node-RED5. 配置Node-RED监听所有网络接口6. 启动Node-RED 三、Node-RED流程配置1. …...

小结: js 在浏览器执行原理

浏览器多进程与多线程 现代浏览器的标签环境隔离主要通过多进程架构和多线程机制实现,以确保安全、性能和稳定性。以下是浏览器实现标签环境隔离的多进程和多线程交互架构的详细解析: ------------------- ------------------- -----------…...

C++核心编程--2 引用

引用就是给变量起别名,操作引用就等于操作原始变量。 2.1 引用基本用法 int var 10; int & r_var var; 2.2 注意事项 声明时必须初始化不允许更改引用指向的原始变量 2.3 引用作为函数参数传递 简化指针修饰函数参数 2.4 引用作为函数返回值 不要返回…...

音频/AI/BLE/WIFI/玩具/商业等方向的论坛网站总结

我爱音频网 我爱音频网 - 我们只谈音频,丰富的TWS真无线蓝牙耳机拆解报告 (52audio.com) 中国人工智能学会 中国人工智能学会 (caai.cn) AIIA人工智能网 https://www.aiiaw.com/ 世界人工智能论坛 世界人工智能论坛 - (amtbbs.org) 36氪 36氪_让一部分人先…...

告别碎片化!MCP 带来 AI Agent 开发生态的革命性突破

引言: 在当今的智能客服系统开发中,开发者常常面临一个棘手的挑战:需要整合用户的 CRM 数据、知识库和实时聊天记录。然而,由于缺乏统一的标准,每个团队都不得不手动实现这些集成。这不仅延长了开发周期,还…...

centos7部署mysql5.7

1.下载mysql的官方yum源 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm2.安装yum源 yum -y install mysql57-community-release-el7-11.noarch.rpm3.安装秘钥文件 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-20224.安装mysql5.7…...

linux dbus

Linux D-Bus(Desktop Bus)是一种进程间通信(IPC)机制,主要用于Linux桌面环境和系统服务之间的消息传递。它允许不同的应用程序或系统组件以高效、安全的方式相互通信,是现代Linux桌面(如GNOME、KDE)的核心基础设施之一。 1. D-Bus 的核心概念 消息总线(Message Bus):…...

计量——异方差的检验及其修正

目录 1.异方差的检验 1 BP检验 2white检验 2.异方差的修正 1.异方差的检验 1 BP检验 选择检验方法:BP BP检验的实际步骤(非机器): 1.y对所有x进行回归,得到残差u。计算残差的平方u^2 2.u^2对所有x进行回归&#…...

操作系统学习笔记第3章 内存管理(灰灰题库)

1. 单选题 某页式存储管理系统中,主存为 128KB,分成 32 块,块号为 0、1、2、3、…、31。某作业有 5 块,其页号为 0、1、2、3、4,被分别装入主存的 3、8、4、6、9 块中。有一逻辑地址为 [3, 70](其中方括号中…...

vue3项目中使用CanvasEditor开箱即用(组件的形式,组件封装好了)

canvas-editor-vue 这是canvas-editor项目的vue版本,我封装成组建了,当然了这是个已经把canvas-editor封装好的的Vue项目 项目地址GitHub地址:GitHub - aini-aini/canvas-editor-vue: this is a project than can be used in vue project as Componentthis is a project than…...

人体肢体工作识别-一步几个脚印从头设计数字生命——仙盟创梦IDE

人体肢体识别是借助计算机视觉、传感器等技术,对人体各肢体的位置、动作、姿态等进行检测与分析的技术。其在医疗健康、智能交互、运动训练、安全监控等多个领域具有重要价值, 示例代码 import cv2 import mediapipe as mp import numpy as np import c…...

【重磅】配电网智能软开关和储能联合规划

目录 1 主要内容 目标函数 数据说明 节点系统图 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现《具有源荷不平衡特性的配电网智能软开关和储能联合规划》部分模型,未考虑聚类分析和分布鲁棒部分,就智能软开关和储能联合规划部分进行了…...

实验6 电子邮件

实验6 电子邮件 1、实验目的 理解电子邮件系统基本结构 理解客户端和服务器端,以及服务器之间的通信 分析理解SMTP,POP3协议 2、实验环境 硬件要求:阿里云云主机ECS 一台。 软件要求:Linux/ Windows 操作系统 3、实验内容…...

NHANES指标推荐:OBS

文章题目:Association between oxidative balance score and all-cause and cancer-specific mortality among cancer survivors DOI:10.3389/fimmu.2025.1541675 中文标题:癌症幸存者氧化平衡评分与全因死亡率和癌症特异性死亡率之间的关联 …...

python-修改图片背景色

在Python中,可以使用图像处理库(如OpenCV或Pillow)来修改图片的背景色。通常,修改背景色的流程包括以下步骤: 1、对图片进行分割,识别前景和背景。 2、对背景区域进行颜色替换。 下面是两种实现方法&#x…...

数据结构与算法--顺序表--单链表

一 顺序表 需要指向存储位置的基地址分配一段连续的内存用length记录实际的元素的个数,也即顺序表的长度,因为顺序表是允许删除和插入元素的不需要定义数组 1.1 普通结构体数组实现版本,实现白色的点以一定的步长移除画面,大量fo…...

MATLAB安装全攻略:常见问题与解决方案

MATLAB安装常见问题与解决方案 一、系统兼容性验证 安装前需确认操作系统满足MATLAB版本要求: Windows 10版本1903及以上(64位)macOS Monterey 12.6及以上Ubuntu 22.04 LTS及以上 验证命令示例: # Linux系统验证 lsb_release…...

constexpr 关键字的意义(入门)

author: hjjdebug date: 2025年 05月 15日 星期四 16:03:33 CST description: constexpr 关键字的意义(入门) constexpr 是c11 引入的一个关键字, 代表了一种属性. 文章目录 1. constexpr 修饰的变量, 在编译期间就可以得到其数值.2. constexpr 修饰的函数, 可以在编译期间被调…...

aptitude 深度教程:从基础到生产实践

目录 一、aptitude 基础:核心概念与环境准备 1.1 aptitude 是什么? 1.2 安装与环境配置 二、aptitude 核心操作:从命令行到交互式界面 2.1 命令行基础操作 2.2 交互式界面(TUI)入门 三、高级功能:依赖管理与版本控制 3.1 依赖冲突解决实战 3.2 版本锁定与降级 3…...

嵌入式开发学习日志(数据结构--双链表)Day21

一、双链表 1.定义 双向链表是在单链表的每个结点中,再设置一个指向其钱去节点的指针域。 2、声明文件 3、创建表头 4、头插 5、 遍历 6、尾插、 7、指定插 8、查找 9、修改 10.、删除 11、逆序 12、销毁链表 13、main.c 三、扩展:工程管理工具&#…...

抢购Python代码示例与技术解析

引言:抢购系统的技术挑战 在当今电子商务高度发达的时代,抢购活动已成为各大电商平台吸引用户的重要手段。然而,高并发、低延迟的抢购场景对系统设计提出了严峻挑战。本文将提供一个完整的Python抢购代码示例,并深入分析其技术实…...

undefined reference to CPUAllocatorSingleton::instance

它发生的原因是你声明了 CPUAllocatorSingleton 类中的 instance 变量,但没有提供它的定义。 这个错误是链接器无法找到 CPUAllocatorSingleton::instance 的定义。它发生的原因是你声明了 CPUAllocatorSingleton 类中的 instance 变量,但没有提供它的定…...

【c语言】动态内存分配

文章标题 一、为什么要进行动态内存管理二、malloc和free2.1. malloc2.2. free2.3. 举例 三、calloc和realloc3.1. calloc3.2. realloc 四、常见的动态内存错误4.1. 对NULL指针的解引用操作4.2. 对动态开辟空间的越界访问4.3. 对非动态开辟内存使用free释放4.4. 使用free释放⼀…...

深入理解JavaScript中的闭包:原理、应用与常见问题

引言 闭包(Closure)是JavaScript中一个既强大又容易让人困惑的概念。理解闭包对于成为一名优秀的JavaScript开发者至关重要。本文将深入探讨闭包的工作原理、实际应用场景以及常见问题,帮助你彻底掌握这一重要概念。 什么是闭包? 闭包是指那些能够访问…...

IPLOOK | 2025 MVNOs 世界大会:从Wi-Fi通话到卫星覆盖

2025 MVNOs 世界大会于5月12日至14日在奥地利维也纳举行,汇聚了来自50多个国家的550余位行业领袖,共同探讨移动虚拟网络运营商(MVNO)领域的变革趋势。本届大会聚焦数字化转型、技术创新与战略合作,其中IPLOOK凭借其创新…...