在WSL2上配置Taichi运行环境

一、准备工作1、安装WSL2如果你还没有安装WSL2,可以参考以下步骤:启用WSL功能(要求为Windows10/11专业版以上)按Win + S搜索“PowerShell”,右键以管理员身份运行。输入以下命令启用WSL和虚拟机功能:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatfor…
数据科学与工程优化(七)

一、人工智能的历史与突破2017年:深度伪造(Deep Fake)技术流行,合成图像达到较高分辨率,但尚未商业化。2021年:DALL-E面世,首次实现“从文本生成图像”,训练数据为图像描述,规模尚小。2022年:ChatGPT发布,两个月后月活跃用户过亿,成为史上增长最快的消费级软件。2024年:SORA发布,能从文本生成高质量视频,极大影响创意产业。二、AI模型如何工作1、图像存储为张量(Tensor)一张彩色图片为三维张量(宽$\times$高$\times$颜色通道),每个像素有RGB三个整数值。形式化表示:对于一张$H\times W$的图片,…
数据科学与工程优化(Code II)

一、概述这个Python程序实现了经典的梯度下降算法和随机梯度下降算法,并在两个不同的优化问题上进行了比较实验:Rosenbrock函数和强凸二次函数。二、功能模块1、测试函数定义Rosenbrock函数函数: rosenbrock(w)描述: 经典的非凸优化测试函数,也称为"香蕉函数"数学表达式: f(x,y) = (1-x)² + 100(y-x²)²最优解: (1, 1)特点: 具有狭长的弯曲谷地,是测试优化算法性能的经典函数强凸二次函数函数: quadratic(w, a=10)描述: 强凸二次函数,具有良好的优化性质数学表达式: f(x,y) …
数据科学与工程优化(Code I)

本项目包含三个 MATLAB 脚本/函数文件,主要用于演示和实现最速下降法(Steepest Descent Method)在不同目标函数上的优化过程。适合用于数值优化、无约束优化方法的学习与实验。文件列表Steepest_descent_method.mRosenbrock_function.mScaled_quadratic_function.m一、Steepest_descent_method.m功能简介: 该脚本实现了最速下降法(带 Armijo 回溯线搜索),用于求解无约束优化问题。可选择优化 Rosenbrock 函数或缩放二次函数,并可视化…
数据科学与工程优化(六)

