PyTorch数据加载与预处理
数据加载与预处理详解
1. 数据集类(Dataset和DataLoader)
1.1 Dataset基类
PyTorch中的Dataset
是一个抽象类,所有自定义的数据集都应该继承这个类,并实现以下两个方法:
__len__()
: 返回数据集的大小__getitem__()
: 根据索引返回一个样本
概念解析:
Dataset
类提供了统一的数据访问接口- 通过继承
Dataset
,我们可以轻松地将数据集成到PyTorch的生态系统中 - 自定义数据集可以处理各种格式的数据(图像、文本、音频等)
1.2 自定义Dataset子类实例
import torch
from torch.utils.data import Dataset
from PIL import Image
import osclass CustomImageDataset(Dataset):def __init__(self, img_dir, transform=None):"""初始化数据集参数:img_dir (str): 图像目录路径transform (callable, optional): 可选的数据变换函数"""self.img_dir = img_dirself.transform = transform# 假设目录中每个文件都是一个图像样本self.img_names = os.listdir(img_dir)def __len__(self):"""返回数据集中的样本数"""return len(self.img_names)def __getitem__(self, idx):"""根据索引获取样本"""img_path = os.path.join(self.img_dir, self.img_names[idx])image = Image.open(img_path).convert('RGB') # 转换为RGB格式if self.transform:image = self.transform(image)# 假设文件名格式为"label_image.jpg"label = int(self.img_names[idx].split('_')[0])return image, label
注意事项:
- 在
__getitem__
中执行耗时的操作(如文件读取)可能会影响性能 - 确保
__len__
返回的是整数 - 如果数据需要预处理,最好在
__init__
中完成,而不是在__getitem__
中 - 多进程数据加载时,确保数据集是可序列化的
1.3 DataLoader
DataLoader
是PyTorch提供的一个迭代器,它封装了Dataset
,提供以下功能:
- 批量处理数据(batching)
- 数据打乱(shuffling)
- 多进程数据加载
主要参数:
dataset
: 要加载的数据集(Dataset对象)batch_size
: 每个batch的大小(默认: 1)shuffle
: 是否在每个epoch打乱数据(默认: False)num_workers
: 用于数据加载的子进程数(默认: 0,表示在主进程中加载)pin_memory
: 是否将数据复制到CUDA固定内存中(加速GPU传输)drop_last
: 是否丢弃最后一个不完整的batch(默认: False)
实例:
from torch.utils.data import DataLoader# 创建数据集实例
dataset = CustomImageDataset(img_dir='data/images', transform=None)# 创建DataLoader
dataloader = DataLoader(dataset,batch_size=32,shuffle=True,num_workers=4,pin_memory=True
)# 使用示例
for batch_images, batch_labels in dataloader:# batch_images是形状为[32, C, H, W]的张量# batch_labels是形状为[32]的张量pass
注意事项:
num_workers
设置过高可能导致内存问题- 在Windows系统上,多进程加载可能需要将代码放在
if __name__ == '__main__':
块中 pin_memory
在GPU训练时可以显著提高数据传输速度- 当数据集大小不能被
batch_size
整除时,最后一个batch会比较小
2. 使用torchvision.datasets加载标准数据集
PyTorch的torchvision.datasets
模块提供了许多常用的数据集:
- MNIST
- CIFAR-10/CIFAR-100
- ImageNet
- Fashion-MNIST
- COCO
- 等等
实例:
import torchvision.datasets as datasets
import torchvision.transforms as transforms# 定义数据变换
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,), (0.5,))
])# 下载并加载MNIST数据集
train_dataset = datasets.MNIST(root='./data', # 数据存储路径train=True, # 训练集download=True, # 如果数据不存在则下载transform=transform # 应用的数据变换
)test_dataset = datasets.MNIST(root='./data',train=False, # 测试集download=True,transform=transform
)# 创建DataLoader
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)
注意事项:
- 首次使用时会下载数据集,可能需要较长时间
root
参数指定数据存储位置,确保有足够的磁盘空间- 对于大型数据集(如ImageNet),下载和解压可能需要特殊处理
- 不同数据集可能有不同的默认变换,需要查看文档
3. 数据变换(Transforms)
3.1 torchvision.transforms常用变换
PyTorch提供了多种数据预处理变换:
-
基础变换:
ToTensor()
: 将PIL图像或NumPy数组转换为PyTorch张量Normalize(mean, std)
: 用给定的均值和标准差对张量进行归一化Resize(size)
: 调整图像大小CenterCrop(size)
: 中心裁剪Pad(padding)
: 填充
-
几何变换:
RandomHorizontalFlip(p=0.5)
: 随机水平翻转RandomVerticalFlip(p=0.5)
: 随机垂直翻转RandomRotation(degrees)
: 随机旋转RandomAffine(degrees, translate, scale, shear)
: 随机仿射变换
-
颜色变换:
ColorJitter(brightness, contrast, saturation, hue)
: 随机改变亮度、对比度、饱和度和色调Grayscale(num_output_channels=1)
: 转换为灰度图RandomGrayscale(p=0.1)
: 以概率p转换为灰度图
-
组合变换:
Compose([transforms])
: 将多个变换组合在一起
3.2 变换实例
from torchvision import transforms# 定义训练集变换
train_transform = transforms.Compose([transforms.RandomResizedCrop(224), # 随机裁剪并调整大小transforms.RandomHorizontalFlip(), # 随机水平翻转transforms.ColorJitter(0.4, 0.4, 0.4, 0.1), # 随机颜色变换transforms.ToTensor(), # 转换为张量transforms.Normalize( # 归一化mean=[0.485, 0.456, 0.406], # ImageNet均值std=[0.229, 0.224, 0.225] # ImageNet标准差)
])# 定义测试集变换 (通常不包含数据增强)
test_transform = transforms.Compose([transforms.Resize(256), # 调整大小transforms.CenterCrop(224), # 中心裁剪transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])
])
注意事项:
- 变换的顺序很重要,例如
ToTensor()
通常应该在Normalize()
之前 - 训练集和测试集的变换可能不同(训练集通常包含数据增强)
- 归一化的参数(mean和std)应该与预训练模型或数据集统计信息匹配
- 某些变换只适用于PIL图像,某些只适用于张量
3.3 自定义变换
我们可以通过实现__call__
方法创建自定义变换:
import random
import torchvision.transforms.functional as Fclass RandomRotationWithReflect:"""随机旋转并保持图像大小不变(通过反射填充)"""def __init__(self, degrees):self.degrees = degreesdef __call__(self, img):angle = random.uniform(-self.degrees, self.degrees)return F.rotate(img, angle, fill=(0, 0, 0)) # 用黑色填充# 使用自定义变换
custom_transform = transforms.Compose([transforms.Resize(256),RandomRotationWithReflect(30), # 自定义变换transforms.ToTensor()
])
注意事项:
- 自定义变换应该处理PIL图像或张量,取决于它在变换链中的位置
- 确保变换是可重现的(如果设置了随机种子)
- 考虑变换对性能的影响,避免在
__call__
中执行耗时操作
4. 综合案例
下面是一个完整的图像分类任务数据加载和预处理示例:
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms, datasets
import os
from PIL import Image# 1. 自定义数据集类
class CustomImageDataset(Dataset):def __init__(self, img_dir, transform=None):self.img_dir = img_dirself.transform = transformself.classes = sorted(os.listdir(img_dir)) # 假设每个子目录是一个类别self.class_to_idx = {cls: i for i, cls in enumerate(self.classes)}self.samples = []# 收集所有图像路径和标签for cls in self.classes:cls_dir = os.path.join(img_dir, cls)for img_name in os.listdir(cls_dir):self.samples.append((os.path.join(cls_dir, img_name),self.class_to_idx[cls]))def __len__(self):return len(self.samples)def __getitem__(self, idx):img_path, label = self.samples[idx]img = Image.open(img_path).convert('RGB')if self.transform:img = self.transform(img)return img, label# 2. 定义数据变换
# 训练集变换 (包含数据增强)
train_transform = transforms.Compose([transforms.RandomResizedCrop(224),transforms.RandomHorizontalFlip(),transforms.RandomVerticalFlip(),transforms.RandomRotation(30),transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])# 验证集/测试集变换 (不包含数据增强)
val_transform = transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])# 3. 创建数据集
train_dataset = CustomImageDataset(img_dir='data/train',transform=train_transform
)val_dataset = CustomImageDataset(img_dir='data/val',transform=val_transform
)# 4. 创建数据加载器
train_loader = DataLoader(train_dataset,batch_size=64,shuffle=True,num_workers=4,pin_memory=True,drop_last=True
)val_loader = DataLoader(val_dataset,batch_size=64,shuffle=False,num_workers=4,pin_memory=True
)# 5. 使用示例
def train_model():for epoch in range(10):# 训练阶段model.train()for images, labels in train_loader:images = images.to(device)labels = labels.to(device)# 训练代码...# 验证阶段model.eval()with torch.no_grad():for images, labels in val_loader:images = images.to(device)labels = labels.to(device)# 验证代码...if __name__ == '__main__':device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')train_model()
5. 关键知识点总结
-
Dataset类:
- 必须实现
__len__
和__getitem__
方法 - 负责数据的读取和单个样本的预处理
- 可以是磁盘数据的接口,也可以是内存数据的包装器
- 必须实现
-
DataLoader:
- 负责批量生成数据
- 提供数据打乱和多进程加载功能
- 主要参数:
batch_size
,shuffle
,num_workers
,pin_memory
-
标准数据集:
torchvision.datasets
提供了常用数据集- 通常自动下载和管理数据
- 可以指定变换和数据分割(训练/测试)
-
数据变换:
transforms.Compose
用于组合多个变换- 训练集通常包含数据增强变换
- 测试集通常只包含必要的预处理
- 变换顺序很重要(如
ToTensor
通常在Normalize
之前)
-
最佳实践:
- 训练集和验证集使用不同的变换
- 使用
num_workers
加速数据加载 - GPU训练时启用
pin_memory
- 确保数据变换是可重现的(设置随机种子)
通过合理的数据加载和预处理流程,可以显著提高模型训练效率和最终性能。数据预处理应该与模型的需求和数据的特性相匹配,同时考虑计算效率和内存使用。
相关文章:
PyTorch数据加载与预处理
数据加载与预处理详解 1. 数据集类(Dataset和DataLoader) 1.1 Dataset基类 PyTorch中的Dataset是一个抽象类,所有自定义的数据集都应该继承这个类,并实现以下两个方法: __len__(): 返回数据集的大小__getitem__(): 根据索引返回一个样本 …...
MyBatis 官方子项目详细说明及表格总结
MyBatis 官方子项目详细说明及表格总结 1. 核心子项目说明 1.1 mybatis-3 GitHub 链接:https://github.com/mybatis/mybatis-3功能: MyBatis 核心框架的源码,提供 SQL 映射、动态 SQL、缓存、事务管理等核心功能。主要功能: 支持…...
Java学习手册:常用的内置工具类包
以下是常用 Java 内置工具包。 • 日期时间处理工具包 • java.time包(JSR 310):这是 Java 8 引入的一套全新的日期时间 API,旨在替代陈旧的java.util.Date和java.util.Calendar类。其中的LocalDate用于表示不带时区的日期&…...
启动你的RocketMQ之旅(六)-Broker详细——主从复制
前言: 👏作者简介:我是笑霸final。 📝个人主页: 笑霸final的主页2 📕系列专栏:java专栏 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一…...
QT跨平台软件开发要点
一、Qt跨平台开发核心优势 1.统一代码基 通过Qt的抽象层(Qt Platform Abstraction, QPA),同一套代码可编译部署到Windows、macOS、Linux、嵌入式系统(如ARM设备)甚至移动端(通过Qt for Android/iOS&#…...
【C语言】柔性数组
目录 一柔性数组的定义与特点 定义: 特点: 注意事项 二柔性数组的使用方法 三示例代码详解 四与其他知识的结合 五总结 前言: 柔性数组是C99标准引入的一种特殊结构体成员类型,允许在结构体的末尾定义一个长度未知的数组…...
AWS中国区ICP备案全攻略:流程、注意事项与最佳实践
导语 在中国大陆地区开展互联网业务时,所有通过域名提供服务的网站和应用必须完成ICP备案(互联网内容提供商备案)。对于选择使用AWS中国区(北京/宁夏区域)资源的用户,备案流程因云服务商的特殊运营模式而有所不同。本文将详细解析AWS中国区备案的核心规则、操作步骤及避坑…...
基于Matlab的MDF文件导入与处理研究
摘要 本文围绕MDF文件格式展开全面研究,系统阐述了MDF文件的基本结构与数据块概念,深入探讨了在Matlab环境下导入和处理这些文件的理论与实践方法。首先,介绍了MDF文件在现代工业和汽车电子领域的应用背景及重要意义。接着,详细剖析了MDF文件的结构,包括头部信息、数据块、…...
架构师备考-设计模式23种及其记忆特点
引言 以下是一篇关于架构师备考中设计模式23种的博文架构及记忆技巧总结,内容清晰、结构系统,适合快速掌握核心知识点。 考试类型是给语句描述或者类图,判断是哪一种设计模式(会出现英文的名词),2024年的两…...
学习记录:DAY18
前端实战与项目部署学习笔记 前言 时间固执沉默无情的流逝, 小心握紧漠然通达的当下。 今天要把前端实战部分学完,有时间写写学科作业 ----4.26---- 放纵注定是场与自我无休止的拉扯,过度的妥协只会跌入自我空虚的深渊 真该死啊,…...
【OSG学习笔记】Day 10: 字体与文字渲染(osgText)
osgText库简介 osgText 是OpenSceneGraph(OSG)中用于文本渲染的重要模块,支持在3D场景中添加静态/动态文字、自定义字体、文字样式(颜色、大小、对齐方式等)以及动态更新文本内容。通过结合OSG的场景图机制࿰…...
[特殊字符] 深入理解Spring Cloud与微服务架构:全流程详解(含中间件分类与实战经验)
📚 目录 Spring Cloud 简介与发展 Spring Cloud 与 Spring Cloud Alibaba 的关系 为什么需要微服务?单体架构 vs 微服务对比 微服务常用中间件汇总 微服务如何科学拆分? 一个微服务对应一个数据库(服务自治原则) …...
深入理解算力:从普通电脑到宏观计算世界
在科技飞速发展的当下,“算力” 一词频繁出现在我们的视野中,无论是前沿的人工智能领域,还是新兴的区块链世界,算力都扮演着至关重要的角色。但对于大多数普通人来说,算力仿佛是一个既熟悉又陌生的概念。今天ÿ…...
IntelliJ IDEA 2025.2 和 JetBrains Rider 2025.1 恢复git commit为模态窗口
模态提交在 2025.1 中作为插件存在。 如下图所示安装插件 安装完之后,在设置里把下图的配置项打勾...
Linux——动静态库
目录 1. 动静态库基本原理 2. 认识动静态库 3. 动静态库的特点 3.1 静态库的优缺点 3.2 动态库的优缺点 4. 静态库的打包和使用 4.1 打包 4.2 使用 5. 动态库的打包和使用 5.1 打包 5.2 使用 6. 库的理解与加载 6.1 目标文件 6.2 ELF文件 6.3 ELF形成到加载…...
从频域的角度理解S参数:
从频域的角度理解S参数: S参数是一种频域模型,在频域的每一个频点都可以通过该频点的S参数来得到入射信号和反射信号之间的一组关系。这种方法不关注网络内部的具体结构,无论网络内部结构是什么,只要网络是线性不变的,就可以当作“…...
Java 安全:如何保护敏感数据?
Java 安全:如何保护敏感数据? 在当今数字化时代,数据安全成为了软件开发中至关重要的课题。对于 Java 开发者而言,掌握如何在 Java 应用中保护敏感数据是必备的技能。本文将深入探讨 Java 安全领域,聚焦于敏感数据保护…...
PySpark实现ABC_manage_channel逻辑
问题描述 我们需要确定"ABC_manage_channel"列的逻辑,该列的值在客户连续在同一渠道下单时更新为当前渠道,否则保留之前的值。具体规则如下: 初始值为第一个订单的渠道如果客户连续两次在同一渠道下单,则更新为当前渠…...
栈与堆的演示
1、栈与堆的演示 (1)网页视图 (2)代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, in…...
【Kafka】Windows环境下生产与消费流程详解(附流程图)
1. 背景说明 在搭建基于Kafka的数据流通系统(例如流式推荐、实时日志采集)时,常见的操作是: 生产者 Producer 向 Kafka Topic 写入消息消费者 Consumer 从 Kafka Topic 读取消息本文以Windows本地环境 + Kafka 2.8.1版本为例,手把手演示生产消费流程。 2. 准备条件 Kafka…...
基于FFmpeg命令行的实时图像处理与RTSP推流解决方案
前言 在一些项目开发过程中需要将实时处理的图像再实时的将结果展示出来,此时如果再使用一张一张图片显示的方式展示给开发者,那么图像窗口的反复开关将会出现窗口闪烁的问题,实际上无法体现出动态画面的效果。因此,需要使用码流…...
神经网络笔记 - 感知机
一 感知机是什么 感知机(Perceptron)是一种接收输入信号并输出结果的算法。 它根据输入与权重的加权和是否超过某个阈值(threshold),来判断输出0还是1。 二.计算方式 感知机的基本公式如下: X1, X2 : …...
【双指针】专题:LeetCode 15题解——三数之和
三数之和 一、题目链接二、题目三、题目解析四、算法原理解法一:排序 暴力枚举 利用set去重解法二:排序 双指针处理细节问题1、去重越界问题 2、不漏 五、编写代码六、时间复杂度和空间复杂度 一、题目链接 三数之和 二、题目 三、题目解析 i ! j …...
如何创建一个导入模板?全流程图文解析
先去找到系统内可以上传东西的按钮 把你的模板上传上去,找到对应的fileName 图里的文字写错了,是复制粘贴"filePath"到URL才能下载...
JS自动化获取网站信息开发说明
一、自动获取信息的必要性 1. 提高效率与节省时间 批量处理:自动化可以快速抓取大量数据,比人工手动操作快得多。 24/7 运行:自动化工具可以全天候工作,不受时间限制。 减少重复劳动:避免人工反复执行相同的任务&am…...
Python爬虫-爬取汽车之家各品牌月销量榜数据
前言 本文是该专栏的第54篇,后面会持续分享python爬虫干货知识,记得关注。 在本文中,笔者已整理19篇汽车平台相关的爬虫项目案例。对此感兴趣的同学,可以直接翻阅查看。 而本文,笔者将以汽车之家平台为例子。基于Python爬虫,实现批量爬取“各品牌月销量榜”的数据。废话…...
WPF 调用 OpenCV 库
WPF 调用 OpenCV 库指南 OpenCV 是一个强大的计算机视觉库,WPF 是 Windows 平台的 UI 框架。将两者结合可以实现强大的图像处理和计算机视觉应用。本文将详细介绍如何在 WPF 应用程序中集成和使用 OpenCV 库。 一、准备工作 1. 安装 OpenCV 方法一:通过 NuGet 安装 在 Vi…...
LLM(大语言模型)技术的最新进展可总结
截至2025年4月26日,LLM(大语言模型)技术的最新进展可总结为以下关键方向: 1. 架构创新与性能突破 多模态能力深化:GPT-4o等模型通过统一架构支持文本、图像、音频和视频的跨模态推理,显著提升复杂场景下的…...
Fedora 43 计划移除所有 GNOME X11 相关软件包
Fedora 43 计划移除所有 GNOME X11 相关软件包,这是 Fedora 项目团队为全面拥抱 Wayland 所做的重要决策。以下是关于此计划的详细介绍: 提案内容:4 月 23 日,Neal Gompa 提交提案,建议从 Fedora 软件仓库中移除所有 G…...
解构与重构:“整体部分”视角下的软件开发思维范式
在软件开发的复杂图景中,整体与部分的关系始终是决定项目成败的关键命题。《人月神话》“整体部分”一章以深邃的洞察力,揭示了软件开发过程中系统设计与实现的内在逻辑,不仅探讨了规格说明、设计方法等技术层面的核心要素,更深入…...
NdrpConformantVaryingArrayUnmarshall函数分析--重要
第一部分: void NdrpConformantVaryingArrayUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, uchar ** ppMemory, PFORMAT_STRING pFormat, uchar fMustCopy, uchar fMustAlloc ) { uchar * …...
ZYNQ笔记(十四):基于 BRAM 的 PS、PL 数据交互
版本:Vivado2020.2(Vitis) 实验任务: PS 将字符串数据写入BRAM,再将数据读取出来;PL 从 BRAM 中读取数据,bing。通过 ILA 来观察读出的数据,与前面串口打印的数据进行对照࿰…...
月之暗面开源 Kimi-Audio-7B-Instruct,同时支持语音识别和语音生成
我们向您介绍在音频理解、生成和对话方面表现出色的开源音频基础模型–Kimi-Audio。该资源库托管了 Kimi-Audio-7B-Instruct 的模型检查点。 Kimi-Audio 被设计为通用的音频基础模型,能够在单一的统一框架内处理各种音频处理任务。主要功能包括: 通用功…...
文件操作及读写-爪哇版
文章目录 前言 初识文件文件路径里的符号文件分类文件操作方法文件读写字节流输入输出输入输出 字符流输入输出输入输出 前言 Windows用户需知:“/”和“\”, 文件路径分隔符一般都用“/”,但Windows系统一直保留着“\”,这两种符…...
【matlab】绘制maxENT模型的ROC曲线和omission curve
文章目录 一、maxENT模型二、ROC曲线三、实操3.1 数据提取3.2 绘制ROC曲线3.3 绘制遗漏曲线3.4 多次训练的ROC和测试的ROC 一、maxENT模型 前面的文章已经详细讲过了。 maxENT软件运行后,会生成一个html报告,里面有ROC曲线,但我们往往需要自…...
个人电子白板(svg标签电子画板功能包含正方形、文本、橡皮 (颜色、尺寸、不透明度)、 撤销、取消撤销 等等功能,)
在Http开发中,svg标签电子画板功能包含正方形、文本、橡皮 (颜色、尺寸、不透明度)、 撤销、取消撤销 等等功能, 效果图 代码如下: <!DOCTYPE html> <html lang"en"> <!--<link href&qu…...
Pygame终极项目:从零开发一个完整2D游戏
Pygame终极项目:从零开发一个完整2D游戏 大家好!欢迎来到本期的Pygame教程。今天,我们将从零开始开发一个完整的2D游戏。通过这个项目,你将学习到如何使用Pygame库来创建游戏窗口、处理用户输入、绘制图形、管理游戏状态、实现碰撞检测和音效等。无论你是初学者还是有一定…...
在应用运维过程中,业务数据修改的证据留存和数据留存
在应用运维过程中,业务数据修改的证据留存和数据留存至关重要,以下是相关介绍: 一、证据留存 操作日志记录 : 详细记录每一次业务数据修改的操作日志,包括操作人员、操作时间、修改内容、修改前后数据的对比等。例如,某公司业务系统中,操作日志会精确记录员工小张在 2…...
JAVA JVM面试题
你的项目中遇到什么问题需要jvm调优,怎么调优的,堆的最小值和最大值设置为什么不设置成一样大? 在项目中,JVM调优通常源于以下典型问题及对应的调优思路,同时关于堆内存参数(-Xms/-Xmx)的设置逻…...
C盘爆红如何解决
deepseek来试用一下! 一、快速释放空间 1. 清理临时文件 - **Win R** 输入 %temp% → 删除文件夹内所有内容。 - **Win S** 搜索 “磁盘清理”** → 选择C盘 → 勾选“临时文件”“系统缓存”等 → 点击“清理系统文件”(可额外清理Windows…...
在 Ubuntu24.04 LTS 上 Docker 部署英文版 n8n 和 部署中文版 n8n-i18n-chinese
一、n8n 简介 n8n 是一个低代码(Low-Code)工作流自动化平台,可以帮助用户以非常简单的方式创建自动化流程,连接不同的应用程序和服务。n8n的设计理念是为了让复杂的工作流变得简单易用,同时也支持高度的自定义…...
软件设计案例分析学习笔记
1.软件设计师内容小考 一、单选题 1.(单选题,1.0 分) 下列内聚种类中,内聚程度最高的是 ( )。 A. 功能内聚 B. 逻辑内聚 C. 偶然内聚 D. 过程内聚 第 1 题: 答案:A 解析:功能内聚是指模块内所有元素共同完成一个功能&a…...
魔百盒CM311-3-YST代工-晨星MSO9385芯片-2+8G-免拆卡刷通刷固件包
魔百盒CM311-3-YST代工-晨星MSO9385芯片-28G-免拆卡刷通刷固件包 刷机前准备: 准备一个8G或一下容量的优盘将其格式化为fat32格式;(切记不要用做过电脑系统的优盘,不然刷机直接变砖); 优盘卡刷强刷刷机&am…...
nginx 504 (Gateway Time-out)
目录 1. 后端处理超时 2. Nginx 代理超时设置不足 3. 服务未响应或崩溃 4. 请求体过大 5. 重启nginx 原本代理服务器用的是微软的Kestrel ,今天给项目换用了nginx,然后有个接口请求报了 (504 Gateway Timeout) 请求发送到了…...
WPF 实现PLC数据采集
WPF 数据采集网关系统设计与实现 一、系统概述 本系统是一个基于 WPF 的数据采集网关,支持主流 PLC(可编程逻辑控制器)的数据采集,并将采集到的数据汇总存储到数据库中。系统采用模块化设计,具有良好的扩展性和可维护性。 二、系统架构 1. 整体架构 +---------------…...
llama factory怎么命令行推理图片
根据LLaMA-Factory多模态数据处理规范,配置图片输入需注意以下核心要点: --- **一、本地图片路径配置** 1. 绝对路径配置: json "images": ["/home/user/project/data/mllm_demo_data/1.jpg"] *适用场景*…...
计算机网络 | 应用层(1)--应用层协议原理
💓个人主页:mooridy 💓专栏地址:《计算机网络:自定向下方法》 大纲式阅读笔记 关注我🌹,和我一起学习更多计算机的知识 🔝🔝🔝 目录 1. 应用层协议原理 1.1 …...
刚体运动 (位置向量 - 旋转矩阵) 笔记 1.1~1.3 (台大机器人学-林沛群)
目录 1. 理解刚体的“自由度”(Degrees of Freedom, DOF) 1.1 平面运动 (2D) 1.2 空间运动 (3D) 2. 统一描述:引入“体坐标系”(Body Frame) 3. 从“状态”到“运动”:引入微分 3.1 补充:…...
MES系列-MOM(Manufacturing Operations Management,制造运营管理)
MES系列文章目录 ISA-95制造业中企业和控制系统的集成的国际标准-(1) ISA-95制造业中企业和控制系统的集成的国际标准-(2) ISA-95制造业中企业和控制系统的集成的国际标准-(3) ISA-95制造业中企业和控制系统的集成的国际标准-(4) ISA-95制造业中企业和控制系统的集成的国际标准…...
矩阵系统私信功能开发技术实践,支持OEM
在短视频矩阵系统中,私信功能是连接运营者与用户、用户与用户的重要桥梁。它不仅能提升用户粘性,还能为精准营销提供支持。本文将从需求分析、技术选型、核心功能实现到性能优化,全面解析矩阵系统私信功能的开发过程。 一、功能需求分析 &am…...