pytorch/神经网络
pytorch相关的内容与神经网络相关知识
呆萌的代Ma
这个作者很懒,什么都没留下…
展开
-
pytorch一维卷积与二维卷积含义及使用示例
卷积(Convolution)操作比较常见,是通过一个卷积核在特征图上的滑动,得到另一个特征图卷积操作通常被理解为提取局部特征以二维卷积为例,通常有以下三种模式:Full Mode:以卷积层最下角对齐输入的最上角,最后会导致输入维度 < 输出维度,其中浅色的地方一般是补0Valid Mode:从输入的最上角开始,最后输入维度 > 输出维度Same Mode:自适应匹配位置,使最终的输入维度 = 输出维度在pytorch里直接指定输入输出,而不需要指定模式一维卷积import原创 2022-05-16 09:08:39 · 5092 阅读 · 1 评论 -
NLP扎实基础5:TextCNN模型与Pytorch复现
TextCNN模型通过CNN卷积的思想对文本数据做处理,整个处理流程如下图所示:Pytorch复现"""TextCNN"""import numpy as npfrom torchtext.vocab import vocabfrom collections import Counter, OrderedDictfrom torch.utils.data import Dataset, DataLoaderfrom torchtext.transforms import VocabTra原创 2022-05-10 18:49:23 · 1193 阅读 · 5 评论 -
NLP扎实基础4:FastText模型与Pytorch复现
FastText模型原理整体流程如下:首先对文本预处理,分词后,对一个句子中的词做Ngram的聚合(比如示例中“我爱撸串”,不但每个词都有独立的token,词与词之间的组合也有专属token)将 词->token->embedding,每个句子都是一个特征图,输入到模型中FastText模型也很简单,对每个词的对应位置使用均值做池化操作(就是对应位置相加后求平均),然后这样就得到与词向量相同维度的句向量,最后接一个全连接即可FastText在分类问题上,最后全连接会输出一个预测la原创 2022-05-04 17:32:20 · 2325 阅读 · 9 评论 -
Torchtext 0.12+ API构造训练用DataLoader与词向量的Embedding(2)
torchtext的详细用法请参考上一期:Torchtext 0.12+新版API学习与使用示例(1)构造embedding的思路也很简单:把语料训练成torchtext对应的vocab然后对于输入的句子,进行如下转换:文本->vocab id->embedding(这里借助nn.Embedding进行转换)构造DataLoader之前要先构造DataSet,DataSet与DataLoader的基础内容请参考:使用Pytorch DataLoader快捷封装训练数据、测试数据的X与原创 2022-05-01 17:35:48 · 765 阅读 · 0 评论 -
解决导入torch报错from torch._C import xxxx
当使用import torch是,报错from torch._C import xxxx 与Symbol not found: _mkl_blas_caxpy或其他类似的报错解决方法pip uninstall torch # 卸载当前的pytorchpip install torch torchvision torchaudio # 重新安装问题解析找了一圈发现是版本不兼容的问题,之前可能pytorch没注意这个,现在更新后,重装一个即可,自动匹配版本,且解决了这个问题...原创 2022-04-24 17:16:19 · 4025 阅读 · 1 评论 -
使用Pytorch DataLoader快捷封装训练数据、测试数据的X与Y
DataSet的用法可以参考:pytorch 构造读取数据的工具类 Dataset 与 DataLoader (pytorch Data学习一)DataLoader的封装方法可以参考:Pytorch DataLoader一次性封装多种数据集(pytorch Data学习六)这里博主提供的是一个工具,整个封装流程是:构造DataSet用以定义数据集x与y的模板使用sklearn.datasets.make_regression生成回归任务的数据使用pytorch的Tensor格式封装产生的数据将原创 2022-04-12 20:14:58 · 1933 阅读 · 0 评论 -
pytorch使用早停策略
文章目录早停的目的与流程早停策略pytorch使用示例参考网站早停的目的与流程目的:防止模型过拟合,由于深度学习模型可以无限迭代下去,因此希望在即将过拟合时、或训练效果微乎其微时停止训练。流程如下:将数据集切分为三部分:训练数据(数据量最多),验证数据(数据量最少,一般10%-20%左右即可),测试数据(数据量第二多)模型通过训练集,得到训练集的LosstrainLoss_{train}Losstrain然后模型通过验证集,此时不是训练,不需要反向传播,得到验证集的LossvalidLo原创 2022-04-09 14:48:30 · 6270 阅读 · 5 评论 -
Pytorch DataLoader一次性封装多种数据集(pytorch Data学习六)
Pytorch的DataLoader不能够直接达到这个效果,必须要借助DataSet来实现DataSet的用法可以参考:pytorch 构造读取数据的工具类 Dataset 与 DataLoader (pytorch Data学习一)示例代码from torch.utils.data import Dataset, DataLoaderimport numpy as npclass MyDataSet(Dataset): def __init__(self): samp原创 2022-04-09 10:08:54 · 1741 阅读 · 0 评论 -
HuggingFace学习2:使用Bert模型训练文本分类任务
数据集如下:为数据起个名字:bert_example.csv"a stirring , funny and finally transporting re imagining of beauty and the beast and 1930s horror films",1apparently reassembled from the cutting room floor of any given daytime soap,0"they presume their audience wo n't s原创 2022-03-28 15:55:28 · 3729 阅读 · 4 评论 -
pytorch封装Dataset——封装一般的DataLoader与可迭代的DataLoader(pytorch Data学习五)
可迭代的DataLoader可以参考:pytorch构造可迭代的DataLoader,动态流式读取数据源,不担心内存炸裂(pytorch Data学习三)一般DataLoader封装:使用如下方法即可:dataloader = DataLoader(dataset, batch_size=3)# 使用方法for data in dataloader: print(data)示例代码:import numpy as npimport torchimport torch.utils原创 2022-03-28 15:03:05 · 1219 阅读 · 0 评论 -
解决python调试模型时,多次重复加载数据集与模型,节约大量等待时间
思路/流程请参考:配置python程序debug/run,避免每次运行都会重复加载数据集或模型,节约大量等待时间整体思路使用轻量级的后端框架flask运行要加载的模型,作为后端,保持在后端运行调用程序时直接使用url访问即可加载数据示例代码加入需要flask将一份数据集加载到内存中,以便快速读取:首先配置flask:from flask import Flask, requestimport pandas as pdapp = Flask(__name__)df = pd.rea原创 2022-02-17 08:02:36 · 2026 阅读 · 0 评论 -
配置python程序debug/run,避免每次运行都会重复加载数据集或模型,节约大量等待时间
文章目录整体思路完整代码参考文章整体思路使用flask运行要加载的模型,作为后端调用程序时直接使用url访问即可完整代码参考文章GET and POST requests using Python:https://www.geeksforgeeks.org/get-post-requests-using-python/...原创 2022-02-14 14:15:40 · 2492 阅读 · 3 评论 -
pytorch得到梯度计算结果
借助pytorch可以很方便的计算梯度,但需要明确的是:只有float类型的Tensor才可以只有最后是一个标量才可以求导,就是最后的值只有大小,不能自带方向文章目录逐步计算梯度完整代码参考文章逐步计算梯度首先构造一个Tensorimport torchvalue_list = [1, 2, 3, 4]x = torch.tensor(value_list, requires_grad=True, dtype=torch.float64)判断能否求导:x.requires_gra原创 2022-02-12 15:18:21 · 1791 阅读 · 0 评论 -
pytorch自定义loss损失函数
自定义loss的方法有很多,但是在博主查资料的时候发现有挺多写法会有问题,靠谱一点的方法是把loss作为一个pytorch的模块,比如:class CustomLoss(nn.Module): # 注意继承 nn.Module def __init__(self): super(CustomLoss, self).__init__() def forward(self, x, y): # .....这里写x与y的处理逻辑,即loss的计算方法原创 2022-02-10 17:27:27 · 11238 阅读 · 6 评论 -
Pytorch使用Tensorboard记录loss曲线 (Tensorboard学习二)
关于Tensorboard的基本使用方法可以参考:Pytorch 配置 Tensorboard 可视化学习(一)对于一个基本模型:import torchimport torch.nn as nnclass LinearRegressionModel(nn.Module): def __init__(self, input_shape, output_shape): super(LinearRegressionModel, self).__init__()原创 2022-01-07 11:55:54 · 8171 阅读 · 5 评论 -
缺失值填充5——AutoEncoder填充序列缺失值
AutoEncoder可以参考:pytorch实现基本AutoEncoder与案例AutoEncoder填充缺失值的思路是:在完整的数据集上训练一个AutoEncoder把有缺失的数据拿过来,先全零填充原有的值,再通过AutoEncoder得到结果将得到的结果对应填充到原有的缺失数据上背后的理由是,数据压缩后已经很好的掌握了原有数据的一些规律,才能很好的复原。借助这种规律来反推出缺失值,这就是AutoEncoder的有效性的来源。示例代码import torchimport torch.原创 2021-12-29 12:02:12 · 1637 阅读 · 0 评论 -
pytorch修改tensor的维度(修改为任意维度,或单纯的增减维度)
文章目录1. 修改为任意维度确保修改前后数据量一致:view() / reshape()修改前后数据量可以不一致: resize_()2. 单纯的增减维度1. 修改为任意维度一般使用两个函数:view()/reshape()或resize_()函数确保修改前后数据量一致:view() / reshape()import torch# 自定义维度(变换前后的数据总量必须一致)my_tensor: torch.Tensor = torch.rand((3, 4, 5, 6))my_tensor原创 2021-11-08 09:40:24 · 7686 阅读 · 0 评论 -
使用Transformers离线模型(以bert模型为例)
首先需要安装transformers:pip install transformers以bert-base-uncased为例,进入网站:https://huggingface.co/bert-base-uncased/tree/main,可以看到这个模型的所有文件,包括使用pytorch与tensorflow的模型。我是用的是pytorch,因此下载这里的3个文件:config.jsonpytorch_model.binvocab.txt把它们放在同一个文件夹中,然后写一个测试小demo原创 2021-10-06 15:47:18 · 5934 阅读 · 4 评论 -
pytorch测试模型时根据不同列别的概率值得到具体的分类
pytorch 分类任务的教程:https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html主要使用的是:_,predict = torch.max(out.data,1)最后的predict就是预测的类别了原创 2021-09-08 15:10:51 · 575 阅读 · 0 评论 -
torchtext处理文本数据——将文本变为embedding(学习三)
这篇博客是在之前的基础上构建完整的将 文本-> 下标->embedding之前的完整代码from torchtext import dataimport torchdef split_tokenize(x): # 传入的x就是一个格子的文本 return x.split(' ') # 按空格切分def country_tokenize(x): # 这是专门处理国家字段,不分词直接返回结果 return x # 比如传入United Kingdom,我们不原创 2021-08-31 11:01:02 · 1255 阅读 · 0 评论 -
pytorch将Tensor转为list
import torchvalue = torch.Tensor([1, 2, 3])print("list:", value.tolist())得到:list: [1.0, 2.0, 3.0]原创 2021-08-31 10:34:09 · 29620 阅读 · 0 评论 -
torchtext处理文本数据——构造dataset读取文本(学习一)
pytorch使用torchtext模块处理文本的思路不太容易上手,基本的思路是:定义每一列该如何处理每一个单元格的数据,这个叫做tokenize比如单元格里是个句子,那么我们按空格切分;那如果是中文我们要用jieba分词器…定义每一列该如何处理这一列的数据,这个叫做Field比如我们指定这一列用什么样的tokenize,在每一个句子的开头结尾添加标识符,或者我们指定这一列数据是文本、数字、日期等等构造dataset:按照模板构造就行,可以用data.TabularDataset构造,原创 2021-08-29 09:42:26 · 2042 阅读 · 0 评论 -
注意力机制学习(二)——空间注意力与pytorch案例
文章目录一、空间注意力机制简介二、空间注意力与pytorch代码三、使用案例一、空间注意力机制简介空间注意力的示意图如下:长条的是通道注意力机制,而平面则是空间注意力机制,可以发现:通道注意力在意的是每个特怔面的权重,而空间注意力在意的是面上每一个局部的权重。二、空间注意力与pytorch代码class SpatialAttention(nn.Module): def __init__(self, kernel_size=7): super(SpatialAttentio原创 2021-08-26 10:43:24 · 12734 阅读 · 2 评论 -
注意力机制学习(一)——通道注意力与pytorch案例
文章目录一、通道注意力机制简介二、通道注意力机制pytorch代码1. 单独使用通道注意力机制的小案例一、通道注意力机制简介下面的图形象的说明了通道注意力机制二、通道注意力机制pytorch代码通道注意力机制的pytorch代码如下:import torchimport torch.nn as nnimport torch.utils.data as Dataclass ChannelAttention(nn.Module): def __init__(self, in_pla原创 2021-08-26 10:18:06 · 9643 阅读 · 12 评论 -
linux安装pytorch-GPU版本
1. 查看cuda版本:ls -l /usr/local | grep cuda得到如下结果:lrwxrwxrwx 1 root root 21 12月 20 2019 cuda -> /usr/local/cuda-10.2/drwxr-xr-x 18 root root 4096 12月 20 2019 cuda-10.2说明cuda是10.2版本2. conda安装pytorch-GPU首先参考官网的命令:https://pytorch.org/get-started/原创 2021-08-22 16:14:45 · 1750 阅读 · 0 评论 -
pytorch Embedding模块,自动为文本加载预训练的embedding
pytorch 提供了一个简便方法torch.nn.Embedding.from_pretrained,可以将文本与预训练的embedding对应起来:词embeddingword10,2,3,4word21,2,3,4word32,2,3,4……使用方法就是:首先有一个预训练的embedding列表:torch.Tensor([ [0, 2, 3, 4], [1, 2, 3, 4], [2, 2, 3, 4], [3, 2, 3, 4],原创 2021-08-20 09:34:51 · 2155 阅读 · 3 评论 -
pytorch使用masked掩盖某些值(筛选值)
mask主要用来根据一定条件,筛选出一部分值来。基本案例import torchx = torch.randn(3, 4)mask_1 = x.ge(0.5) # 大于0.5的为True,小于0.5的值为Falsemask_2 = torch.BoolTensor( [ [True, False, True, False], [False, True, False, True], [True, False, True, False]原创 2021-08-18 09:12:27 · 1221 阅读 · 0 评论 -
多进程IterableDataset流式读取数据的坑:每个进程会读取一遍完整数据
构建流式读取DataLoader的方法可以参考:pytorch构造可迭代的DataLoader,动态流式读取数据源,不担心内存炸裂(pytorch Data学习三)使用如下方法构造DataLoader,如果num_workers设置为N,就会在每个for data in data_source循环内一共遍历N * dataset数据集的全部数据次。from step_1_parama_test import MyIterableTrainDatasetimport torch.utils.data a原创 2021-08-17 09:06:58 · 1627 阅读 · 2 评论 -
pytorch搭建TextCNN与使用案例
TextCNN算法流程整体流程是将词拼接在一起,一句话构成一个特征图根据卷积核得到多个特征向量每个特征向量全局池化,选最大的特征作为这个特征向量的值拼接特征值,得到句子的特征向量全连接后得到目标维度的结果完整代码#!/usr/bin/env Python# coding=utf-8import torchimport torch.nn as nnimport torch.utils.data as Dataimport torch.nn.functional as Fcl原创 2021-08-16 10:10:05 · 761 阅读 · 0 评论 -
pytorch构造IterableDataset,流式读取文件夹,文件夹下所有大数据文件,逐个文件!逐行读取!(pytorch Data学习四)
我有个文件夹,里面有一万个文件,每个文件都是N个T的容量,那么这就需要**逐个文件、逐行读取**,读取方法如下:# 核心:构造IterableDatasetIterableDataset需要设置两个东西,一个是```__init__```,一个是文件的路径列表```pyclass MyIterableDataset(IterableDataset): def __init__(self, file_list): super(MyIterableDataset, self原创 2021-08-15 17:53:58 · 3113 阅读 · 2 评论 -
pytorch保存模型运行时状态,记录点checkpoint
文章目录保存加载案例保存torch.save({ 'epoch': epoch, # 保存迭代次数 'model_state_dict': model.state_dict(), # 模型的状态 'optimizer_state': optimizer.state_dict(), # 优化器的状态}, 'checkpoint') # 路径,这里每次保存都会覆盖掉checkpoint文件当然字典里可以保存任意的内容,路径也可以根据epoch不同而改变还有一种写法:tor原创 2021-08-12 09:54:40 · 755 阅读 · 0 评论 -
pytorch使用Ray-tune对原有训练模型的代码改写,自动调参(一)
借助Ray-tune可以对pytorch自动调参,下面就一步步地改写,从原始的训练代码慢慢变为可以自动调参的代码的教程• 保姆级:安装依赖pip install -i https://mirrors.aliyun.com/pypi/simple/ 'ray[default]'注意安装的内容是'ray[default]',因为后来的各版本代码有调整,因此统一指定成了这种安装方式,否则代码运行中会有各种warnning。pytorch模型自动调参为了增加学习效率,这里举一个没有加任何额外的buff的原创 2021-08-11 10:54:02 · 3645 阅读 · 4 评论 -
pytorch构造可迭代的DataLoader,动态流式读取数据源,不担心内存炸裂(pytorch Data学习三)
构造迭代读取的Dataloader,首先需要可迭代的DataSet,这一部分详细请参考:pytorch构造可迭代的Dataset——IterableDataset(pytorch Data学习二),下面直接开始封装到DataLoader中文章目录封装IterableDataset到DataLoader1. 一般文本封装方法2. pandas read_xxx封装方法封装IterableDataset到DataLoader1. 一般文本封装方法由于DataLoader得到的迭代数据都是Tensor格式原创 2021-07-30 13:48:17 · 2010 阅读 · 0 评论 -
pytorch构造可迭代的Dataset——IterableDataset(pytorch Data学习二)
如果是可以一次性加载进内存的数据,上一篇博客:pytorch 构造读取数据的工具类 Dataset 与 DataLoader (pytorch Data学习一),已经足以应付了,但是很多时候数据集较大,比如6个T…的数据,没办法直接加载,因此这篇博客先学习构建一个可迭代的数据Dataset:文章目录MyIterableDataset构造1. 迭代读取文本文件2.借用pandas迭代读取csv/excel等文件MyIterableDataset构造1. 迭代读取文本文件要借助pytorch的Itera原创 2021-07-30 13:17:20 · 11258 阅读 · 1 评论 -
pytorch搭建TextRNN与使用案例
文章目录生成训练数据构建TextCNN开始训练构建训练数据集训练三件套:模型,loss,优化器开始训练完整代码生成训练数据这里使用随机数生成训练数据,大家在自己写的时候只需要替换这里就OK了:def get_total_train_data(word_embedding_size, class_count): """得到全部的训练数据,这里需要替换成自己的数据""" import numpy as np x_train = torch.Tensor(np.random.rand原创 2021-07-29 22:28:57 · 500 阅读 · 0 评论 -
解决pytorch CrossEntropyLoss报错RuntimeError: 1D target tensor expected, multi-target not supported
解决方法CrossEntropyLoss(预测值,label)需要的输入维度是:有batch时,预测值维度为2,size为[ batch_size, n ]时,label的维度是1,size为[ batch_size ]没有batch时,预测值的维度为2,size为[ m, n ],label的维度是1,size为[ m ]问题解析一个案例即可说明:import torchimport torch.nn as nnimport numpy as npa = torch.tensor(原创 2021-07-29 22:19:43 · 3201 阅读 · 1 评论 -
pytorch 保存、加载模型
一般保存为.pt格式,保存模型使用:torch.save(model, '保存位置')加载模型使用:model_load = torch.load('加载模型的位置')完整代码import torchimport torch.nn as nnclass LinearRegressionModel(nn.Module): def __init__(self, input_shape, output_shape): super(LinearRegressionMod原创 2021-07-19 08:50:18 · 516 阅读 · 0 评论 -
Pytorch 配置 Tensorboard 可视化学习(一)
安装pip install -i https://mirrors.aliyun.com/pypi/simple/ tensorboard使用案例新建一个python的文件,写入:from torch.utils.tensorboard import SummaryWriterimport timeimport randomwriter = SummaryWriter(log_dir='./' + time.strftime('%y-%m-%d_%H.%M', time.localtime(原创 2021-07-18 10:59:37 · 792 阅读 · 0 评论 -
pytorch 构造读取数据的工具类 Dataset 与 DataLoader (pytorch Data学习一)
基本思路所有的数据都叫Dataset加载数据的叫DataLoader每次加载多少条数据叫batch_size所以构造训练数据的步骤是:首先把数据加载为Dataset,然后用DataLoader依次把数据传递到模型中即可全部代码import torchimport numpy as npfrom torch.utils.data import Dataset, DataLoaderclass MyDataset(Dataset): def __init__(self):原创 2021-07-17 15:54:46 · 997 阅读 · 0 评论 -
pytorch根据特征图训练LSTM Stacked AutoEncoder
文章目录步骤一:构造训练数据步骤二:构造LSTM模型构造三:构建训练数据构造建模三件套步骤四:训练模型并保存全部代码步骤一:构造训练数据def get_train_data(cluster_shape=(2000, 50)): """得到训练数据,这里使用随机数生成训练数据,由此导致最终结果并不好""" def get_tensor_from_pd(dataframe_series) -> torch.Tensor: return torch.tensor(dat原创 2021-07-17 15:03:22 · 653 阅读 · 0 评论