随笔/杂记

随便写写记记

罗素茶壶:一个主张的不可证伪性,并不能成为相信它的理由。

爱是一场博弈,必须保持永远与对方不分伯仲、势均力敌,才能长此以往地相依相息。因为过强的对手让人疲惫,太弱的对手令人厌倦。 《简爱》


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]

posted @ 2025-10-28 23:26  wljss  阅读(23)  评论(0)    收藏  举报