import torch as t import numpy as np import torch.nn as nn import torch.nn.functional as F from torch.autograd import Variable import torch.optim as optim import matplotlib.pyplot as plt x = t.Tensor(3, 2) y = t.rand(5, 3) z = t.rand(5, 3) # print(x, y, z)\ # result = t.Tensor(5, 3) #使用t.add(x,y,out=z)时,这里需要预先分配空间, 注意是t.Tensor 而不是t.tensor # t.add(y,z, out=result) # # print(x.size(), z+y, z.add(y), t.add(y,z)) # print(result) # print(y) # y.add(z) #普通加法,不改变y的内容;会返回一个新的Tensor,而y不变 # print(y) # # y.add_(z) #inplace加法,改变y的内容;函数名后面带下划线_的函数会修改Tensor本身 # print(y) #Tensor的选取操作与numpy类似 # print(x, x[:,1]) #Tensor和numpy的数组之间的互操作 # a = t.ones(5) #新建一个全是1的Tensor # print(a) # b = a.numpy() #Tensor -> Numpy # print(b) # a = np.ones(5) # b = t.from_numpy(a) #Numpy -> Tensor # print (a , b) # #Tensor 和Numpy对象共享内存,一个改变,另外一个随之改变 # b.add_(1) # print(a, b) #Tensor和Numpy共享内存,一变俱变 # #Tensor可通过.cuda方法转为GPU的Tensor # if t.cuda.is_available(): # x = x.cuda() # y = y.cuda() # print(x+y) # # #======================================================= # #Autograde:自动微分 # #Tensor在被封装为Variable之后,可以调用它的.backward实现反向传播,自动计算所有梯度 # from torch.autograd import Variable # x = Variable(t.ones(2, 2), requires_grad = True) # y = x.sum() # print(y.grad_fn) #grad_fn指向一个Function对象,其用来反向传播计算输入的梯度 # y.backward() # x.grad.data.zero_() #grad在反向传播过程中是累加的,所以反向传播之前需要把梯度清零 # y.backward() # print(x.grad) # # #Variable和Tensor具有近乎一致的接口,在实际使用中可以无缝切换 # y = t.cos(x) # x_tensor_cos = t.cos(x.data) # print(y, x_tensor_cos) #2.2.3 神经网络 #定义网络,需要继承nn.Module,并实现它的forwar
Pytorch入门与实践——快速入门
最新推荐文章于 2024-07-09 08:56:16 发布
本文介绍了Pytorch的基本操作,包括Tensor的创建、加法、选取操作和与numpy的交互。接着展示了如何进行自动微分,利用Variable进行反向传播计算梯度。还通过实例解释了如何构建神经网络,包括卷积层、全连接层和优化器的使用。最后,通过CIFAR-10数据集展示了训练和测试神经网络的过程。
摘要由CSDN通过智能技术生成