Быстрый старт Pytorch, онлайн-опыт

Python PyTorch Нейронные сети NumPy
Быстрый старт Pytorch, онлайн-опыт

Эта статья сочетается сОнлайн-среда Pytorch, вы можете испытать это прямо в Интернете.

Pytorch — это пакет для научных вычислений на основе Python, выпущенный исследовательской группой Facebook в области искусственного интеллекта, предназначенный для двух типов случаев: 1. Замена numpy для использования потенциала графического процессора 2. Экспериментальная платформа для глубокого обучения, обеспечивающая высокую степень гибкости. и эффективность.

Адрес онлайн-практики:Быстрый старт/онлайн-лаборатория Pytorch

1. Введение в Pytorch

Pytorch — это пакет для научных вычислений на основе Python, выпущенный исследовательской группой Facebook по искусственному интеллекту и предназначенный для двух типов случаев:

  • Замена numpy для использования потенциала GPU (онлайн-среда пока не поддерживает GPU)
  • Экспериментальная платформа для глубокого обучения, обеспечивающая высокую степень гибкости и эффективности.

2. Особенности и преимущества Pytorch

2.1 Особенности Pytorch

  • PyTorch предоставляет базовую библиотеку тензорных операций, работающую на GPU/CPU;
  • Встроенная библиотека нейросетей;
  • Обеспечить функцию обучения модели;
  • Многопроцессорная библиотека, поддерживающая разделяемую память и т. д.;

2.2 Особенности Pytorch

  • Нахождение в экосистеме Python, языка № 1 для машинного обучения, позволяет разработчикам использовать широкий спектр библиотек и программного обеспечения Python, таких как NumPy, SciPy и Cython (компилировать Python в язык C для ускорения);
  • (Самое большое преимущество) Улучшает существующие нейронные сети, обеспечивая более быстрый способ — без перестройки всей сети с нуля благодаря динамической структуре вычислительного графа PyTorch, а не большинству фреймворков с открытым исходным кодом (графы статических вычислений, используемые TensorFlow, Caffe, CNTK, Theano и т. д. .);
  • Предоставлять наборы инструментов, такие как torch, torch.nn, torch.optim и т. д.;

3. Общий набор инструментов Pytorch

  • torch : тензорная библиотека, похожая на NumPy, с мощной поддержкой графического процессора;
  • torch.autograd : библиотека автоматического распознавания на основе ленты, которая поддерживает все дифференцируемые тензорные операции в torch;
  • torch.nn: библиотека нейронной сети, которая не покрыта и глубоко интегрирована с autograd для максимальной гибкости;
  • torch.optim: пакет оптимизации, используемый с torch.nn, включая стандартные методы оптимизации, такие как SGD, RMSProp, LBFGS, Adam;
  • torch.multiprocessing: многопроцессорный параллелизм Python, совместное использование памяти тензоров torch между процессами;
  • torch.utils: загрузчик данных. С кроссовками и другими удобными функциями;
  • torch.legacy(.nn/.optim): устаревший код, перенесенный из Torch для обратной совместимости;

4. Создание тензора

  1. импортировать пакет pytorch импортировать факел
  2. jupyter notebook
import torch
#创建一个5*3的随机矩阵并显示它(Shift+Enter)
x=torch.rand(5,3)
x

5. тензорная операция

y=torch.ones(5,3)
#创建一个5*3的全是1矩阵并显示它
y

#计算两个矩阵相加(注意尺寸要一模一样)
z=x+y
z

#矩阵乘法,矩阵转置
q=x.mm(y.t())
Все операции Numpy над ndarray можно применить к тензору
Справочник по операциям с тензоромhttp://pytorch.org/docs/master/tensors.html
  • Преобразование из numpy в тензор: torch.from_numpy(a)
  • Преобразование из тензора в numpy: a.numpy()
  • Самая большая разница между тензором и numpy: тензор может работать на GPU
  • Перейти к операции с графическим процессором (x.cpu() преобразуется в процессор)
  if torch.cuda.is_available():
    x=x.cuda()
    y=y.cuda()
    print(x+y)

6. Нумпи-мост

Преобразуйте Torch Tensor и массив numpy друг в друга. Обратите внимание, что массивы Torch Tensor и Numpy будут совместно использовать свое пространство для хранения, и изменение одного приведет к изменению другого.

# 此处演示tensor和numpy数据结构的相互转换
a = torch.ones(5)
b = a.numpy()

# 此处演示当修改numpy数组之后,与之相关联的tensor也会相应的被修改
a.add_(1)
print(a)
print(b)

# 将numpy的Array转换为torch的Tensor
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)

# 另外除了CharTensor之外,所有的tensor都可以在CPU运算和GPU预算之间相互转换
# 使用CUDA函数来将Tensor移动到GPU上
# 当CUDA可用时会进行GPU的运算
if torch.cuda.is_available():
    x = x.cuda()
    y = y.cuda()
    x + y

7. Динамический вычислительный график

  • Это самая важная особенность pytorch
  • Сделать вычислительные модели более гибкими и сложными
  • Пусть алгоритм обратного распространенияв любой момент

7.1 Автоматическое дифференцирование переменных

градиент градиента, распространение - это градиент

определить переменную автоматического дифференцирования

from torch.autograd  import Variable
#Variable:自动微分变量
x=Variable(torch.ones(2,2),requires_grad=True)
#把一个2*2的张量转变成微分的变量(添加节点,构造计算图)
x

y=x+2
y.creator
#y的父节点

z=torch.mean(y*y)
z.data
Отличие от тензора: запишите все пути вычислений и постройте граф вычислений в памяти.

7.2 Многослойные операции

z=m((x+2)*(x+2))

Многослойная нейронная сеть

Вычисление градиентов: производные

z.backward()
#z对x的偏导
#只有叶节点可以算grad。只有x有grad信息,因为它没有父节点
print(z.grad)
print(y.grad)
print(x.grad)

7.3 Сумасшедшие функциональные зависимости

s=Variable(torch.FloatTensor([[0.01,0.02]]),requires_grad=True)
x=Variable(torch.ones(2,2),requires_grad=True)
for i in range(10):
  s=s.mm(x)
  #赋值的操作会多一个新节点出来
z=torch.mean(s)

#backward()求导计算
z.backward()
print(x.grad)
print(s.grad)

8. Нейронные сети

Для построения нейронных сетей можно использовать пакет torch.nn, нажмитеБыстрый старт Pytorch + онлайн-среда, вы можете просматривать и практиковать онлайн.