【n8n教程】:Luxon日期时间处理,打造智能时间自动化工作流

n8n智能体开发:日期与时间节点 日期与时间(Date & Time)节点用于操作日期时间数据并将其转换为不同格式。 阅读详情

【n8n教程】:Luxon日期时间处理,打造智能时间自动化工作流

在自动化工作流中,日期和时间数据处理是最常见的需求之一。无论是计算两个日期之间的天数、格式化日期显示,还是处理不同时区的时间,n8n 的 Luxon 库都能完美解决。本教程将带你从零开始,学会在 n8n 中高效使用 Luxon,让日期时间处理变得简单易懂。

点击获取最新AI资讯、n8n工作流、开发经验分享

🎯 核心概念:什么是 Luxon?

Luxon 是一个功能强大的 JavaScript 日期时间库,专门为了解决原生 JavaScript Date 对象的复杂性而创建。它提供了更加直观和易用的 API,让你能够轻松处理:

  • ✅ 日期的解析和格式化
  • ✅ 时区转换
  • ✅ 日期计算(加减天数、月份等)
  • ✅ 两个日期之间的时间差计算
  • ✅ 人类可读的日期格式输出

为什么选择 Luxon 而不是原生 JavaScript?

原生 JavaScript:

// ❌ 不够直观,需要记住很多 API 细节
new Date('2019-06-23')  // 容易出错,可能产生错误的时区

Luxon:

// ✅ 清晰明确,指定格式
DateTime.fromISO('2019-06-23')
DateTime.fromFormat("23-06-2019", "dd-MM-yyyy")

🔧 n8n 中的 Luxon 快速开始

两个黄金变量

n8n 为你提供了两个内置的时间变量,无需额外导入:

变量说明示例输出
$now当前时刻(精确到秒)2025-12-05T11:21:00.000+00:00
$today当前日期(时间部分为 00:00:00)2025-12-05T00:00:00.000+00:00

重点:这两个变量可以在:

  • 📝 表达式编辑器 中使用(使用 {{}} 包裹)
  • 💻 Code 节点 中使用(直接使用 $now 和 $today)

📚 常见应用场景详解

场景 1️⃣:获取当前日期和时间

需求:在工作流中获取当前时刻

在表达式中:

// 获取当前时刻(包含时间)
{{$now}}

// 获取当前日期(不包含时间,午夜)
{{$today}}

在 Code 节点中:

// 当前时刻对象
const now = $now;
console.log(now);  // 输出 Luxon DateTime 对象

// 当前日期对象
const today = $today;
console.log(today);

场景 2️⃣:日期向前或向后推移

需求:获取 7 天前的日期,或 30 天后的日期

在表达式中:

// 获取 7 天前的日期
{{$today.minus({days: 7})}}

// 获取 30 天后的日期
{{$today.plus({days: 30})}}

// 获取 3 个月前的日期
{{$today.minus({months: 3})}}

// 获取 1 年后的日期
{{$today.plus({years: 1})}}

在 Code 节点中:

// 7 天前
let sevenDaysAgo = $today.minus({days: 7});

// 结合多个时间单位
let futureDate = $today.plus({
  years: 1,
  months: 2,
  days: 15
});

// 输出给下一个节点
return [{json: {sevenDaysAgo, futureDate}}];

场景 3️⃣:日期格式化(重点!)

需求:将日期转换为易读的格式

常用格式转换:

// 表达式方式
{{$today.toLocaleString()}}                    // 23/06/2019(地区格式)
{{$today.toFormat("dd/MM/yyyy")}}             // 23/06/2019
{{$today.toFormat("MMMM dd, yyyy")}}          // June 23, 2019
{{$today.toFormat("yyyy-MM-dd HH:mm:ss")}}    // 2019-06-23 14:30:45

// Code 节点方式
let dateString = $today.toFormat("dd/MM/yyyy");
let humanReadable = $today.toLocaleString();

格式化标记速查表:

