PyTorch深度学习实践代码 第十三讲

#引入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
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值