avatar
文章
100
标签
74
分类
32
Home
Archives
Categories
Tags
About
LsWorld
Home
Archives
Categories
Tags
About

LsWorld

Hexo 部署到 GitHub Pages 后构建失败:从 .nojekyll 到 ignore_hidden 的完整排查
发表于2026-05-26|Hexo
最近在使用 Hexo 部署博客时遇到了一个问题:本地执行 npx hexo d 看起来是成功的,但 GitHub Pages 的 pages build and deployment 工作流却失败了。 一开始我以为是 Hexo 生成出错,后来排查发现,真正的问题并不在文章内容,也不在本地生成,而是在 GitHub Pages 构建流程和 .nojekyll 文件没有真正部署到公开仓库之间。 这篇文章记录一下完整排查过程。 1. 问题现象(若想直接看如何解决可以跳转到7.最终解决)本地执行: npx hexo d 命令看起来可以正常执行,静态文件也会被推送到 GitHub Pages 仓库。 但是在 GitHub 仓库的 Actions 页面中,可以看到 pages build and deployment 失败,具体失败位置在 build 步骤,错误信息中出现了: Failed to download archive 'https://codeload.github.com/actions/jekyll-build-pages/...' An action could ...
AICompanion 开发日志 01:项目搭建与环境准备
发表于2026-05-26|项目实战
最近我开始做一个新的项目:AICompanion。它的目标是做一个运行在 Windows 电脑桌面上的 AI 聊天陪伴系统,未来也可能扩展到安卓端。 这个项目不只是普通聊天窗口,而是希望逐步实现一个更像“桌面伙伴”的系统:它可以拥有动漫角色设定,能记住聊天内容,有情绪状态,在我长时间没有回复时主动发消息给我,后续再加入 TTS 语音回复和 Live2D 角色展示。 这篇文章是这个系列的第 1 篇,主要记录项目从 0 到 1 的环境搭建和基础结构设计。 1. 项目目标AICompanion 当前的核心目标可以拆成几部分: 使用 PySide6 开发 Windows 桌面聊天窗口。 通过 API 调用大模型,实现多轮对话。 使用 SQLite 保存聊天记录、长期记忆和任务提醒。 加入情感系统,让角色回复不只是机械问答。 支持主动消息,例如用户长时间没回复时,角色可以主动问候。 后续加入 TTS 语音回复。 最终尝试接入 Live2D,让动漫角色可以根据情绪切换表情和动作。 我希望它最终不是一个“输入框 + 回复框”的简单工具,而是一个有角色感、有陪伴感、能长期相处的桌面 AI...
梯度下降法:机器学习如何一步步找到最优解
发表于2026-05-26|机器学习
在机器学习中,我们经常会说一句话:模型训练的目标,是让损失函数尽可能小(在深度学习中也经常使用梯度下降)。 但问题是:参数那么多,损失函数又可能很复杂,模型到底应该怎样找到那个“比较好”的参数呢? 梯度下降法就是最常用的答案之一。它的思想并不神秘:先站在一个位置,看哪里下降最快,然后朝那个方向走一小步;重复很多次以后,就逐渐接近损失函数的低谷(梯度下降就是通过多元求极值的方式来求最小值)。 1. 为什么需要梯度下降以线性回归为例,模型可以写成: $$\hat{y} = wx + b$$ 其中: $x$ 是输入特征。 $\hat{y}$ 是模型预测值。 $w$ 是权重。 $b$ 是偏置。 我们希望预测值 $\hat{y}$ 尽量接近真实值 $y$,因此可以使用均方误差作为损失函数: $$J(w, b) = \frac{1}{m}\sum_{i=1}^{m}(\hat{y}^{(i)} - y^{(i)})^2$$ 因为 $\hat{y}^{(i)} = wx^{(i)} + b$,所以也可以写成: $$J(w, b) = \...
交叉验证与网格搜索:让模型选择更可靠
发表于2026-05-25|机器学习
训练机器学习模型时,我们经常会遇到两个问题: 这个模型到底是不是真的好? 参数应该怎么选,比如 KNN 的 $K$、逻辑回归的正则化强度、决策树的最大深度? 如果只把数据随便分成一次训练集和测试集,然后看一次准确率,很容易被偶然性误导。交叉验证(Cross Validation)就是为了解决“评估不稳定”的问题;网格搜索(Grid Search)则是为了解决“超参数怎么选”的问题。 1. 为什么不能只划分一次数据假设我们有一份数据集,要判断一个模型效果如何。最常见的做法是: 训练集:用来训练模型 测试集:用来评估模型 这听起来很合理,但有一个问题:一次划分可能有运气成分。 如果测试集刚好比较简单,模型分数会偏高;如果测试集刚好比较困难,模型分数会偏低。也就是说,一次测试结果可能不能代表模型的真实水平。 可以把它想象成考试: 只考一张卷子,可能刚好考到你熟悉的题。 多考几张不同卷子,平均成绩才更接近真实水平。 交叉验证的思想就是:让模型多考几次,再看平均表现。 2. 什么是 K 折交叉验证K 折交叉验证(K-Fold Cross Validation)会把数据分成 ...
Hexo 如何实现源码私有、页面公开部署
发表于2026-05-24|Hexo
使用 Hexo 搭建博客时,我们通常会接触到两类文件: Hexo 源代码:Markdown 文章、主题配置、站点配置、脚手架、依赖文件等。 静态网页文件:Hexo 生成后的 HTML、CSS、JS、图片等,也就是访问者真正看到的网页。 如果把这两类文件都放在同一个公开仓库里,别人不仅能看到博客页面,也能看到你的 Markdown 原文、草稿结构、主题配置和提交历史。为了更好地管理博客,可以采用一种更清晰的方案:源码放私有仓库,网页放公开仓库。 1. 为什么要分开部署Hexo 的工作流程可以理解为: Hexo 源代码 | | npx hexo generate v 静态网页文件 | | npx hexo deploy v GitHub Pages 公开访问 访问者真正需要的是生成后的静态网页,并不需要看到你的 Hexo 源代码。 因此,更合理的结构是: 私有仓库:保存 Hexo 源代码 公开仓库:保存 hexo deploy 生成的网页文件 这样既能正常公开博客,又能避免源码仓库暴露。 2. public 和 privac...
逻辑回归:从直线到概率的分类算法
发表于2026-05-24|机器学习
逻辑回归(Logistic Regression)名字里有“回归”,但它最常用于分类任务,尤其是二分类问题(逻辑回归说白了就是在线性回归的基础上使用Sigmoid 函数将原先结果转为概率的形式,然后根据设定的阈值来判断是否是正类)。 它要回答的问题不是“这个样本的数值是多少”,而是“这个样本属于某一类的概率有多大”。例如: 一封邮件是垃圾邮件的概率是多少? 一个用户会不会点击广告? 一个肿瘤样本是恶性的概率是多少? 一个学生是否能通过考试? 逻辑回归的核心思想可以概括为一句话:先用一条直线算出一个分数,再用 Sigmoid 函数把这个分数压缩成 $0$ 到 $1$ 之间的概率。 1. 从线性回归说起在线性回归中,我们用一个线性函数预测连续值: $$z = wx + b$$ 如果是多个特征(w可以看作权重),可以写成: $$z = \mathbf{w}^{T}\mathbf{x} + b$$ 这里的 $z$ 可以理解为模型给样本打出的“原始分数”。 但是分类问题不能直接使用这个分数。比如判断一封邮件是不是垃圾邮件时,我们希望模型输出的是: $$P(y&...
线性回归:从直觉到最小二乘法
发表于2026-05-23|机器学习
线性回归(Linear Regression)是机器学习中最基础、也最常用的监督学习算法之一。它主要用于解决回归问题,也就是预测一个连续数值。 例如: 根据房屋面积预测房价。 根据学习时长预测考试分数。 根据广告投入预测销售额。 线性回归的核心思想很朴素:如果两个变量之间存在近似线性的关系,就可以用一条直线或者一个线性函数去描述这种关系,并用它来预测未知样本。 图中的蓝色点是训练数据,红色直线是拟合出的线性模型,灰色虚线表示预测值和真实值之间的误差。线性回归训练时,本质上就是在寻找一条让整体误差尽可能小的直线。 1. 线性回归的直觉假设我们想根据学习时长预测考试分数,已有数据如下: 学习时长/小时 考试分数 1 50 2 55 3 65 4 70 5 80 把这些点画到坐标系中,可以发现:学习时间越长,考试分数通常越高。虽然这些点不一定完全落在同一条直线上,但整体趋势接近一条向上倾斜的直线。 线性回归要做的事情,就是找到一条尽可能贴近这些数据点的直线: $$\hat{y} = wx + b$$ 其中: $x$ 表示输...
K 近邻算法:KNN(K-Nearest Neighbors)
发表于2026-05-19|机器学习
KNN(K-Nearest Neighbors,K 近邻)是一种非常直观的监督学习算法:一个样本属于什么类别,可以参考它在特征空间中最近的 $K$ 个邻居。 在分类任务中,KNN 通常采用“多数投票”:最近的 $K$ 个样本里哪个类别最多,就预测为哪个类别;在回归任务中,KNN 通常取最近 $K$ 个样本标签值的平均值或加权平均值。 1. KNN 的直觉可以把 KNN 想象成“向邻居打听答案”。 假设小区里新搬来一户人家,你想判断他们更像“高收入家庭”还是“普通收入家庭”。最直接的方式,是观察离他们最近的几户邻居:如果最近的 5 户里有 3 户都是高收入家庭,那么你可能会猜测这户新邻居也更接近高收入家庭。 机器学习里的 KNN 做的是类似的事情: 输入:一个尚未标记类别的新样本。 过程:在训练集中找到距离它最近的 $K$ 个已知样本。 输出:分类时进行多数投票,回归时进行平均或加权平均。 KNN 本质上没有显式的训练过程,它把训练数据保存下来,预测时再计算新样本与训练样本之间的距离。因此它也被称为惰性学习(Lazy Learning)。 2. 数学原理KNN 要解决两个核...
freertos中常用api总结
发表于2025-02-12|嵌入式
1. 任务管理 (Task Management) xTaskCreate(): 创建任务。 功能: 动态创建一个新的任务,并将其加入到 FreeRTOS 的任务调度器中。 常用场景: 在系统初始化阶段或运行时动态创建任务,用于执行不同的功能模块。 关键参数 : pvTaskCode: 指向任务函数的指针,任务代码的入口。 pcName: 任务名称,字符串形式,方便调试和追踪。 usStackDepth: 任务堆栈大小,以字 (word) 为单位,需要根据任务需求合理配置。 pvParameters: 传递给任务函数的参数,void 指针类型,可以传递任意类型数据。 uxPriority: 任务优先级,数值越大优先级越高,FreeRTOS 会根据优先级进行任务调度。 pxCreatedTask: 任务句柄指针,用于存储创建的任务句柄,后续操作任务时需要使用该句柄。 vTaskDelete(): 删除任务。 功能: 删除指定的任务。可以删除自身任务或其它任务。 常用场景: 任务执行完成后不再需要,或者需要动态管理任务生命周期时...
STM32根据DHT11温湿度分析城市相似度项目总结
发表于2025-02-04|嵌入式
所使用的模块与工具: STM32F103C8T6 DHT11温湿度传感器 ESP32WROOM(采用ESP-IDF) EMQX Serverless(MQTT Broker) TiDB Cloud(云数据库) 腾讯位置服务API 和风天气API 硬件层STM32Stm32Cubemx配置 使用引脚: PA10->D17(USART1_RX连到ESP32的D17) P9->D16(USART1_TX连到ESP32的D16) PB10->LED(用于测试系统是否正常运作,设置为GPIO_Output,推挽输出) PA0->DHT11 Do口(芯片左边标S的口,最右边有-的标志连GND,中间连VCC) Pinout&Configuration 由于硬件层面比较简单,就不采用DMA来传输了 SystemCore配置 GPIO PA0 GPIO output level: low(默认输出低电平) GPIO mode : Output Push Pull(推挽输出) GPIO Pull-up/Pull-down:No p...
stm32硬件实现与w25qxx通信
发表于2025-01-31|嵌入式
使用的型号为stm32f103c8t6与w25q64。 STM32CubeMX配置与引脚衔接根据stm32f103c8t6引脚手册,采用B12-B15四个引脚与W25Q64连接,实现SPI通信。 W25Q64 SCK(CLK) PB13 MOSI(DI) PB15 MISO(DO) PB14 CS(这里不采用硬件CS,所以接任意GPIO口都可以) PB12 STM32CubeMX配置这里对于时钟相关的配置就不做赘述了,由于是练习所以将系统时钟配置成了72MHz,主要是配置引脚。 在引脚配置将PB12配置为推挽输出,默认电平为高。 PB13,PB14,PB15均使用硬件的SPI。 可以在系统核心的GPIO中的SPI中看到这三个配置。 然后到SPI2中将参数配置,采用高位优先,波特率为18MB/s,若不是则需要调整Prescaler分频到18MB/s,传输以字节为单位。 这里先不开启中断,所以NVIC setting里面的中断没有选上,做好基础配置后就可以生成代码,点击GENERATE CODE。 在Src中就会...
STM32F103C8T6综合学习项目的具体功能实现详解
发表于2025-01-18
代码项目地址为stm32综合学习项目。 项目概述(详细可在项目的Project_Structure中查看)该项目基于STM32F103C8T6芯片,学习I2C,GPIO,ADC,EXTI,PWM等基础模块的使用,并通过模块化的方式使代码具有良好的可读性与健壮性。 准备的模块 OLED显示屏(I2C) 蜂鸣器模块(GPIO) 光敏电阻传感器(ADC) 热敏电阻传感器(ADC) MPU6050陀螺仪(I2C) 旋转编码器(EXTI+TIM) 舵机(PWM) LED指示灯(GPIO) 按钮(GPIO+EXTI) STM23F103C8T6芯片 文件结构设计硬件驱动层Hardware/ ├── OLED.c ├── OLED.h ├── OLED_Font.h ├── beeper.c ├── beeper.h ├── light_sensor.c ├── light_sensor.h ├── temp_sensor.c ├── temp_sensor.h ├── mpu6050.c ├── mpu6050.h ├── encoder.c ├── encoder.h ...
12…9
avatar
LsWorld
专注机器学习、深度学习与工程实践
文章
100
标签
74
分类
32
GitHub
公告
欢迎来到 LsWorld,这里记录机器学习学习路线、实验笔记和代码实践。
最新文章
Hexo 部署到 GitHub Pages 后构建失败:从 .nojekyll 到 ignore_hidden 的完整排查2026-05-26
AICompanion 开发日志 01:项目搭建与环境准备2026-05-26
梯度下降法:机器学习如何一步步找到最优解2026-05-26
交叉验证与网格搜索:让模型选择更可靠2026-05-25
Hexo 如何实现源码私有、页面公开部署2026-05-24
分类
  • C5
  • Flutter2
  • Hexo2
  • JavaScript1
  • TypeScript1
  • Vercel1
  • Vue4
  • Vue31
标签
GitHub Pages AICompanion 电路 C 应用层 VueRouter 内存管理 数据结构 基础 webpack 梯度下降 es6 总线 物理层 typeorm 进程与线程 中央处理器 输入输出管理 Vuex 输入输出系统 桌面应用 模型评估 计算机网络体系结构 监督学习 操作系统 踩坑 JSON 数制与编码 单片机 存储系统 flutter 数电 错误排查 Dart 复变函数 回归算法 javascript TypeScript 计算机网络 npm
归档
  • 五月 2026 8
  • 二月 2025 2
  • 一月 2025 10
  • 十二月 2024 1
  • 二月 2024 3
  • 一月 2024 6
  • 十二月 2023 14
  • 十一月 2023 6
网站信息
文章数目 :
100
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By LsWorld框架 Hexo 6.2.0|主题 Butterfly 5.5.5-b1