标记说明示例
yyyy4 位年份2025
MM2 位月份01, 12
dd2 位日期05, 25
HH24 小时制小时00, 23
mm分钟00, 59
ss秒钟00, 59
MMMM月份全名January, December
MMM月份缩写Jan, Dec
EEEE星期全名Monday, Sunday
EEE星期缩写Mon, Sun

场景 4️⃣:字符串转换为 Luxon 日期

需求:处理来自其他节点的日期字符串

从标准格式转换(ISO 8601):

// 表达式方式
// 假设输入数据中有一个 date 字段,值为 "2019-06-23"
{{DateTime.fromISO($json.date)}}

// Code 节点方式
const luxonDate = DateTime.fromISO("2019-06-23");

从自定义格式转换:

// 假设日期格式为 "23-06-2019"
// 表达式方式
{{DateTime.fromFormat($json.date, "dd-MM-yyyy")}}

// Code 节点方式
const luxonDate = DateTime.fromFormat("23-06-2019", "dd-MM-yyyy");
const luxonDate2 = DateTime.fromFormat($json.dateField, "dd/MM/yyyy");

⚠️ 重要:注意格式标记的大小写,YYYY 和 yyyy 的含义不同!


场景 5️⃣:计算两个日期之间的差值

需求:计算订单创建到现在已经过了多少天

在表达式中:

// 计算从某个日期到今天经过了多少天
{{$today.diff(DateTime.fromISO($json.orderDate), 'days').toObject().days}}

// 计算距离圣诞节还有多少天
{{$today.diff(DateTime.fromISO($today.year + '-12-25'), 'days').toObject().days}}

在 Code 节点中:

// 从 order_date 到现在的天数差
const orderDate = DateTime.fromISO($json.order_date);
const daysDiff = $today.diff(orderDate, 'days').toObject();
console.log(`距离订单创建已经 ${daysDiff.days} 天`);

// 同时获取多个时间单位
const duration = $today.diff(orderDate, ['years', 'months', 'days']).toObject();
console.log(`${duration.years} 年 ${duration.months} 个月 ${duration.days} 天`);

return [{json: {daysPassed: daysDiff.days, duration}}];

场景 6️⃣:时区处理

n8n 中的时区规则:

n8n 默认使用的时区是 美国纽约时区 (America/New York),但你可以在工作流设置中修改。所有 Luxon 操作都会遵守这个时区设置。

// 在表达式中查看当前时区
{{$today}}  // 会基于实例或工作流的时区设置

// 如果需要特定时区,在 Code 节点中:
const tokioTime = $now.setZone('Asia/Tokyo');
const nyTime = $now.setZone('America/New_York');

console.log(tokioTime.toLocaleString());  // 东京时间,易读格式
console.log(nyTime.toLocaleString());     // 纽约时间,易读格式

💡 综合案例:自动生成周报

现在让我们组合使用所有学到的知识,创建一个实用的工作流:自动生成周报

工作流需求:

  1. ✅ 获取上周的开始日期和结束日期
  2. ✅ 生成周报时间范围的文字描述
  3. ✅ 计算距离本周末还有多少天
  4. ✅ 生成易读的周报标题

工作流 JSON(可直接导入 n8n):

