import torch import torch.nn as nn import torchvision,time from torchvision import transforms,datasets from torch.utils.data.dataset import random_split from torchtext.data.functional import to_map_style_dataset import os,PIL,pathlib,warnings warnings.filterwarnings('ignore') device=torch.device('cuda' if torch.cuda.is_available() else 'cpu') print(device) import pandas as pd train_data=pd.read_csv(r'D:\BaiduNetdiskDownload\深度学习N2\train.csv',sep='\t',header=None)#sep指定分隔符,用\t区分 print(train_data.head()) def coustom_data_iter(texts,labels): for x,y in zip(texts,labels): yield x,y train_iter=coustom_data_iter(train_data[0].values[:],train_data[1].values[:]) print(train_data[0].values[0],train_data[1].values[0]) #输入进入train_iter的是数据第0列所有内容,以及第一列所有内容,如果values[:]改为values[0]则是第一行数据的内容和标签 #我对于train_iter,理解为是将数据转化成可以一行行按照文本和标签的形式进行读取的一个数据集形式 from torchtext.data.utils import get_tokenizer from torchtext.vocab import build_vocab_from_iterator import jieba tokenizer=jieba.lcut def yield_tokens(data_iter): for text,_ in data_iter: yield tokenizer(text) #yield_tokens可以理解为创建了一个分词器,将内容语句切分成单词 vocab=build_vocab_from_iterator(yield_tokens(train_iter),specials=['<unk>']) #specials=['<unk>']可以理解为字典中没有的词,用unk进行标记,此时的vocab可以理解为将单词转化为数字 print(vocab.set_default_index(vocab['<unk>'])) example=vocab(['我','想','看','和平','精英','上','战神','必备','技巧','的','游戏','视频']) print(example) #example,将切割好的单词转化为数值 label_name=list(set(train_data[1].values[:])) print(label_name) #将文本标签转化为列表 text_pipeline=lambda x:vocab(tokenizer(x)) label_pipeline=lambda x:label_name.index(x) #可以将text_pipeline和label_pipeline看成是一个函数,第一个是将语句转化成对应的vocab数字词典索引,第二个是将标签转化为对应的标签列表索引,也就是两者都是将各自的内容输入,输出数字组和索引 print(text_pipeline('我想看和平精英上战神必备技巧的游戏视频')) print(label_pipeline('Video-Play')) from torch.utils.data import DataLoader def collate_batch(batch): label_list,text_list,offsets=[],[],[0] for(_text,_label) in batch: label_list.append(label_pipeline(_label)) processed_text=torch.tensor(text_pipeline(_text),dtype=torch.int64) text_list.append(processed_text) offsets.append(processed_text.size(0)) #offsets表示偏移量,意思就是语句的词汇总量 label_list=torch.tensor(label_li
365天深度学习N2心得体会
最新推荐文章于 2024-07-09 22:56:30 发布
![](https://img-home.csdnimg.cn/images/20240709112858.png)