随笔/杂记
随便写写记记
罗素茶壶:一个主张的不可证伪性,并不能成为相信它的理由。
爱是一场博弈,必须保持永远与对方不分伯仲、势均力敌,才能长此以往地相依相息。因为过强的对手让人疲惫,太弱的对手令人厌倦。 《简爱》
python函数参数确定
import inspect
# 假设你已经完成了model的实例化(如下是示例框架,需替换为你的实际代码)
from transformers import AutoModel
model = AutoModel.from_pretrained("OpenGVLab/InternVL3-1B")
# 方法1:使用 inspect.signature() 查看完整方法签名(含参数名、默认值等)
sig = inspect.signature(model.extract_feature)
print("=== extract_feature 方法完整参数签名 ===")
print(sig)
# 方法2:使用 inspect.getfullargspec() 查看详细参数结构(更细致的参数分类)
argspec = inspect.getfullargspec(model.extract_feature)
print("\n=== extract_feature 方法详细参数信息 ===")
print(f"所有参数列表:{argspec.args}")
print(f"可变位置参数(*args):{argspec.varargs}")
print(f"可变关键字参数(**kwargs):{argspec.varkw}")
print(f"默认参数值:{argspec.defaults}")
扩散模型的采样:去噪过程。
扩散模型
1. 训练阶段:给模型练「猜噪声」的本事
训练的唯一目标,就是把这个 UNet(或其他) 模型,训练成一个「噪声预测专家」:
我们有标准答案:正向加噪的时候,是我们手动给清晰图一步步加的高斯噪声,每一步x_t里的真实噪声ε,我们 100% 知道。
训练的逻辑:把带噪图x_t、时间步t输入模型,让模型输出它猜的噪声ε_θ,然后用「预测噪声和真实噪声的差距」(均方误差 MSE 损失函数),不断调整 UNet 的权重,让它猜噪声越来越准。
训练结束后,我们得到的唯一成果,就是一个权重固定、已经练会了精准预测噪声的 UNet 模型。
2. 去噪阶段:用这个练熟的模型,直接干活
去噪采样的时候,我们没有任何修改,直接把这个训练好的 UNet 拿来用:
我们没有标准答案了,只有一张随机生成的纯高斯噪声x_T(雪花屏)。
去噪的逻辑:把当前的带噪图x_t、时间步t输入这个已经练会猜噪声的 UNet,拿到它预测的噪声ε_θ,然后用 DDPM 的逆向公式,从x_t里减去这个预测的噪声,得到更清晰的x_{t-1}。
重复这个步骤 T 次,就从纯噪声一步步还原出了清晰的图片 / 视频。
python中,return embedding_matrix[token_ids],如果token_ids是一维数组和二维数组,分别会发生什么?
在Python中,embedding_matrix通常是一个二维数组(或张量),形状为 (vocab_size, embedding_dim),其中每一行对应一个词的嵌入向量。token_ids 是整数索引数组,用于从 embedding_matrix 中选取对应的行。
-
如果
token_ids是一维数组(形状为(seq_len,)),
那么embedding_matrix[token_ids]会返回一个形状为(seq_len, embedding_dim)的二维数组,其中第i行是token_ids[i]对应的嵌入向量。 -
如果
token_ids是二维数组(形状为(batch_size, seq_len)),
那么embedding_matrix[token_ids]会返回一个形状为(batch_size, seq_len, embedding_dim)的三维数组,即对每个批次中的每个位置,都取出对应的嵌入向量,保持索引的原始结构。
这两种情况都利用了NumPy/PyTorch等库的高级索引机制:输出数组的形状等于索引数组的形状加上被索引数组的剩余维度。
Python 内置的 list 类型没有高级索引机制
在 PyTorch 中,对于形状为 [B, T, D] 的张量 x 和一个形状为 [D, D] 的张量 W,执行 torch.matmul(x, W) 的结果形状为 [B, T, D]。
具体计算规则
torch.matmul 遵循批量矩阵乘法的规则:
将 x 视为一批形状为 (T, D) 的矩阵(共 B 个)。
将 W 视为一个形状为 (D, D) 的矩阵。
对每个批次中的矩阵与 W 进行矩阵乘法:(T, D) @ (D, D) → (T, D)。
最终输出保留批次维度 B,因此形状为 [B, T, D]

浙公网安备 33010602011771号