Pytorch入门与实践——快速入门

本文介绍了Pytorch的基本操作,包括Tensor的创建、加法、选取操作和与numpy的交互。接着展示了如何进行自动微分,利用Variable进行反向传播计算梯度。还通过实例解释了如何构建神经网络,包括卷积层、全连接层和优化器的使用。最后,通过CIFAR-10数据集展示了训练和测试神经网络的过程。
摘要由CSDN通过智能技术生成
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值