pytorch踩坑集
7.22
1.pd处理完后想转tensor
- 先x=data.to_numpy()转为numpy,再torch.tensor(x,dtype=float32)转为张量
2.标准化、归一化使用训练集的值进行,但是后来要测试的时候,仍然要使用训练集的量,而不能使用测试集的特征量,因为未知
3.使用batch优化:
- TensorDataset DataLoader实现
4.有时候batch小不一定可以优化
5.超参数试到不能再优化,就需要采用特征工程,选取相关度最高的几个特征????
不能迷信权重!!!!
- 挑选
# 1. 使用 model.parameters() 获取所有参数,next() 取第一个(即权重)
# .data 获取张量,.cpu() 移到 CPU,.numpy() 转数组,.flatten() 压平
weights = next(model.parameters()).data.cpu().numpy().flatten()
# 2. 计算权重的绝对值,并按降序排列获取索引
abs_weights = np.abs(weights)
top_indices = np.argsort(abs_weights)[::-1]
# 3. 打印 Top 10 特征
# 注意:请确保 feature_names 变量已经定义(如上一轮代码所示)
print("=== 影响最大的 Top 10 特征 ===")
for rank, idx in enumerate(top_indices[:10], 1):
print(f"Rank {rank}: {feature[idx]:<30} |index:{idx}| 权重: {weights[idx]:+.4f}")
6.iloc选列问题.iloc[:,[1,3,4,6]],pd.column选标签,
===========================================================================
7.23
1.pd的read_csv是读取人类可读文件。而torch.load()是读取如.pt文件等机器可读文件
2.当x_train与y_train非常大的时候,不要直接传入一个巨大的Tensor张量,OOM爆
解决方法:使用一个自定义的Dataset,直接处理还未张量化的x_train、y_train

浙公网安备 33010602011771号