model-pytorch
简单介绍模型实现过程中遇到的问题及相关内容。
让我安静会
这个作者很懒,什么都没留下…
展开
-
pycharm plot不显示的问题
fig.savefig('./pic.pdf' , format = 'pdf' , dpi = 550) # 输出pycharm使用matplotlib.pyplot不显示图形的问题:https://blog.csdn.net/baidu_39332177/article/details/119563886?default。原创 2022-11-04 19:31:21 · 4240 阅读 · 0 评论 -
[scipy] scipy.sparse.save_npz | csr_matrix | .todense()
,scipy.sparse进行存储,不能直接存储numpy形式。numpy需要转为csr等形式(转回numpy形式。原创 2022-09-06 11:14:26 · 654 阅读 · 0 评论 -
[pickle] 读取存储文件
pickle.dump(dict, f) 将字典存储成文件。pickle.load(f) 读取得到的是字典形式。原创 2022-08-26 21:43:43 · 511 阅读 · 0 评论 -
[Numpy] csr_matrix | .todense() | .tocoo() |
其中,数据是numpy形式,行和列是list,三者的长度要一致。行、列一起定位数据的坐标位置。没有数据、坐标的部分,默认为0。通过csr_matrix构建得到的是稀疏矩阵。将稀疏矩阵转为稠密矩阵。将稠密矩阵转为稀疏矩阵。...原创 2022-08-26 21:10:50 · 6253 阅读 · 1 评论 -
[自动调参] optuna
在原有代码上加,本质是,原本直接调用def train进行训练,加入之后,通过调用objective来调用def train进行训练,然后循环不同的参数进行训练。参考:原创 2022-07-09 19:54:12 · 139 阅读 · 0 评论 -
[数据处理] np.linspace
浅记录一下,有endpoint和没有时候,这个输出很迷,不过后续都可以通过long进行限定。参考:原创 2022-06-16 12:26:53 · 183 阅读 · 0 评论 -
[PyTorch] RuntimeError: CUDA out of memory | GPU多卡使用
在程序最开始:使用单卡(前面也只写一个GPU),将数据和模型放到GPU上:使用多卡,针对模型,进行并行化处理:原创 2022-06-06 20:41:33 · 1877 阅读 · 3 评论 -
[torch] torch.repeat维度复制
例子:先创建a:再创建b:将b进行repeat,得到c:b的维度是:[1,2,1,3]c = b.repeat(1,1,5,1)的含义是,在0维度重复1次,在1维度重复1次,在2维度重复5次,在3维度重复1次(重复1次,即不重复);相当于把b的这一维度的值复制1次复制给c。参考:torch.repeat 张量维度复制:https://www.csdn.net/tags/MtTaIgysODAyNDQ3LWJsb2cO0O0O.html...原创 2022-05-13 20:35:49 · 4700 阅读 · 0 评论 -
[数据处理] numpy转为csv文件 | 矩阵转为csv文件 | 稀疏矩阵的行列索引提取
numpy转为csv文件:matrix_pd = pd.DataFrame(matrix)matrix_pd.to_csv('./save.csv')矩阵转为csv文件:numpy.savetxt('new.csv', matrix, delimiter=',')稀疏矩阵稀疏矩阵中,行被压缩了,只有data(数据)、indices(列索引)、indptr(行偏移量)如果相对稀疏矩阵中非零数值的行、列进行提取,(debug时候打印可以看见,但是直接print并不完整)res_dict =原创 2022-05-11 17:23:52 · 1617 阅读 · 0 评论 -
[数据处理] list切片简单记录
>>> llllist= [1,2,3,4]>>> llllist[-1:] //只取最后1个[4]>>> llllist[:-1] //除了最后1个[1, 2, 3]>>> llllist[-3:] //取最近的3个[2, 3, 4]llllist[-1:] 从最后一个开始,到结束,因此只取最后1个。llllist[:-1] 从最开始到最后,因为【左开右闭】,所以除了最后1个。llllist[-3:] 从倒数原创 2022-05-02 15:11:15 · 335 阅读 · 0 评论 -
[PyTorch] 在windows下显示Linux中的tensorboard文件
简单记录tensorboard使用中的问题。tensorboard使用首先,使用conda命令安装后报错:TypeError: init() got an unexpected keyword argument ‘serialized_options’。使用pip命令安装后,问题解决,推荐用pip安装:pip install tensorboard随后:# 导入包from torch.utils.tensorboard import SummaryWriter# 定义writerwrit原创 2022-04-07 12:05:34 · 2870 阅读 · 1 评论 -
LHY-Tips for Training
课程链接:(Bilibili)https://www.bilibili.com/video/BV1Wv411h7kN/?spm_id_from=333.788.recommend_more_video(官网)https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.php视频内容一致,官网还包括了代码、PPT。最近回顾了李宏毅2021/2022春机器学习课程中的Tips for Training,简单做一个记录。4个部分:When Gradien原创 2022-03-21 11:24:56 · 813 阅读 · 0 评论 -
Optimizer 优化器
在import torch之后,torch.optim中包含了多种优化器,用于算法的优化,例如更新参数等。常见的优化器有SGD、Adam、Adagrad,需要参数传进去并优化,后续通过optimizer.step()可以实现每步训练完模型之后,都进行参数的优化更新。optimizer = torch.optim.Adam(model.parameters(), lr=0.01, weight_decay=0.01)optimizer = torch.optim.Adagrad(model.parame原创 2022-03-16 11:09:56 · 1499 阅读 · 0 评论 -
numpy切片(连续切片、不连续切片)
>>> a = np.arange(10).reshape(2,5)array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])>>> a[:1,:3]array([[0, 1, 2]])>>> a[:2,:3]array([[0, 1, 2]])>>> a[:,:3]array([[0, 1, 2]])>>> a[:,3] # 直接提取某一元素array([3]原创 2022-03-16 07:50:24 · 5879 阅读 · 1 评论 -
sklearn的归一化函数normalize
理论解释对于p-范数,对于x向量:向量x的p-范数为:因此,可得到L0、L1、L2范数分别为:L0范数是指向量中非0的元素的个数L1范数是指向量中各个元素绝对值之和L2范数是指向量各元素的平方和然后求平方根(开根号)L1范数可以进行特征选择,得到稀疏矩阵,仅仅有少量值为非0,这些就是提取出来的特征。L2范数可以防止过拟合,提升模型的泛化能力,得到的值很小,但不会到0。TiBA6K6p5oiR5a6J6Z2Z5Lya,size_20,color_FFFFFF,t_70,g_se,x_16原创 2022-03-15 22:08:48 · 6160 阅读 · 0 评论 -
nn.Parameter
Parameter本质也是一个tensor,同时作为参数可以被模型优化,在定义的时候,可以设置是否保存梯度。para= nn.Parameter(torch.Tensor(10, 20), requires_grad = True)para.requires_grad = False if (lr == 0) else True参考:PyTorch里面的torch.nn.Parameter():https://www.jianshu.com/p/d8b77cc02410理解torch.nn.P原创 2022-03-14 08:26:32 · 2392 阅读 · 0 评论 -
.scatter_函数
.scatter_函数放置元素或者修改元素。>>> x = torch.rand(2, 5)>>> xtensor([[0.6132, 0.8931, 0.7345, 0.6793, 0.6606], [0.0630, 0.1785, 0.7312, 0.6456, 0.6307]]) >>> torch.zeros(3, 5).scatter_(0, torch.LongTensor([[0, 1, 2, 0,原创 2022-03-11 12:26:20 · 1943 阅读 · 0 评论 -
.sh文件 $‘\r‘: 未找到命令
在 Linux下编译运行脚本的时候出现”/bin/bash^M: 坏的解释器: 没有那个文件或目录 (bad interpreter: No such file or directory)“这样的错误。解决方法:使用在终端输入 sed -i 's/\r$//' check_tool.sh 即可其中 check_tool.sh 为文件名,这里改成自己需要的即可。原因:跟系统有关。脚本文件在Windows下编辑过,在Windows下每一行结尾是\n\r,而在linux下是\n,sed -i 's/\原创 2022-03-10 17:32:33 · 3241 阅读 · 0 评论 -
划分数据集 TrainSet and TestSet
划分数据集进行测试的时候,注意不要在测试集上进行训练,即计算loss,更新梯度。参考:Machine Learning Crash Course-Training and Test Sets:https://developers.google.com/machine-learning/crash-course/training-and-test-sets/video-lecture?hl=zh_cn...原创 2022-03-06 17:23:19 · 328 阅读 · 0 评论 -
nn.Embedding
在使用nn.Embedding的时候最容易出现IndexError: index out of range in self错误,原因在于tensor中的值越界了。官方解释中:num_embeddings (int) – size of the dictionary of embeddingsembedding_dim (int) – the size of each embedding vector上述num_embeddings值通常是输入的数量值,因为输入通常从0开始编码,比如编码到0-499原创 2022-03-06 10:57:00 · 1883 阅读 · 0 评论 -
python 获取当前的时间 time()
from time import time # 引入time模块now = time()print "当前时间戳为:", now参考:Python 日期和时间:https://www.runoob.com/python/python-date-time.html原创 2022-03-04 16:44:17 · 1503 阅读 · 0 评论 -
logging.basicConfig()
logging用于输出运行日志,并保存成文件。日志一共分成5个等级,从低到高分别是:DEBUG ,INFO ,WARNING ,ERROR, CRITICAL.print输出所有信息,在保存的时候无法分类,而logging有多个等级,可以按等级保存不同的运行日志。参考:logging.basicConfig函数:https://blog.csdn.net/sinat_34166518/article/details/84028155python之logging.basicConfig:https原创 2022-03-04 16:33:37 · 464 阅读 · 0 评论 -
os.path.join()函数
os.path.join(‘123’,'456) # 123/456多个参数中间补“/”,组成完整路径。参考:os.path.join()函数:https://www.jianshu.com/p/3090f7875f9b原创 2022-03-02 21:03:55 · 178 阅读 · 0 评论 -
使用gc.collect()进行垃圾回收
import gcdel train, train_label, train_x, train_y, val_x, val_ygc.collect()垃圾回收开始的时候当前所有线程都将被挂起,开始收集托管堆上的垃圾,收集完了还要压缩内存,然后等待垃圾回收结束以后再恢复这些线程,从这个角度来说,还是少调用垃圾回收,但是不是不能调,要视情况而定。 【占用内存较多】将变量的引用删除后,进行内存回收。参考:Python使用gc模块进行垃圾回收:https://www.jianshu.com/p/b6原创 2022-03-01 10:16:03 · 10752 阅读 · 5 评论 -
Pytorch Tutorial - DNN模型训练流程
ML2021Spring-Pytorch Turial中的Overview of the DNN Training Procedure图太清晰啦,记录一下:1. Load Data需要对数据进行加载、处理,创建DataLoader,可以将整块数据用DataLoader类处理成小块batch_size形式,后续进行迭代循环,并输入到模型中进行训练。2. Define Neural Network随后定义自己的模型,并实例化。随后定义使用的Loss Function、优化器Optimizer。原创 2022-02-25 21:21:34 · 1708 阅读 · 0 评论 -
[pytorch] torch.max() 和 torch.argmax()
代码:outputs = model(inputs)_, train_pred = torch.max(outputs, 1) # get the index of the class with the highest probabilityoutputs是训练中,模型的输出值,是以tensor的形式存在,使用torch.max()函数,将其转换为预测值、预测值索引(看一下预测出的是哪些交互),后续方便与labels对比,从而求出准确率等指标。torch.max()函数values, indic原创 2022-02-28 22:37:06 · 1382 阅读 · 0 评论 -
[PyTorch] 设置随机种子
在使用模型进行训练的时候,通常为了保证模型的可复现性,会设置固定随机种子。参考代码:# fix random seeddef same_seeds(seed): torch.manual_seed(seed) # 固定随机种子(CPU) if torch.cuda.is_available(): # 固定随机种子(GPU) torch.cuda.manual_seed(seed) # 为当前GPU设置 torch.cuda.manual_seed_原创 2022-02-27 19:37:55 · 6665 阅读 · 0 评论 -
[Numpy] csv文件的加载、保存
加载csv文件csv.reader()【数据读取->list,numpy->tensor】# 数据处理需要的包import csvimport numpy as npwith open(PATH, 'r') as f: data = list(csv.reader(f)) # 使用csv.reader将文件读取进来,并转为list形式,方便后续处理 data = np.array(data[1:])[:, 1:].astype(float) # csv文件第一行常常为标原创 2022-02-27 10:42:13 · 1764 阅读 · 0 评论 -
[Pytorch] 模型的保存torch.save()与加载torch.load()
在模型训练和验证之后,可以把训练好的模型进行保存。后续进行测试的时候,可以直接加载模型进行测试。保存模型将模型保存下来,如果后续有数据了可以继续训练,或者直接加载进行测试。只保存模型的参数(一般只保存参数即可)torch.save(model.state_dict(), PATH) # 保存模型参数保存整个模型(较大)torch.save(model,PATH) # 保存整个模型加载模型只加载模型的参数(先创建模型、并加载参数,再恢复得到模型)model = MyMo原创 2022-02-27 10:22:36 · 2949 阅读 · 0 评论 -
[numpy] np.dot()
注意维度参考:[1] np.dot()使用方法:https://blog.csdn.net/skywalker1996/article/details/82462499原创 2019-07-12 16:02:43 · 108 阅读 · 0 评论 -
[Numpy] numpy.meshgrid() 生成网格点坐标矩阵
numpy.meshgrid():生成网格点坐标矩阵参考:[1] numpy.meshgrid()理解:https://blog.csdn.net/lllxxq141592654/article/details/81532855原创 2019-07-12 14:57:46 · 11704 阅读 · 0 评论 -
[Numpy] Transpose转置
Transpose是一个转置函数,允许花式·转。如图,这里原本的索引是(0, 1, 2)转置方式有:(0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)参考:[1] Transpose函数详解:https://blog.csdn.net/qq_37541097/article/details/81021549......原创 2019-07-11 15:21:30 · 4027 阅读 · 0 评论 -
[Numpy] 均值 |标准差
使用numpy对数据进行标准化(正则化)的时候,常使用下述两个函数:mean()std()例如:data = (data - data.mean(dim=0, keepdim=True))/data.std(dim=0, keepdim=True).mean() ,求均值dim=0(列) dim=1(行)keepdim=True 保持原来的维数;默认为False 不保持原来的维数.std(),求标准差参考:numpy中的mean()函数:https://blog.csdn.net原创 2022-02-25 10:55:49 · 791 阅读 · 0 评论 -
[Pandas] pandas.DataFrame.from_dict
pandas 0.24.2 documentation:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.from_dict.html相当于将数据重新排列。Examples当没有指定orient时,默认将key值作为列名。当指定orient=‘index’时,将key值作为行名。自......原创 2019-07-07 21:38:15 · 3988 阅读 · 0 评论 -
[数据处理][Pandas] .csv文件 提取行列 | 统计次数 | 读取文件
Pandas常用基本操作import pandas as pd1.loc 和iloc 提取行、列loc:通过具体索引来提取行;iloc:通过行号来提取行。iloc不管是有索引还是无索引都可以用iloc来提取,比如:data.iloc[:, [0, 1]] # [行,列]指,提取data文件的所有行的第0列和第1列。2. value_counts()统计有多少值,以及每个值的重复次数。3. pd.read_csv()读取文件。例如:path = open('../xx.csv')原创 2021-08-08 16:35:28 · 3141 阅读 · 0 评论 -
[Numpy] Variable、Tensor、Numpy的转换
Tensor与Numpy之间可以相互转换:代码:import torchimport numpy as npdata = np.array([[1,2,3,4,5],[6,7,8,9,10]])print(data)# numpy -> tensordata_tensor = torch.from_numpy(data)print(data_tensor)# tensor ...原创 2019-07-19 22:24:47 · 991 阅读 · 0 评论 -
[Pytorch] torchvision.transforms.ToTensor
PyTorch框架中有一个非常重要且好用的包:torchvision,该包主要由3个子包组成,分别是:torchvision.datasets、torchvision.models、torchvision.transforms。代码:import numpy as npfrom torchvision import transformsdata = np.random.randint(......原创 2019-07-19 21:00:17 · 3067 阅读 · 1 评论 -
[Pytorch] Transforms
在Pycharm输入transforms,快捷键Alt+Enter,可以导入包 from torchvision import transforms,在处理图像数据的时候通常需要对数据进行统一预处理,这时候可以使用这个工具。导入之后,快捷键Ctrl+p可以查看相应参数。transform=transforms.Compose(transforms.ToTensor(), transforms.Normalize((0.1307,),(0.3081,)))比如可以.ToTensor()统一转为Tens原创 2022-01-07 11:40:14 · 1473 阅读 · 0 评论 -
[Pytorch] DataLoader
加载数据、划分数据集(train-valid-test)、从数据集中创建dataloader。以ML2021Spring-hw1数据为例,代码如下:代码import csvimport numpy as np# 数据处理import torchfrom torch.utils.data import Dataset, DataLoaderclass Mydata(Dataset): def __init__(self): with open('Datasets/原创 2022-02-25 20:38:25 · 848 阅读 · 0 评论 -
[Anaconda] 安装cuda9.2版本的pytorch
想安装cuda9.2版的pytorch,从官网找到命令,但是一直安装的是cpu版本。后来,在下述网站发现,cuda9.2的pytorch的1.7.0只有linux有 没有windows的,于是手动下载cuda9.2对应的pytorch的1.5再对应安装。https://download.pytorch.org/whl/torch_stable.html下载.whi文件后,直接 pip install 即可.........原创 2022-01-26 19:40:50 · 3970 阅读 · 0 评论