365天深度学习N2心得体会

这篇博客记录了作者使用深度学习进行N2任务的365天训练过程,详细展示了每个epoch的训练和验证精度及损失情况,最终模型在验证集上达到0.889的准确率。
摘要由CSDN通过智能技术生成
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值