{
  "nodes": [
    {
      "parameters": {},
      "id": "abc123start",
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "typeVersion": 1,
      "position": [250, 300]
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "code": "// 计算上周的日期范围\nconst today = $today;\n\n// 上周的第一天(上周一)\nconst lastMonday = today.minus({days: today.weekday}).minus({days: 6});\n\n// 上周的最后一天(上周日)\nconst lastSunday = lastMonday.plus({days: 6});\n\n// 周报的标题\nconst reportTitle = `周报 (${lastMonday.toFormat('MM/dd')} - ${lastSunday.toFormat('MM/dd')})`;\n\n// 距离本周末的天数\nconst daysToWeekend = today.diff(\n  today.endOf('week'), \n  'days'\n).toObject().days;\n\n// 返回结果\nreturn [{\n  json: {\n    weekStart: lastMonday.toFormat('yyyy-MM-dd'),\n    weekEnd: lastSunday.toFormat('yyyy-MM-dd'),\n    reportTitle: reportTitle,\n    daysToWeekend: Math.abs(daysToWeekend),\n    formattedRange: `${lastMonday.toFormat('MMMM dd')} 至 ${lastSunday.toFormat('MMMM dd, yyyy')}`,\n    generatedAt: $now.toFormat('yyyy-MM-dd HH:mm:ss')\n  }\n}];"
      },
      "id": "def456code",
      "name": "生成周报日期",
      "type": "n8n-nodes-base.code",
      "typeVersion": 1,
      "position": [450, 300]
    },
    {
      "parameters": {
        "jsonData": "={\"weeklyReport\": $('生成周报日期').first().json}"
      },
      "id": "ghi789output",
      "name": "输出结果",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [650, 300]
    }
  ],
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "生成周报日期",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "生成周报日期": {
      "main": [
        [
          {
            "node": "输出结果",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "timezone": "Asia/Shanghai"
  }
}

工作流输出示例:

当你运行这个工作流时,会得到类似这样的输出:

{
  "weekStart": "2025-11-24",
  "weekEnd": "2025-11-30",
  "reportTitle": "周报 (11/24 - 11/30)",
  "daysToWeekend": 4,
  "formattedRange": "November 24 至 November 30, 2025",
  "generatedAt": "2025-12-05 11:21:30"
}

🎓 学习总结

快速参考表

需求表达式示例Code 节点示例
当前日期{{$today}}const date = $today;
7天前{{$today.minus({days: 7})}}$today.minus({days: 7})
格式化{{$today.toFormat("dd/MM/yyyy")}}$today.toFormat("dd/MM/yyyy")
字符串转日期{{DateTime.fromISO($json.date)}}DateTime.fromISO("2025-12-05")
计算差值{{$today.diff(date, 'days')}}$today.diff(date, ['days'])

3个黄金法则

  1. 🎯 始终使用 Luxon 函数进行格式转换 - 不要用原生 JavaScript Date 对象
  2. 🎯 记住格式标记区分大小写 - yyyy 和 YYYY 不一样
  3. 🎯 在表达式中用 {{}} 包裹,Code 节点中直接使用 - 两种方式都支持

🚀 进阶技巧

✨ 技巧 1:链式调用

// 一行代码完成多个操作
const result = $today
  .minus({days: 7})                    // 7天前
  .endOf('week')                       // 周末
  .toFormat('MMMM dd, yyyy');          // 格式化

// 结果:如果今天是 12月5日,则输出 November 30, 2025

✨ 技巧 2:条件判断

// 判断是否超期
const dueDate = DateTime.fromISO($json.dueDate);
const isOverdue = $today > dueDate;

// 在表达式中
{{$today > DateTime.fromISO($json.deadline) ? "已超期" : "未超期"}}

✨ 技巧 3:循环处理多个日期

// 在 Code 节点中处理数组
const dates = $json.datesList;
const formattedDates = dates.map(date => 
  DateTime.fromISO(date).toFormat('yyyy-MM-dd')
);

return [{json: {formatted: formattedDates}}];

⚠️ 常见错误及解决方案

错误原因解决方案
Cannot read property 'minus'传入了字符串而非 Luxon 对象使用 DateTime.fromISO() 转换
日期格式不对格式标记错误检查大小写,参考标记速查表
时区不对没有设置工作流时区在工作流设置中修改时区
undefined 错误使用了不存在的字段检查数据源是否真的有该字段

【后量子密码】SPHINCS+ 算法(二):签名与验签(附源码分析) 本节介绍SPHINCS+ 算法的密钥生成、签名与验签。nnn:安全参数;www:Winternitz参数,WOTS+签名分解的基底;hhh:超树的高度;ddd:超树中子树的层数;kkk:FORS 树的数量;ttt:FORS 树的叶子节点数。 阅读详情

相关推荐

安卓无障碍服务保活实战:如何用AccessibilityService实现后台常驻(附完整代码)

本文深入解析如何利用Android无障碍服务(AccessibilityService)实现后台服务保活,涵盖多版本系统适配、前台服务集成、开机自启机制等关键技术。通过详细的Kotlin代码示例和合规性指导,帮助开发者构建稳定可靠的后台服务解决方案,同时避免因滥用无障碍服务导致的应用下架风险。

milk5的博客 1073

探索Luxon:现代JavaScript日期时间处理库

探索Luxon:现代JavaScript日期时间处理库 【免费下载链接】luxon ⏱ A library for working with dates and times in JS 项目地址: https://gitcode.com/gh_mirrors/lu...

gitblog_00092的博客 936

麒麟系统grub被锁怎么办?双密码遗忘救援指南(实测V10 SP3版本)

本文详细介绍了麒麟系统V10 SP3版本在GRUB和root密码双遗忘情况下的救援指南。通过ISO镜像进入救援模式,结合单用户模式操作,实现密码重置与系统权限恢复,特别适用于等保合规环境。

387

在JavaScript中将Luxon用于日期和时间

对于以JavaScript开头的开发人员来说,使用日期和时间可能是一项令人困惑的任务。 在本教程中,您将学习一个名为Luxon的新JavaScript库,它使在JavaScript中使用日期和时间变得轻而易举。 在本教程的整个过程中,您将学习Luxon库的不同功能以及如何在Web应用程序项目中使用它。 入门 您将创建一个Angular项目,并将了解如何使用Luxon库在Angular中...

代码教主 2107

UE5 Mass交通规则设计指南:从Stop Sign到智能红绿灯的进阶配置

本文详细解析了UE5 Mass框架下的交通规则设计,从基础Stop Sign到智能红绿灯的进阶配置。通过UMassTrafficIntersectionSpawnDataGenerator等核心组件,实现动态响应、自然流畅的交通行为系统,提升虚拟城市的真实感与游戏性。

weixin_30500105的博客 502

【Go语言实战】(9) gRPC 实现一个简单微服务

文章目录写在前面1. 安装1.1 grpc1.2 proto1.3 protobuf2. 编写代码2.1 初始化项目2.2 编写proto2.3 编写服务端2.4 实现客户端3. 演示 写在前面 这一次我们用gRPC实现获取用户的信息 1. 安装 1.1 grpc grpc的安装直接go get即可 go get google.golang.org/grpc 1.2 proto 下载proto,我是下载这个的。 然后解压出来把bin目录放在直接放在系统变量当中 1.3 protobuf 我们在

面向生活编程 3272

Vue.js组件开发-如何使用day.js、luxon或date-fns处理日期时间

在Vue.js组件开发中,使用day.js、luxon或date-fns等现代日期处理库可以大大简化日期和时间的操作。

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1128

【STM32实物】基于STM32设计的智能垃圾桶(语音、颜色识别、称重、光强、烟雾、人体识别、步进电机、水泵等)_资料编号25

基于STM32的语音识别垃圾桶系统以STM32F103C8T6为主控,采用18650可充放电锂电池组供电。硬件组成模块由5V步进电机马达与ULN2003驱动板、HX711压力传感器模块、DC5V水泵与MOSFET驱动板、0.96寸OLED显示屏、四个轻触按键、四个TCRT5000红外反射传感器、四个SG90舵机、SU-03T1语音模块、光敏电阻模块、MQ-2烟雾传感器模块、TCS34725颜色识别模块、蜂鸣器、LED灯构成。通过编写C语言软件程序,实现各硬件模块的协同工作。

嵌入式阿齐Archie 1万+

【n8n教程】:掌握表达式 Expressions,让你的工作流数据处理能力翻倍!

n8n 的表达式(Expressions)是一个强大的功能,让你能够动态设置节点参数、转换数据、执行条件判断。简单来说,表达式让你用最少的代码完成复杂的数据处理,避免创建多余的节点。

AI时代超级个体,专注AI应用落地,开发经验分享 455

【定位模块项目实战】正态分布变换(NDT)定位及建图(依赖高精度点云地图和三维激光雷达的定位方案)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、正态分布变换(NDT)定位解决的主要问题二、正态分布变换(NDT)定位的核心思想三、NDT算法流程1.多元正态分布概念2.网格化并计算正态分布参数3.变换参数和最大似然四、使用C++实现NDT配准参考资料 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对依赖高精度地图和激光雷达的定位技术–正态分布变换(NDT)定位做个简单的介绍,具体

qq_35635374的博客 4411

通过实例讲解瀑布模型

在电子商城开发中,瀑布模型如同 “工业时代的流水线”—— 能通过标准化流程交付高质量、高合规性的系统,但也可能因缺乏灵活性而错失市场机会。其优势与缺点本质上源于同一核心特征:严格的阶段性与文档驱动。决策建议若开发传统型、长周期、需求固定的电子商城(如企业内部采购平台),可优先选择瀑布模型,并通过 “需求预验证 + 模块化设计” 降低风险;若开发创新型、短周期、需快速迭代的电商平台(如社交电商、跨境电商),建议采用敏捷模型或混合模型(如瀑布 + Scrum),平衡规范性与响应速度。

跟佟格湾一起学习计算机知识吧~ 271

Luxon日期时间格式化全指南:从基础到高级应用

Luxon日期时间格式化全指南:从基础到高级应用 【免费下载链接】luxon ⏱ A library for working with dates and times in JS 项目地址: https://gitcode.com...

gitblog_01186的博客 493

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Luxon时间处理

1:本地时间转UTC时间 let a = new Date() let c=DateTime.fromJSDate(a).toUTC().toFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") 2:UTC时间转本地时间 let d = DateTime.fromISO(c).toFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")```

ATM_09的博客 799

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Luxon处理时间差(就是算两个时间差多少时间)

1:但是我不确定能不能把2.20做为开始时间,2.18作为结束时间,如果有知道的朋友可以告知下,现在没空做实验… var end = DateTime.fromISO('2017-03-13'); var start = DateTime.fromISO('2017-02-13'); var diffInMonths = end.diff(start, 'months'); diffInMonths.toObject(); //=> { months: 1 } ...

ATM_09的博客 689

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 229

6 款电商 AI 图片生成软件实测|国内 + 跨境卖家工具清单

电商 AI 作图工具已经从 "能不能用" 进入了 "好不好用" 的阶段。对于绝大多数卖家而言,现在的 AI 工具已经可以覆盖 60%-80% 的基础商品图需求,显著降低拍摄和设计成本。选择工具的核心逻辑不是 "哪款最强",而是 "哪款最适配你的品类、平台规模和团队能力"。垂直电商工具胜在工作流效率,通用生图工具强在创意上限,模板类工具赢在上手速度。建议根据自身业务阶段,搭配 1-2 款主力工具 + 1 款辅助工具,形成适合自己的视觉生产流程。

Mardi_Ladin的博客 403

我用 GPUWorks 在 M1 Pro 上搭了个发票识别原型

公司里经常要看电子发票。我想先做个小原型:把 PDF 发给一个自己部署的图文模型,让它提取发票类型、日期、交易双方和金额,再把结果交给同事核对。这个原型不用先接财务系统,先看看从部署到调用要走多少步,模型返回的内容能不能帮上忙。

鸽芷咕的博客 2万+

您您这可以把问小白的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭

第三层是格式编译层。这个决策背后的判断很清晰:一个批量导出工具的价值,不在于“试三次”,而在于你真正用它处理了几十份技术文档、访谈记录或课程讲义之后,它是否值得留在你的工作流里。问小白的会话列表通过分页接口加载,AI导出鸭 在页面运行时建立旁路监听,捕获每一次分页请求返回的完整对话清单,包括会话 ID、标题、时间戳和隐藏的元数据字段。让AI导出回归优雅——这句话说的是:导出不该是体力活,而应该是一次完整的、可预期的文件交付。注意:这里的“批量”指的是左侧列表里的多个独立会话,不是一条会话内的多轮对话。

laoyunsi的博客 249

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 503

河道漂浮物目标检测数据集

目标检测,yolo,河道漂浮物目标检测数据集

DL_data_set的博客 203

AI Agent之核心框架

A: 显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试,反思作为 记忆,影响后续尝试的策略。工作流程:Action → Evaluation → Reflection → Retry。A: 普通 CoT 只在。

剑雨巍巍的博客 201

AI 应用开发工程师技术实践:大模型接入、通用组件封装与性能优化

本文提出AI应用从PoC到生产的核心挑战:模型调用的持续可用、可控与可优化。通过构建统一LLM网关实现多供应商路由与故障转移,封装对话、工具调用与RAG组件以解耦业务逻辑,结合前缀缓存、批处理与流式背压治理等性能优化手段,形成“接通→接稳→接快”的工程路径,最终以工程化能力决定AI应用的生产可用性。

2301_79189962的博客 560

AI前沿日报 · 2026-11-04 | 祛魅时刻:Astra“纯读权重“神话的崩塌

①Astra"裸权重通吃"被spaCy创始人Honnibal精准祛魅——仅1/3实验真裸读,数学能力提升依赖Python+50次迭代;②Simon Willison用Qwen 3.8-27B端侧复现权重空间编程;③Nvidia开源Auto-Ontology自动知识图谱;④$800开源全域抓取机器人Stringman;⑤OpenAI悄然重开Codex训练开关引信任危机;⑥DeepMind发布Gemini 4 Argon机器人基础模型;⑦美国科技巨头隐性AI债务达3.2万亿美元,6个月增90%。

johnsong2009的博客 575

大模型 Embedding 与向量相似度详解

Embedding 解决的问题:计算机不懂文字,但懂数字│▼文本 → 向量(1024维浮点数数组)│▼相似度解决的问题:怎么判断两个向量(文本)有多接近│▼余弦相似度:看向量方向的夹角,越接近0°越相似│▼最终效果:语义搜索——理解意思,而非字面匹配一句话总结:Embedding 把文字变成数字,余弦相似度比较数字的方向,两者结合实现了"理解语义"的搜索。

T3165919332的博客 92

GPT-1 架构和计算细节

下面配合框图,对 GPT-1 的每个组件做公式展开 + 数值实例(配置:12 层 × 768,12 头,FFN 3072,词表 40478,共 117M 参数)。GPT-1 把翻译模型的编码器-解码器砍掉一半,只留解码器,然后以"预测下一个词"为目标在 BooksCorpus 上预训练。与 2017 原版的四个架构差异(框图中标 ★):h0=E[token]+Epos[position],E∈R40478×768, Epos∈R512×768h^0 = E[\text{token}] + E_{pos}[\

eloudy的专栏 283

终端 AI 审计与 “龙虾” 类智能体风险治理:从可见性到闭环溯源

生成式 AI 办公普及之后,数据泄露风险逐步下沉到终端。员工将合同、源代码、客户资料粘贴至公有大模型,以及龙虾(OpenClaw)这类本地开源 AI 智能体的滥用,成为企业安全新挑战。传统网络边界防护存在审计盲区,本文从风险链路拆解、核心能力模型、分级治理策略、落地踩坑点以及技术局限性多角度,分享终端侧 AI 安全治理的实践思路。

2401_86491085的博客 642
上一篇: 【n8n教程】:用 JMESPath 轻松查询和转换 JSON 数据
下一篇: 【n8n教程】:自定义变量,让你的工作流更加灵活高效
undsky_
博客等级 码龄20年 6粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

undsky_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值