Pytorch——3.1. 热身:Pytorch基础

本文介绍了PyTorch的基本概念,包括张量的创建、操作和与numpy的转换,以及Variable变量的使用,强调了自动求导功能。通过实例展示了标量和矩阵求导,并探讨了数据集的使用。接着,文章通过多维和一维线性回归的示例,阐述了模型构建、损失函数、优化器的选择以及训练过程。最后,提到了多项式回归的应用。
摘要由CSDN通过智能技术生成

Pytorch github代码链接:https://github.com/L1aoXingyu/pytorch-beginner

ch3:多层全连接神经网络

3.1 热身:Pytorch基础

3.1.1 Tensor(张量)

  1. 不同数据类型的tensor:
32位浮点型torch.FloatTensor   #Tensor默认数据类型
64位浮点型torch.DoubleTensor
16位整型torch.ShortTensor
32位整型torch.IntTensor
64位整型torch.LongTensor

tensor 应用实例:

import torch
a=torch.Tensor([[1,2],[2,3],[3,4]]);
print('a is:{}'.format(a))
print('a size is :{}'.format(a.size()))

#改变tensor的类型
b=torch.LongTensor([[1,2],[2,3],[3,4]])
print('b is:{}'.format(b))

#建立一个全零的tensor
c=torch.zeros((3,2))
print('c is:{}'.format(c))

#取一个正态分布作为随机初始值
d=torch.randn((3,2))
print('d is:{}'.format(d))

运行结果:

a is:
 1  2
 2  3
 3  4
[torch.FloatTensor of size 3x2]

a size is :torch.Size([3, 2])
b is:
 1  2
 2  3
 3  4
[torch.LongTensor of size 3x2]

c is:
 0  0
 0  0
 0  0
[torch.FloatTensor of size 3x2]

d is:
-0.2037 -0.6000
-0.4322  0.2700
 0.6836  0.3145
[torch.FloatTensor of size 3x2]
  1. 可以像numpy一样通过索引的方式取得其中的元素,同时改变它的值:
    比如:
a[0,1]=100
print('a is:{}'.format(a))

运行结果为:

a is:
   1  100
   2    3
   3    4
[torch.FloatTensor of size 3x2]
  1. 除此之外,还可以在Tensor和numpy.ndarray 之间相互转换。
    通过b.numpy()可以将tensor b转换为numpy
    通过torch.from_numpy(e)可以讲numpy e转换为tensor;
numpy_b=b.numpy()
print('b convert to numpy is:{}'.format(numpy_b))

运行结果为:

b convert to numpy is:[[1 2]
 [2 3]
 [3 4]]
e=np.array([[2,3],[4,5]])
print('e is:{}'.format(e))
torch_e=torch.from_numpy(e)
print('torch_e is:{}'.format(torch_e))

运行结果为:

e is:[[2 3]
 [4 5]]
torch_e is:[[2 3]
 [4 5]]

如果需要改变tensor的数据类型,只需要在转换后的tensor后面加上所需的数据类型即可。

f_torche=torch_e.float()
print('f_torche is:{}'.format(f_torche))

结果为:

f_torche is:
 2  3
 4  5
[torch.FloatTensor of size 2x2]

如果需要将Tensor放到GPU上,只需要a.cuda()就能将tensor a放到GPU上了。

if torch.cuda.is_available():   #判断是否支持GPU
    a_cuda=a.cuda()
    print(a_cuda)

3.1.2:Variable(变量)

Variable(变量)提供了自动求导的功能。
将一个tensor a 变成Variable(变量),只需要Variable(a)就可以了。
Variable有三个比较重要的属性:data, grad 和 grad_fn.
通过data可以取出Variable里面的tensor数值,grad_fn表示的是得到这个Variable的操作,比如通过加减还是乘除来得到的, 最后grad就是这个Variable的反向传播梯度。

1)标量求导

注意:
1.构建变量时,要注意参数requires_grad=True, 这个参数表示是否对这个变量求梯度,默认的是false——不求梯度。
2.y.backward(),这一行的代码就是所谓的自动求导,这个函数其实等价于y.backward(torch.FloatTensor([1])), 只不过对于标量求导里面的参数可以不写,向量求导需要写。
自动求导不需要明确地写出那个函数对哪个函数求导,直接通过这行代码就可以对所有的需要梯度的变量进行求导,得到他们的梯度,然后通过x.grad就可以得到x 的梯度。

import torch
from torch.autograd import Variable

#创建变量
x=Variabl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值