深度学习入门Pytorch》读书笔记 如有错误还请不吝指出 第三章   3.1 Pytorch基础     3.1.1 张量   Tensor 表示的是多维的矩阵 不同数据类型: 32位浮点型 torch.FloatTensor (默认数据类型) 64位浮点型 torch.DoubleTensor 16位整型    torch.ShortTensor 32位整型    torch.IntTensor 64位整型    torch.LongTensor   3.1.2 Variable(变量)       这是一个神经网络计算图中特有的概念,Variable提供了自动求导机制。Variable 和 Tensor 本质上没有区别,但是 Variable会被放入一个计算图中,进行前向传播、反向传播和自动求导。       Variabl 在 torch.autograd.Variable 中, 如果 a 是一个张量,使用 Variable(a) 可将其变为 Variable.       Variable 中有三个重要组成性质:data, grad, grad_fn. 通过 data 可以取出 Variable 中的 tensor 数值,grad_fn 得到这个 Variable 的操作. grad 是 Variable 反向传播的梯度. from torch.autograd import Variable import torch # create Variable x = Variable(torch.Tensor([1]), requires_grad=True) w = Variable(torch.Tensor([2]), requires_grad=True) b = Variable(torch.Tensor([3]), requires_grad=True) # Build a computational graph y = w * x + b # y = 2*x + 3 # Compute the gradients y.backward() # same as y.backward(torch.FloatTensor([1])) print(x.grad) # 2 print(w.grad) # 1 print(b.grad) # 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16       构建 Variable 需要传递一个参数 requires_grad=True 这个参数表示是否要对这个变量求导, 默认是 False.       y.backward()就是自动求导, 自动求导不需要明确写明哪个函数对哪个函数求导,直接通过这行代码对所有需要梯度的变量求导.       下面是对矩阵求导 # 对矩阵求导 x = torch.randn(3) x = Variable(x, requires_grad=True) # tensor([ 1.5244, -1.0083, -0.4375]) y = x*2 # tensor([ 3.0487, -2.0165, -0.8750]) y.backward(torch.FloatTensor([1, 0.1, 0.01])) print(x.grad) # tensor([ 2.0000, 0.2000, 0.0200]) 1 2 3 4 5 6 7 8 9 10 11   3.1.3 Dataset(数据集)       任何机器学习在处理之前都要及逆行数据读取和预处理.       torch.utils.data.Dataset 是代表这一数据的抽象类, 只需定义_len_ 和 _getitem_ 这两个函数就可以继承并重写这个抽象类 from torch.utils.data import Dataset import pandas as pd class myDataset(Dataset): def __init__(self, csv_file, txt_file, root_dir, other_file): self.csv_data = pd.read_csv(csv_file) with open(txt_file, 't') as f: data_list = f.readlines() self.txt_data = data_list self.root_dir = root_dir
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页