Pytorch学习之旅day02

Pytorch学习之旅day02


一、 什么是Pytorch,为什么选择Pytroch?
Pytorch是深度学习的一种框架,它是PyTorch是一个基于python的科学计算包,主要针对两类人群:
• 作为NumPy的替代品,可以利用GPU的性能进行计算
• 作为一个高灵活性、速度快的深度学习平台
选择PyTorch,因为PyTorch是当前难得的简洁优雅且高效快速的框架。下面是许多研究人员选择PyTorch的原因。
• ① 简洁:PyTorch的设计追求最少的封装,尽量避免重复造轮子。PyTorch的设计遵循tensor→variable(autograd)→nn.Module 三个由低到高的抽象层次,分别代表高维数组(张量)、自动求导(变量)和神经网络(层/模块),而且这三个抽象之间联系紧密,可以同时进行修改和操作。使得PyTorch的源码十分易于阅读。
• ② 速度:PyTorch的灵活性不以速度为代价,在许多评测中,PyTorch的速度表现胜过TensorFlow和Keras等框架。
• ③易用:PyTorch是所有的框架中面向对象设计的最优雅的一个。PyTorch的面向对象的接口设计来源于Torch,而Torch的接口设计以灵活易用而著称,PyTorch继承了Torch的衣钵,尤其是API的设计和模块的接口都与Torch高度一致。PyTorch的设计最符合人们的思维,它让用户尽可能地专注于实现自己的想法,即所思即所得,不需要考虑太多关于框架本身的束缚。
• ④活跃的社区:PyTorch提供了完整的文档,循序渐进的指南,作者亲自维护的论坛 供用户交流和求教问题,还有Facebook 人工智能研究院对PyTorch提供了强力支持。
Pytroch的安装
二、 安装PyTorch
参考链接的文章https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html
三、 PyTorch基础概念
通过神经网络完成一个回归问题。其中样本数为64个,输入层为1000维,隐藏层为100,输出层为10维的代码。

1.	num_samples = 64 # N
2.	dim_in, dim_hid, dim_out = 1000, 100, 10  # IN H OUT
3.	x = torch.randn(num_samples, dim_in)  #  N * IN
4.	y = torch.randn(num_samples, dim_out) #  N * OUT
5.	
6.	# 提前定义模型
7.	model = torch.nn.Sequential(
8.	    torch.nn.Linear(dim_in, dim_hid, bias = False), #model[0]
9.	    torch.nn.ReLU(),
10.	    torch.nn.Linear(dim_hid, dim_out, bias = False),#model[2]
11.	)
12.	
13.	# torch.nn.init.normal_(model[0].weight) #修改一
14.	# torch.nn.init.normal_(model[2].weight)
15.	
16.	#提前定义loss函数和优化函数
17.	loss_fun = torch.nn.MSELoss(reduction='sum')
18.	eta = 1e-4 #修改二
19.	optimizer = torch.optim.Adam(model.parameters(), lr=eta)
20.	
21.	
22.	for i in range(1000):
23.	  #Forward pass
24.	  y_pred = model(x)
25.	  
26.	  #Loss
27.	  loss = loss_fun(y_pred, y)
28.	  print(it, loss.item())
29.	
30.	  optimizer.zero_grad()
31.	  # Backward pass
32.	  loss.backward()
33.	
34.	  # update model parameters
35.	  optimizer.step()

你可能感兴趣的:(Pytorch学习之旅day02)