一、噪声地板(Noise Floor)问题背景在实际SGD(随机梯度下降)中,由于每次只用部分样本(甚至单样本)估计梯度,噪声地板(noise floor)不可避免:即SGD只能收敛到一个残差带(目标函数的最优值附近的宽区间),而非真正精确的最优点。这在大规模数据和非精确(有噪声)目标情况下尤其明显。二、降低噪声地板的三大方法方法一:动态步长(Dynamic Stepsize)基本思想:若每步步长 $\alpha_k$ 随迭代$k$递减,且满足$$ \sum_{i=0}^{\infty} \alpha_i = \infty,\quad \sum_{i=0…
数据科学与工程优化(五)

一、随机梯度下降法(SGD)背景许多机器学习与数据科学中的目标函数都具有求和结构:$$ \min_{x \in \mathbb{R}^n} f(x) = \frac{1}{m} \sum_{j=1}^{m} f_j(x) $$例如,$f_j(x) = \|a_j^T x - y_j\|^2$,$(a_j, y_j)$ 是数据点,$m$ 很大。标准梯度下降法每步需计算:$$ \nabla f(x_k) = \frac{1}{m} \sum_{j=1}^m \nabla f_j(x_k) $$计算复杂度高达 $O(mn)$,昂贵且不适合大规模问题。因此我们考…
数据科学与工程优化(四)

一、梯度法复杂度总结对于 $L$-光滑但非凸的 $f$,最速下降法(Steepest Descent)收敛速率为$$ O\left(\frac{1}{\sqrt{k}}\right) $$对于 $L$-光滑且凸的 $f$,$$ O\left(\frac{1}{k}\right) $$若 $f$ 还是 $\gamma$-强凸,则线性收敛速率$$ \left(1 - \frac{\gamma}{L}\right)^k $$二、重球法(Heavy Ball Method)1、适用范围适合凸二次型函数:$$ \min_{x \in \mathbb{R}^n} f…
数据科学与工程优化(三)

一、最速下降法最速下降法(Steepest Descent)用于求解无约束优化问题:$$ \min_{x \in \mathbb{R}^n} f(x) $$其中 $f: \mathbb{R}^n \to \mathbb{R}$ 是 $L$-光滑函数。算法通过迭代更新:$$ x_{k+1} = x_k + \alpha_k d_k $$$\alpha_k > 0$ 是步长(step length),在机器学习领域也常称为学习率(learning rate)。步长/学习率决定每次迭代沿搜索方向前进的距离,步长太小收敛慢,太大可能导致发散或振荡。两者本质…
数据科学与工程优化(二)

一、基本术语和模型考虑以下优化模型:$$ \min_{x \in \mathbb{R}^n} f(x) \quad \text{s.t.} \quad x \in F $$1、最小化点的定义局部极小点(local minimiser):$x^* \in F$,若存在 $\varepsilon > 0$,使得对所有 $x \in F \cap B_\varepsilon(x^*)$,有$$ f(x^*) \leq f(x) $$严格局部极小点(strict local minimiser):$x^* \in F$,若存在 $\varepsilon &…
数据科学与工程优化(一)

一、课程概述本课程主要讨论数据科学中的优化问题,包含以下内容:优化模型的基本形式与实际例子一阶迭代方法数据分析中的典型问题与优化方法二、为什么要用优化?在数据科学与机器学习中,很多问题都可以归结为优化问题。例如:回归问题数据补全问题数据结构检测降维问题数据分类问题这些问题通常涉及到参数的选择,使得模型对真实数据拟合得更好或者揭示数据的某种结构。三、优化模型的基本形式1、无约束优化模型$$ \min_{x \in \mathbb{R}^n} f(x) $$其中 $f$ 是光滑函数(本课程中指 $C^1$ (连续函数)且梯度 Lipschitz 连续)。2、…
简洁优雅的播放器——Meloria Music Player

💫 介绍 (description)这是一款为你精心打造的、功能丰富、界面美观的本地音乐播放器。运行于 Windows 平台,使用 Flutter 构建,使用 Dart / C++ 开发,采用 Material You 外观设计,带来流畅的原生体验。✨ 截图 (Screenshots)浅色模式表现深色模式表现音乐库页面分类页面🚀 特色功能 (Features)强大的音乐库:歌曲、专辑、艺术家等多维度浏览。轻松管理你的所有音乐文件。智能播放列表:自由创建、编辑和管理你的播放列表。记录最近播放,随时继续你的音乐之旅。沉浸式播放体验:设计精美的全屏播放器。支持…
常见激活函数表达式及其特性

1、Sigmoid 函数表达式:$$ \sigma(x) = \frac{1}{1 + e^{-x}} $$导数:$$ \sigma'(x) = \sigma(x)[1 - \sigma(x)] $$特性:输出区间:$(0, 1)$非线性,可微在$x \to +\infty$时趋近于1,$x \to -\infty$时趋近于0优点:将值压缩到$(0,1)$之间,适合做概率输出缺点:容易出现梯度消失问题,导致深层网络训练困难2、Softmax 函数表达式:对于输入向量$\mathbf{x} = (x_1, x_2, \ldots, x_n)$,第…
只使用Numpy实现MNIST手写数字分类

一、实验目的本实验旨在通过MNIST手写数字分类任务,深入理解和实践深度学习的基本概念与核心算法,具体目标如下:1、理解深度学习核心概念:(1)掌握神经网络(Neural Networks)的基本结构、前向传播和反向传播机制。(2)理解梯度下降(Gradient Descent)优化算法及其在参数更新中的作用。(3)掌握链式法则(Chain Rule)在计算梯度时的应用。(4)理解图像分类任务的基本流程,包括数据加载、预处理、模型训练、评估和预测。(5)熟悉损失函数(如交叉熵损失)的意义和计算方法。2、掌握NumPy手动实现技能:(1)能够仅使用NumP…
C/C++中各类运算符优先级

优先级运算符名称或含义使用形式结合方向1[]数组下标数组名\[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名 ->成员选择(指针)对象指针->成员名 2-负号运算符-表达式右到左 ~按位取反运算符~表达式 ++自增运算符++变量名/变量名++ --自减运算符--变量名/变量名-- *取值运算符*指针变量 &取地址运算符&变量名 !逻辑非运算符!表达式 (类型)强制类型转换(数据类型)表达式 sizeof长度运算符sizeof(表达式) 3/除表达式/表达式左到右 *乘表达式*表达式 …
指针与自由存储空间

[card title="声明" color="info"]文章内容来自于《C++ Primer Plus》,本文重新组织语言,选取书本部分内容重新组合。[/card]一、使用new来分配内存前面我们都将指针初始化为变量的地址;变量是在编译时分配的有名称的内存,而指针只是为可以通过名称直接访问的内存提供 了一个别名。指针真正的用武之地在于,在运行阶段分配未命名的内存以存储值。在这种情况下,只能通过指针来访问内存。在C语言中,可以用库函数malloc( )来分配内存;在 C++中仍然可以这样做,但C++ 还有更好的方法——new运算符。下面来试试这种新技术…