Ubuntu中Python环境的配置
准备工作 & 核心原则 环境 系统:Ubuntu shell:zsh ⚠️ 核心注意事项:绝对隔离原则 操作系统中很多系统工具是依赖于系统的自带 Python(System Python)的,对它只看不摸。千万不要用系统 Python 去跑业务代码,也不要用 sudo pip install 往里面装包。 无论是使用现代的 uv 还是传统的 pyenv,核心目的都是为了实现环境的完全隔离。 方案一:现代极速方案(基于 uv,强烈推荐) uv 是一个由 Rust 编写的极速 Python 包和项目管理器。它可以一站式替代下文传统方案中的 pyenv、pipx 和 Poetry,且无需繁琐的系统级编译依赖。 1. 安装 uv (一体化工具) uv 会直接拉取预编译好的 Python 二进制文件,跳过漫长的源码编译过程。 123456# 下载并运行 uv 官方安装脚本curl -LsSf https://astral.sh/uv/install.sh | sh# 使环境变量立刻生效 (uv 会自动将路径写入你的 .zshrc)source ~/.zshrc 2. ...
Hexo 自动化部署:GitHub Actions 终极指南
1. 为什么选择 GitHub Actions? 解放双手: 告别繁琐的 hexo clean && hexo g && hexo d。 多端同步: 只要有浏览器,在公司电脑、iPad 或手机上直接修改 GitHub 里的 Markdown 文件,博客就会自动更新。 环境隔离: 不用担心本地 Node.js 版本升级导致博客跑不起来,GitHub 会每次提供一个干净的标准环境。 2. 准备工作 假设你的仓库分支结构如下(请务必确认): source 分支:存放博客源码(Markdown, _config.yml 等)。 main 分支:用于展示生成的网页(HTML)。 第一步:配置权限(一次性) 进入 GitHub 仓库,点击 Settings -> Actions -> General。 找到 Workflow permissions,勾选 Read and write permissions。 点击 Save。 第二步:创建自动化脚本 在你的本地博客根目录下,创建文件 .github/workflows/dep...
python笔记
模块 模块(module)是组织 Python 代码的单位。 模块拥有一个命名空间,其中可以包含任意的 Python 对象。例如:变量、函数、类、常量、甚至其他模块。 模块通过“导入(import)”被加载到 Python 程序中。 最基本的情况:模块 = 单个 .py 文件 例如你有一个文件: 1mymodule.py 内容是: 12def greet(): print("Hello") 你就可以在别的地方导入它: 12import mymodulemymodule.greet() 在这个意义上,模块就是单个 Python 文件。 进阶:包(package)是一种特殊的模块 当你有很多 .py 文件想组织在一起时,可以创建一个包。 包其实也是一种“模块”,只是它是一个文件夹而不是单个文件。 例如目录结构: 1234mypackage/ __init__.py utils.py models.py 你可以这样导入: 12import mypackage.utilsfrom mypackage import models 这里: ...
Pytorch中的张量
定义 张量(tensor)是一组具有多维度结构的数。维度的个数称为 阶(rank),通过tensor.dim()查看。张量的具体形状通过tensor.shape()查看。 索引方式 切片索引 像 python 的 list 和 numpy 的 array 一样,张量可以使用 start:stop 或 start:stop:step 这样的语法进行切片。stop 是不被包括在内的第一个元素。 123456789a = torch.tensor([0, 11, 22, 33, 44, 55, 66])print(0, a) # (0) Original tensorprint(1, a[2:5]) # (1) Elements between index 2 and 5print(2, a[2:]) # (2) Elements after index 2print(3, a[:5]) # (3) Elements before index 5print(4, a[:]) # (4) All elementsprint(5, a[1:5:2...
深度学习笔记(第二部分)
循环神经网络 (Recurrent Networks) 应用场景 之前 CNN 和 MLP 的输入和输出都只有一个,但实际问题中的输入和输出可能有多个。比如给图像加描述(one to many), 视频分类(many to one), 机器翻译(many to many),这些应用中可以使用循环神经网络。 当你处理的问题的输入或输出涉及到 序列 时候,可以使用循环神经网络。 循环神经网络可以对非序列型的数据比如图片进行序列化的处理。 基础概念 我们可以通过在每一个时间步应用一个递推公式来处理一系列向量xxx。 其中使用相同的权重矩阵WWW和状态更新函数fWf_WfW就可以处理任意长的序列。 在序列被处理过程中,RNN 有一个一直更新的内部状态。 ht=fW(ht−1,xt)h_{t}=f_{W} ( h_{t-1}, x_{t} ) ht=fW(ht−1,xt) 初始状态h0h_0h0被设置为全 0 或者通过学习得到。 RNN 实现 Vanilla RNN 一种 RNN 是"Vanilla RNN"。 ht=tanh(Whhht−1+...
深度学习笔记(第一部分)
线性分类器(Linear Classifiers) 线性分类器的缺点 解决方法之一:特征变换 优化(Optimization) w∗=argminwL(w)w^{*}=\operatorname{arg} \operatorname* {min}_{w} L ( w ) w∗=argwminL(w) SGD 对 gradient descent 进行 Stochastic 处理,每次迭代时候抽取一批样本而不是用全部样本用于参数更新来降低算力要求。 xt+1=xt−α∇f(xt)x_{t+1}=x_{t}-\alpha\nabla f ( x_{t} ) xt+1=xt−α∇f(xt) 123for t in range(num_steps): dw = compute_gradient(w) w -= learning_rate * dw 问题 SGD with Momentum SGD with Momentum 是为了克服 SGD 在收敛的过程中可能会停在 局部最小值 或者 鞍点 的问题,在这些点处梯度为 0,参数无法继续更新。 通过给...