#引入torch
import torch
#引入time计时
import time
#引入math数学函数
import math
#引入numpy
import numpy as np
#引入plt
import matplotlib.pyplot as plt
#从torch的工具的数据引入数据集,数据加载器
from torch.utils.data import Dataset,DataLoader
#从torch的神经网络的数据的rnn中引入包装填充好的序列。作用是将填充的pad去掉,然后根据序列的长短进行排序
from torch.nn.utils.rnn import pack_padded_sequence
#引入gzip 压缩文件
import gzip
#引入csv模块
import csv
#隐层数是100
HIDDEN_SIZE = 100
#batch的大小时256
BATCH_SIZE = 256
#应用2层的GRU
N_LAYER = 2
#循环100
N_EPOCHS = 100
#字符数量时128
N_CHARS = 128
#不使用GPU
USE_GPU =False
#定义名字数据集的类,继承自数据集
class NameDataset(Dataset):
#自身初始化,是训练集为真
def __init__(self,is_train_set=True):
#文件名是训练集。如果训练为真,否则是测试集
filename = 'names_train.csv.gz' if is_train_set else 'names_test.csv.gz'
#用gzip打开文件名,操作text文本的时候使用'rt',作为f
with gzip.open(filename,'rt') as f:
#阅读器是用csv的阅读器阅读文件
reader = csv.reader(f)
#将文件设成一个列表
rows = list(reader)
#自身名字是文件的第一列都是名字,提取第一列,对于r在rs中时
self.names = [row[0] for row in rows]
#长度是名字的长度
self.len = len(self.names)
#国家是第二列
self.countries = [row[1] for row in rows]
#将国家变成集合,去除重复的元素,然后进行排序,然后接着再变回列表
self.country_list = list(sorted(set(self.countries)))
#得到国家的词典,将列表转化成词典(有索引)
self.country_dict = self.getCountryDict()
#长度是国家的长度
self.country_num = len(self.country_list)
#定义 获得项目类,提供索引访问,自身,索引
def __getitem__(self,index):
#返回 带索引的名字,带索引的国家,代入,得到带国家的词典
return self.names[index], self.country_dict[self.countries[index]]
#定义长度
def __len__(self):
#返回长度
return self.len
#定义获得国家词典
def getCountryDict(self):
#现设一个空字典
country_dict = dict()
#idx表示进行多少次的迭代,country_name是国家名,用列举的方法将国家列表的数据提取出来,从0开始
for idx,country_name in enumerate(self.count
PyTorch深度学习实践代码 第十三讲
最新推荐文章于 2024-04-04 09:37:06 发布