第一周-transformer详解

 第一周-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'

使用conda 环境搭建python3.6版本环境, torch 1.xx环境。

posted on 2024-01-15 09:41  lexn  阅读(22)  评论(0编辑  收藏  举报

导航