莫凡Python学习笔记——PyTorch动态神经网络(一)

内容原文:https://morvanzhou.github.io/tutorials/machine-learning/torch/

PyTorch是什么?

它是一个基于Python的科学计算包,其主要是为了解决两类场景:

1、一种是可以替代Numpy进行科学计算,同时还可以使用张量在GPU上进行加速运算。
2、一个深度学习的研究平台,提供最大的灵活性和速度。

一、Tensors(张量)

Tensors形式是一个和Numpy的ndarrays很像的对象类型,但是性能上有其特殊之处就是可以利用张量在GPU上加速运算。

from __future__ import print_function
import torch

构建一个5*3的矩阵,未初始化的:

x = torch.Tensor(5,3)
print(x)

构建一个随机初始化的矩阵:

x = torch.rand(5,3)
print (x)

莫凡Python学习笔记——PyTorch动态神经网络(一)_第1张图片

获得size:

print(x.size())

这里写图片描述
torch.Size是一个tuple,支持所有tuple操作。

二、操作
每种操作都有不同的语法,下面以加法为例解释下:
(1)直接使用符号+

y = torch.rand(5,3)
print (x+y)

(2)使用torch.add()函数

print(torch.add(x,y))

(3) 在torch.add()中添加一个out参数,并创建一个Tensors对象来接收out的结果

result = torch.Tensor(5,3)
torch.add(x,y,out=result)
print(result)

(4) 这句中y.add_(x)会替换掉y,也就是:任何改变张量的操作方法都是以后缀 _结尾的, eg : x.t _(),并且替换x。

y.add_(x)
print(y)

关于Tensors的索引和ndarrary一样:

print(x[:,1])

莫凡Python学习笔记——PyTorch动态神经网络(一)_第2张图片
可以使用torch.view来改变tensors的size:

x = torch.rand(4,4)
y = x.view(16)
z = x.view(-1,8)
print(x.size(), y.size(), z.size())

莫凡Python学习笔记——PyTorch动态神经网络(一)_第3张图片
莫凡Python学习笔记——PyTorch动态神经网络(一)_第4张图片

三、NumPy Bridge
tensor和Numpy数组间的相互转化(两者共享同一内存位置,所以一个改变,另一个也会跟着改变)

a = torch.ones(5)
print(a)
b = a.numpy()   #tensors转numpy数组
print(b)
a.add_(1)
print(a)
print(b)

莫凡Python学习笔记——PyTorch动态神经网络(一)_第5张图片

Numpy数组转为tensor

import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a) #
print(a)
print(b)

莫凡Python学习笔记——PyTorch动态神经网络(一)_第6张图片

CUDA Tensors
可以使用.cuda方法将Tensors移动到GPU上。

if torch.cuda.is_available():
	x = x.cuda()
	y = y.cuda()
	x+y

你可能感兴趣的:(python科学计算,神经网络,利用PyTorch创建神经网络)