由于自己在啃代码,所以不自己写了,只给链接。
1.torchtext:处理数据,包含Field, Example, Dataset, BucketIterator, Iterator等一系列的知识。
2.torch.nn.Embedding:参数,第一个,字典中词的个数 第二个,embedding的维度 。
3.glove2word2vec:将glove预训练词向量转为word2vector形式。(没啥高级的,好像就是加了一个第一行,词的个数 词的维度)
4.torch.nn.LSTM():
5.nn.Sequential
6.nn.Linear:神经网络的最后一个如果是线性层,那么第二个参数对应的就是几分类。
7.transpose:将张量的两个维度进行交换。
8.parse:类似linux命令的选择一样。
parse.add_argument('--max_len', type=int, default = 100, help='文本截取长度')
parse.add_argument('--glove840_path',type=str, default='../TextClassification_based_on_textCNN/Dataset/glove.840B.300d.txt',help='词向量路径')
parse.add_argument('--batch_size', type=int, default = 32, help='一个批次训练样本个数')
parse.add_argument('--embed_size', type=int, default = 300, help='词向量维度')
parse.add_argument('--hidden_size', type=int, default = 300, help='隐藏层维度')
parse.add_argument('--output_size', type=int, default = 3, help='最终的标签Label数')
parse.add_argument('--lr', type=float, default = 0.0004 , help='学习率')
parse.add_argument('--num_epochs', type=int, default = 10 , help='训练迭代次数')
args = parse.parse_args(args = [])
在pytorch中直接run的话:
args.max_len 使用的就是 default 指定的值。当然,也可以在下面的Terminal 执行给定给的。
9.torch.cat:将两个张量拼接在一起。
torch.cat是将两个张量(tensor)拼接在一起,cat是concatnate的意思,即拼接,联系在一起。
参考
10.net.train() 和 net.eval()
当网络中有 dropout,bn 的时候。训练的要记得 net.train(), 测试 要记得 net.eval()。
11.
optimizer.zero_grad():
loss.backward():
optimizer.step()
12.accuracy_score:正确的值所占的比例。
13.loss.item():用于将一个零维张量转换成浮点数
14.strip() :方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
菜鸟教程
return_str=True 值的就是返回的是字符串了。 False 返回的应该就是列表了.
15.MosesTokenizer:把句子直接分成单个词组成的列表。
print(test_feature_line)
# 转换大小写开分词存入列表
mt = MosesTokenizer(lang='en')
test_feature_line = [mt.tokenize(line.lower(), return_str=True) for line in test_feature_line]
print(test_feature_line)
这样则是:将符号和单词分开了。
16.nn.ModuleList:仅仅类似于pytho中的list类型,只是将一系列层装入列表,并没有实现forward()方法,
17.torch.nn.Conv1d:
18.permute:张量的维度进行变换。
19.torch.LongTensor:
torch.Tensor默认是torch.FloatTensor是32位浮点类型数据,torch.LongTensor是64位整型!
20.TensorDataset和DataLoader:
TensorDataset 可以用来对 tensor 进行打包,就好像 python 中的 zip 功能。该类通过每一个 tensor 的第一个维度进行索引。因此,该类中的 tensor 第一维度必须相等。
TensorDataset:
分片输出:
结果:
遍历输出:
结果:
DataLoader的使用:
DataLoader的基本使用,:
batch_size (int, optional) – how many samples per batch to load (default: 1).
#shuffle (bool, optional) – set to True to have the data reshuffled at every epoch (default: False).
num_workers (int, optional) – how many subprocesses to use for data loading. 0 means that the data will be loaded in the main process. (default: 0)
21.max_pool2d:
应该只是对最后两个维度进行操作。
22.with torch.no_grad():
23.nn.Conv2d:
nn.Conv2d(1, 16, kernel_size=3, stride=2, padding=1)
24.np.transpose: 进行指定维度的变换:
hree=np.arange(18).reshape(2, 3, 3)
print(three.transpose().shape)
print(three.transpose(1, 0, 2).shape)
print(three.transpose(1, 2, 0).shape)
结果:
25.transforms.Compose()类:
torchvision是pytorch的一个图形库
transform = transforms.Compose(
[transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))])
ToTensor()能够把灰度范围从0-255变换到0-1之间,而后面的transform.Normalize()则把0-1变换到(-1,1).
参考1
参考2
26.torch.optim.lr_scheduler.StepLR:学习率调整的一种。
27.torch.triu:把张量的某一部分三角全部变成0.
28.nn.utils.clip_grad_norm_:处理梯度。
29.glob.glob() 函数:返回所有匹配的文件路径列表。
def findFiles(path): return glob.glob(path)
print(findFiles('data/names/*.txt'))
查看一下目录里面有什么:
结果:
30.string.ascii_letters和string.digits
print(string.ascii_letters)
print(string.digits)
輸出:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
31.os.path.splitext()与os.path.split():
os.path.splitext() 将文件名和扩展名分开:列表形式,如:
os.path.splitext(filename)[0]
os.path.split() 返回文件的路径和文件名
32.nn.LogSoftmax:对softmax求log,因此值为负的。
33.topk:按照某一维度求最值:
import torch
a = torch.randn((3,5))
print(a)
_, pre = a.topk(1, dim=1, largest=True)
print(_)
print(pre)
34.nn.gru:
参考
很棒的知乎教程 https://zhuanlan.zhihu.com/p/37217734