首页 > 其他分享 >第一周-transformer详解

第一周-transformer详解

时间:2024-01-15 09:44:05浏览次数:23  
标签:transformer 第一周 TEXT torch torchtext 详解 import txt data

 第一周-transformer详解

一、搭建教程的环境

49. 3.1使用Transformer构建语言模型-第1步_哔哩哔哩_bilibili

1 安装conda

详解见blogs

2 创建python指定环境

$conda create -n myenv python=3.6.6

$conda activate myenv

3 创建指定的torch环境

$conda install pytorch=1.3.1 -c pytorch

  其中-c 表示从官方的pytorch通道

二、构建数据集

导入wikiText-2数据集

 数据集来源

 

import math
import torch
import torch.nn as nn
import torch.nn.functional as F
import torchtext

# 获取英文分词器,远比空格分词复杂
from torchtext.data.utils import get_tokenizer
from pyitcast.transformer import TransformerModel
# 构建预料域-即存放语料的数据结构-包含分词器
# 按照语料域来获取wikitext-2 -> train, test
# 构建词汇表,以及统计词汇
# from torchtext.legacy.data import Field
from torchtext.data import Field

print("set device===")
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
def vocab_from_wikitext2():
    print(111)
    tokenizer = get_tokenizer("basic_english")
    print(torchtext.data)
    TEXT = Field(tokenize=tokenizer,
                 init_token="<sos>",
                 eos_token="<eos>",
                 lower=True)

    train_txt, val_txt, test_txt = torchtext.datasets.WikiText2.splits(TEXT)
    print(test_txt.examples[0].text[:10])

    TEXT.build_vocab(train_txt)
    # vocab = '₤': 28780, '⅔': 28781, 'ストップ': 28782, '戦場のヴァルキュリア3': 28783, '攻殻機動隊': 28784})
    # print(TEXT.vocab.stoi)
    return train_txt, val_txt, test_txt
    pass


def batchify(data, bsz):
    # 使用TEXT的numericalize函数映射成对应的连续数字。
    data = TEXT.numericalize([data.examples[0].text])
    nbatch = data.size(0)//bsz
    data = data.narrow(0,0, nbatch*bsz)
    # 使用t() 转置后一定要分配连续内存
    data = data.view(bsz,-1).t().contiguous()
    return data.to(device)
    pass




vocab_from_wikitext2()
View Code

 

问题

问题1:老版本的torchtext无Field

AttributeError: module 'torchtext.data' has no attribute 'Field'

标签:transformer,第一周,TEXT,torch,torchtext,详解,import,txt,data
From: https://www.cnblogs.com/lx63blog/p/17963445

相关文章

  • ss命令使用详解
    ss获取socket统计信息补充说明ss命令 用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。当服务器的socket连接数量变得非常大时......
  • 布隆过滤器详解——转载自IT老暖男
    前言我们之前讲了Redis的缓存雪崩、穿透、击穿。在文章里我们说了解决缓存穿透的办法之一,就是布隆过滤器,但是上次并没有讲如何使用布隆过滤器。作为暖男的老哥,给你们补上,请叫我IT老暖男。什么是布隆过滤器布隆过滤器(BloomFilter),是1970年,由一个叫布隆的小伙子提出的,距今已......
  • 【CV】图像分割详解!
    图像分割是计算机视觉研究中的一个经典难题,已经成为图像理解领域关注的一个热点,图像分割是图像分析的第一步,是计算机视觉的基础,是图像理解的重要组成部分,同时也是图像处理中最困难的问题之一。所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交......
  • 网络地图服务(WMS)详解
    目录1.概述2.GetCapabilities3.GetMap4.GetFeatureInfo阅读本文之前可参考前文:《地图服务器GeoServer的安装与配置》与《GeoServer发布地图服务(WMS、WFS)》。1.概述经过前文的介绍,相信我们对WMS/WFS服务已经有了一个非常直观的认识,最起码我们知道了地图服务的数据从何而来,又是......
  • 【愚公系列】2024年01月 WPF控件专题 ProgressBar控件详解
    ......
  • NGINX 路由配置与参数详解(https配置、跨域配置、socket配置)
    目录一、概述二、https配置1)获取SSL证书2)安装SSL证书3)Nginx配置修改4)重新加载Nginx配置三、nginx跨域配置四、nginxsocket配置五、NGINX路由配置1)基本的URI匹配2)nginx中斜杠(/)1、location以斜杠结尾,proxy_pass不以斜杠结尾2、location不以斜杠结尾,proxy_pass......
  • 详解Spring事件监听
    第1章:引言大家好,我是小黑。今天咱们来聊下Spring框架中的事件监听。在Java里,事件监听听起来好像很高大上,但其实它就像是我们日常生活中的快递通知:当有快递到了,你会收到一个通知。同样,在程序中,当某些事情发生时(比如用户点击了按钮),系统会发送一个事件,然后监听这个事件的处理器就会......
  • Linux通配符的使用详解
    一、简介一般生产环境的服务器默认都是不安装图形化界面的,习惯了在命令行环境下工作是,大家会发现:命令行操作效率比图形化界面效率高很多。由命令行环境中,我们不能直观地看到一些文件或目录的名称及其他一些信息,这时候通配符就派上用场啦!当不知道真正字符或懒得输入完整文件或目录名......
  • Linux中find命令的使用详解(上)
    find命令是各种Linux发现版中比较重要的、常用的一个命令,该命令功能强大,熟练掌握了这个命令的使用,对平时的系统运维、管理工作会起到事半功倍的效果。一.获取帮助信息[root@root@GeekDevOps-find~]#find--help[root@root@GeekDevOps-find~]#manfind大家会发现帮助信息很多,但......
  • 详解Java之Spring框架中事务管理的艺术
    第1章:引言大家好,我是小黑,咱们今天聊聊Spring框架中的事务管理。不管是开发小型应用还是大型企业级应用,事务管理都是个不可避免的话题。那么,为什么事务管理这么重要呢?假设在银行系统中转账时,钱从A账户扣了,但没到B账户,这种情况就是事务管理处理不当的后果。显然,我们需要一种机制来......